From 3b14cae35f61236c2efd59a233c42ff2b788460d Mon Sep 17 00:00:00 2001 From: isXander Date: Sun, 13 Aug 2023 00:17:04 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20NPE=20upon=20opening=20rad?= =?UTF-8?q?ial=20menu=20with=20an=20invalid=20radial=20action?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controlify/gui/screen/RadialMenuScreen.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/dev/isxander/controlify/gui/screen/RadialMenuScreen.java b/src/main/java/dev/isxander/controlify/gui/screen/RadialMenuScreen.java index d3017ec..22fa4bc 100644 --- a/src/main/java/dev/isxander/controlify/gui/screen/RadialMenuScreen.java +++ b/src/main/java/dev/isxander/controlify/gui/screen/RadialMenuScreen.java @@ -17,6 +17,7 @@ import dev.isxander.controlify.screenop.ScreenProcessorProvider; import dev.isxander.controlify.sound.ControlifySounds; import dev.isxander.controlify.utils.Animator; import dev.isxander.controlify.utils.Easings; +import dev.isxander.controlify.utils.Log; import dev.isxander.controlify.virtualmouse.VirtualMouseBehaviour; import net.minecraft.client.gui.ComponentPath; import net.minecraft.client.gui.GuiGraphics; @@ -220,7 +221,13 @@ public class RadialMenuScreen extends Screen implements ScreenControllerEventLis this.setX(x); this.setY(y); - this.setAction(controller.config().radialActions[index]); + ResourceLocation binding = controller.config().radialActions[index]; + if (controller.bindings().get(binding) == null) { + Log.LOGGER.warn("Binding {} does not exist!", binding); + controller.config().radialActions[index] = EMPTY_ACTION; + Controlify.instance().config().setDirty(); + } + this.setAction(binding); } @Override @@ -259,7 +266,7 @@ public class RadialMenuScreen extends Screen implements ScreenControllerEventLis } public void setAction(ResourceLocation binding) { - if (!EMPTY_ACTION.equals(binding)) { + if (!EMPTY_ACTION.equals(binding) && controller.bindings().get(binding) != null) { this.binding = controller.bindings().get(binding); this.icon = RadialIcons.getIcons().get(this.binding.radialIcon().orElseThrow()); this.name = MultiLineLabel.create(font, this.binding.name(), 76);