1
0
forked from Clones/Controlify

virtual mouse + singleplayer screen compat + 22w05a

This commit is contained in:
isXander
2023-02-02 21:36:44 +00:00
parent 57fcd0c0dc
commit 09628defc4
34 changed files with 697 additions and 111 deletions

View File

@ -0,0 +1,18 @@
package dev.isxander.controlify.mixins.feature.virtualmouse;
import com.llamalad7.mixinextras.sugar.Local;
import com.mojang.blaze3d.vertex.PoseStack;
import dev.isxander.controlify.Controlify;
import net.minecraft.client.renderer.GameRenderer;
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(GameRenderer.class)
public class GameRendererMixin {
@Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/Screen;renderWithTooltip(Lcom/mojang/blaze3d/vertex/PoseStack;IIF)V", shift = At.Shift.AFTER))
private void onPostRenderScreen(float tickDelta, long startTime, boolean tick, CallbackInfo ci, @Local(ordinal = 1) PoseStack poseStack) {
Controlify.instance().virtualMouseHandler().renderVirtualMouse(poseStack);
}
}

View File

@ -0,0 +1,11 @@
package dev.isxander.controlify.mixins.feature.virtualmouse;
import net.minecraft.client.KeyboardHandler;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Invoker;
@Mixin(KeyboardHandler.class)
public interface KeyboardHandlerAccessor {
@Invoker
void invokeKeyPress(long window, int key, int scancode, int action, int modifiers);
}

View File

@ -0,0 +1,22 @@
package dev.isxander.controlify.mixins.feature.virtualmouse;
import dev.isxander.controlify.Controlify;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.Screen;
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(Minecraft.class)
public class MinecraftMixin {
@Inject(method = "setScreen", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;updateTitle()V"))
private void onScreenChanged(Screen screen, CallbackInfo ci) {
Controlify.instance().virtualMouseHandler().onScreenChanged();
}
@Inject(method = "runTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MouseHandler;turnPlayer()V"))
private void onUpdateMouse(boolean tick, CallbackInfo ci) {
Controlify.instance().virtualMouseHandler().updateMouse();
}
}

View File

@ -0,0 +1,17 @@
package dev.isxander.controlify.mixins.feature.virtualmouse;
import net.minecraft.client.MouseHandler;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Invoker;
@Mixin(MouseHandler.class)
public interface MouseHandlerAccessor {
@Invoker
void invokeOnMove(long window, double x, double y);
@Invoker
void invokeOnPress(long window, int button, int action, int modifiers);
@Invoker
void invokeOnScroll(long window, double scrollDeltaX, double scrollDeltaY);
}