From e37e4050b13d1d127dc978cce13ea59c0202a319 Mon Sep 17 00:00:00 2001 From: gnembon Date: Mon, 5 Apr 2021 10:58:26 -0300 Subject: [PATCH] get proper lazy host for execution of suggestions. Fixes #793 --- src/main/java/carpet/script/command/CommandArgument.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/carpet/script/command/CommandArgument.java b/src/main/java/carpet/script/command/CommandArgument.java index f3d58934..1285a838 100644 --- a/src/main/java/carpet/script/command/CommandArgument.java +++ b/src/main/java/carpet/script/command/CommandArgument.java @@ -1,5 +1,6 @@ package carpet.script.command; +import carpet.CarpetServer; import carpet.fakes.BlockStateArgumentInterface; import carpet.script.CarpetScriptHost; import carpet.script.argument.FunctionArgument; @@ -277,7 +278,12 @@ public abstract class CommandArgument { CommandArgument arg = getTypeForArgument(param, host); if (arg.suggestionProvider != null) return argument(param, arg.getArgumentType()).suggests(arg.suggestionProvider); - return arg.needsMatching? argument(param, arg.getArgumentType()).suggests((c, b) -> arg.suggest(c, b, host)) : argument(param, arg.getArgumentType()); + if (!arg.needsMatching) return argument(param, arg.getArgumentType()); + String hostName = host.getName(); + return argument(param, arg.getArgumentType()).suggests((ctx, b) -> { + CarpetScriptHost cHost = CarpetServer.scriptServer.modules.get(hostName).retrieveOwnForExecution(ctx.getSource()); + return arg.suggest(ctx, b, cHost); + }); } protected String suffix;