diff --git a/src/main/java/de/fanta/challengesjoinentities/ChallengesJoinEntities.java b/src/main/java/de/fanta/challengesjoinentities/ChallengesJoinEntities.java index 2087cd7..ccaea9a 100644 --- a/src/main/java/de/fanta/challengesjoinentities/ChallengesJoinEntities.java +++ b/src/main/java/de/fanta/challengesjoinentities/ChallengesJoinEntities.java @@ -3,6 +3,7 @@ import de.fanta.challengesjoinentities.JoinEntityData.ServerStatus; import de.fanta.challengesjoinentities.commands.AddEntityCommand; import de.fanta.challengesjoinentities.commands.RemoveEntityCommand; +import de.fanta.challengesjoinentities.commands.ToggleArenaCommand; import de.fanta.challengesjoinentities.listeners.ChallengesEventListener; import de.fanta.challengesjoinentities.listeners.EntityListener; import de.fanta.challengesjoinentities.listeners.PlayerListener; @@ -40,12 +41,14 @@ this.globalDataHelper = new ChallengesGlobalDataHelper(this); this.config = new Config(this); - if (Bukkit.getPluginManager().getPlugin("Challenges") != null) { + if (Bukkit.getPluginManager().getPlugin("Challenges") != null) { // Challenge server -> listen on Challenge events Bukkit.getPluginManager().registerEvents(new ChallengesEventListener(this), this); - } else { + } else { // Lobby server -> register commands CommandRouter router = new CommandRouter(getCommand("challengepiglins")); router.addCommandMapping(new AddEntityCommand(this), "spawn"); router.addCommandMapping(new RemoveEntityCommand(this), "remove"); + router.addCommandMapping(new ToggleArenaCommand(this, true), "enable"); + router.addCommandMapping(new ToggleArenaCommand(this, false), "disable"); } Bukkit.getPluginManager().registerEvents(new EntityListener(this), this); Bukkit.getPluginManager().registerEvents(new PlayerListener(this), this); diff --git a/src/main/java/de/fanta/challengesjoinentities/commands/ToggleArenaCommand.java b/src/main/java/de/fanta/challengesjoinentities/commands/ToggleArenaCommand.java new file mode 100644 index 0000000..a5265ab --- /dev/null +++ b/src/main/java/de/fanta/challengesjoinentities/commands/ToggleArenaCommand.java @@ -0,0 +1,58 @@ +package de.fanta.challengesjoinentities.commands; + +import de.fanta.challengesjoinentities.ChallengesJoinEntities; +import de.fanta.challengesjoinentities.ChatUtil; +import de.fanta.challengesjoinentities.JoinEntityData; +import de.fanta.challengesjoinentities.JoinEntityData.ServerStatus; +import de.iani.cubesideutils.bukkit.commands.SubCommand; +import de.iani.cubesideutils.commands.ArgsParser; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; + +import java.util.Collection; +import java.util.Collections; + +public class ToggleArenaCommand extends SubCommand { + + private final ChallengesJoinEntities plugin; + private final boolean enable; + + public ToggleArenaCommand(ChallengesJoinEntities plugin, boolean enable) { + this.plugin = plugin; + this.enable = enable; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (!sender.hasPermission("challenges.event")) { + ChatUtil.sendErrorMessage(sender, "Keine Berechtigung"); + return true; + } + + if (!args.hasNext()) { + return false; + } + String serverName = args.getNext(); + JoinEntityData data = plugin.getEntityData(serverName); + if (data == null) { + ChatUtil.sendErrorMessage(sender, "Server nicht gefunden."); + return true; + } + if (data.getServerStatus() == ServerStatus.RUNNING) { + ChatUtil.sendErrorMessage(sender, "Arena disablen nicht möglich, da gerade eine Runde läuft."); + return true; + } + + plugin.updateServerStatus(serverName, enable); + return true; + } + + @Override + public Collection onTabComplete(CommandSender sender, Command command, String alias, ArgsParser args) { + args.next(); + if (!args.hasNext()) { + return plugin.getEntityData().keySet(); + } + return Collections.emptyList(); + } +}