337 lines
12 KiB
Java
337 lines
12 KiB
Java
package defpackage;
|
|
|
|
import com.mojang.blaze3d.vertex.PoseStack;
|
|
import it.unimi.dsi.fastutil.ints.Int2ObjectMap.Entry;
|
|
import it.unimi.dsi.fastutil.objects.ObjectIterator;
|
|
import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext;
|
|
import net.minecraft.client.Camera;
|
|
import net.minecraft.client.renderer.SubmitNodeCollector;
|
|
import net.minecraft.client.renderer.rendertype.RenderTypes;
|
|
import net.minecraft.client.renderer.texture.OverlayTexture;
|
|
import net.minecraft.core.BlockPos;
|
|
import net.minecraft.resources.Identifier;
|
|
import net.minecraft.util.LightCoordsUtil;
|
|
import net.minecraft.world.entity.EntityAttachment;
|
|
import net.minecraft.world.entity.LivingEntity;
|
|
import net.minecraft.world.phys.Vec3;
|
|
import org.joml.Quaternionf;
|
|
import org.joml.Vector3f;
|
|
|
|
public final class aio implements aqg {
|
|
private static final Identifier TEXTURE = bz.id("textures/cosmetic/pat/pat_hand.png");
|
|
private static final int MAX_VISIBLE_PATS = 16;
|
|
private static final int CORNERS = 4;
|
|
private static final int AXES = 3;
|
|
private static final int FLOATS_PER_QUAD = 12;
|
|
private static final int RIGHT_SPLIT = 2;
|
|
private static final float FRAME_SPAN = 0.2F;
|
|
private static final float UV_INSET = 0.0015F;
|
|
private static final float NAME_TAG_FALLBACK_GAP = 0.5F;
|
|
private static final float HALF = 0.5F;
|
|
private static final int OPAQUE_WHITE = -1;
|
|
private static final float NORMAL_X = 0.0F;
|
|
private static final float NORMAL_Y = 1.0F;
|
|
private static final float NORMAL_Z = 0.0F;
|
|
private static final float[] CORNER_V;
|
|
private static final aio INSTANCE = new aio();
|
|
private final float[] corners = new float[192];
|
|
private final float[] minU = new float[16];
|
|
private final float[] maxU = new float[16];
|
|
private final int[] lights = new int[16];
|
|
private final Vector3f scratchRight = new Vector3f();
|
|
private final Vector3f scratchUp = new Vector3f();
|
|
|
|
private aio() {
|
|
}
|
|
|
|
public static aio getInstance() {
|
|
return INSTANCE;
|
|
}
|
|
|
|
public void onWorldRender(LevelRenderContext var1) {
|
|
ta var2 = null;
|
|
aim var3 = null;
|
|
long var4 = (1869778261060929744L ^ -1869778261060929744L) + ((1869778261060929744L & -1869778261060929744L) << 1);
|
|
long var6 = (-8949496360586353629L ^ 8949496360586353629L) + ((-8949496360586353629L & 8949496360586353629L) << 1);
|
|
PoseStack var8 = null;
|
|
SubmitNodeCollector var9 = null;
|
|
Camera var10 = null;
|
|
int var11 = 0;
|
|
int var12 = 0;
|
|
int var13 = -25887463;
|
|
|
|
while (true) {
|
|
switch (var13) {
|
|
case -721135407:
|
|
if (!var3.isEmpty()) {
|
|
var13 = 570497489;
|
|
} else {
|
|
var13 = 207464498;
|
|
}
|
|
break;
|
|
case -398855481:
|
|
var4 = System.currentTimeMillis();
|
|
var6 = var2.durationMillis();
|
|
var3.prune(mc.level, var4, var6);
|
|
if (var3.isEmpty()) {
|
|
var13 = 2147014241;
|
|
} else {
|
|
var13 = 1747577231;
|
|
}
|
|
break;
|
|
case -25887463:
|
|
default:
|
|
var2 = ta.INSTANCE;
|
|
var3 = aim.getInstance();
|
|
if (mc.level == null) {
|
|
var13 = 846121449;
|
|
} else {
|
|
var13 = 1475512480;
|
|
}
|
|
break;
|
|
case 207464498:
|
|
return;
|
|
case 234460188:
|
|
var11 = this.collect(var3, var2, var10, var4, var6);
|
|
if (var11 == 0) {
|
|
var13 = 1886554511;
|
|
} else {
|
|
var13 = 1115802833;
|
|
}
|
|
break;
|
|
case 245996176:
|
|
if (var9 != null) {
|
|
var13 = 405569304;
|
|
} else {
|
|
var13 = 1405188336;
|
|
}
|
|
break;
|
|
case 405569304:
|
|
if (var10 == null) {
|
|
var13 = 1405188336;
|
|
} else {
|
|
var13 = 234460188;
|
|
}
|
|
break;
|
|
case 570497489:
|
|
var3.clear();
|
|
var13 = 207464498;
|
|
break;
|
|
case 846121449:
|
|
var3.clear();
|
|
return;
|
|
case 1115802833:
|
|
var12 = var11;
|
|
final int var12f = var12;
|
|
var9.submitCustomGeometry(
|
|
var8,
|
|
RenderTypes.entityTranslucent(TEXTURE),
|
|
(var2x, var3x) -> {
|
|
for (int var4x = 0; var4x < var12f; var4x++) {
|
|
int var5 = var4x * (12);
|
|
int var6x = this.lights[var4x];
|
|
float var7 = this.minU[var4x];
|
|
float var8x = this.maxU[var4x];
|
|
|
|
for (int var9x = 0;
|
|
var9x < 4;
|
|
var9x++
|
|
) {
|
|
int var10x = var5 + var9x * (3);
|
|
var3x.addVertex(
|
|
var2x,
|
|
this.corners[var10x],
|
|
this.corners[var10x + 1],
|
|
this.corners[var10x + 2]
|
|
)
|
|
.setColor((-661926889 | 661926888) + (-661926889 & 661926888))
|
|
.setUv(var9x < 2? var7 : var8x, CORNER_V[var9x])
|
|
.setOverlay(OverlayTexture.NO_OVERLAY)
|
|
.setLight(var6x)
|
|
.setNormal(var2x, 0.0F, 1.0F, 0.0F);
|
|
}
|
|
}
|
|
}
|
|
);
|
|
return;
|
|
case 1405188336:
|
|
return;
|
|
case 1475512480:
|
|
if (!var2.isEnabled()) {
|
|
var13 = -721135407;
|
|
} else {
|
|
var13 = -398855481;
|
|
}
|
|
break;
|
|
case 1747577231:
|
|
var8 = var1.poseStack();
|
|
var9 = var1.submitNodeCollector();
|
|
var10 = mc.getEntityRenderDispatcher().camera;
|
|
if (var8 != null) {
|
|
var13 = 245996176;
|
|
} else {
|
|
var13 = 1405188336;
|
|
}
|
|
break;
|
|
case 1886554511:
|
|
return;
|
|
case 2147014241:
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
private int collect(aim var1, ta var2, Camera var3, long var4, long var6) {
|
|
Quaternionf var8 = null;
|
|
Vector3f var9 = null;
|
|
Vector3f var10 = null;
|
|
Vec3 var11 = null;
|
|
float var12 = 0.0F;
|
|
float var13 = 0.0F;
|
|
float var14 = 0.0F;
|
|
float var15 = 0.0F;
|
|
float var16 = 0.0F;
|
|
float var17 = 0.0F;
|
|
float var18 = 0.0F;
|
|
float var19 = 0.0F;
|
|
float var20 = 0.0F;
|
|
float var21 = 0.0F;
|
|
int var22 = 0;
|
|
ObjectIterator var23 = null;
|
|
ail var24 = null;
|
|
LivingEntity var25 = null;
|
|
float var26 = 0.0F;
|
|
float var27 = 0.0F;
|
|
Vec3 var28 = null;
|
|
double var29 = 0.0;
|
|
float var31 = 0.0F;
|
|
float var32 = 0.0F;
|
|
float var33 = 0.0F;
|
|
int var34 = 0;
|
|
int var35 = 0;
|
|
int var36 = -780670675;
|
|
|
|
while (true) {
|
|
switch (var36) {
|
|
case -1440147710:
|
|
var26 = aim.eased(var24.linear(var4, var6));
|
|
var27 = aim.squashOf(var26, var13, var24.height());
|
|
var28 = var25.getPosition(var12);
|
|
var29 = var28.y + nameTagHeight(var25, var12) * var27 + var15;
|
|
var31 = (float)(var28.x - var11.x);
|
|
var32 = (float)(var29 - var11.y);
|
|
var33 = (float)(var28.z - var11.z);
|
|
var34 = var22 * (12);
|
|
this.writeCorner(var34, var31 - var16 + var19, var32 - var17 + var20, var33 - var18 + var21);
|
|
this.writeCorner(
|
|
var34 + 3, var31 - var16 - var19, var32 - var17 - var20, var33 - var18 - var21
|
|
);
|
|
this.writeCorner(
|
|
var34 + 6, var31 + var16 - var19, var32 + var17 - var20, var33 + var18 - var21
|
|
);
|
|
this.writeCorner(
|
|
var34 + 9, var31 + var16 + var19, var32 + var17 + var20, var33 + var18 + var21
|
|
);
|
|
var35 = aim.frameOf(var26);
|
|
this.minU[var22] = var35 * 0.2F + 0.0015F;
|
|
this.maxU[var22] = (var35 + (1976053565 | -1976053564) + (1976053565 & -1976053564)) * 0.2F - 0.0015F;
|
|
this.lights[var22] = LightCoordsUtil.getLightCoords(var25.level(), BlockPos.containing(var28.x, var29, var28.z));
|
|
var22++;
|
|
var36 = 501783342;
|
|
break;
|
|
case -837301266:
|
|
return var22;
|
|
case -780670675:
|
|
default:
|
|
var8 = var3.rotation();
|
|
var9 = var8.transform(1.0F, 0.0F, 0.0F, this.scratchRight);
|
|
var10 = var8.transform(0.0F, 1.0F, 0.0F, this.scratchUp);
|
|
var11 = var3.position();
|
|
var12 = mc.getDeltaTracker().getGameTimeDeltaPartialTick((boolean)((((-1365530967 ^ 1365530967) + ((-1365530967 & 1365530967) << 1))) != 0));
|
|
var13 = var2.patWeight();
|
|
var14 = var2.handScale() * 0.5F;
|
|
var15 = var2.heightOffset();
|
|
var16 = var9.x * var14;
|
|
var17 = var9.y * var14;
|
|
var18 = var9.z * var14;
|
|
var19 = var10.x * var14;
|
|
var20 = var10.y * var14;
|
|
var21 = var10.z * var14;
|
|
var22 = 0;
|
|
var23 = var1.entries().fastIterator();
|
|
var36 = 501783342;
|
|
break;
|
|
case 260468475:
|
|
if (var22 < (1248840445 ^ -1248840429) + ((1248840445 & -1248840429) << 1)) {
|
|
var36 = 275042566;
|
|
} else {
|
|
var36 = -837301266;
|
|
}
|
|
break;
|
|
case 275042566:
|
|
var24 = (ail)((Entry)var23.next()).getValue();
|
|
var25 = var24.entity();
|
|
if (var25.isInvisible()) {
|
|
var36 = 366350300;
|
|
} else {
|
|
var36 = -1440147710;
|
|
}
|
|
break;
|
|
case 366350300:
|
|
var36 = 501783342;
|
|
break;
|
|
case 501783342:
|
|
if (var23.hasNext()) {
|
|
var36 = 260468475;
|
|
} else {
|
|
var36 = -837301266;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void writeCorner(int var1, float var2, float var3, float var4) {
|
|
this.corners[var1] = var2;
|
|
this.corners[var1 + 1] = var3;
|
|
this.corners[var1 + 2] = var4;
|
|
}
|
|
|
|
private static float nameTagHeight(LivingEntity var0, float var1) {
|
|
Vec3 var2 = null;
|
|
float var4 = 0.0F;
|
|
int var3 = -797425218;
|
|
|
|
while (true) {
|
|
switch (var3) {
|
|
case -1368465518:
|
|
return var4;
|
|
case -797425218:
|
|
default:
|
|
var2 = var0.getAttachments()
|
|
.getNullable(EntityAttachment.NAME_TAG, 0, var0.getViewYRot(var1));
|
|
if (var2 != null) {
|
|
var3 = 1002135491;
|
|
} else {
|
|
var3 = -194467609;
|
|
}
|
|
break;
|
|
case -194467609:
|
|
var4 = var0.getBbHeight() + 0.5F;
|
|
var3 = -1368465518;
|
|
break;
|
|
case 1002135491:
|
|
var4 = (float)var2.y;
|
|
var3 = -1368465518;
|
|
}
|
|
}
|
|
}
|
|
|
|
static {
|
|
float[] var10000 = new float[4];
|
|
var10000[0] = 0.0F;
|
|
var10000[1] = 1.0F;
|
|
var10000[2] = 1.0F;
|
|
var10000[3] = 0.0F;
|
|
CORNER_V = var10000;
|
|
}
|
|
}
|