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 != 0; 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; final int var10f = var10; final int var15f = var15; final um var16f = var16; final float var17f = var17; final float var18f = var18; final float var19f = var19; var3.submitCustomGeometry( var2, var12, (var7x, var8x) -> { this.drawBox(var8x, var7x, var17f, var18f, var19f, var16f.u(), var16f.v(), var16f.widthPx(), var16f.heightPx(), var16f.depthPx(), var10f, var15f); float var9x = 0.015625F; this.drawBox( var8x, var7x, var17f + var9x, var18f + var9x, var19f + var9x, var16f.overlayU(), var16f.overlayV(), var16f.widthPx(), var16f.heightPx(), var16f.depthPx(), var10f, var15f ); } ); 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: final float var11f = var11; final float var12f = var12; final float var13f = var13; final float var14f = var14; final float var15f = var15; final float var16f = var16; 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 = var11f * var13x.size; var27 = var12f * var13x.size; var28 = var13f * var13x.size; var29 = var14f * var13x.size + var23; var30 = var15f * var13x.size + var24; var31 = var16f * 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; final float var6f = var6; final float var11f = var11; final float var15f = var15; 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 + var6f * 0.8F) % 1.0F; var10x = var8x + var6f * 1.6F * (float) (Math.PI * 2); var11x = 0.45F + 0.2F * Mth.sin(var8x * 3.0F + var6f * 4.0F); var12x = var1.centerX + Mth.cos(var10x) * var11x; var14x = var1.groundY + var11f * 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(var15f * (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); final int var13f = var13; final int var14f = var14; final um var20f = var20; var3.submitCustomGeometry( var2, var16, (var4x, var5x) -> this.drawBox( var5x, var4x, var20f.widthPx() * 0.0625F * 0.5F, var20f.heightPx() * 0.0625F * 0.5F, var20f.depthPx() * 0.0625F * 0.5F, var20f.u(), var20f.v(), var20f.widthPx(), var20f.heightPx(), var20f.depthPx(), var13f, var14f ) ); 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; } }