diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiScriptTextArea.java b/src/main/java/noppes/npcs/client/gui/util/GuiScriptTextArea.java index 22de3e54b..b97537cd2 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiScriptTextArea.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiScriptTextArea.java @@ -249,7 +249,13 @@ public class GuiScriptTextArea extends GuiNpcTextField { lineWidth = w; } - return data.end - 1; + // Place cursor after the last visible character of the line. + // `data.end - 1` previously pointed at the newline for non-last lines + // which made clicks land on the newline rather than after the text. + // Use data.start + chars.length to return the position directly + // after the line's characters, clamped to the total text length. + int posAfterChars = data.start + chars.length; + return Math.min(posAfterChars, text.length()); } } } diff --git a/src/main/java/noppes/npcs/client/gui/util/script/JavaTextContainer.java b/src/main/java/noppes/npcs/client/gui/util/script/JavaTextContainer.java index 30fff9ccf..7474657e2 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/JavaTextContainer.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/JavaTextContainer.java @@ -57,8 +57,8 @@ public class JavaTextContainer extends TextContainer { lineHeight = ClientProxy.Font.height(); if (lineHeight == 0) lineHeight = 12; - String[] split = text.split("\n"); - + + String[] split = text.split("\\n", -1); // -1 preserves empty lines "" int totalChars = 0; for (String l : split) { StringBuilder line = new StringBuilder();