From e12288977aaae874e12b42774f6822dbf072255e Mon Sep 17 00:00:00 2001 From: Joe Date: Thu, 8 Jul 2021 16:33:17 +0100 Subject: [PATCH] Actually handle entity uuids --- .../command/arguments/ClientEntityArgumentType.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/earthcomputer/clientcommands/command/arguments/ClientEntityArgumentType.java b/src/main/java/net/earthcomputer/clientcommands/command/arguments/ClientEntityArgumentType.java index 103ae96f6..100a09d4c 100644 --- a/src/main/java/net/earthcomputer/clientcommands/command/arguments/ClientEntityArgumentType.java +++ b/src/main/java/net/earthcomputer/clientcommands/command/arguments/ClientEntityArgumentType.java @@ -143,7 +143,7 @@ ClientEntitySelector parse() throws CommandSyntaxException { if (reader.canRead() && reader.peek() == '@') { parseAtSelector(); } else { - parsePlayerName(); + parsePlayerNameOrUuid(); } if (boxX != null || boxY != null || boxZ != null) { @@ -166,7 +166,7 @@ ClientEntitySelector parse() throws CommandSyntaxException { return new ClientEntitySelector(filter, sorter, limit, senderOnly, originX, originY, originZ); } - void parsePlayerName() throws CommandSyntaxException { + void parsePlayerNameOrUuid() throws CommandSyntaxException { if (reader.canRead()) { int start = reader.getCursor(); suggestor = (builder, playerNameSuggestor) -> { @@ -179,6 +179,15 @@ void parsePlayerName() throws CommandSyntaxException { int start = reader.getCursor(); String playerName = reader.readString(); + try { + UUID uuid = UUID.fromString(playerName); + filter = (origin, entity) -> entity.getUuid().equals(uuid); + limit = 1; + return; + } catch (IllegalArgumentException ignore) { + // we don't have a uuid, check player names + } + if (playerName.isEmpty() || playerName.length() > 16) { reader.setCursor(start); throw EntitySelectorReader.INVALID_ENTITY_EXCEPTION.createWithContext(reader);