From a133aacaa2e138b7a335227ecc0b0ada869d77ef Mon Sep 17 00:00:00 2001 From: Jason Penilla <11360596+jpenilla@users.noreply.github.com> Date: Wed, 26 Oct 2022 12:43:32 -0700 Subject: [PATCH] More fixes for #387 --- .../brigadier/CloudBrigadierManager.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/cloud-minecraft/cloud-brigadier/src/main/java/cloud/commandframework/brigadier/CloudBrigadierManager.java b/cloud-minecraft/cloud-brigadier/src/main/java/cloud/commandframework/brigadier/CloudBrigadierManager.java index abf13331..618d76ab 100644 --- a/cloud-minecraft/cloud-brigadier/src/main/java/cloud/commandframework/brigadier/CloudBrigadierManager.java +++ b/cloud-minecraft/cloud-brigadier/src/main/java/cloud/commandframework/brigadier/CloudBrigadierManager.java @@ -684,9 +684,7 @@ public final class CloudBrigadierManager { final Method getNodesMethod = commandContext.getClass().getDeclaredMethod("getNodes"); final Object nodes = getNodesMethod.invoke(commandContext); if (nodes instanceof List) { - return ((List>) nodes).stream() - .map(n -> Pair.of(n.getNode(), n.getRange())) - .collect(Collectors.toList()); + return ParsedCommandNodeHandler.toPairList((List) nodes); } else if (nodes instanceof Map) { return ((Map, StringRange>) nodes).entrySet().stream() .map(entry -> Pair.of(entry.getKey(), entry.getValue())) @@ -698,4 +696,17 @@ public final class CloudBrigadierManager { throw new RuntimeException(ex); } } + + // Inner class to prevent attempting to load ParsedCommandNode when it doesn't exist + private static final class ParsedCommandNodeHandler { + private ParsedCommandNodeHandler() { + } + + private static List, StringRange>> toPairList(List nodes) { + return ((List>) nodes).stream() + .map(n -> Pair.of(n.getNode(), n.getRange())) + .collect(Collectors.toList()); + } + + } }