diff --git a/src/main/java/dev/isxander/controlify/bindings/ControllerBindings.java b/src/main/java/dev/isxander/controlify/bindings/ControllerBindings.java index 527bcf5..339c917 100644 --- a/src/main/java/dev/isxander/controlify/bindings/ControllerBindings.java +++ b/src/main/java/dev/isxander/controlify/bindings/ControllerBindings.java @@ -410,10 +410,11 @@ public class ControllerBindings { registerModdedKeybinds(); - // key events are executed in Minecraft#execute, which run at runTick.runAllTasks() - // which this event runs directly after. A normal tick could run multiple - // times per frame, so you could get double clicks if lagging. - InputHandledEvent.EVENT.register(this::imitateVanillaClick); + ControlifyEvents.CONTROLLER_STATE_UPDATE.register(ctrl -> { + if (ctrl == this.controller) { + this.imitateVanillaClick(); + } + }); ControlifyEvents.INPUT_MODE_CHANGED.register(mode -> KeyMapping.releaseAll()); } @@ -540,8 +541,9 @@ public class ControllerBindings { accessor.setIsDown(!accessor.getIsDown()); } } - if (binding.justPressed()) + if (binding.justPressed()) { KeyMapping.click(vanillaKeyCode); + } } } diff --git a/src/main/java/dev/isxander/controlify/bindings/InputHandledEvent.java b/src/main/java/dev/isxander/controlify/bindings/InputHandledEvent.java deleted file mode 100644 index 570c947..0000000 --- a/src/main/java/dev/isxander/controlify/bindings/InputHandledEvent.java +++ /dev/null @@ -1,14 +0,0 @@ -package dev.isxander.controlify.bindings; - -import net.fabricmc.fabric.api.event.Event; -import net.fabricmc.fabric.api.event.EventFactory; - -public interface InputHandledEvent { - void onInputHandled(); - - Event EVENT = EventFactory.createArrayBacked(InputHandledEvent.class, (listeners) -> () -> { - for (InputHandledEvent listener : listeners) { - listener.onInputHandled(); - } - }); -} diff --git a/src/main/java/dev/isxander/controlify/mixins/feature/bind/MinecraftMixin.java b/src/main/java/dev/isxander/controlify/mixins/feature/bind/MinecraftMixin.java deleted file mode 100644 index 0dc7e66..0000000 --- a/src/main/java/dev/isxander/controlify/mixins/feature/bind/MinecraftMixin.java +++ /dev/null @@ -1,19 +0,0 @@ -package dev.isxander.controlify.mixins.feature.bind; - -import dev.isxander.controlify.bindings.InputHandledEvent; -import net.minecraft.client.Minecraft; -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 { - // KeyboardHandler and MouseHandler run input events through Minecraft#execute, - // which is polled by the injection point below. Cannot be done in normal tick event - // as that could run up to 10 times per frame depending on framerate. - @Inject(method = "runTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;runAllTasks()V", shift = At.Shift.AFTER)) - private void onTasksExecuted(boolean tick, CallbackInfo ci) { - InputHandledEvent.EVENT.invoker().onInputHandled(); - } -} diff --git a/src/main/resources/controlify.mixins.json b/src/main/resources/controlify.mixins.json index f44f414..4caac03 100644 --- a/src/main/resources/controlify.mixins.json +++ b/src/main/resources/controlify.mixins.json @@ -6,7 +6,7 @@ "defaultRequire": 1 }, "compatibilityLevel": "JAVA_17", - "mixins": [ + "client": [ "compat.iris.BaseOptionElementWidgetMixin", "compat.sodium.CycleControlElementMixin", "compat.sodium.SliderControlElementMixin", @@ -17,9 +17,7 @@ "feature.rumble.fishing.FishingHookMixin", "feature.rumble.itembreak.LivingEntityMixin", "feature.rumble.levelevents.LevelRendererMixin", - "feature.rumble.useitem.LivingEntityMixin" - ], - "client": [ + "feature.rumble.useitem.LivingEntityMixin", "compat.fapi.KeyBindingRegistryImplAccessor", "compat.sodium.SodiumOptionsGUIAccessor", "compat.sodium.SodiumOptionsGUIMixin", @@ -37,7 +35,6 @@ "feature.autoswitch.ToastComponentAccessor", "feature.bind.KeyMappingAccessor", "feature.bind.KeyMappingMixin", - "feature.bind.MinecraftMixin", "feature.bind.ToggleKeyMappingAccessor", "feature.chatkbheight.ChatComponentMixin", "feature.chatkbheight.ChatScreenMixin",