forked from Clones/Controlify
in-game input and start of keybind system
This commit is contained in:
@ -8,6 +8,9 @@ import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
|
||||
/**
|
||||
* Mixin to insert a custom {@link ComponentProcessor} into slider to support left/right movement without navigating to next component.
|
||||
*/
|
||||
@Mixin(AbstractSliderButton.class)
|
||||
public class AbstractSliderButtonMixin implements ComponentProcessorProvider {
|
||||
@Shadow private boolean canChangeValue;
|
||||
|
@ -0,0 +1,35 @@
|
||||
package dev.isxander.controlify.mixins;
|
||||
|
||||
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
|
||||
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
|
||||
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
|
||||
import dev.isxander.controlify.Controlify;
|
||||
import dev.isxander.controlify.InputMode;
|
||||
import dev.isxander.controlify.ingame.ControllerPlayerMovement;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.Options;
|
||||
import net.minecraft.client.multiplayer.ClientPacketListener;
|
||||
import net.minecraft.client.player.Input;
|
||||
import net.minecraft.client.player.KeyboardInput;
|
||||
import net.minecraft.network.protocol.game.ClientboundLoginPacket;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
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;
|
||||
|
||||
/**
|
||||
* Override input handling for main player.
|
||||
*/
|
||||
@Mixin(ClientPacketListener.class)
|
||||
public class ClientPacketListenerMixin {
|
||||
@Shadow @Final private Minecraft minecraft;
|
||||
|
||||
@Inject(method = "handleLogin", at = @At(value = "FIELD", target = "Lnet/minecraft/client/player/LocalPlayer;input:Lnet/minecraft/client/player/Input;", opcode = Opcodes.ASTORE, shift = At.Shift.AFTER))
|
||||
private void useControllerInput(ClientboundLoginPacket packet, CallbackInfo ci) {
|
||||
if (Controlify.getInstance().getCurrentInputMode() == InputMode.CONTROLLER && minecraft.player != null)
|
||||
minecraft.player.input = new ControllerPlayerMovement(Controlify.getInstance().getCurrentController());
|
||||
}
|
||||
}
|
@ -13,4 +13,9 @@ public class MinecraftMixin {
|
||||
private void onInputInitialized(CallbackInfo ci) {
|
||||
Controlify.getInstance().onInitializeInput();
|
||||
}
|
||||
|
||||
@Inject(method = "runTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MouseHandler;turnPlayer()V"))
|
||||
private void doPlayerLook(boolean tick, CallbackInfo ci) {
|
||||
Controlify.getInstance().getInGameInputHandler().processPlayerLook();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user