/* This file is a part of the SteamWar software. Copyright (C) 2020 SteamWar.de-Serverteam This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package de.steamwar.bausystem.commands; import de.steamwar.bausystem.BauSystem; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; import org.bukkit.entity.Player; import java.util.ArrayList; import java.util.List; public class ChainedCommand implements CommandExecutor, TabCompleter { private String[] commands; private List tabCompletes; public ChainedCommand(String command, final List tabCompletes, final String... commands) { BauSystem.getPlugin().getCommand(command).setExecutor(this); BauSystem.getPlugin().getCommand(command).setTabCompleter(this); this.commands = commands; this.tabCompletes = tabCompletes; if (tabCompletes == null) { this.tabCompletes = new ArrayList<>(); } } public ChainedCommand(String command, final String... commands) { this(command, null, commands); } @Override public boolean onCommand(CommandSender sender, Command command, String s, String[] args) { if (!(sender instanceof Player)) { return false; } Player player = (Player) sender; String argsString = ""; if (args.length != 0) argsString = String.join(" ", args); for (String cmd : commands) { if (!player.performCommand(cmd.replace("{}", argsString))) { return false; } } return true; } @Override public List onTabComplete(CommandSender sender, Command command, String s, String[] args) { return tabCompletes; } }