diff --git a/versions/1.21.6/src/main/java/org/saturnclient/impl/provider/SaturnProviderImpl.java b/versions/1.21.6/src/main/java/org/saturnclient/impl/provider/SaturnProviderImpl.java index 607b35e..8ac2333 100644 --- a/versions/1.21.6/src/main/java/org/saturnclient/impl/provider/SaturnProviderImpl.java +++ b/versions/1.21.6/src/main/java/org/saturnclient/impl/provider/SaturnProviderImpl.java @@ -9,9 +9,6 @@ import org.saturnclient.common.ref.game.MinecraftClientRef; import org.saturnclient.impl.cosmetics.utils.IdentifierUtils; import org.saturnclient.saturnclient.SaturnClient; -import net.minecraft.client.network.AbstractClientPlayerEntity; -import net.minecraft.util.Identifier; - public class SaturnProviderImpl implements SaturnProvider { @Override public MinecraftClientRef getClient() { diff --git a/versions/1.21.6/src/main/java/org/saturnclient/impl/ui/EntityDrawerImpl.java b/versions/1.21.6/src/main/java/org/saturnclient/impl/ui/EntityDrawerImpl.java index e1320c4..4712414 100644 --- a/versions/1.21.6/src/main/java/org/saturnclient/impl/ui/EntityDrawerImpl.java +++ b/versions/1.21.6/src/main/java/org/saturnclient/impl/ui/EntityDrawerImpl.java @@ -3,83 +3,70 @@ package org.saturnclient.impl.ui; import org.jetbrains.annotations.Nullable; import org.joml.Quaternionf; import org.joml.Vector3f; -import org.saturnclient.common.ref.render.QuaternionfRef; import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.ui.ElementContext; import org.saturnclient.ui.RenderScope; import org.saturnclient.ui.components.SkinPreview.EntityDrawer; -import net.minecraft.client.render.DiffuseLighting; import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.EntityRenderer; +import net.minecraft.client.render.entity.state.EntityRenderState; import net.minecraft.entity.LivingEntity; public class EntityDrawerImpl implements EntityDrawer { - public static void drawEntity(RenderScope renderScope, int x1, int y1, int x2, int y2, int size, float f, - float mouseX, - float mouseY, LivingEntity entity, float angle, boolean negativeAngle) { - float g = (float) (x1 + x2) / 2.0F; - float h = (float) (y1 + y2) / 2.0F; - renderScope.enableScissor(0, 6, x2, y2); - float i = (float) Math.atan((double) ((g - mouseX) / 40.0F)); - float j = (float) Math.atan((double) ((h - mouseY) / 40.0F)); - Quaternionf quaternionf = (new Quaternionf()).rotateZ(3.1415927F); - float k = entity.bodyYaw; - float l = entity.getYaw(); - float m = entity.getPitch(); - float n = entity.lastHeadYaw; - float o = entity.headYaw; - entity.setYaw(angle); - entity.bodyYaw = angle; - entity.setPitch(-(j * 20.0F)); - entity.headYaw = negativeAngle ? (i * 40.0F) + 180f : -(i * 40.0F); - entity.lastHeadYaw = entity.getHeadYaw(); - entity.setCustomNameVisible(false); - - float p = entity.getScale(); - Vector3f vector3f = new Vector3f(0.0F, entity.getHeight() / 2.0F + f * p, 0.0F); - float q = (float) size / p; - drawEntity(renderScope, g, h, q, vector3f, quaternionf, null, entity); - - entity.setCustomNameVisible(true); - entity.bodyYaw = k; - entity.setYaw(l); - entity.setPitch(m); - entity.lastHeadYaw = n; - entity.headYaw = o; - renderScope.disableScissor(); - } - - public static void drawEntity(RenderScope renderScope, float x, float y, float size, Vector3f vector3f, - Quaternionf quaternionf, @Nullable Quaternionf quaternionf2, LivingEntity entity) { - // if (renderScope instanceof RenderScopeImpl scopeImpl) { - // scopeImpl.matrices.push(); - // scopeImpl.matrices.translate((double) x, (double) y, 0); - // scopeImpl.matrices.scale(size, size, -size); - // scopeImpl.matrices.translate(vector3f.x, vector3f.y, vector3f.z); - // scopeImpl.matrices.multiply(quaternionf); - // scopeImpl.draw(); - // DiffuseLighting.disableGuiDepthLighting(); - // EntityRenderDispatcher entityRenderDispatcher = SaturnClient.client.getEntityRenderDispatcher(); - - // entityRenderDispatcher.setRenderShadows(false); - // scopeImpl.draw((vertexConsumers) -> { - // entityRenderDispatcher.render(entity, 0.0, 0.0, 0.0, 1.0F, - // scopeImpl.matrices, vertexConsumers, 15728880); - // }); - - // scopeImpl.draw(); - // entityRenderDispatcher.setRenderShadows(true); - // scopeImpl.getMatrixStack().pop(); - // DiffuseLighting.enableGuiDepthLighting(); - // } - } - @Override public void render(RenderScope renderScope, boolean negativeAngle, float angle, float scale, ElementContext ctx) { LivingEntity entity = SaturnClient.client.player; + + System.out.println(scale); + if (entity != null) { - drawEntity(renderScope, 0, 0, 75, 78, 30, 0.0625F, ctx.mouseX / scale, ctx.mouseY / scale, entity, angle, - negativeAngle); + drawEntity(renderScope, 0, 0, 75, 78, 30, 0.0625F, ctx.mouseX / scale, ctx.mouseY / scale, + SaturnClient.client.player); } } + + public static void drawEntity(RenderScope renderScope, int x1, int y1, int x2, int y2, int size, float scale, + float mouseX, float mouseY, LivingEntity entity) { + float f = (float) (x1 + x2) / 2.0F; + float g = (float) (y1 + y2) / 2.0F; + renderScope.enableScissor(x1, y1, x2, y2); + float h = (float) Math.atan((double) ((f - mouseX) / 40.0F)); + float i = (float) Math.atan((double) ((g - mouseY) / 40.0F)); + Quaternionf quaternionf = (new Quaternionf()).rotateZ((float) Math.PI); + Quaternionf quaternionf2 = (new Quaternionf()).rotateX(i * 20.0F * ((float) Math.PI / 180F)); + quaternionf.mul(quaternionf2); + float j = entity.bodyYaw; + float k = entity.getYaw(); + float l = entity.getPitch(); + float m = entity.lastHeadYaw; + float n = entity.headYaw; + entity.bodyYaw = 180.0F + h * 20.0F; + entity.setYaw(180.0F + h * 40.0F); + entity.setPitch(-i * 20.0F); + entity.headYaw = entity.getYaw(); + entity.lastHeadYaw = entity.getYaw(); + float o = entity.getScale(); + Vector3f vector3f = new Vector3f(0.0F, entity.getHeight() / 2.0F + scale * o, 0.0F); + float p = (float) size / o; + drawEntity(renderScope, x1, y1, x2, y2, p, vector3f, quaternionf, quaternionf2, entity); + entity.bodyYaw = j; + entity.setYaw(k); + entity.setPitch(l); + entity.lastHeadYaw = m; + entity.headYaw = n; + renderScope.disableScissor(); + } + + public static void drawEntity(RenderScope renderScope, int x1, int y1, int x2, int y2, float scale, + Vector3f translation, Quaternionf rotation, @Nullable Quaternionf overrideCameraAngle, + LivingEntity entity) { + EntityRenderDispatcher entityRenderDispatcher = SaturnClient.client.getEntityRenderDispatcher(); + EntityRenderer entityRenderer = entityRenderDispatcher.getRenderer(entity); + EntityRenderState entityRenderState = entityRenderer.getAndUpdateRenderState(entity, 1.0F); + entityRenderState.hitbox = null; + + if (renderScope instanceof RenderScopeImpl i) + i.addEntity(entityRenderState, scale, translation, rotation, overrideCameraAngle, x1, y1, x2, y2); + } } diff --git a/versions/1.21.6/src/main/java/org/saturnclient/impl/ui/RenderScopeImpl.java b/versions/1.21.6/src/main/java/org/saturnclient/impl/ui/RenderScopeImpl.java index cd5e0d8..17f78e9 100644 --- a/versions/1.21.6/src/main/java/org/saturnclient/impl/ui/RenderScopeImpl.java +++ b/versions/1.21.6/src/main/java/org/saturnclient/impl/ui/RenderScopeImpl.java @@ -7,6 +7,8 @@ import java.util.Objects; import org.jetbrains.annotations.Nullable; import org.joml.Matrix3x2f; import org.joml.Matrix3x2fStack; +import org.joml.Quaternionf; +import org.joml.Vector3f; import com.mojang.blaze3d.textures.GpuTextureView; @@ -29,6 +31,8 @@ import net.minecraft.client.gui.render.state.GuiRenderState; import net.minecraft.client.gui.render.state.ItemGuiElementRenderState; import net.minecraft.client.gui.render.state.TextGuiElementRenderState; import net.minecraft.client.gui.render.state.TexturedQuadGuiElementRenderState; +import net.minecraft.client.gui.render.state.special.EntityGuiElementRenderState; +import net.minecraft.client.render.entity.state.EntityRenderState; import net.minecraft.client.render.item.ItemRenderState; import net.minecraft.client.texture.Sprite; import net.minecraft.client.texture.TextureSetup; @@ -317,4 +321,25 @@ public class RenderScopeImpl implements RenderScope { fill(x, y + 1, x + 1, y + height - 1, color); fill(x + width - 1, y + 1, x + width, y + height - 1, color); } + + public void addEntity(EntityRenderState entityState, float scale, Vector3f translation, Quaternionf rotation, + @Nullable Quaternionf overrideCameraAngle, int x1, int y1, int x2, int y2) { + + Matrix3x2f mat = this.matrices.stack; + float offsetX = mat.m20; + float offsetY = mat.m21; + float scaleX = mat.m00; // current matrix X scale + float scaleY = mat.m11; // current matrix Y scale + + int adjustedX1 = (int) (x1 * scaleX + offsetX); + int adjustedY1 = (int) (y1 * scaleY + offsetY); + int adjustedX2 = (int) (x2 * scaleX + offsetX); + int adjustedY2 = (int) (y2 * scaleY + offsetY); + + float adjustedScale = scale * scaleX; // apply matrix scale to entity scale too + + this.state.addSpecialElement(new EntityGuiElementRenderState(entityState, translation, rotation, + overrideCameraAngle, adjustedX1, adjustedY1, adjustedX2, adjustedY2, adjustedScale, + this.scissorStack.peekLast())); + } } \ No newline at end of file diff --git a/versions/1.21.6/src/main/java/org/saturnclient/impl/ui/SaturnScreenFabric.java b/versions/1.21.6/src/main/java/org/saturnclient/impl/ui/SaturnScreenFabric.java index 435003c..3717c6f 100644 --- a/versions/1.21.6/src/main/java/org/saturnclient/impl/ui/SaturnScreenFabric.java +++ b/versions/1.21.6/src/main/java/org/saturnclient/impl/ui/SaturnScreenFabric.java @@ -62,7 +62,7 @@ public class SaturnScreenFabric extends Screen implements ScreenProvider { mouseY *= 2; if (client.world == null && client.getCurrentServerEntry() == null) { - ROTATING_PANORAMA_RENDERER.render(context, this.width, this.height, true); + // ROTATING_PANORAMA_RENDERER.render(context, this.width, this.height, true); } RenderScope renderScope = new RenderScopeImpl(context);