Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.v5.mixins;
package com.chattriggers.ctjs.internal.mixins;

import com.v5.storage.V5MixinStorage;
import com.chattriggers.ctjs.api.client.Client;
import net.minecraft.client.Camera;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
Expand All @@ -25,35 +25,28 @@ public abstract class CameraMixin {

@Inject(method = "alignWithEntity", at = @At("TAIL"))
private void v5$applyCameraOverride(float partialTick, CallbackInfo ci) {
Object yaw = V5MixinStorage.get("cameraOverrideYaw", null);
Object pitch = V5MixinStorage.get("cameraOverridePitch", null);
if (V5MixinStorage.getBoolean("freelookEnabled", false)
&& yaw instanceof Number yawNumber
&& pitch instanceof Number pitchNumber) {
Float yaw = Client.getCameraYaw();
Float pitch = Client.getCameraPitch();
if (Client.isFreelook() && yaw != null && pitch != null) {
LocalPlayer player = Minecraft.getInstance().player;
if (player != null) {
float yawRadians = yawNumber.floatValue() * Mth.DEG_TO_RAD;
float pitchRadians = pitchNumber.floatValue() * Mth.DEG_TO_RAD;
float yawRadians = yaw * Mth.DEG_TO_RAD;
float pitchRadians = pitch * Mth.DEG_TO_RAD;
float cosPitch = Mth.cos(pitchRadians);
Object storedDistance = V5MixinStorage.get("freelookCameraDistance", 4.0);
double distance = storedDistance instanceof Number number ? Mth.clamp(number.doubleValue(), 1.0, 12.0) : 4.0;
double distance = Client.getFreelookDistance();
Vec3 eyePos = player.getEyePosition(partialTick);
this.setPosition(eyePos.add(
Mth.sin(yawRadians) * cosPitch * distance,
Mth.sin(pitchRadians) * distance,
-Mth.cos(yawRadians) * cosPitch * distance));
}
} else {
Object override = V5MixinStorage.get("cameraOverridePos", null);
if (override instanceof Vec3 pos) {
this.setPosition(pos);
}
Vec3 position = Client.getCameraPosition();
if (position != null) this.setPosition(position);
}

if (yaw instanceof Number yawNumber && pitch instanceof Number pitchNumber) {
this.setRotation(yawNumber.floatValue(), pitchNumber.floatValue());
}
if (yaw != null && pitch != null) this.setRotation(yaw, pitch);

if (V5MixinStorage.getBoolean("freecamEnabled", false)) this.detached = true;
if (Client.isFreecam()) this.detached = true;
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.chattriggers.ctjs.internal.mixins;

import com.chattriggers.ctjs.api.client.Client;
import com.chattriggers.ctjs.api.message.ChatLib;
import net.minecraft.client.gui.components.ChatComponent;
import net.minecraft.client.multiplayer.chat.GuiMessage;
Expand All @@ -11,6 +12,7 @@
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

import java.util.List;
Expand All @@ -21,6 +23,16 @@ public class ChatComponentMixin {
@Shadow
private List<GuiMessage> allMessages;

@ModifyVariable(
method = "addMessage(Lnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/MessageSignature;Lnet/minecraft/client/multiplayer/chat/GuiMessageSource;Lnet/minecraft/client/multiplayer/chat/GuiMessageTag;)V",
at = @At("HEAD"),
ordinal = 0,
argsOnly = true
)
private Component v5$addMessage(Component original) {
return Client.processName(original);
}

@Inject(method = "clearMessages", at = @At("TAIL"))
private void injectClear(boolean clearHistory, CallbackInfo ci) {
ChatLib.INSTANCE.onChatHudClearChat$ctjs();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
package com.chattriggers.ctjs.internal.mixins;

import com.chattriggers.ctjs.api.triggers.PacketEvent;
import com.chattriggers.ctjs.internal.engine.CTEvents;
import com.chattriggers.ctjs.api.triggers.TriggerType;
import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandlerContext;
import net.minecraft.network.Connection;
import net.minecraft.network.PacketListener;
import net.minecraft.network.protocol.PacketFlow;
import net.minecraft.network.PacketSendListener;
import net.minecraft.network.protocol.Packet;
import org.jetbrains.annotations.Nullable;
import net.minecraft.network.protocol.game.ClientboundBundlePacket;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
Expand All @@ -34,6 +35,15 @@ private void injectHandlePacket(ChannelHandlerContext channelHandlerContext, Pac
CTEvents.PACKET_RECEIVED.invoker().receive(packet, ci);
}

@Inject(method = "genericsFtw", at = @At("HEAD"))
private static void triggerPacketEvent(Packet<?> packet, PacketListener listener, CallbackInfo ci) {
if (packet instanceof ClientboundBundlePacket bundlePacket) {
bundlePacket.subPackets().forEach(PacketEvent.RECEIVE.invoker()::trigger);
} else {
PacketEvent.RECEIVE.invoker().trigger(packet);
}
}

@Inject(
method = "send(Lnet/minecraft/network/protocol/Packet;Lio/netty/channel/ChannelFutureListener;)V",
at = @At("HEAD"),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.v5.mixins;
package com.chattriggers.ctjs.internal.mixins;

import com.chattriggers.ctjs.api.client.Proxy;
import com.chattriggers.ctjs.api.client.ProxyInfo;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.v5.mixins;
package com.chattriggers.ctjs.internal.mixins;

import net.minecraft.world.level.block.CrossCollisionBlock;
import net.minecraft.world.level.block.StainedGlassPaneBlock;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.v5.mixins;
package com.chattriggers.ctjs.internal.mixins;

import com.v5.storage.V5MixinStorage;
import com.chattriggers.ctjs.api.client.Client;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.network.chat.Component;
import org.spongepowered.asm.mixin.Mixin;
Expand All @@ -17,7 +17,7 @@ public class EntityRendererMixin {
return;
}

Component updated = V5MixinStorage.applyMethod("nameProcessor", original, Component.class);
Component updated = Client.processName(original);
if (updated != original) {
cir.setReturnValue(updated);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.v5.mixins;
package com.chattriggers.ctjs.internal.mixins;

import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.v5.mixins;
package com.chattriggers.ctjs.internal.mixins;

import com.mojang.blaze3d.platform.FramerateLimitTracker;
import org.spongepowered.asm.mixin.Mixin;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.v5.mixins;
package com.chattriggers.ctjs.internal.mixins;

import com.v5.storage.V5MixinStorage;
import com.chattriggers.ctjs.api.client.Client;
import net.minecraft.client.renderer.culling.Frustum;
import org.joml.FrustumIntersection;
import org.spongepowered.asm.mixin.Mixin;
Expand All @@ -14,6 +14,6 @@ public class FrustumMixin {
private void v5$showEverythingInFreecam(double minX, double minY, double minZ,
double maxX, double maxY, double maxZ,
CallbackInfoReturnable<Integer> cir) {
if (V5MixinStorage.getBoolean("freecamEnabled", false)) cir.setReturnValue(FrustumIntersection.INSIDE);
if (Client.isFreecam()) cir.setReturnValue(FrustumIntersection.INSIDE);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.chattriggers.ctjs.internal.mixins;

import com.chattriggers.ctjs.api.render.DrawContextHolder;
import com.chattriggers.ctjs.api.world.Scoreboard;
import com.chattriggers.ctjs.internal.engine.CTEvents;
import gg.essential.universal.UMatrixStack;
Expand All @@ -14,6 +15,11 @@

@Mixin(Gui.class)
public class GuiMixin {
@Inject(method = "extractRenderState", at = @At("HEAD"))
private void captureContext(GuiGraphicsExtractor context, DeltaTracker tickCounter, CallbackInfo ci) {
DrawContextHolder.setCurrentContext(context);
}

@Inject(method = "extractScoreboardSidebar", at = @At("HEAD"), cancellable = true)
private void injectRenderScoreboard(GuiGraphicsExtractor matrices, DeltaTracker tickCounter, CallbackInfo ci) {
if (!Scoreboard.getShouldRender())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
package com.v5.mixins;
package com.chattriggers.ctjs.internal.mixins;

import com.mojang.blaze3d.buffers.GpuBufferSlice;
import com.chattriggers.ctjs.api.render.NVGRenderer;
import com.mojang.blaze3d.buffers.GpuBufferSlice;
import net.minecraft.client.gui.render.GuiRenderer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(GuiRenderer.class)
public class GameRendererMixin {
public class GuiRendererMixin {
@Inject(method = "render", at = @At("HEAD"))
private void beforeRender(GpuBufferSlice fogBuffer, CallbackInfo ci) {
NVGRenderer.runPreDrawables();
}

@Inject(method = "render", at = @At("TAIL"))
private void onRender(GpuBufferSlice fogBuffer, CallbackInfo ci) {
private void afterRender(GpuBufferSlice fogBuffer, CallbackInfo ci) {
NVGRenderer.runDrawables();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.v5.mixins;
package com.chattriggers.ctjs.internal.mixins;

import com.v5.storage.V5MixinStorage;
import com.chattriggers.ctjs.api.client.Client;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.client.renderer.ItemInHandRenderer;
import net.minecraft.world.InteractionHand;
Expand Down Expand Up @@ -53,7 +53,6 @@ public class ItemInHandRendererMixin {
}

private LivingEntity v5$getSpectatedEntity() {
Object target = V5MixinStorage.get("freecamSpectatedEntity", null);
return target instanceof LivingEntity entity ? entity : null;
return Client.getSpectatedEntity();
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.v5.mixins;
package com.chattriggers.ctjs.internal.mixins;

import com.chattriggers.ctjs.api.client.ProxyManagerScreen;
import net.minecraft.client.gui.GuiGraphicsExtractor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package com.v5.mixins;
package com.chattriggers.ctjs.internal.mixins;

import com.chattriggers.ctjs.api.client.Client;
import com.mojang.blaze3d.platform.InputConstants;
import com.v5.storage.V5MixinStorage;
import net.minecraft.client.KeyboardHandler;
import net.minecraft.client.Minecraft;
import net.minecraft.client.Options;
Expand All @@ -22,7 +21,7 @@ public class KeyboardHandlerMixin {
}

Minecraft client = Minecraft.getInstance();
if (!V5MixinStorage.getBoolean("freecamEnabled", false) || client.screen != null) {
if (!Client.isFreecam() || client.screen != null) {
return;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
package com.chattriggers.ctjs.internal.mixins;

import com.chattriggers.ctjs.api.client.Client;
import com.chattriggers.ctjs.internal.listeners.WorldListener;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import com.mojang.blaze3d.buffers.GpuBufferSlice;
import com.mojang.blaze3d.framegraph.FrameGraphBuilder;
import com.mojang.blaze3d.resource.GraphicsResourceAllocator;
import com.mojang.blaze3d.resource.ResourceHandle;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.DeltaTracker;
import net.minecraft.client.renderer.LevelRenderer;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.chunk.ChunkSectionsToRender;
import net.minecraft.client.renderer.culling.Frustum;
import net.minecraft.client.renderer.state.level.BlockOutlineRenderState;
import net.minecraft.client.renderer.state.level.CameraRenderState;
import net.minecraft.client.renderer.state.level.LevelRenderState;
Expand All @@ -19,13 +22,26 @@
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;

@Mixin(LevelRenderer.class)
public abstract class LevelRendererMixin {
private float ctjs$tickDelta = 1.0F;

@ModifyVariable(method = "cullTerrain", at = @At("HEAD"), argsOnly = true)
private boolean v5$useSpectatorCullingInFreecam(boolean spectator) {
return spectator || Client.isFreecam();
}

@Inject(method = "addMainPass", at = @At("HEAD"), cancellable = true)
private void v5$renderMain(FrameGraphBuilder frameGraphBuilder, Frustum frustum, Matrix4fc matrix4f, GpuBufferSlice gpuBufferSlice, boolean renderBlockOutline, LevelRenderState worldRenderState, DeltaTracker deltaTracker, ProfilerFiller profiler, ChunkSectionsToRender chunkSectionsToRender, CallbackInfo ci) {
if (Client.isMacroEnabled() && Client.getRenderLimiter() == Client.RenderLimiter.NO_RENDER) {
ci.cancel();
}
}

@Inject(
method = "renderBlockOutline",
at = @At(
Expand Down
Loading
Loading