From 4b483bdd965b72eb80b85f54bc81fa294bdcda40 Mon Sep 17 00:00:00 2001 From: Ben Woo <30431861+benwoo1110@users.noreply.github.com> Date: Wed, 20 Sep 2023 11:54:37 +0800 Subject: [PATCH] Implement DifficultyCommand --- .../core/commands/DifficultyCommand.java | 49 +++++++++++++++++++ .../commandtools/MVCommandCompletions.java | 8 ++- 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/mvplugins/multiverse/core/commands/DifficultyCommand.java diff --git a/src/main/java/org/mvplugins/multiverse/core/commands/DifficultyCommand.java b/src/main/java/org/mvplugins/multiverse/core/commands/DifficultyCommand.java new file mode 100644 index 00000000..b881f95e --- /dev/null +++ b/src/main/java/org/mvplugins/multiverse/core/commands/DifficultyCommand.java @@ -0,0 +1,49 @@ +package org.mvplugins.multiverse.core.commands; + +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.CommandPermission; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Flags; +import co.aikar.commands.annotation.Subcommand; +import co.aikar.commands.annotation.Syntax; +import jakarta.inject.Inject; +import org.bukkit.Difficulty; +import org.jetbrains.annotations.NotNull; +import org.jvnet.hk2.annotations.Service; + +import org.mvplugins.multiverse.core.commandtools.MVCommandIssuer; +import org.mvplugins.multiverse.core.commandtools.MVCommandManager; +import org.mvplugins.multiverse.core.commandtools.MultiverseCommand; +import org.mvplugins.multiverse.core.world.LoadedMultiverseWorld; + +@Service +@CommandAlias("mv") +class DifficultyCommand extends MultiverseCommand { + + @Inject + DifficultyCommand(@NotNull MVCommandManager commandManager) { + super(commandManager); + } + + @Subcommand("difficulty") + @CommandPermission("multiverse.core.difficulty") + @CommandCompletion("@difficulty @mvworlds:scope=both") + @Syntax(" [world]") + void onDifficultyCommand( + MVCommandIssuer issuer, + + @Syntax("") + @Description("") + Difficulty difficulty, + + @Flags("resolve=issuerAware") + @Syntax("[world]") + @Description("") + // TODO: Change to MultiverseWorld + LoadedMultiverseWorld world) { + world.setDifficulty(difficulty) + .onSuccess(w -> issuer.sendInfo("Difficulty set to " + difficulty + " for world " + world.getName())) + .onFailure(failure -> issuer.sendError(failure.getMessage())); + } +} diff --git a/src/main/java/org/mvplugins/multiverse/core/commandtools/MVCommandCompletions.java b/src/main/java/org/mvplugins/multiverse/core/commandtools/MVCommandCompletions.java index 2e605c3f..aa7a85e7 100644 --- a/src/main/java/org/mvplugins/multiverse/core/commandtools/MVCommandCompletions.java +++ b/src/main/java/org/mvplugins/multiverse/core/commandtools/MVCommandCompletions.java @@ -18,6 +18,7 @@ import com.dumptruckman.minecraft.util.Logging; import com.google.common.collect.Sets; import io.vavr.control.Try; import jakarta.inject.Inject; +import org.bukkit.Difficulty; import org.bukkit.GameRule; import org.jetbrains.annotations.NotNull; import org.jvnet.hk2.annotations.Service; @@ -50,6 +51,7 @@ public class MVCommandCompletions extends PaperCommandCompletions { registerAsyncCompletion("commands", this::suggestCommands); registerAsyncCompletion("destinations", this::suggestDestinations); + registerStaticCompletion("difficulty", this::suggestDifficulty); registerAsyncCompletion("flags", this::suggestFlags); registerStaticCompletion("gamerules", this::suggestGamerules); registerStaticCompletion("mvconfigs", config.getNodes().getNames()); @@ -97,6 +99,10 @@ public class MVCommandCompletions extends PaperCommandCompletions { .suggestDestinations((BukkitCommandIssuer)context.getIssuer(), context.getInput()); } + private Collection suggestDifficulty() { + return Arrays.stream(Difficulty.values()).map(Difficulty::name).toList(); + } + private Collection suggestFlags(@NotNull BukkitCommandCompletionContext context) { String groupName = context.getConfig("groupName", ""); @@ -106,7 +112,7 @@ public class MVCommandCompletions extends PaperCommandCompletions { } private Collection suggestGamerules() { - return Arrays.stream(GameRule.values()).map(GameRule::getName).collect(Collectors.toList()); + return Arrays.stream(GameRule.values()).map(GameRule::getName).toList(); } private Collection suggestMVWorlds(BukkitCommandCompletionContext context) {