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 : (Iterable)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( (BakedQuad[])var6.toArray(new BakedQuad[0]), (Direction[])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((BakedQuad)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; } } } }