From c1712981c65c52fe4196cc26e9cbe1305f55b1ba Mon Sep 17 00:00:00 2001 From: isXander Date: Sun, 2 Jul 2023 19:55:33 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20rare=20crash=20to=20do=20w?= =?UTF-8?q?ith=20delegate=5Fsetup=20config=20option?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/dev/isxander/controlify/Controlify.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/dev/isxander/controlify/Controlify.java b/src/main/java/dev/isxander/controlify/Controlify.java index 2286dd3..4e327ea 100644 --- a/src/main/java/dev/isxander/controlify/Controlify.java +++ b/src/main/java/dev/isxander/controlify/Controlify.java @@ -149,7 +149,7 @@ public class Controlify implements ControlifyApi { public void discoverControllers() { if (!canDiscoverControllers) { - throw new IllegalStateException("Cannot discover controllers!"); + throw new IllegalStateException("Already discovered/cannot discover controllers"); } canDiscoverControllers = false; @@ -377,6 +377,12 @@ public class Controlify implements ControlifyApi { config().loadOrCreateControllerData(controller); + canDiscoverControllers = false; + if (config().globalSettings().delegateSetup) { + config().globalSettings().delegateSetup = false; + config().setDirty(); + } + if (controller.config().allowVibrations && !config().globalSettings().loadVibrationNatives) { controller.config().allowVibrations = false; config().setDirty(); @@ -395,8 +401,6 @@ public class Controlify implements ControlifyApi { config().saveIfDirty(); } - canDiscoverControllers = false; - if (minecraft.screen instanceof ControllerCarouselScreen controllerListScreen) { controllerListScreen.refreshControllers(); } @@ -526,7 +530,7 @@ public class Controlify implements ControlifyApi { } lastInputSwitchTime = Blaze3D.getTime(); - if (this.currentInputMode == InputMode.CONTROLLER) + if (this.currentInputMode.isController()) getCurrentController().ifPresent(Controller::clearState); ControlifyEvents.INPUT_MODE_CHANGED.invoker().onInputModeChanged(currentInputMode);