1
0
forked from Clones/Controlify

🐛 Fix NPE upon opening radial menu with an invalid radial action

This commit is contained in:
isXander
2023-08-13 00:17:04 +01:00
parent d55186520a
commit 3b14cae35f

View File

@ -17,6 +17,7 @@ import dev.isxander.controlify.screenop.ScreenProcessorProvider;
import dev.isxander.controlify.sound.ControlifySounds; import dev.isxander.controlify.sound.ControlifySounds;
import dev.isxander.controlify.utils.Animator; import dev.isxander.controlify.utils.Animator;
import dev.isxander.controlify.utils.Easings; import dev.isxander.controlify.utils.Easings;
import dev.isxander.controlify.utils.Log;
import dev.isxander.controlify.virtualmouse.VirtualMouseBehaviour; import dev.isxander.controlify.virtualmouse.VirtualMouseBehaviour;
import net.minecraft.client.gui.ComponentPath; import net.minecraft.client.gui.ComponentPath;
import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.GuiGraphics;
@ -220,7 +221,13 @@ public class RadialMenuScreen extends Screen implements ScreenControllerEventLis
this.setX(x); this.setX(x);
this.setY(y); 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 @Override
@ -259,7 +266,7 @@ public class RadialMenuScreen extends Screen implements ScreenControllerEventLis
} }
public void setAction(ResourceLocation binding) { 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.binding = controller.bindings().get(binding);
this.icon = RadialIcons.getIcons().get(this.binding.radialIcon().orElseThrow()); this.icon = RadialIcons.getIcons().get(this.binding.radialIcon().orElseThrow());
this.name = MultiLineLabel.create(font, this.binding.name(), 76); this.name = MultiLineLabel.create(font, this.binding.name(), 76);