From 59ba55431539240e8668bcc172c9a8ce2ac2df50 Mon Sep 17 00:00:00 2001 From: bigguy345 Date: Wed, 11 Mar 2026 16:25:15 +0200 Subject: [PATCH] Fixed "Java" language option and editor tab language button being available for ScriptHandlers with no janino handling --- .../client/gui/script/GuiScriptInterface.java | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java b/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java index 9607a7b2e..ccb3ffde8 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java @@ -568,19 +568,35 @@ public class GuiScriptInterface extends GuiNPCInterface implements GuiYesNoCallb */ protected List getLanguageOptions() { List options = new ArrayList<>(); + + // Start with languages known from the server if (this.languages != null && !this.languages.isEmpty()) options.addAll(this.languages.keySet()); - if ((options.isEmpty() || !options.contains("Java")) && this.handler != null && this.handler.supportsJanino()) { - List scripts = new ArrayList<>(); - if (ScriptController.Instance != null && ScriptController.Instance.scripts != null) { - scripts.addAll(ScriptController.Instance.scripts.keySet()); + if (this.handler != null) { + if (this.handler.supportsJanino()) { + // Handler supports Java — ensure it's in the list + if (!options.contains("Java")) { + List scripts = new ArrayList<>(); + if (ScriptController.Instance != null && ScriptController.Instance.scripts != null) { + scripts.addAll(ScriptController.Instance.scripts.keySet()); + } + if (this.languages == null) + this.languages = new HashMap(); + if (!this.languages.containsKey("Java")) + this.languages.put("Java", scripts); + options.add("Java"); + } + } else { + // Handler does not support Java — remove it + options.remove("Java"); + } + + // Ensure at least the handler's default language is present + String defaultLang = this.handler.getLanguage(); + if (defaultLang != null && !defaultLang.isEmpty() && !options.contains(defaultLang)) { + options.add(0, defaultLang); } - if (this.languages == null) - this.languages = new HashMap(); - if (!this.languages.containsKey("Java")) - this.languages.put("Java", scripts); - options.add("Java"); } return options;