mirror of
https://github.com/Multiverse/Multiverse-Core.git
synced 2025-02-19 14:02:00 +01:00
Implement --unsafe flag for spawn command
This commit is contained in:
parent
df7b9a3e5b
commit
f37ee00030
@ -1,7 +1,6 @@
|
|||||||
package org.mvplugins.multiverse.core.commands;
|
package org.mvplugins.multiverse.core.commands;
|
||||||
|
|
||||||
import co.aikar.commands.BukkitCommandIssuer;
|
import co.aikar.commands.BukkitCommandIssuer;
|
||||||
import co.aikar.commands.CommandIssuer;
|
|
||||||
import co.aikar.commands.MessageType;
|
import co.aikar.commands.MessageType;
|
||||||
import co.aikar.commands.annotation.*;
|
import co.aikar.commands.annotation.*;
|
||||||
import com.dumptruckman.minecraft.util.Logging;
|
import com.dumptruckman.minecraft.util.Logging;
|
||||||
@ -11,7 +10,8 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jvnet.hk2.annotations.Service;
|
import org.jvnet.hk2.annotations.Service;
|
||||||
import org.mvplugins.multiverse.core.commandtools.MVCommandIssuer;
|
import org.mvplugins.multiverse.core.commandtools.MVCommandIssuer;
|
||||||
import org.mvplugins.multiverse.core.commandtools.MVCommandManager;
|
import org.mvplugins.multiverse.core.commandtools.MVCommandManager;
|
||||||
import org.mvplugins.multiverse.core.commandtools.MultiverseCommand;
|
import org.mvplugins.multiverse.core.commandtools.flags.CommandFlag;
|
||||||
|
import org.mvplugins.multiverse.core.commandtools.flags.ParsedCommandFlags;
|
||||||
import org.mvplugins.multiverse.core.permissions.CorePermissionsChecker;
|
import org.mvplugins.multiverse.core.permissions.CorePermissionsChecker;
|
||||||
import org.mvplugins.multiverse.core.teleportation.AsyncSafetyTeleporter;
|
import org.mvplugins.multiverse.core.teleportation.AsyncSafetyTeleporter;
|
||||||
import org.mvplugins.multiverse.core.utils.MVCorei18n;
|
import org.mvplugins.multiverse.core.utils.MVCorei18n;
|
||||||
@ -21,10 +21,15 @@ import org.mvplugins.multiverse.core.world.WorldManager;
|
|||||||
@Service
|
@Service
|
||||||
@CommandAlias("mv")
|
@CommandAlias("mv")
|
||||||
class SpawnCommand extends CoreCommand {
|
class SpawnCommand extends CoreCommand {
|
||||||
|
|
||||||
private final WorldManager worldManager;
|
private final WorldManager worldManager;
|
||||||
private final AsyncSafetyTeleporter safetyTeleporter;
|
private final AsyncSafetyTeleporter safetyTeleporter;
|
||||||
private final CorePermissionsChecker permissionsChecker;
|
private final CorePermissionsChecker permissionsChecker;
|
||||||
|
|
||||||
|
private final CommandFlag UNSAFE_FLAG = flag(CommandFlag.builder("--unsafe")
|
||||||
|
.addAlias("-u")
|
||||||
|
.build());
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
SpawnCommand(@NotNull MVCommandManager commandManager,
|
SpawnCommand(@NotNull MVCommandManager commandManager,
|
||||||
@NotNull WorldManager worldManager,
|
@NotNull WorldManager worldManager,
|
||||||
@ -39,7 +44,7 @@ class SpawnCommand extends CoreCommand {
|
|||||||
@CommandAlias("mvspawn")
|
@CommandAlias("mvspawn")
|
||||||
@Subcommand("spawn")
|
@Subcommand("spawn")
|
||||||
@CommandPermission("@mvspawn")
|
@CommandPermission("@mvspawn")
|
||||||
@CommandCompletion("@players")
|
@CommandCompletion("@players|@flags:groupName=mvteleportcommand @flags:groupName=mvteleportcommand")
|
||||||
@Syntax("[player]")
|
@Syntax("[player]")
|
||||||
@Description("{@@mv-core.spawn.description}")
|
@Description("{@@mv-core.spawn.description}")
|
||||||
void onSpawnTpCommand(
|
void onSpawnTpCommand(
|
||||||
@ -48,10 +53,17 @@ class SpawnCommand extends CoreCommand {
|
|||||||
@Flags("resolve=issuerAware")
|
@Flags("resolve=issuerAware")
|
||||||
@Syntax("[player]")
|
@Syntax("[player]")
|
||||||
@Description("{@@mv-core.spawn.player.description}")
|
@Description("{@@mv-core.spawn.player.description}")
|
||||||
Player player) {
|
Player player,
|
||||||
|
|
||||||
|
@Optional
|
||||||
|
@Syntax("[--unsafe]")
|
||||||
|
@Description("")
|
||||||
|
String[] flags) {
|
||||||
|
ParsedCommandFlags parsedFlags = parseFlags(flags);
|
||||||
|
|
||||||
LoadedMultiverseWorld world = worldManager.getLoadedWorld(player.getWorld()).getOrNull();
|
LoadedMultiverseWorld world = worldManager.getLoadedWorld(player.getWorld()).getOrNull();
|
||||||
if (world == null) {
|
if (world == null) {
|
||||||
issuer.sendMessage("The world the player you are trying to teleport is in, is not a multiverse world");
|
issuer.sendMessage("The world the player you are trying to teleport in is not a multiverse world!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,6 +76,7 @@ class SpawnCommand extends CoreCommand {
|
|||||||
// TODO: Different message for teleporting self vs others
|
// TODO: Different message for teleporting self vs others
|
||||||
safetyTeleporter.to(world.getSpawnLocation())
|
safetyTeleporter.to(world.getSpawnLocation())
|
||||||
.by(issuer)
|
.by(issuer)
|
||||||
|
.checkSafety(!parsedFlags.hasFlag(UNSAFE_FLAG))
|
||||||
.teleport(player)
|
.teleport(player)
|
||||||
.onSuccess(() -> player.sendMessage(commandManager.formatMessage(
|
.onSuccess(() -> player.sendMessage(commandManager.formatMessage(
|
||||||
issuer,
|
issuer,
|
||||||
|
Loading…
Reference in New Issue
Block a user