Bulk commit
This commit is contained in:
38
src/main/java/moe/nea/firmament/mixins/MixinMouse.java
Normal file
38
src/main/java/moe/nea/firmament/mixins/MixinMouse.java
Normal file
@@ -0,0 +1,38 @@
|
||||
package moe.nea.firmament.mixins;
|
||||
|
||||
import kotlin.Pair;
|
||||
import moe.nea.firmament.features.inventory.SaveCursorPosition;
|
||||
import net.minecraft.client.Mouse;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
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.callback.CallbackInfo;
|
||||
|
||||
@Mixin(Mouse.class)
|
||||
public class MixinMouse {
|
||||
@Shadow
|
||||
private double x;
|
||||
|
||||
@Shadow
|
||||
private double y;
|
||||
|
||||
@Inject(method = "lockCursor", at = @At(value = "FIELD", opcode = Opcodes.PUTFIELD, target = "Lnet/minecraft/client/Mouse;cursorLocked:Z"))
|
||||
public void onLockCursor(CallbackInfo ci) {
|
||||
SaveCursorPosition.saveCursorOriginal(x, y);
|
||||
}
|
||||
|
||||
@Inject(method = "lockCursor", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/Window;getHandle()J"))
|
||||
public void onLockCursorAfter(CallbackInfo ci) {
|
||||
SaveCursorPosition.saveCursorMiddle(x, y);
|
||||
}
|
||||
|
||||
@Inject(method = "unlockCursor", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/Window;getHandle()J"))
|
||||
public void onUnlockCursor(CallbackInfo ci) {
|
||||
Pair<Double, Double> cursorPosition = SaveCursorPosition.loadCursor(this.x, this.y);
|
||||
if (cursorPosition == null) return;
|
||||
this.x = cursorPosition.getFirst();
|
||||
this.y = cursorPosition.getSecond();
|
||||
}
|
||||
}
|
||||
@@ -19,25 +19,29 @@
|
||||
package moe.nea.firmament.mixins;
|
||||
|
||||
import moe.nea.firmament.events.WorldRenderLastEvent;
|
||||
import net.minecraft.client.render.Camera;
|
||||
import net.minecraft.client.render.GameRenderer;
|
||||
import net.minecraft.client.render.LightmapTextureManager;
|
||||
import net.minecraft.client.render.WorldRenderer;
|
||||
import net.minecraft.client.render.*;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import org.joml.Matrix4f;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
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.callback.CallbackInfo;
|
||||
|
||||
@Mixin(WorldRenderer.class)
|
||||
public class MixinWorldRenderer {
|
||||
@Shadow
|
||||
@Final
|
||||
private BufferBuilderStorage bufferBuilders;
|
||||
|
||||
@Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;renderChunkDebugInfo(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;Lnet/minecraft/client/render/Camera;)V", shift = At.Shift.BEFORE))
|
||||
public void onWorldRenderLast(MatrixStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightmapTextureManager lightmapTextureManager, Matrix4f positionMatrix, CallbackInfo ci) {
|
||||
var event = new WorldRenderLastEvent(
|
||||
matrices, tickDelta, renderBlockOutline,
|
||||
camera, gameRenderer, lightmapTextureManager,
|
||||
positionMatrix
|
||||
positionMatrix,
|
||||
this.bufferBuilders.getEntityVertexConsumers()
|
||||
);
|
||||
WorldRenderLastEvent.Companion.publish(event);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user