1
0
forked from Clones/Controlify

🐛 Fix rare crash to do with delegate_setup config option

This commit is contained in:
isXander
2023-07-02 19:55:33 +01:00
parent e3d3e6211b
commit c1712981c6

View File

@ -149,7 +149,7 @@ public class Controlify implements ControlifyApi {
public void discoverControllers() { public void discoverControllers() {
if (!canDiscoverControllers) { if (!canDiscoverControllers) {
throw new IllegalStateException("Cannot discover controllers!"); throw new IllegalStateException("Already discovered/cannot discover controllers");
} }
canDiscoverControllers = false; canDiscoverControllers = false;
@ -377,6 +377,12 @@ public class Controlify implements ControlifyApi {
config().loadOrCreateControllerData(controller); config().loadOrCreateControllerData(controller);
canDiscoverControllers = false;
if (config().globalSettings().delegateSetup) {
config().globalSettings().delegateSetup = false;
config().setDirty();
}
if (controller.config().allowVibrations && !config().globalSettings().loadVibrationNatives) { if (controller.config().allowVibrations && !config().globalSettings().loadVibrationNatives) {
controller.config().allowVibrations = false; controller.config().allowVibrations = false;
config().setDirty(); config().setDirty();
@ -395,8 +401,6 @@ public class Controlify implements ControlifyApi {
config().saveIfDirty(); config().saveIfDirty();
} }
canDiscoverControllers = false;
if (minecraft.screen instanceof ControllerCarouselScreen controllerListScreen) { if (minecraft.screen instanceof ControllerCarouselScreen controllerListScreen) {
controllerListScreen.refreshControllers(); controllerListScreen.refreshControllers();
} }
@ -526,7 +530,7 @@ public class Controlify implements ControlifyApi {
} }
lastInputSwitchTime = Blaze3D.getTime(); lastInputSwitchTime = Blaze3D.getTime();
if (this.currentInputMode == InputMode.CONTROLLER) if (this.currentInputMode.isController())
getCurrentController().ifPresent(Controller::clearState); getCurrentController().ifPresent(Controller::clearState);
ControlifyEvents.INPUT_MODE_CHANGED.invoker().onInputModeChanged(currentInputMode); ControlifyEvents.INPUT_MODE_CHANGED.invoker().onInputModeChanged(currentInputMode);