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(); final float var7f = var7; final float var8f = var8; var9 = () -> ais.applyDial(var7f, var8f); 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); final float var5f = var5; var2.submitCustomGeometry( var1, RenderTypes.entityTranslucentEmissive(RING), (var2x, var3x) -> ait.submitSprite(var2x, var3x, this.hologramPalette, var5f, var5f * 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; } }