From 60821e6c00a4f49ec0032eac0f48e9e176764616 Mon Sep 17 00:00:00 2001 From: Aikar Date: Mon, 3 Jul 2017 18:39:33 -0500 Subject: [PATCH] add World context to Sponge --- .../co/aikar/commands/SpongeCommandContexts.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/sponge/src/main/java/co/aikar/commands/SpongeCommandContexts.java b/sponge/src/main/java/co/aikar/commands/SpongeCommandContexts.java index 867f656d..021bd644 100644 --- a/sponge/src/main/java/co/aikar/commands/SpongeCommandContexts.java +++ b/sponge/src/main/java/co/aikar/commands/SpongeCommandContexts.java @@ -27,8 +27,10 @@ import co.aikar.commands.annotation.Optional; import co.aikar.commands.contexts.CommandResultSupplier; import co.aikar.commands.contexts.OnlinePlayer; import org.jetbrains.annotations.Nullable; +import org.spongepowered.api.Sponge; import org.spongepowered.api.command.CommandSource; import org.spongepowered.api.entity.living.player.Player; +import org.spongepowered.api.world.World; import java.util.HashSet; import java.util.Set; @@ -79,6 +81,20 @@ public class SpongeCommandContexts extends CommandContexts { + String firstArg = c.getFirstArg(); + java.util.Optional world = firstArg != null ? Sponge.getServer().getWorld(firstArg) : java.util.Optional.empty(); + if (world.isPresent()) { + c.popFirstArg(); + } + if (!world.isPresent() && c.getSource() instanceof Player) { + world = java.util.Optional.of(((Player) c.getSource()).getWorld()); + } + if (!world.isPresent()) { + throw new InvalidCommandArgument(MinecraftMessageKeys.INVALID_WORLD); + } + return world.get(); + }); } @Nullable