diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/ScriptColorScheme.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/ScriptColorScheme.java index d0b6df162..f5d6a9cb9 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/ScriptColorScheme.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/ScriptColorScheme.java @@ -13,9 +13,12 @@ import java.nio.charset.StandardCharsets; import java.util.List; /** - * Manages reloadable style overrides (color, priority, bold, italic) for {@link TokenType}, + * Manages reloadable style overrides (color, bold, italic) for {@link TokenType}, * plus editor background/gutter/scrollbar colors via {@link BackgroundStyleEntry}. *

+ * Priority is always determined internally by {@link TokenType#getPriority()} ()} + * and is never exposed to or loaded from user-facing JSON files. + *

* Loaded from {@code assets/customnpcs/colorscheme/script_editor_scheme.json} on resource reload. * Styles are cached in a flat array indexed by {@link TokenType#ordinal()} for zero-cost lookups. */ @@ -67,7 +70,7 @@ public final class ScriptColorScheme { for (TokenType tt : samples) { StyleEntry e = current[tt.ordinal()]; LogWriter.info("[ColorScheme] " + tt.name() + " -> color=#" + String.format("%08X", e.hexColor) - + ", priority=" + e.priority + ", bold=" + e.bold + ", italic=" + e.italic); + + ", bold=" + e.bold + ", italic=" + e.italic); } BackgroundStyleEntry bg = background; @@ -77,7 +80,7 @@ public final class ScriptColorScheme { /** * Parse a color scheme JSON and install it as the active scheme. - * Expected format: {@code { "TOKEN_NAME": { "color": "#RRGGBB", "priority": int, "bold": bool, "italic": bool }, ... }} + * Expected format: {@code { "TOKEN_NAME": { "color": "#RRGGBB", "bold": bool, "italic": bool }, ... }} * Missing properties per token fall back to the enum default. Parse errors are logged per-token. */ public static void loadFromJson(Reader reader) { @@ -129,11 +132,10 @@ public final class ScriptColorScheme { int color = entry.has("color") ? parseColor(entry.get("color"), defaultColor, tt.name()) : defaultColor; - int priority = entry.has("priority") ? entry.get("priority").getAsInt() : tt.getDefaultPriority(); boolean bold = entry.has("bold") ? entry.get("bold").getAsBoolean() : tt.getDefaultBold(); boolean italic = entry.has("italic") ? entry.get("italic").getAsBoolean() : tt.getDefaultItalic(); - return new StyleEntry(color, priority, bold, italic); + return new StyleEntry(color, bold, italic); } catch (Exception e) { LogWriter.error("[ColorScheme] Error parsing token " + tt.name() + ", using defaults: " + e.getMessage()); return defaultEntry(tt); @@ -145,7 +147,7 @@ public final class ScriptColorScheme { if ((color & 0xFF000000) == 0) { color |= 0xFF000000; } - return new StyleEntry(color, tt.getDefaultPriority(), tt.getDefaultBold(), tt.getDefaultItalic()); + return new StyleEntry(color, tt.getDefaultBold(), tt.getDefaultItalic()); } private static BackgroundStyleEntry parseBackground(JsonObject root) { @@ -212,13 +214,11 @@ public final class ScriptColorScheme { static final class StyleEntry { final int hexColor; - final int priority; final boolean bold; final boolean italic; - StyleEntry(int hexColor, int priority, boolean bold, boolean italic) { + StyleEntry(int hexColor, boolean bold, boolean italic) { this.hexColor = hexColor; - this.priority = priority; this.bold = bold; this.italic = italic; } diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/TokenType.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/TokenType.java index 9f4b5ac69..7b6be3444 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/TokenType.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/TokenType.java @@ -6,8 +6,9 @@ import noppes.npcs.client.gui.util.script.interpreter.type.TypeInfo; * Defines all token types for syntax highlighting with hex colors and priorities. * Priority determines which token type wins when marks overlap. * Higher priority = wins conflicts. - * - * Style properties (color, priority, bold, italic) can be overridden at runtime + *

+ * Priority is defined exclusively by the enum and never stored elsewhere. + * Visual style properties (color, bold, italic) can be overridden at runtime * via {@link ScriptColorScheme}. The enum constructor values serve as compile-time defaults. */ public enum TokenType { @@ -16,7 +17,7 @@ public enum TokenType { STRING(0xFFCC8855, 130), // JSDoc elements - lower priority but will fill gaps left by fragmented comment marking - JSDOC_TAG(0xFFCC9933, 125), // @param, @type, @return etc. (gold/orange) + JSDOC_TAG(0xFFCC9933, 125,true, true), // @param, @type, @return etc. (gold/orange) JSDOC_TYPE(0xFF00AAAA, 124), // {TypeName} in JSDoc (aqua like types) UNUSED_IMPORT(0xFF666666, 119), // unused import statements (gray) @@ -52,7 +53,7 @@ public enum TokenType { DEFAULT(0xFFFFFFFF, 0); // default text color (white) private final int defaultHexColor; - private final int defaultPriority; + private final int priority; private final boolean defaultBold; private final boolean defaultItalic; @@ -62,7 +63,7 @@ public enum TokenType { TokenType(int hexColor, int priority, boolean bold, boolean italic) { this.defaultHexColor = hexColor; - this.defaultPriority = priority; + this.priority = priority; this.defaultBold = bold; this.defaultItalic = italic; } @@ -72,7 +73,7 @@ public enum TokenType { } public int getPriority() { - return ScriptColorScheme.styles[ordinal()].priority; + return priority; } public boolean isBold() { @@ -86,11 +87,7 @@ public enum TokenType { int getDefaultHexColor() { return defaultHexColor; } - - int getDefaultPriority() { - return defaultPriority; - } - + boolean getDefaultBold() { return defaultBold; } diff --git a/src/main/resources/assets/customnpcs/colorscheme/script_editor_scheme.json b/src/main/resources/assets/customnpcs/colorscheme/script_editor_scheme.json index 61b0b82d4..8b41acc3f 100644 --- a/src/main/resources/assets/customnpcs/colorscheme/script_editor_scheme.json +++ b/src/main/resources/assets/customnpcs/colorscheme/script_editor_scheme.json @@ -12,157 +12,131 @@ }, "COMMENT": { "color": "#FF777777", - "priority": 140, "bold": false, "italic": false }, "STRING": { "color": "#FFCC8855", - "priority": 130, "bold": false, "italic": false }, "JSDOC_TAG": { "color": "#FFCC9933", - "priority": 125, "bold": false, "italic": false }, "JSDOC_TYPE": { "color": "#FF00AAAA", - "priority": 124, "bold": false, "italic": false }, "UNUSED_IMPORT": { "color": "#FF666666", - "priority": 119, "bold": false, "italic": false }, "CLASS_KEYWORD": { "color": "#FFFF5555", - "priority": 115, "bold": false, "italic": false }, "IMPORT_KEYWORD": { "color": "#FFFFAA00", - "priority": 110, "bold": false, "italic": false }, "KEYWORD": { "color": "#FFFF5555", - "priority": 100, "bold": false, "italic": false }, "MODIFIER": { "color": "#FFFFAA00", - "priority": 90, "bold": false, "italic": false }, "INTERFACE_DECL": { "color": "#FF55FFFF", - "priority": 85, "bold": false, "italic": false }, "ENUM_DECL": { "color": "#FFFF55FF", - "priority": 85, "bold": false, "italic": false }, "ENUM_CONSTANT": { "color": "#FF55FFFF", - "priority": 84, "bold": true, "italic": false }, "CLASS_DECL": { "color": "#FF00AAAA", - "priority": 85, "bold": false, "italic": false }, "IMPORTED_CLASS": { "color": "#FF00AAAA", - "priority": 75, "bold": false, "italic": false }, "GENERIC_TYPE_PARAM": { "color": "#FF00FA9A", - "priority": 76, "bold": false, "italic": false }, "TYPE_DECL": { "color": "#FF00AAAA", - "priority": 70, "bold": false, "italic": false }, "METHOD_DECL": { "color": "#FF00AA00", - "priority": 60, "bold": false, "italic": false }, "METHOD_CALL": { "color": "#FF55FF55", - "priority": 50, "bold": false, "italic": false }, "UNDEFINED_VAR": { "color": "#FFAA0000", - "priority": 20, "bold": false, "italic": false }, "PARAMETER": { "color": "#FF5555FF", - "priority": 36, "bold": false, "italic": false }, "GLOBAL_FIELD": { "color": "#FF55FFFF", - "priority": 35, "bold": false, "italic": false }, "LOCAL_FIELD": { "color": "#FFFFFF55", - "priority": 25, "bold": false, "italic": false }, "STATIC_FINAL_FIELD": { "color": "#FFFF55FF", - "priority": 36, "bold": false, "italic": true }, "LITERAL": { "color": "#FF777777", - "priority": 40, "bold": false, "italic": false }, "VARIABLE": { "color": "#FFFFFFFF", - "priority": 30, "bold": false, "italic": false }, "DEFAULT": { "color": "#FFFFFFFF", - "priority": 0, "bold": false, "italic": false }