diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/menu/ServerInputState.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/menu/ServerInputState.java index 4bfeeba2c..3079f5be8 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/menu/ServerInputState.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/menu/ServerInputState.java @@ -74,7 +74,7 @@ public class ServerInputState im } private static boolean isValidClipboard(ByteBuffer buffer) { - for (int i = buffer.remaining(), max = buffer.limit(); i < max; i++) { + for (int i = buffer.position(), max = buffer.limit(); i < max; i++) { if (!StringUtil.isTypableChar(buffer.get(i))) return false; } return true; diff --git a/projects/core/src/main/java/dan200/computercraft/core/util/StringUtil.java b/projects/core/src/main/java/dan200/computercraft/core/util/StringUtil.java index a3af9376c..234127244 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/util/StringUtil.java +++ b/projects/core/src/main/java/dan200/computercraft/core/util/StringUtil.java @@ -70,6 +70,17 @@ public final class StringUtil { }; } + /** + * Check if a character is capable of being input and passed to a {@linkplain ComputerEvents#charTyped(ComputerEvents.Receiver, byte) + * "char" event}. + * + * @param chr The character to check. + * @return Whether this character can be typed. + */ + public static boolean isTypableChar(byte chr) { + return isTypableChar(chr & 0xFF); + } + /** * Check if a character is capable of being input and passed to a {@linkplain ComputerEvents#charTyped(ComputerEvents.Receiver, byte) * "char" event}.