From 63f6c7c045496e7e45301d6487dfeeb582c01b24 Mon Sep 17 00:00:00 2001 From: bigguy345 Date: Tue, 24 Feb 2026 15:50:12 +0200 Subject: [PATCH] Made .d.ts files retain java primitive types ('int' retained as is without transforming to 'number') + necessary changes to support that --- .../util/script/interpreter/bridge/DtsJavaBridge.java | 11 ++++++++++- .../script/interpreter/js_parser/JSTypeRegistry.java | 3 ++- .../util/script/interpreter/type/TypeResolver.java | 5 +++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/bridge/DtsJavaBridge.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/bridge/DtsJavaBridge.java index cebd1bcfc..c18f138b1 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/bridge/DtsJavaBridge.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/bridge/DtsJavaBridge.java @@ -215,12 +215,21 @@ public final class DtsJavaBridge { } private static boolean matchesPrimitive(String jsTypeName, Class javaParam) { - switch (jsTypeName) { + switch (jsTypeName.toLowerCase()) { case "string": + case "char": return javaParam == String.class || javaParam == char.class || javaParam == Character.class; case "boolean": + case "bool": return javaParam == boolean.class || javaParam == Boolean.class; case "number": + case "byte": + case "short": + case "int": + case "integer": + case "long": + case "float": + case "double": return isNumberType(javaParam); case "void": return javaParam == void.class || javaParam == Void.class; diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/js_parser/JSTypeRegistry.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/js_parser/JSTypeRegistry.java index b324cf1bd..70ce25a74 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/js_parser/JSTypeRegistry.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/js_parser/JSTypeRegistry.java @@ -53,7 +53,8 @@ public class JSTypeRegistry { // Primitive types private static final Set PRIMITIVES = new HashSet<>(Arrays.asList( - "number", "string", "boolean", "void", "any", "null", "undefined", "never", "object" + "number", "string", "boolean", "void", "any", "null", "undefined", "never", "object", + "byte", "short", "int", "integer", "long", "float", "double", "char", "bool" )); private boolean initialized = false; diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/type/TypeResolver.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/type/TypeResolver.java index 56f74dffd..579a7fc3e 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/type/TypeResolver.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/type/TypeResolver.java @@ -397,6 +397,11 @@ public class TypeResolver { return null; } + // Primitives + if (TypeResolver.isPrimitiveType(baseName)) { + return TypeInfo.fromPrimitive(baseName); + } + // Handle "Java." prefix - convert to actual Java type if (baseName.startsWith("Java.")) { baseName = baseName.substring(5);