Developer - Commands
Developer - Commands
You can register and unregister custom fake administrator commands.
Adding commands
You can register commands using FakeAdminAPI.addCommand("<command>", <command-class>, "<alias1>", "<alias2>");
The <command-class> is a class that extends the class AdminCommand. AdminCommand comes with a nice feature, getFinalArgs(String[], int) that trims the beginning of a String array.
Example
An example of registering a command "broadcast" (from Essentials) is:
import com.faris.fakeadmin.api.FakeAdminAPI; import com.faris.fakeadmin.command.AdminCommand; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import java.util.Arrays; import java.util.List; import java.util.UUID; public class Main extends JavaPlugin { public void onEnable() { if (!this.getServer().getPluginManager().isPluginEnabled("FakeAdmin")) { this.getServer().getConsoleSender().sendMessage(ChatColor.RED + "FakeAdmin is required for this plugin to work."); this.setEnabled(false); return; } FakeAdminAPI.addCommand("broadcast", CommandBroadcast.class, "bc", "ebc", "bcast", "ebcast", "ebroadcast", "shout", "eshout"); } public class CommandBroadcast extends AdminCommand { @Override public CommandReturnType onCommand(Player player, String command, String[] args) throws Exception { if (args.length > 0) { String broadcastMessage = ChatColor.translateAlternateColorCodes('&', "&6[&4Broadcast&6] &a" + this.getFinalArgs(args, 0)); for (UUID fakeAdminUUID : this.getPlugin().getManager().getAdminManager().getFakeAdmins()) { Player fakeAdmin = player.getServer().getPlayer(fakeAdminUUID); if (fakeAdmin != null && fakeAdmin.isOnline()) fakeAdmin.sendMessage(broadcastMessage); } return CommandReturnType.VALID; } return CommandReturnType.INVALID_USAGE; } @Override public List<String> getUsage() { return Arrays.asList("Broadcasts a message to the entire server.", "/broadcast <msg>"); } } }
Unregistering a command
If you want to unregister a command, such as /kick, use FakeAdminAPI.removeCommand("<command>") and it automatically removes the command and all aliases.
Comments