diff --git a/namelayer-all/pom.xml b/namelayer-all/pom.xml index cc5a9267..e06385d0 100644 --- a/namelayer-all/pom.xml +++ b/namelayer-all/pom.xml @@ -5,23 +5,23 @@ 4.0.0 - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-parent 1.0.0 NameLayer - 2.14.1 + 2.15.0 - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-spigot 1.0.0 - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-bungee 1.0.0 diff --git a/namelayer-bungee/pom.xml b/namelayer-bungee/pom.xml index e662ac2e..66ed051c 100644 --- a/namelayer-bungee/pom.xml +++ b/namelayer-bungee/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-parent 1.0.0 @@ -15,40 +15,34 @@ jar - - + net.md-5 bungeecord-protocol - 1.16-R0.4-SNAPSHOT + 1.16-R0.4 provided + net.md-5 bungeecord-api - 1.16-R0.4-SNAPSHOT + 1.16-R0.4 provided + net.md-5 bungeecord-proxy - 1.16-R0.4-SNAPSHOT + 1.17-R0.1-SNAPSHOT provided - - + com.zaxxer HikariCP - 3.3.0 - compile + 4.0.3 + provided - diff --git a/namelayer-spigot/pom.xml b/namelayer-spigot/pom.xml index 1a21986b..b7b2c634 100755 --- a/namelayer-spigot/pom.xml +++ b/namelayer-spigot/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-parent 1.0.0 @@ -15,20 +15,20 @@ - vg.civcraft.mc.namelayer - namelayer-nms-v1_16_R3 + com.github.civclassic + namelayer-nms-v1_17_R1 1.0.1 + + io.papermc.paper + paper + 1.17.1-R0.1-SNAPSHOT + provided + - com.destroystokyo.paper - paper - 1.16.5-R0.1-SNAPSHOT - provided - - - vg.civcraft.mc.civmodcore + com.github.civclassic CivModCore - 1.8.2 + 1.9.0 provided @@ -78,66 +78,11 @@ - - vg.civcraft.mc.namelayer - namelayer-nms-v1_8_R1 - 1.0.1 - - - vg.civcraft.mc.namelayer - namelayer-nms-v1_8_R2 - 1.0.1 - - - vg.civcraft.mc.namelayer - namelayer-nms-v1_8_R3 - 1.0.1 - - - vg.civcraft.mc.namelayer - namelayer-nms-v1_9_R1 - 1.0.1 - - - vg.civcraft.mc.namelayer - namelayer-nms-v1_9_R2 - 1.0.1 - - - vg.civcraft.mc.namelayer - namelayer-nms-v1_10_R1 - 1.0.1 - - - vg.civcraft.mc.namelayer - namelayer-nms-v1_11_R1 - 1.0.1 - - - vg.civcraft.mc.namelayer - namelayer-nms-v1_12_R1 - 1.0.1 - - - vg.civcraft.mc.namelayer - namelayer-nms-v1_13_R2 - 1.0.1 - - - vg.civcraft.mc.namelayer - namelayer-nms-v1_14_R1 - 1.0.1 - - - vg.civcraft.mc.namelayer - namelayer-nms-v1_16_R1 - 1.0.1 - - - vg.civcraft.mc.namelayer - namelayer-nms-v1_16_R3 - 1.0.1 - + + com.github.civclassic + namelayer-nms-v1_17_R1 + 1.0.1 + diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/MojangNames.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/MojangNames.java index 06aab5e8..90b57ce4 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/MojangNames.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/MojangNames.java @@ -11,11 +11,12 @@ import java.util.Map; import java.util.TreeMap; import java.util.UUID; +import net.minecraft.nbt.NBTTagCompound; import org.bukkit.Bukkit; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.scheduler.BukkitTask; -import vg.civcraft.mc.civmodcore.serialization.NBTCompound; -import vg.civcraft.mc.civmodcore.util.MoreMapUtils; +import vg.civcraft.mc.civmodcore.nbt.NBTSerialization; +import vg.civcraft.mc.civmodcore.utilities.MoreMapUtils; import vg.civcraft.mc.namelayer.listeners.AssociationListener; public final class MojangNames { @@ -27,7 +28,7 @@ public final class MojangNames { private static BukkitTask SAVE_TASK; public static void init(final NameLayerPlugin plugin) { - final Path mojangFile = plugin.getResourceFile(PROFILES_FILE).toPath(); + final Path mojangFile = plugin.getDataFile(PROFILES_FILE).toPath(); // Load all the profiles that already exist Bukkit.getScheduler().runTaskAsynchronously( plugin, () -> load(plugin, mojangFile)); @@ -38,7 +39,7 @@ public static void init(final NameLayerPlugin plugin) { public static void reset(final NameLayerPlugin plugin) { if (!PROFILES.isEmpty()) { - save(plugin, plugin.getResourceFile(PROFILES_FILE).toPath()); + save(plugin, plugin.getDataFile(PROFILES_FILE).toPath()); PROFILES.clear(); } if (SAVE_TASK != null) { @@ -51,8 +52,8 @@ private static void load(final NameLayerPlugin plugin, final Path file) { PROFILES.clear(); try { final byte[] data = Files.readAllBytes(file); - final NBTCompound nbt = NBTCompound.fromBytes(data); - nbt.getKeys().forEach(key -> PROFILES.put(key, nbt.getUUID(key))); + final NBTTagCompound nbt = NBTSerialization.fromBytes(data); + nbt.getKeys().forEach(key -> PROFILES.put(key, nbt.a(key))); plugin.info("[MojangNames] Mojang profiles loaded!"); } catch (final NoSuchFileException ignored) {} @@ -62,9 +63,9 @@ private static void load(final NameLayerPlugin plugin, final Path file) { } private static void save(final NameLayerPlugin plugin, final Path file) { - final NBTCompound nbt = new NBTCompound(); - PROFILES.forEach((name, uuid) -> nbt.setUUID(name, uuid)); // Ignore highlighter - final byte[] data = NBTCompound.toBytes(nbt); + final NBTTagCompound nbt = new NBTTagCompound(); + PROFILES.forEach((name, uuid) -> nbt.a(name, uuid)); // Ignore highlighter + final byte[] data = NBTSerialization.toBytes(nbt); try { Files.write(file, data, StandardOpenOption.CREATE, diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/NameAPI.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/NameAPI.java index e4edab28..0f3f5e57 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/NameAPI.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/NameAPI.java @@ -51,7 +51,7 @@ public static UUID getUUID(String playerName) { } /** * Gets the playername from a given server from their uuid. - * @param uuid. + * @param uuid uuid of target player * @return Returns the PlayerName from the UUID. */ public static String getCurrentName(UUID uuid) { diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/NameLayerPlugin.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/NameLayerPlugin.java index 3a95d8b4..fe4d0081 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/NameLayerPlugin.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/NameLayerPlugin.java @@ -4,13 +4,11 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.List; import java.util.logging.Level; import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.FileConfiguration; import vg.civcraft.mc.civmodcore.ACivMod; +import vg.civcraft.mc.civmodcore.dao.DatabaseCredentials; import vg.civcraft.mc.civmodcore.dao.ManagedDatasource; import vg.civcraft.mc.namelayer.command.CommandHandler; import vg.civcraft.mc.namelayer.database.AssociationList; @@ -38,7 +36,7 @@ public class NameLayerPlugin extends ACivMod { private static int groupLimit = 10; private static boolean createGroupOnFirstJoin; private FileConfiguration config; - + @Override public void onEnable() { super.onEnable(); // Need to call this to properly initialize this mod @@ -50,52 +48,37 @@ public void onEnable() { createGroupOnFirstJoin = config.getBoolean("groups.creationOnFirstJoin", true); instance = this; loadDatabases(); - ClassHandler.Initialize(Bukkit.getServer()); + ClassHandler.Initialize(Bukkit.getServer()); new NameAPI(new GroupManager(), associations); NameCleanser.load(config.getConfigurationSection("name_cleanser")); MojangNames.init(this); registerListeners(); - if (loadGroups){ + if (loadGroups) { PermissionType.initialize(); blackList = new BlackList(); groupManagerDao.loadGroupsInvitations(); defaultGroupHandler = new DefaultGroupHandler(); autoAcceptHandler = new AutoAcceptHandler(groupManagerDao.loadAllAutoAccept()); - handle = new CommandHandler(); - handle.registerCommands(); + handle = new CommandHandler(this); } } - - public void registerListeners(){ + + public void registerListeners() { registerListener(new AssociationListener()); registerListener(new PlayerListener()); } - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { - if (!loadGroups) - return false; - return handle.execute(sender, cmd, args); - } - - @Override - public List onTabComplete(CommandSender sender, Command cmd, String alias, String[] args){ - if (!loadGroups) - return null; - return handle.complete(sender, cmd, args); - } @Override public void onDisable() { MojangNames.reset(this); super.onDisable(); } - - public static NameLayerPlugin getInstance(){ + + public static NameLayerPlugin getInstance() { return instance; } - - public void loadDatabases(){ + + public void loadDatabases() { String host = config.getString("sql.hostname", "localhost"); int port = config.getInt("sql.port", 3306); String dbname = config.getString("sql.dbname", "namelayer"); @@ -106,23 +89,24 @@ public void loadDatabases(){ long idleTimeout = config.getLong("sql.idle_timeout", 600000l); long maxLifetime = config.getLong("sql.max_lifetime", 7200000l); try { - db = new ManagedDatasource(this, username, password, host, port, dbname, - poolsize, connectionTimeout, idleTimeout, maxLifetime); + db = ManagedDatasource.construct(this, + new DatabaseCredentials(username, password, host, port, "mysql", dbname, poolsize, + connectionTimeout, idleTimeout, maxLifetime)); db.getConnection().close(); } catch (Exception se) { NameLayerPlugin.log(Level.WARNING, "Could not connect to DataBase, shutting down!"); Bukkit.shutdown(); return; } - + if (!db.isManaged()) { // First "migration" is conversion from old system to new, and lives outside AssociationList and GroupManagerDao. boolean isNew = true; try (Connection connection = db.getConnection(); - PreparedStatement checkNewInstall = connection.prepareStatement("SELECT * FROM db_version LIMIT 1;"); - // See if this was a new install. If it was, db_version statement will fail. If it isn't, it'll succeed. - // If the version statement fails, return true; this is new install, carryon. - ResultSet rs = checkNewInstall.executeQuery();) { + PreparedStatement checkNewInstall = connection.prepareStatement("SELECT * FROM db_version LIMIT 1;"); + // See if this was a new install. If it was, db_version statement will fail. If it isn't, it'll succeed. + // If the version statement fails, return true; this is new install, carryon. + ResultSet rs = checkNewInstall.executeQuery();) { isNew = !rs.next(); } catch (SQLException se) { NameLayerPlugin.log(Level.INFO, "New installation: Welcome to Namelayer!"); @@ -130,16 +114,18 @@ public void loadDatabases(){ if (!isNew) { try (Connection connection = db.getConnection(); - PreparedStatement migrateInstall = connection.prepareStatement( - "INSERT INTO managed_plugin_data (plugin_name, current_migration_number, last_migration)" - + " SELECT plugin_name, max(db_version), `timestamp` FROM db_version WHERE plugin_name = '" - + this.getName() + "' LIMIT 1;");) { + PreparedStatement migrateInstall = connection.prepareStatement( + "INSERT INTO managed_plugin_data (plugin_name, current_migration_number, last_migration)" + + + " SELECT plugin_name, max(db_version), `timestamp` FROM db_version WHERE plugin_name = '" + + this.getName() + "' LIMIT 1;");) { int rows = migrateInstall.executeUpdate(); if (rows == 1) { NameLayerPlugin.log(Level.INFO, "Migration successful!"); } else { Bukkit.shutdown(); - NameLayerPlugin.log(Level.SEVERE, "Migration failed; db_version exists but uncaptured. Could be version problem."); + NameLayerPlugin.log(Level.SEVERE, + "Migration failed; db_version exists but uncaptured. Could be version problem."); return; } } catch (SQLException se) { @@ -156,14 +142,14 @@ public void loadDatabases(){ associations = new AssociationList(getLogger(), db); associations.registerMigrations(); - + if (loadGroups) { groupManagerDao = new GroupManagerDao(getLogger(), db); groupManagerDao.registerMigrations(); NameLayerPlugin.log(Level.INFO, "Removing any cycles..."); groupManagerDao.removeCycles(); } - + long begin_time = System.currentTimeMillis(); try { @@ -177,56 +163,60 @@ public void loadDatabases(){ Bukkit.shutdown(); } - getLogger().log(Level.INFO, "Database update took {0} seconds", (System.currentTimeMillis() - begin_time) / 1000); + getLogger() + .log(Level.INFO, "Database update took {0} seconds", (System.currentTimeMillis() - begin_time) / 1000); } - + /** * @return Returns the AssocationList. */ - public static AssociationList getAssociationList(){ + public static AssociationList getAssociationList() { return associations; } + /** * @return Returns the GroupManagerDatabase. */ - public static GroupManagerDao getGroupManagerDao(){ + public static GroupManagerDao getGroupManagerDao() { return groupManagerDao; } - - public static void log(Level level, String message){ - if (level == Level.INFO) + + public static void log(Level level, String message) { + if (level == Level.INFO) { Bukkit.getLogger().log(level, "[NameLayer:] Info follows\n" + - message); - else if (level == Level.WARNING) + message); + } else if (level == Level.WARNING) { Bukkit.getLogger().log(level, "[NameLayer:] Warning follows\n" + message); - else if (level == Level.SEVERE) - Bukkit.getLogger().log(level, "[NameLayer:] Stack Trace follows\n --------------------------------------\n" + - message + - "\n --------------------------------------"); + } else if (level == Level.SEVERE) { + Bukkit.getLogger() + .log(level, "[NameLayer:] Stack Trace follows\n --------------------------------------\n" + + message + + "\n --------------------------------------"); + } } - - public static String getSpecialAdminGroup(){ + + public static String getSpecialAdminGroup() { return "Name_Layer_Special"; } - + public static boolean createGroupOnFirstJoin() { return createGroupOnFirstJoin; } - public int getGroupLimit(){ + public int getGroupLimit() { return groupLimit; } - + public static BlackList getBlackList() { return blackList; } - + public static AutoAcceptHandler getAutoAcceptHandler() { return autoAcceptHandler; } - + public static DefaultGroupHandler getDefaultGroupHandler() { return defaultGroupHandler; } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/PlayerCommandMiddle.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/BaseCommandMiddle.java similarity index 77% rename from namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/PlayerCommandMiddle.java rename to namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/BaseCommandMiddle.java index 4998bac3..40e2992f 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/PlayerCommandMiddle.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/BaseCommandMiddle.java @@ -1,17 +1,15 @@ package vg.civcraft.mc.namelayer.command; +import co.aikar.commands.BaseCommand; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; -import vg.civcraft.mc.civmodcore.command.PlayerCommand; import vg.civcraft.mc.namelayer.GroupManager; import vg.civcraft.mc.namelayer.NameAPI; import vg.civcraft.mc.namelayer.group.Group; -public abstract class PlayerCommandMiddle extends PlayerCommand { +public abstract class BaseCommandMiddle extends BaseCommand { - public PlayerCommandMiddle(String name) { - super(name); - } + public BaseCommandMiddle() {} protected GroupManager gm = NameAPI.getGroupManager(); diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/CommandHandler.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/CommandHandler.java index 39f64e86..ff03257e 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/CommandHandler.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/CommandHandler.java @@ -1,11 +1,13 @@ package vg.civcraft.mc.namelayer.command; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; -import vg.civcraft.mc.civmodcore.command.Command; +import co.aikar.commands.BukkitCommandCompletionContext; +import co.aikar.commands.CommandCompletions; +import java.util.Arrays; +import javax.annotation.Nonnull; +import vg.civcraft.mc.civmodcore.commands.CommandManager; +import vg.civcraft.mc.namelayer.GroupManager; +import vg.civcraft.mc.namelayer.NameLayerPlugin; +import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; import vg.civcraft.mc.namelayer.command.commands.AcceptInvite; import vg.civcraft.mc.namelayer.command.commands.AddBlacklist; import vg.civcraft.mc.namelayer.command.commands.ChangePlayerName; @@ -24,7 +26,6 @@ import vg.civcraft.mc.namelayer.command.commands.ListMembers; import vg.civcraft.mc.namelayer.command.commands.ListPermissions; import vg.civcraft.mc.namelayer.command.commands.ListPlayerTypes; -import vg.civcraft.mc.namelayer.command.commands.MergeGroups; import vg.civcraft.mc.namelayer.command.commands.ModifyPermissions; import vg.civcraft.mc.namelayer.command.commands.NameLayerGroupGui; import vg.civcraft.mc.namelayer.command.commands.PromotePlayer; @@ -38,73 +39,58 @@ import vg.civcraft.mc.namelayer.command.commands.ToggleAutoAcceptInvites; import vg.civcraft.mc.namelayer.command.commands.TransferGroup; import vg.civcraft.mc.namelayer.command.commands.UpdateName; +import vg.civcraft.mc.namelayer.permission.PermissionType; -public class CommandHandler { - private Map commands = new HashMap<>(); - - public void registerCommands(){ - addCommands(new AcceptInvite("AcceptInvite")); - addCommands(new CreateGroup("CreateGroup")); - addCommands(new DeleteGroup("DeleteGroup")); - addCommands(new DisciplineGroup("DisiplineGroup")); - addCommands(new GlobalStats("GlobalStats")); - addCommands(new GroupStats("GroupStats")); - addCommands(new InfoDump("InfoDump")); - addCommands(new InvitePlayer("InvitePlayer")); - addCommands(new JoinGroup("JoinGroup")); - addCommands(new ListGroups("ListGroups")); - addCommands(new ListMembers("ListMembers")); - addCommands(new ListPermissions("ListPermissions")); - //addCommands(new MergeGroups("MergeGroups")); Disabled as it's currently semi broken - addCommands(new ModifyPermissions("ModifyPermissions")); - addCommands(new RemoveMember("RemoveMember")); - addCommands(new SetPassword("SetPassword")); - addCommands(new TransferGroup("TransferGroup")); - addCommands(new LeaveGroup("LeaveGroup")); - addCommands(new ListPlayerTypes("ListPlayerTypes")); - addCommands(new ListCurrentInvites("ListCurrentInvites")); - addCommands(new ToggleAutoAcceptInvites("AutoAcceptInvites")); - addCommands(new PromotePlayer("PromotePlayer")); - addCommands(new RejectInvite("RejectInvite")); - addCommands(new RevokeInvite("RevokeInvite")); - addCommands(new ChangePlayerName("ChangePlayerName")); - addCommands(new SetDefaultGroup("SetDefaultGroup")); - addCommands(new GetDefaultGroup("GetDefaultGroup")); - addCommands(new UpdateName("UpdateName")); - addCommands(new AddBlacklist("AddBlacklist")); - addCommands(new RemoveBlacklist("RemoveBlacklist")); - addCommands(new ShowBlacklist("ShowBlacklist")); - addCommands(new NameLayerGroupGui("OpenGUI")); - } - - public void addCommands(Command command){ - commands.put(command.getIdentifier().toLowerCase(), command); - } - - public boolean execute(CommandSender sender, org.bukkit.command.Command cmd, String[] args){ - if (commands.containsKey(cmd.getName().toLowerCase())){ - Command command = commands.get(cmd.getName().toLowerCase()); - if (args.length < command.getMinArguments() || args.length > command.getMaxArguments()){ - helpPlayer(command, sender); - return true; - } - command.execute(sender, args); - } - return true; +public class CommandHandler extends CommandManager{ + + public CommandHandler(NameLayerPlugin plugin) { + super(plugin); + init(); } - public List complete(CommandSender sender, org.bukkit.command.Command cmd, String[] args){ - if (commands.containsKey(cmd.getName().toLowerCase())){ - Command command = commands.get(cmd.getName().toLowerCase()); - return command.tabComplete(sender, args); - } - return null; + @Override + public void registerCommands(){ + registerCommand(new AcceptInvite()); + registerCommand(new CreateGroup()); + registerCommand(new DeleteGroup()); + registerCommand(new DisciplineGroup()); + registerCommand(new GlobalStats()); + registerCommand(new GroupStats()); + registerCommand(new InfoDump()); + registerCommand(new InvitePlayer()); + registerCommand(new JoinGroup()); + registerCommand(new ListGroups()); + registerCommand(new ListMembers()); + registerCommand(new ListPermissions()); + //addCommands(new MergeGroups("MergeGroups")); Disabled as it's currently semi broken + registerCommand(new ModifyPermissions()); + registerCommand(new RemoveMember()); + registerCommand(new SetPassword()); + registerCommand(new TransferGroup()); + registerCommand(new LeaveGroup()); + registerCommand(new ListPlayerTypes()); + registerCommand(new ListCurrentInvites()); + registerCommand(new ToggleAutoAcceptInvites()); + registerCommand(new PromotePlayer()); + registerCommand(new RejectInvite()); + registerCommand(new RevokeInvite()); + registerCommand(new ChangePlayerName()); + registerCommand(new SetDefaultGroup()); + registerCommand(new GetDefaultGroup()); + registerCommand(new UpdateName()); + registerCommand(new AddBlacklist()); + registerCommand(new RemoveBlacklist()); + registerCommand(new ShowBlacklist()); + registerCommand(new NameLayerGroupGui()); } - - public void helpPlayer(Command command, CommandSender sender){ - sender.sendMessage(new StringBuilder().append(ChatColor.RED + "Command: " ).append(command.getName()).toString()); - sender.sendMessage(new StringBuilder().append(ChatColor.RED + "Description: " ).append(command.getDescription()).toString()); - sender.sendMessage(new StringBuilder().append(ChatColor.RED + "Usage: ").append(command.getUsage()).toString()); + @Override + public void registerCompletions(@Nonnull CommandCompletions completions) { + super.registerCompletions(completions); + completions.registerCompletion("NL_Groups", (context) -> GroupTabCompleter.complete(context.getInput(), null, context.getPlayer())); + completions.registerAsyncCompletion("NL_Ranks", (context) -> + Arrays.asList(GroupManager.PlayerType.getStringOfTypes().split(" "))); + completions.registerCompletion("NL_Perms", (context) -> + PermissionType.getAllPermissions().stream().map(PermissionType::getName).toList()); } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/AcceptInvite.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/AcceptInvite.java index 301b0a40..0ef446e8 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/AcceptInvite.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/AcceptInvite.java @@ -1,68 +1,58 @@ package vg.civcraft.mc.namelayer.command.commands; +import co.aikar.commands.BukkitCommandCompletionContext; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.List; import java.util.UUID; -import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.entity.Player; +import vg.civcraft.mc.civmodcore.commands.TabComplete; import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.command.TabCompleters.InviteTabCompleter; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.listeners.PlayerListener; -public class AcceptInvite extends PlayerCommandMiddle{ +public class AcceptInvite extends BaseCommandMiddle { - public AcceptInvite(String name) { - super(name); - setIdentifier("nlag"); - setDescription("Accept an invitation to a group."); - setUsage("/nlag "); - setArguments(1,1); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { - if (!(sender instanceof Player)){ - sender.sendMessage(ChatColor.YELLOW + "Baby you dont got a uuid, why you got to make this difficult for everyone :("); - return true; - } + @CommandAlias("nlacceptinvite|nlacceptgroup|acceptinvite|acceptgroup|accept|join|ctjoin|ctj|ag|nlag") + @Syntax("") + @Description("Accept an invitation to a group.") + @CommandCompletion("@NL_Invites") + public void execute(Player sender, String groupName) { Player p = (Player) sender; - Group group = gm.getGroup(args[0]); - if (groupIsNull(sender, args[0], group)) { - return true; + Group group = gm.getGroup(groupName); + if (groupIsNull(sender, groupName, group)) { + return; } UUID uuid = NameAPI.getUUID(p.getName()); PlayerType type = group.getInvite(uuid); if (type == null){ - p.sendMessage(ChatColor.RED + "You were not invited to that group."); - return true; + p.sendMessage(Component.text("You were not invited to that group.").color(NamedTextColor.RED)); + return; } if (group.isDisciplined()){ - p.sendMessage(ChatColor.RED + "That Group is disiplined."); - return true; + p.sendMessage(Component.text("That group is disiplined.").color(NamedTextColor.RED)); + return; } if (group.isMember(uuid)){ - p.sendMessage(ChatColor.RED + "You are already a member you cannot join again."); + p.sendMessage(Component.text("You are already a member you cannot join again.").color(NamedTextColor.RED)); group.removeInvite(uuid, true); - return true; + return; } group.addMember(uuid, type); group.removeInvite(uuid, true); PlayerListener.removeNotification(uuid, group); - p.sendMessage(ChatColor.GREEN + "You have successfully been added to the group as a " + type.name() +"."); - return true; + p.sendMessage(Component.text("You have successfully been added to the group as a " + type.name() +".").color(NamedTextColor.GREEN)); } - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)){ - return null; - } - if (args.length > 0) - return InviteTabCompleter.complete(args[0], (Player) sender); - else - return InviteTabCompleter.complete(null, (Player)sender); + @TabComplete("NL_Invites") + public List tabComplete(BukkitCommandCompletionContext context) { + return InviteTabCompleter.complete(context.getInput(), context.getPlayer()); } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/AddBlacklist.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/AddBlacklist.java index 44f7ee7b..9082c16a 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/AddBlacklist.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/AddBlacklist.java @@ -1,90 +1,54 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.ArrayList; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.UUID; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager; import vg.civcraft.mc.namelayer.NameAPI; import vg.civcraft.mc.namelayer.NameLayerPlugin; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.BlackList; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class AddBlacklist extends PlayerCommandMiddle { +public class AddBlacklist extends BaseCommandMiddle { - public AddBlacklist(String name) { - super(name); - setIdentifier("nlbl"); - setDescription("Blacklist a player for a specific group"); - setUsage("/nlbl "); - setArguments(2, 2); - } - - @Override - public boolean execute(CommandSender arg0, String[] arg1) { - if (!(arg0 instanceof Player)) { - arg0.sendMessage(ChatColor.RED - + "Why do you have to make this so difficult?"); - return true; - } - Player p = (Player) arg0; - Group g = GroupManager.getGroup(arg1[0]); + @CommandAlias("nlbl|blacklist|addblacklist") + @Syntax(" ") + @Description("Blacklist a player for a specific group") + @CommandCompletion("@NL_Groups @allplayers") + public void execute(Player sender, String groupName, String playerName) { + Player p = (Player) sender; + Group g = GroupManager.getGroup(groupName); if (g == null) { p.sendMessage(ChatColor.RED + "This group does not exist"); - return true; + return; } if (!gm.hasAccess(g, p.getUniqueId(), PermissionType.getPermission("BLACKLIST")) && !(p.isOp() || p.hasPermission("namelayer.admin"))) { p.sendMessage(ChatColor.RED + "You do not have the required permissions to do this"); - return true; + return; } - UUID targetUUID = NameAPI.getUUID(arg1[1]); + UUID targetUUID = NameAPI.getUUID(playerName); if (targetUUID == null) { p.sendMessage(ChatColor.RED + "This player does not exist"); - return true; + return; } if (g.isMember(targetUUID)) { p.sendMessage(ChatColor.RED + "You can't blacklist members of a group"); - return true; + return; } BlackList bl = NameLayerPlugin.getBlackList(); if (bl.isBlacklisted(g, targetUUID)) { p.sendMessage(ChatColor.RED + "This player is already blacklisted"); - return true; + return; } bl.addBlacklistMember(g, targetUUID, true); p.sendMessage(ChatColor.GREEN + NameAPI.getCurrentName(targetUUID) + " was successfully blacklisted on the group " + g.getName()); - return true; } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)){ - sender.sendMessage(ChatColor.RED + "I'm sorry baby, please run this as a player :)"); - return null; - } - if (args.length < 2) { - if (args.length == 0) - return GroupTabCompleter.complete(null, null, (Player) sender); - else - return GroupTabCompleter.complete(args[0], null, (Player)sender); - - } else if (args.length == 2) { - List namesToReturn = new ArrayList<>(); - for (Player p: Bukkit.getOnlinePlayers()) { - if (p.getName().toLowerCase().startsWith(args[0].toLowerCase())) - namesToReturn.add(p.getName()); - } - return namesToReturn; - } - return null; - } - } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ChangePlayerName.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ChangePlayerName.java index 5c7a3a45..14d84b1b 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ChangePlayerName.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ChangePlayerName.java @@ -1,46 +1,39 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandPermission; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.UUID; import org.bukkit.command.CommandSender; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; /** * Created by isaac on 2/6/15. */ -public class ChangePlayerName extends PlayerCommandMiddle { - public ChangePlayerName(String name) { - super(name); - setIdentifier("nlcpn"); - setDescription("Used by ops to change a players name"); - setUsage("/nlcpn "); - setArguments(2,2); - } - @Override - public boolean execute(CommandSender sender, String[] args) { +public class ChangePlayerName extends BaseCommandMiddle { + + @CommandAlias("nlcpn|changeplayername") + @CommandPermission("namelayer.admin") + @Syntax(" ") + @Description("Used by ops to change a players name") + public void execute(CommandSender sender, String currentName, String changedName) { if (!sender.isOp() && !sender.hasPermission("namelayer.admin")) { sender.sendMessage("You're not an op. "); - return false; + return; } - - UUID player = NameAPI.getUUID(args[0]); + UUID player = NameAPI.getUUID(currentName); if (player == null){ - sender.sendMessage(args[0] + " has never logged in"); - return false; + sender.sendMessage(currentName + " has never logged in"); + return; } - String newName = args[1].length() >= 16 ? args[1].substring(0, 16) : args[1]; + String newName = changedName.length() >= 16 ? changedName.substring(0, 16) : changedName; NameAPI.getAssociationList().changePlayer(newName, player); NameAPI.resetCache(player); - sender.sendMessage("player name changed have them relog for it to take affect"); - return true; - } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - return null; + sender.sendMessage(currentName + "'s name has been changed to " + newName + ". Have them relog for it to take affect"); } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/CreateGroup.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/CreateGroup.java index 351eb41c..740ba44b 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/CreateGroup.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/CreateGroup.java @@ -1,51 +1,42 @@ package vg.civcraft.mc.namelayer.command.commands; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Optional; +import co.aikar.commands.annotation.Syntax; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; -import java.util.List; import java.util.UUID; import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager; import vg.civcraft.mc.namelayer.NameAPI; import vg.civcraft.mc.namelayer.NameLayerPlugin; import vg.civcraft.mc.namelayer.RunnableOnGroup; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; -public class CreateGroup extends PlayerCommandMiddle{ +public class CreateGroup extends BaseCommandMiddle { - public CreateGroup(String name) { - super(name); - setIdentifier("nlcg"); - setDescription("Create a group (Public or Private). Password is optional."); - setUsage("/nlcg [password]"); - setArguments(1,3); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { - if (!(sender instanceof Player)){ - sender.sendMessage(ChatColor.DARK_BLUE + "Nice try console man, you can't bring me down. The computers won't win. " + - "Dis a player commmand back off."); - return true; - } + @CommandAlias("nlcg|nlcreategroup|creategroup|create|ctcreate|creategroup|cg") + @Syntax(" [password]") + @Description("Create a group (Public or Private). Password is optional.") + public void execute(Player sender, String groupName, @Optional String userPassword) { Player p = (Player) sender; - String name = args[0]; + String name = groupName; int currentGroupCount = gm.countGroups(p.getUniqueId()); if (NameLayerPlugin.getInstance().getGroupLimit() < currentGroupCount + 1 && !(p.isOp() || p.hasPermission("namelayer.admin"))){ p.sendMessage(ChatColor.RED + "You cannot create any more groups! Please delete an un-needed group before making more."); - return true; + return; } //enforce regulations on the name if (name.length() > 32) { p.sendMessage(ChatColor.RED + "The group name is not allowed to contain more than 32 characters"); - return true; + return; } Charset latin1 = StandardCharsets.ISO_8859_1; boolean invalidChars = false; @@ -65,18 +56,17 @@ public boolean execute(CommandSender sender, String[] args) { if(invalidChars) { p.sendMessage(ChatColor.RED + "You used characters, which are not allowed"); - return true; + return; } if (GroupManager.getGroup(name) != null){ p.sendMessage(ChatColor.RED + "That group is already taken. Try another unique group name."); - return true; + return; } String password = ""; - if (args.length == 2) { - password = args[1]; - } - else { + if (userPassword != null) { + password = userPassword; + } else { password = null; } final UUID uuid = NameAPI.getUUID(p.getName()); @@ -102,10 +92,5 @@ public void run() { p.sendMessage(ChatColor.YELLOW + "You have reached the group limit with " + NameLayerPlugin.getInstance().getGroupLimit() + " groups! Please delete un-needed groups if you wish to create more."); } p.sendMessage(ChatColor.GREEN + "Group creation request is in process."); - return true; - } - - public List tabComplete(CommandSender sender, String[] args) { - return null; } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/DeleteGroup.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/DeleteGroup.java index 870083fd..1505b4c7 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/DeleteGroup.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/DeleteGroup.java @@ -1,42 +1,33 @@ package vg.civcraft.mc.namelayer.command.commands; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.Date; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.UUID; import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class DeleteGroup extends PlayerCommandMiddle{ +public class DeleteGroup extends BaseCommandMiddle { - private Map confirmDeleteGroup; + private Map confirmDeleteGroup = new HashMap(); - public DeleteGroup(String name) { - super(name); - setIdentifier("nldg"); - setDescription("Delete a group."); - setUsage("/nldg "); - setArguments(1,1); - confirmDeleteGroup = new HashMap(); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { - if (!(sender instanceof Player)){ - sender.sendMessage(ChatColor.DARK_AQUA + "I grow tired of this, NO."); - return true; - } + @CommandAlias("nldg|delete|deletegroup|groupdelete") + @Syntax("") + @Description("Delete a group.") + @CommandCompletion("@NL_Groups") + public void execute(Player sender, String groupName) { Player p = (Player) sender; UUID uuid = NameAPI.getUUID(p.getName()); - String x = args[0]; + String x = groupName; String confirm = "CONFIRM"; if(x.equals(confirm)) { @@ -48,7 +39,7 @@ public boolean execute(CommandSender sender, String[] args) { //player could have lost delete permission in the mean time if (!NameAPI.getGroupManager().hasAccess(gD, uuid, PermissionType.getPermission("DELETE"))){ p.sendMessage(ChatColor.RED + "You do not have permission to run that command."); - return true; + return; } Date now = new Date(System.currentTimeMillis() - 15000); //if it has been less than 15 seconds @@ -62,12 +53,12 @@ public boolean execute(CommandSender sender, String[] args) { + " Check back later to see if group is deleted."); confirmDeleteGroup.remove(uuid); - return true; + return; } else{ p.sendMessage(ChatColor.RED + "You did not do /nldg CONFIRM fast enough, you will need to start over"); confirmDeleteGroup.remove(uuid); - return true; + return; } } @@ -75,20 +66,20 @@ public boolean execute(CommandSender sender, String[] args) { } Group g = gm.getGroup(x); if (groupIsNull(sender, x, g)) { - return true; + return; } if (!NameAPI.getGroupManager().hasAccess(g, uuid, PermissionType.getPermission("DELETE"))){ p.sendMessage(ChatColor.RED + "You do not have permission to run that command."); - return true; + return; } PlayerType pType = g.getPlayerType(uuid); if (pType == null && !p.hasPermission("namelayer.admin")){ p.sendMessage(ChatColor.RED + "You are not on that group."); - return true; + return; } if (g.isDisciplined() && !p.hasPermission("namelayer.admin")){ p.sendMessage(ChatColor.RED + "Group is disiplined."); - return true; + return; } //set that user can confirm group in 15 seconds Date date = new Date(); @@ -96,19 +87,6 @@ public boolean execute(CommandSender sender, String[] args) { String[] groupDate = new String[] {g.getName(), dateString.toString()}; p.sendMessage(ChatColor.GREEN + "To confirm deletion of group: " + g.getName() + "\nuse /nldg CONFIRM within 15 seconds"); confirmDeleteGroup.put(uuid, groupDate); - return true; - } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)){ - return null; - } - - if (args.length > 0) - return GroupTabCompleter.complete(args[args.length - 1], PermissionType.getPermission("DELETE"), (Player) sender); - else { - return GroupTabCompleter.complete(null, PermissionType.getPermission("DELETE"), (Player) sender); - } + return; } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/DisciplineGroup.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/DisciplineGroup.java index ff41426c..73f2b164 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/DisciplineGroup.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/DisciplineGroup.java @@ -1,36 +1,31 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +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.Syntax; import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; -public class DisciplineGroup extends PlayerCommandMiddle{ +public class DisciplineGroup extends BaseCommandMiddle { - public DisciplineGroup(String name) { - super(name); - setIdentifier("nldig"); - setDescription("Disable a group from working."); - setUsage("/nldig "); - setArguments(1,1); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { - if (!(sender instanceof Player)) - sender.sendMessage(ChatColor.AQUA + "Meh, fine, just this one."); - // checks and stuff should be in plugin.yml so going to assume that sender has perms - // naaaaaaa + @CommandAlias("nldig|disablegroup|disable|discipline") + @CommandPermission("namelayer.admin") + @Syntax("") + @Description("Disable a group from working.") + @CommandCompletion("@NL_Groups") + public void execute(Player sender, String groupName) { Player p = (Player) sender; - Group g = gm.getGroup(args[0]); - if (groupIsNull(sender, args[0], g)) { - return true; + Group g = gm.getGroup(groupName); + if (groupIsNull(sender, groupName, g)) { + return; } if (!p.isOp() || !p.hasPermission("namelayer.admin")){ p.sendMessage(ChatColor.RED + "You do not have permission for this op command."); - return true; + return; } if (g.isDisciplined()){ g.setDisciplined(false); @@ -40,11 +35,5 @@ public boolean execute(CommandSender sender, String[] args) { g.setDisciplined(true); sender.sendMessage(ChatColor.GREEN + "Group has been disabled."); } - return true; - } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - return null; } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/GetDefaultGroup.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/GetDefaultGroup.java index 7340e602..e733f625 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/GetDefaultGroup.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/GetDefaultGroup.java @@ -1,30 +1,21 @@ package vg.civcraft.mc.namelayer.command.commands; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.Description; import java.util.List; import java.util.UUID; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; -public class GetDefaultGroup extends PlayerCommandMiddle{ +public class GetDefaultGroup extends BaseCommandMiddle { - public GetDefaultGroup(String name) { - super(name); - setIdentifier("nlgdg"); - setDescription("Get a players default group"); - setUsage("/nlgdg"); - setArguments(0,0); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { - if (!(sender instanceof Player)){ - sender.sendMessage("I don't think you need to do that."); - return true; - } + @CommandAlias("nlgdg") + @Description("Get a players default group") + public void execute(Player sender) { Player p = (Player) sender; UUID uuid = NameAPI.getUUID(p.getName()); @@ -35,11 +26,8 @@ public boolean execute(CommandSender sender, String[] args) { else{ p.sendMessage(ChatColor.GREEN + "Your current default group is " + x); } - - return true; } - @Override public List tabComplete(CommandSender sender, String[] args) { if (!(sender instanceof Player)) return null; diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/GlobalStats.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/GlobalStats.java index aff28dd7..ffe6e3c3 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/GlobalStats.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/GlobalStats.java @@ -1,24 +1,20 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandPermission; +import co.aikar.commands.annotation.Description; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import vg.civcraft.mc.namelayer.NameLayerPlugin; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; -public class GlobalStats extends PlayerCommandMiddle{ +public class GlobalStats extends BaseCommandMiddle { - public GlobalStats(String name) { - super(name); - setIdentifier("nlgls"); - setDescription("Get the amount of global groups."); - setUsage("/nlgls"); - setArguments(0,0); - } - - @Override - public boolean execute(final CommandSender sender, String[] args) { + @CommandAlias("nlgls") + @CommandPermission("namelayer.admin") + @Description("Get the amount of global groups.") + public void execute(final CommandSender sender) { Bukkit.getScheduler().runTaskAsynchronously(NameLayerPlugin.getInstance(), new Runnable(){ @Override @@ -29,11 +25,5 @@ public void run() { }); sender.sendMessage(ChatColor.GREEN + "Stats are being retrieved, please wait."); - return true; - } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - return null; } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/GroupStats.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/GroupStats.java index 96931314..17d517e3 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/GroupStats.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/GroupStats.java @@ -1,5 +1,9 @@ package vg.civcraft.mc.namelayer.command.commands; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandPermission; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.List; import java.util.UUID; import org.bukkit.Bukkit; @@ -9,52 +13,39 @@ import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameAPI; import vg.civcraft.mc.namelayer.NameLayerPlugin; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class GroupStats extends PlayerCommandMiddle { +public class GroupStats extends BaseCommandMiddle { - public GroupStats(String name) { - super(name); - setIdentifier("nlgs"); - setDescription("Get stats about a group."); - setUsage("/nlgs "); - setArguments(1, 1); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { - if (!(sender instanceof Player)) { - sender.sendMessage("meh"); - return true; - } + @CommandAlias("nlgs") + @CommandPermission("namelayer.admin") + @Syntax("") + @Description("Get stats about a group.") + public void execute(Player sender, String groupName) { Player p = (Player) sender; - Group g = gm.getGroup(args[0]); + Group g = gm.getGroup(groupName); UUID uuid = NameAPI.getUUID(p.getName()); - if (groupIsNull(sender, args[0], g)) { - return true; + if (groupIsNull(sender, groupName, g)) { + return; } PlayerType pType = g.getPlayerType(uuid); if (!g.isMember(uuid) && !(p.isOp() || p.hasPermission("namelayer.admin"))){ p.sendMessage(ChatColor.RED + "You are not on this group."); - return true; + return; } boolean hasPerm = NameAPI.getGroupManager().hasAccess(g, uuid, PermissionType.getPermission("GROUPSTATS")); if (!(p.isOp() || p.hasPermission("namelayer.admin")) && !hasPerm){ p.sendMessage(ChatColor.RED + "You do not have permission to run that command."); - return true; + return; } Bukkit.getScheduler().runTaskAsynchronously(NameLayerPlugin.getInstance(), new StatsMessage(p, g)); - - return true; } - - @Override public List tabComplete(CommandSender sender, String[] args) { if (!(sender instanceof Player)) return null; diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/InfoDump.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/InfoDump.java index 04bf6bf8..07842dca 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/InfoDump.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/InfoDump.java @@ -1,70 +1,54 @@ package vg.civcraft.mc.namelayer.command.commands; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandPermission; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Optional; +import co.aikar.commands.annotation.Syntax; import java.util.List; import java.util.UUID; import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.GroupPermission; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class InfoDump extends PlayerCommandMiddle -{ - - public InfoDump(String name) - { - super(name); - setIdentifier("nlid"); - setDescription("This command dumps group info for CitadelGUI."); - setUsage("/nlid (page)"); - setArguments(0, 1); - } - - @Override - public boolean execute(CommandSender sender, String[] args) - { - if (!(sender instanceof Player)){ - sender.sendMessage(ChatColor.RED + "You are not a player?"); - return true; - } - +public class InfoDump extends BaseCommandMiddle { + + @CommandAlias("nlid") + @CommandPermission("namelayer.admin") + @Syntax("[page]") + @Description("This command dumps group info for CitadelGUI.") + public void execute(Player sender, @Optional String groupID) { Player player = (Player)sender; UUID playerUUID = NameAPI.getUUID(player.getName()); List groupNames = gm.getAllGroupNames(player.getUniqueId()); - if(args.length == 0) - { + if(groupID == null) { player.sendMessage(ChatColor.GREEN + "[NLID]: " + groupNames.size()); - return true; - } - else - { + return; + } else { int page = 0; - try - { - page = Integer.parseInt(args[0]); + try { + page = Integer.parseInt(groupID); } - catch(Exception e) - { + catch(Exception e) { player.sendMessage(ChatColor.RED + "Please enter a valid number"); - return true; + return; } Group group; - try - { + try { group = gm.getGroup(groupNames.get(page-1)); } - catch(Exception e) - { + catch(Exception e) { player.sendMessage(ChatColor.RED + "No such Group"); - return true; + return; } GroupPermission permissions = gm.getPermissionforGroup(group); StringBuilder outputBuilder = new StringBuilder(); @@ -77,63 +61,46 @@ public boolean execute(CommandSender sender, String[] args) outputBuilder.append(" : [OWNERS]"); - if(gm.hasAccess(group, playerUUID, PermissionType.getPermission("OWNER"))) - { - for(UUID ownerUUID : group.getAllMembers(PlayerType.OWNER)) - { + if(gm.hasAccess(group, playerUUID, PermissionType.getPermission("OWNER"))) { + for(UUID ownerUUID : group.getAllMembers(PlayerType.OWNER)) { outputBuilder.append(" " + NameAPI.getCurrentName(ownerUUID)); } - } - else - { + } else { outputBuilder.append(" accounts-"); outputBuilder.append(group.getAllMembers(PlayerType.OWNER).size()); } outputBuilder.append(" : [ADMINS]"); - if(gm.hasAccess(group, playerUUID, PermissionType.getPermission("ADMINS"))) - { - for(UUID adminUUID : group.getAllMembers(PlayerType.ADMINS)) - { + if(gm.hasAccess(group, playerUUID, PermissionType.getPermission("ADMINS"))) { + for(UUID adminUUID : group.getAllMembers(PlayerType.ADMINS)) { outputBuilder.append(" " + NameAPI.getCurrentName(adminUUID)); } - } - else - { + } else { outputBuilder.append(" accounts-"); outputBuilder.append(group.getAllMembers(PlayerType.ADMINS).size()); } outputBuilder.append(" : [MODS]"); - if(gm.hasAccess(group, playerUUID, PermissionType.getPermission("MODS"))) - { - for(UUID modUUID : group.getAllMembers(PlayerType.MODS)) - { + if(gm.hasAccess(group, playerUUID, PermissionType.getPermission("MODS"))) { + for(UUID modUUID : group.getAllMembers(PlayerType.MODS)) { outputBuilder.append(" " + NameAPI.getCurrentName(modUUID)); } - } - else - { + } else { outputBuilder.append(" accounts-"); outputBuilder.append(group.getAllMembers(PlayerType.MODS).size()); } outputBuilder.append(" : [MEMBERS]"); - if(gm.hasAccess(group, playerUUID, PermissionType.getPermission("MEMBERS"))) - { - for(UUID memberUUID : group.getAllMembers(PlayerType.MEMBERS)) - { + if(gm.hasAccess(group, playerUUID, PermissionType.getPermission("MEMBERS"))) { + for(UUID memberUUID : group.getAllMembers(PlayerType.MEMBERS)) { outputBuilder.append(" " + NameAPI.getCurrentName(memberUUID)); } - } - else - { + } else { outputBuilder.append(" accounts-"); outputBuilder.append(group.getAllMembers(PlayerType.MEMBERS).size()); } - if(gm.hasAccess(group, playerUUID, PermissionType.getPermission("LIST_PERMS"))) - { + if(gm.hasAccess(group, playerUUID, PermissionType.getPermission("LIST_PERMS"))) { outputBuilder.append(" : [OWNER-PERMS] " + permissions.listPermsforPlayerType(PlayerType.OWNER)); outputBuilder.append(" : [ADMIN-PERMS] " + permissions.listPermsforPlayerType(PlayerType.ADMINS)); outputBuilder.append(" : [MOD-PERMS] " + permissions.listPermsforPlayerType(PlayerType.MODS)); @@ -141,13 +108,6 @@ public boolean execute(CommandSender sender, String[] args) } player.sendMessage(ChatColor.GREEN + outputBuilder.toString()); - return true; } } - - @Override - public List tabComplete(CommandSender sender, String[] args) - { - return null; - } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/InvitePlayer.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/InvitePlayer.java index fc732149..29fe68f3 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/InvitePlayer.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/InvitePlayer.java @@ -1,7 +1,10 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.ArrayList; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Optional; +import co.aikar.commands.annotation.Syntax; import java.util.UUID; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.ComponentBuilder; @@ -15,43 +18,36 @@ import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameAPI; import vg.civcraft.mc.namelayer.NameLayerPlugin; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; -import vg.civcraft.mc.namelayer.command.TabCompleters.MemberTypeCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.listeners.PlayerListener; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class InvitePlayer extends PlayerCommandMiddle{ +public class InvitePlayer extends BaseCommandMiddle { - public InvitePlayer(String name) { - super(name); - setIdentifier("nlip"); - setDescription("Invite a player to the PlayerType " + PlayerType.getStringOfTypes() + " of a group."); - setUsage("/nlip (PlayerType- default MEMBERS)"); - setArguments(2,3); - } - - @Override - public boolean execute(CommandSender s, String[] args) { - final String targetGroup = args[0]; - final String targetPlayer = args[1]; - final String targetType = args.length >= 3 ? args[2] : null; + @CommandAlias("nlip|invite|inviteplayer") + @Syntax(" [rank (eg: MEMBERS)]") + @Description("Invite a player to a group.") + @CommandCompletion("@NL_Groups @allplayers @NL_Ranks") + public void execute(CommandSender s, String groupName, String playerName, @Optional String playerRank) { + final String targetGroup = groupName; + final String targetPlayer = playerName; + final String targetType = playerRank; final boolean isPlayer = s instanceof Player; final Player p = isPlayer ? (Player)s : null; final boolean isAdmin = !isPlayer || p.hasPermission("namelayer.admin"); final Group group = GroupManager.getGroup(targetGroup); if (groupIsNull(s, targetGroup, group)) { - return true; + return; } if (!isAdmin && group.isDisciplined()) { s.sendMessage(ChatColor.RED + "This group is disiplined."); - return true; + return; } final UUID targetAccount = NameAPI.getUUID(targetPlayer); if (targetAccount == null) { s.sendMessage(ChatColor.RED + "The player has never played before."); - return true; + return; } final PlayerType pType = targetType != null ? PlayerType.getPlayerType(targetType) : PlayerType.MEMBERS; if (pType == null) { @@ -60,11 +56,11 @@ public boolean execute(CommandSender s, String[] args) { } else { s.sendMessage("Invalid player type"); } - return true; + return; } if (pType == PlayerType.NOT_BLACKLISTED) { p.sendMessage(ChatColor.RED + "I think we both know that this shouldn't be possible."); - return true; + return; } if (!isAdmin) { // Perform access check @@ -72,7 +68,7 @@ public boolean execute(CommandSender s, String[] args) { final PlayerType t = group.getPlayerType(executor); // playertype for the player running the command. if (t == null) { s.sendMessage(ChatColor.RED + "You are not on that group."); - return true; + return; } boolean allowed = false; switch (pType) { // depending on the type the executor wants to add the player to @@ -94,18 +90,18 @@ public boolean execute(CommandSender s, String[] args) { } if (!allowed) { s.sendMessage(ChatColor.RED + "You do not have permissions to modify this group."); - return true; + return; } } if (group.isCurrentMember(targetAccount)) { // So a player can't demote someone who is above them. s.sendMessage(ChatColor.RED + "Player is already a member. " + "Use /promoteplayer to change their PlayerType."); - return true; + return; } if(NameLayerPlugin.getBlackList().isBlacklisted(group, targetAccount)) { s.sendMessage(ChatColor.RED + "This player is currently blacklisted, you have to unblacklist him with /removeblacklist before inviting him to the group"); - return true; + return; } if (!isAdmin) { sendInvitation(group, pType, targetAccount, p.getUniqueId(), true); @@ -115,7 +111,6 @@ public boolean execute(CommandSender s, String[] args) { } s.sendMessage(ChatColor.GREEN + "The invitation has been sent." + "\n Use /revoke to Revoke an invite."); - return true; } public static void sendInvitation(Group group, PlayerType pType, UUID invitedPlayer, UUID inviter, boolean saveToDB){ @@ -167,29 +162,4 @@ public static void sendInvitation(Group group, PlayerType pType, UUID invitedPla PlayerListener.addNotification(invitedPlayer, group); } } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)){ - sender.sendMessage(ChatColor.RED + "I'm sorry baby, please run this as a player :)"); - return null; - } - if (args.length < 2) { - if (args.length == 0) - return GroupTabCompleter.complete(null, null, (Player) sender); - else - return GroupTabCompleter.complete(args[0], null, (Player)sender); - } else if (args.length == 2) { - List namesToReturn = new ArrayList<>(); - for (Player p: Bukkit.getOnlinePlayers()) { - if (p.getName().toLowerCase().startsWith(args[1].toLowerCase())) - namesToReturn.add(p.getName()); - } - return namesToReturn; - } - else if (args.length == 3) - return MemberTypeCompleter.complete(args[2]); - - else return null; - } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/JoinGroup.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/JoinGroup.java index 9c57aa4d..ee12fe62 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/JoinGroup.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/JoinGroup.java @@ -1,76 +1,59 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.UUID; import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameAPI; import vg.civcraft.mc.namelayer.NameLayerPlugin; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.GroupPermission; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class JoinGroup extends PlayerCommandMiddle{ +public class JoinGroup extends BaseCommandMiddle { - public JoinGroup(String name) { - super(name); - setIdentifier("nljg"); - setDescription("Join a password protected group."); - setUsage("/nljg "); - setArguments(2,2); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { - if (!(sender instanceof Player)){ - sender.sendMessage(ChatColor.RED + "How would this even work. Seriously my reddit account is rourke750, explain to me why " + - "you would ever want to do this from console and I will remove this check."); - return true; - } + @CommandAlias("nljg|join|joingroup") + @Syntax(" [password]") + @Description("Join a password protected group.") + public void execute(Player sender, String groupName, String attemptedPassword) { Player p = (Player) sender; - Group g = gm.getGroup(args[0]); - if (groupIsNull(sender, args[0], g)) { - return true; + Group g = gm.getGroup(groupName); + if (groupIsNull(sender, groupName, g)) { + return; } if (g.isDisciplined()){ p.sendMessage(ChatColor.RED + "This group is disiplined."); - return true; + return; } if (g.getPassword() == null){ p.sendMessage(ChatColor.GREEN + "This group does not have a password, so you can't join it."); - return true; + return; } - if (!g.getPassword().equals(args[1])){ + if (!g.getPassword().equals(attemptedPassword)){ p.sendMessage(ChatColor.RED + "That password is incorrect"); - return true; + return; } UUID uuid = NameAPI.getUUID(p.getName()); GroupPermission groupPerm = gm.getPermissionforGroup(g); PlayerType pType = groupPerm.getFirstWithPerm(PermissionType.getPermission("JOIN_PASSWORD")); if (pType == null){ p.sendMessage(ChatColor.RED + "Someone derped. This group does not have the specified permission to let you join, sorry."); - return true; + return; } if (g.isCurrentMember(uuid)){ p.sendMessage(ChatColor.RED + "You are already a member."); - return true; + return; } if(NameLayerPlugin.getBlackList().isBlacklisted(g, uuid)) { p.sendMessage(ChatColor.RED + "You can not join a group you have been blacklisted from"); - return true; + return; } g.addMember(uuid, pType); p.sendMessage(ChatColor.GREEN + "You have successfully been added to this group."); - return true; } - - public List tabComplete(CommandSender sender, String[] args) { - return null; - } - - } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/LeaveGroup.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/LeaveGroup.java index bf4c97b2..343cdf46 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/LeaveGroup.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/LeaveGroup.java @@ -1,59 +1,38 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.UUID; import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; -public class LeaveGroup extends PlayerCommandMiddle{ +public class LeaveGroup extends BaseCommandMiddle { - public LeaveGroup(String name) { - super(name); - setIdentifier("nlleg"); - setDescription("Leave a group"); - setUsage("/nlleg "); - setArguments(1,1); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { - if (!(sender instanceof Player)){ - sender.sendMessage("Nope, be player"); - return true; - } + @CommandAlias("nlleg|leave|leavegroup") + @Syntax("") + @Description("Leave a group") + @CommandCompletion("@NL_Groups") + public void execute(Player sender, String groupName) { Player p = (Player) sender; - Group g = gm.getGroup(args[0]); - if (groupIsNull(sender, args[0], g)) { - return true; + Group g = gm.getGroup(groupName); + if (groupIsNull(sender, groupName, g)) { + return; } UUID uuid = NameAPI.getUUID(p.getName()); if (!g.isCurrentMember(uuid)){ p.sendMessage(ChatColor.RED + "You are not a member of this group."); - return true; + return; } if (g.isDisciplined()){ p.sendMessage(ChatColor.RED + "This group is disciplined."); - return true; + return; } g.removeMember(uuid); p.sendMessage(ChatColor.GREEN + "You have been removed from the group."); - return true; - } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)) - return null; - - if (args.length > 0) - return GroupTabCompleter.complete(args[0], null, (Player) sender); - else{ - return GroupTabCompleter.complete(null, null, (Player)sender); - } } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/LinkGroups.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/LinkGroups.java index 5025919e..4db0631c 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/LinkGroups.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/LinkGroups.java @@ -1,52 +1,42 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.UUID; import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class LinkGroups extends PlayerCommandMiddle { +public class LinkGroups extends BaseCommandMiddle { - public LinkGroups(String name) { - super(name); - setIdentifier("nllink"); - setDescription("Links two groups to each other as nested groups."); - setUsage("/nllink "); - setArguments(2,2); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { - if (!(sender instanceof Player)) { - sender.sendMessage(ChatColor.LIGHT_PURPLE - + "And it feels like I am just to close to " - + "touch you, but you are not a player."); - return true; - } + @CommandAlias("nllink|linkgroups") + @Syntax(" ") + @Description("Links two groups to each other as nested groups.") + @CommandCompletion("@NL_Groups @NL_Groups") + public void execute(Player sender, String parentGroup, String childGroup) { Player p = (Player) sender; - String supername = args[0], subname = args[1]; + String supername = parentGroup, subname = childGroup; Group supergroup = GroupManager.getGroup(supername); if (groupIsNull(sender, supername, supergroup)) { - return true; + return; } Group subgroup = GroupManager.getGroup(subname); if (groupIsNull(sender, subname, subgroup)) { - return true; + return; } if(subgroup.getName().equalsIgnoreCase(supergroup.getName())) { p.sendMessage(ChatColor.RED + "Not today"); - return true; + return; } // check if groups are accessible @@ -55,28 +45,28 @@ public boolean execute(CommandSender sender, String[] args) { if (!supergroup.isMember(uuid) || !subgroup.isMember(uuid)) { p.sendMessage(ChatColor.RED + "You're not on one of the groups."); - return true; + return; } if (supergroup.isDisciplined() || subgroup.isDisciplined()) { p.sendMessage(ChatColor.RED + "One of the groups is disciplined."); - return true; + return; } if (!gm.hasAccess(subgroup, uuid, PermissionType.getPermission("LINKING"))) { p.sendMessage(ChatColor.RED + "You don't have permission to do that on the sub group."); - return true; + return; } if (!gm.hasAccess(supergroup, uuid, PermissionType.getPermission("LINKING"))) { p.sendMessage(ChatColor.RED + "You don't have permission to do that on the super group."); - return true; + return; } if (Group.areLinked(supergroup, subgroup)) { p.sendMessage(ChatColor.RED + "These groups are already linked."); - return true; + return; } boolean success = Group.link(supergroup, subgroup, true); @@ -88,24 +78,5 @@ public boolean execute(CommandSender sender, String[] args) { message = ChatColor.RED + "Failed to link the groups."; } p.sendMessage(message); - return true; - } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)){ - sender.sendMessage(ChatColor.BLUE - + "Fight me, bet you wont.\n " - + "Just back off you don't belong here."); - return null; - } - - if (args.length > 0) { - return GroupTabCompleter.complete(args[args.length - 1], - PermissionType.getPermission("LINKING"), (Player)sender); - } else { - return GroupTabCompleter.complete(null, - PermissionType.getPermission("LINKING"), (Player)sender); - } } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListCurrentInvites.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListCurrentInvites.java index 0d72f50c..ae5a38d4 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListCurrentInvites.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListCurrentInvites.java @@ -1,34 +1,18 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; -import org.bukkit.command.CommandSender; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.Description; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.listeners.PlayerListener; -public class ListCurrentInvites extends PlayerCommandMiddle{ +public class ListCurrentInvites extends BaseCommandMiddle { - public ListCurrentInvites(String name) { - super(name); - setIdentifier("nllci"); - setDescription("List your current invites."); - setUsage("/nllci"); - setArguments(0,0); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { - if (!(sender instanceof Player)){ - sender.sendMessage("back off console man"); - return true; - } + @CommandAlias("nllci|listinvites|invites") + @Description("List your current invites.") + public void execute(Player sender) { Player p = (Player) sender; p.sendMessage(PlayerListener.getNotificationsInStringForm(NameAPI.getUUID(p.getName()))); - return true; } - public List tabComplete(CommandSender sender, String[] args) { - return null; - } - } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListGroups.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListGroups.java index 4a245bfc..fc97c67f 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListGroups.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListGroups.java @@ -1,5 +1,9 @@ package vg.civcraft.mc.namelayer.command.commands; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Optional; +import co.aikar.commands.annotation.Syntax; import java.util.List; import java.util.UUID; import org.bukkit.ChatColor; @@ -7,35 +11,29 @@ import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; -public class ListGroups extends PlayerCommandMiddle { +public class ListGroups extends BaseCommandMiddle { - public ListGroups(String name) { - super(name); - setIdentifier("nllg"); - setDescription("List groups."); - setUsage("/nllg "); - setArguments(0,1); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { + @CommandAlias("nllg|listgroups|groups") + @Syntax("[page]") + @Description("List groups.") + public void execute(CommandSender sender, @Optional String pageNumber) { Player p = null; UUID uuid = null; boolean autopages = false; if ((sender.isOp() || sender.hasPermission("namelayer.admin"))) { - if (args.length == 0) { + if (pageNumber == null) { + uuid = NameAPI.getUUID(sender.getName()); + } else if (pageNumber != null) { uuid = NameAPI.getUUID(sender.getName()); - } else if (args.length == 1) { - uuid = NameAPI.getUUID(args[0]); } if (uuid == null) { sender.sendMessage(ChatColor.RED + "UUID is NULL, OP Usage is /nllg "); - return true; + return; } autopages = true; } else { @@ -55,12 +53,12 @@ public boolean execute(CommandSender sender, String[] args) { int actualPages = pages; int target = 1; - if (args.length == 1) { + if (pageNumber != null) { try { - target = Integer.parseInt(args[0]); + target = Integer.parseInt(pageNumber); } catch (NumberFormatException e) { - sender.sendMessage(ChatColor.RED + args[0] + " is not a number"); - return false; + sender.sendMessage(ChatColor.RED + pageNumber + " is not a number"); + return; } } @@ -89,10 +87,5 @@ public boolean execute(CommandSender sender, String[] args) { } } sender.sendMessage(sb.toString()); - return true; } - public List tabComplete(CommandSender sender, String[] args) { - return null; - } - } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListMembers.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListMembers.java index 838873fa..01335ba9 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListMembers.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListMembers.java @@ -1,62 +1,54 @@ package vg.civcraft.mc.namelayer.command.commands; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Optional; +import co.aikar.commands.annotation.Syntax; import com.google.common.collect.Lists; import java.util.List; import java.util.UUID; import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager; import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; -import vg.civcraft.mc.namelayer.command.TabCompleters.MemberTypeCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class ListMembers extends PlayerCommandMiddle { +public class ListMembers extends BaseCommandMiddle { - public ListMembers(String name) { - super(name); - setIdentifier("nllm"); - setDescription("List the members in a group"); - setUsage("/nllm (PlayerType)"); - setArguments(1,3); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { - if (!(sender instanceof Player)) { - sender.sendMessage(ChatColor.LIGHT_PURPLE + "No can do."); - return true; - } - + @CommandAlias("nllm|listmembers|members") + @Syntax(" [rank (e.g: MEMBERS)]") + @Description("List the members in a group") + @CommandCompletion("@NL_Groups @NL_Ranks") + public void execute(Player sender, String groupName, @Optional String playerType, @Optional String playerName) { Player p = (Player) sender; UUID uuid = NameAPI.getUUID(p.getName()); - String groupname = args[0]; + String groupname = groupName; Group group = GroupManager.getGroup(groupname); if (groupIsNull(sender, groupname, group)) { - return true; + return; } if (!p.hasPermission("namelayer.admin")) { if (!group.isMember(uuid)) { p.sendMessage(ChatColor.RED + "You're not on this group."); - return true; + return; } if (!gm.hasAccess(group, uuid, PermissionType.getPermission("GROUPSTATS"))) { p.sendMessage(ChatColor.RED + "You don't have permission to run that command."); - return true; + return; } } List uuids = null; - if (args.length == 3) { - String nameMin = args[1], nameMax = args[2]; + if (playerType != null && playerName != null) { + String nameMin = playerType, nameMax = playerName; List members = group.getAllMembers(); uuids = Lists.newArrayList(); @@ -68,14 +60,14 @@ public boolean execute(CommandSender sender, String[] args) { uuids.add(member); } } - } else if (args.length == 2) { - String playerRank = args[1]; + } else if (playerType != null && playerName == null) { + String playerRank = playerType; PlayerType filterType = PlayerType.getPlayerType(playerRank); if (filterType == null) { // user entered invalid type, show them PlayerType.displayPlayerTypes(p); - return true; + return; } uuids = group.getAllMembers(filterType); @@ -94,22 +86,5 @@ public boolean execute(CommandSender sender, String[] args) { } p.sendMessage(sb.toString()); - return true; - } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)) { - return null; - } - - if (args.length == 0) - return GroupTabCompleter.complete(null, null, (Player) sender); - else if (args.length == 1) - return GroupTabCompleter.complete(args[0], null, (Player)sender); - else if (args.length == 2) - return MemberTypeCompleter.complete(args[1]); - - return null; } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListPermissions.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListPermissions.java index bdd3de68..60b3aecd 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListPermissions.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListPermissions.java @@ -1,57 +1,49 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Optional; +import co.aikar.commands.annotation.Syntax; import java.util.UUID; import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; -import vg.civcraft.mc.namelayer.command.TabCompleters.MemberTypeCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.GroupPermission; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class ListPermissions extends PlayerCommandMiddle{ +public class ListPermissions extends BaseCommandMiddle { - public ListPermissions(String name) { - super(name); - setIdentifier("nllp"); - setDescription("Show permissions for a PlayerType in a specific group."); - setUsage("/nllp "); - setArguments(1,2); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { - if (!(sender instanceof Player)){ - sender.sendMessage(ChatColor.RED + "No."); - return true; - } + @CommandAlias("nllp|listperms|perms|permissions") + @Syntax(" [rank (e.g: MEMBERS)]") + @Description("Show permissions for a PlayerType in a specific group.") + @CommandCompletion("@NL_Groups @NL_Ranks") + public void execute(Player sender, String groupName, @Optional String playerRank) { Player p = (Player) sender; - Group g = gm.getGroup(args[0]); - if (groupIsNull(sender, args[0], g)) { - return true; + Group g = gm.getGroup(groupName); + if (groupIsNull(sender, groupName, g)) { + return; } UUID uuid = NameAPI.getUUID(p.getName()); PlayerType playerType = g.getPlayerType(uuid); if (playerType == null){ p.sendMessage(ChatColor.RED + "You do not have access to this group."); - return true; + return; } String perms = null; GroupPermission gPerm = gm.getPermissionforGroup(g); - if(args.length > 1){ + if(playerRank != null){ if (!gm.hasAccess(g, uuid, PermissionType.getPermission("LIST_PERMS"))){ p.sendMessage(ChatColor.RED + "You do not have permission in this group to run this command."); - return true; + return; } - PlayerType check = PlayerType.getPlayerType(args[1]); + PlayerType check = PlayerType.getPlayerType(playerRank); if (check == null){ PlayerType.displayPlayerTypes(p); - return true; + return; } perms = gPerm.listPermsforPlayerType(check); } @@ -59,22 +51,5 @@ public boolean execute(CommandSender sender, String[] args) { perms = gPerm.listPermsforPlayerType(playerType); p.sendMessage(ChatColor.GREEN + perms); - return true; - } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)) - return null; - - if (args.length == 0) - return GroupTabCompleter.complete(null, null, (Player) sender); - else if (args.length == 1) - return GroupTabCompleter.complete(args[0], null, (Player)sender); - else if (args.length == 2) - return MemberTypeCompleter.complete(args[1]); - - return null; } - } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListPlayerTypes.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListPlayerTypes.java index 2fd67458..56cea626 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListPlayerTypes.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListPlayerTypes.java @@ -1,33 +1,22 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.Description; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager.PlayerType; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; -public class ListPlayerTypes extends PlayerCommandMiddle{ +public class ListPlayerTypes extends BaseCommandMiddle { - public ListPlayerTypes(String name) { - super(name); - setIdentifier("nllpt"); - setDescription("List PlayerTypes."); - setUsage("/nllpt"); - setArguments(0,0); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { + @CommandAlias("nllpt|ranks") + @Description("List PlayerTypes.") + public void execute(CommandSender sender) { if (!(sender instanceof Player)){ sender.sendMessage("wereyjukqswedfrgyjukl."); - return true; + return; } Player p = (Player) sender; PlayerType.displayPlayerTypesnllpt(p); - return true; - } - - public List tabComplete(CommandSender sender, String[] args) { - return null; } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListSubGroups.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListSubGroups.java index f08bfb24..b0fb7969 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListSubGroups.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListSubGroups.java @@ -1,5 +1,9 @@ package vg.civcraft.mc.namelayer.command.commands; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Optional; +import co.aikar.commands.annotation.Syntax; import com.google.common.collect.Sets; import java.util.List; import java.util.Set; @@ -9,27 +13,21 @@ import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class ListSubGroups extends PlayerCommandMiddle { +public class ListSubGroups extends BaseCommandMiddle { private static String format = "%s%s : (%s)\n"; - - public ListSubGroups(String name) { - super(name); - setIdentifier("nllsg"); - setDescription("List the nested group hierarchy."); - setUsage("/nllsg [group]"); - setArguments(0,1); - } - @Override - public boolean execute(CommandSender sender, String[] args) { + @CommandAlias("nllsg|subgroups|listsubgroups") + @Syntax("[group]") + @Description("List the nested group hierarchy.") + public void execute(CommandSender sender, @Optional String targetGroupName) { if (!(sender instanceof Player)) { sender.sendMessage(ChatColor.LIGHT_PURPLE + "No can do."); - return true; + return; } UUID uuid = NameAPI.getUUID(sender.getName()); @@ -38,18 +36,18 @@ public boolean execute(CommandSender sender, String[] args) { sb.append(ChatColor.GREEN); sb.append("Group Hierarchy is as below:\n"); - if (args.length > 0) { - String groupname = args[0]; + if (targetGroupName != null) { + String groupname = targetGroupName; Group group = GroupManager.getGroup(groupname); if (groupIsNull(sender, groupname, group)) { - return true; + return; } if (!gm.hasAccess(group, uuid, PermissionType.getPermission("GROUPSTATS"))) { sender.sendMessage(ChatColor.RED + "You don't have permission to run that command."); - return true; + return; } sb.append(String.format(format, "", group.getName(), group.getPlayerType(uuid))); @@ -70,7 +68,6 @@ public boolean execute(CommandSender sender, String[] args) { } } sender.sendMessage(sb.toString()); - return true; } private void removeSubs(List subs, Set groups) { @@ -86,11 +83,4 @@ private void buildList(StringBuilder sb, UUID uuid, List subs, String pre buildList(sb, uuid, group.getSubgroups(), " " + prefix); } } - - @Override - public List tabComplete(CommandSender arg0, String[] arg1) { - // TODO Auto-generated method stub - return null; - } - } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/MergeGroups.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/MergeGroups.java index 153271f4..2a67ac5e 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/MergeGroups.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/MergeGroups.java @@ -1,6 +1,9 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.UUID; import java.util.logging.Level; import org.bukkit.ChatColor; @@ -9,56 +12,50 @@ import vg.civcraft.mc.namelayer.GroupManager; import vg.civcraft.mc.namelayer.NameAPI; import vg.civcraft.mc.namelayer.NameLayerPlugin; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class MergeGroups extends PlayerCommandMiddle { +public class MergeGroups extends BaseCommandMiddle { - public MergeGroups(String name) { - super(name); - setIdentifier("nlmg"); - setDescription("Merge two groups together."); - setUsage("/nlmg "); - setArguments(2, 2); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { + @CommandAlias("nlmg|merge|mergegroups") + @Syntax(" ") + @Description("Merge two groups together.") + @CommandCompletion("@NL_Groups @NL_Groups") + public void execute(CommandSender sender, String groupToKeep, String groupToDelete) { if (!(sender instanceof Player)) { sender.sendMessage(ChatColor.BLUE + "Fight me, bet you wont.\n Just back off you don't belong here."); - return true; + return; } final Player p = (Player) sender; - final Group g = GroupManager.getGroup(args[0]); - if (groupIsNull(sender, args[0], g)) { - return true; + final Group g = GroupManager.getGroup(groupToKeep); + if (groupIsNull(sender, groupToKeep, g)) { + return; } - final Group toMerge = GroupManager.getGroup(args[1]); - if (groupIsNull(sender, args[1], toMerge)) { - return true; + final Group toMerge = GroupManager.getGroup(groupToDelete); + if (groupIsNull(sender, groupToDelete, toMerge)) { + return; } if (g.isDisciplined() || toMerge.isDisciplined()) { p.sendMessage(ChatColor.RED + "One of the groups is disiplined."); - return true; + return; } if (g == toMerge) { p.sendMessage(ChatColor.RED + "You cannot merge a group into itself"); - return true; + return; } UUID uuid = NameAPI.getUUID(p.getName()); if (!gm.hasAccess(g, uuid, PermissionType.getPermission("MERGE"))) { p.sendMessage(ChatColor.RED + "You don't have permission on group " + g.getName() + "."); - return true; + return; } if (!gm.hasAccess(toMerge, uuid, PermissionType.getPermission("MERGE"))) { p.sendMessage(ChatColor.RED + "You don't have permission on group " + toMerge.getName() + "."); - return true; + return; } try { gm.mergeGroup(g, toMerge); @@ -68,19 +65,5 @@ public boolean execute(CommandSender sender, String[] args) { p.sendMessage(ChatColor.GREEN + "Group merging may have failed."); } p.sendMessage(ChatColor.GREEN + "Group is under going merge."); - return true; - } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)) - return null; - - if (args.length > 0) - return GroupTabCompleter.complete(args[args.length - 1], PermissionType.getPermission("MERGE"), - (Player) sender); - else { - return GroupTabCompleter.complete(null, PermissionType.getPermission("MERGE"), (Player) sender); - } } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ModifyPermissions.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ModifyPermissions.java index 4d600faa..9c5f939d 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ModifyPermissions.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ModifyPermissions.java @@ -1,6 +1,9 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.UUID; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; @@ -8,56 +11,48 @@ import vg.civcraft.mc.namelayer.GroupManager; import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; -import vg.civcraft.mc.namelayer.command.TabCompleters.MemberTypeCompleter; -import vg.civcraft.mc.namelayer.command.TabCompleters.PermissionCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.GroupPermission; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class ModifyPermissions extends PlayerCommandMiddle{ +public class ModifyPermissions extends BaseCommandMiddle { - public ModifyPermissions(String name) { - super(name); - setIdentifier("nlmp"); - setDescription("Modify the permissions of a group."); - setUsage("/nlmp "); - setArguments(4,4); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { + @CommandAlias("nlmp|editperms|modifyperms") + @Syntax(" ") + @Description("Modify the permissions of a group.") + @CommandCompletion("@NL_Groups add|remove @NL_Ranks @NL_Perms") + public void execute(CommandSender sender, String groupName, String adding, String playerRank, String permissionName) { if (!(sender instanceof Player)){ sender.sendMessage(ChatColor.RED + "You must be a player. Nuf said."); - return true; + return; } Player p = (Player) sender; - Group g = GroupManager.getGroup(args[0]); - if (groupIsNull(sender, args[0], g)) { - return true; + Group g = GroupManager.getGroup(groupName); + if (groupIsNull(sender, groupName, g)) { + return; } UUID uuid = NameAPI.getUUID(p.getName()); PlayerType type = g.getPlayerType(uuid); if (type == null){ p.sendMessage(ChatColor.RED + "You are not on this group."); - return true; + return; } if (g.isDisciplined()){ p.sendMessage(ChatColor.RED + "This group is currently disiplined."); - return true; + return; } if (!gm.hasAccess(g, uuid, PermissionType.getPermission("PERMS")) && !g.isOwner(uuid) && !(p.isOp() || p.hasPermission("namelayer.admin"))){ p.sendMessage(ChatColor.RED + "You do not have permission for this command."); - return true; + return; } - String info = args[1]; - PlayerType playerType = PlayerType.getPlayerType(args[2].toUpperCase()); + String info = adding; + PlayerType playerType = PlayerType.getPlayerType(playerRank.toUpperCase()); if (playerType == null){ PlayerType.displayPlayerTypes(p); - return true; + return; } - PermissionType pType = PermissionType.getPermission(args[3]); + PermissionType pType = PermissionType.getPermission(permissionName); if (pType == null){ StringBuilder sb = new StringBuilder(); for(PermissionType perm : PermissionType.getAllPermissions()) { @@ -67,13 +62,13 @@ public boolean execute(CommandSender sender, String[] args) { p.sendMessage(ChatColor.RED + "That PermissionType does not exist.\n" + "The current types are: " + sb.toString()); - return true; + return; } GroupPermission gPerm = gm.getPermissionforGroup(g); if (playerType == PlayerType.NOT_BLACKLISTED && !pType.getCanBeBlacklisted()) { sender.sendMessage(ChatColor.RED + "You can not change this permission for non-blacklisted players."); - return true; + return; } if (info.equalsIgnoreCase("add")){ @@ -102,33 +97,5 @@ else if (info.equalsIgnoreCase("remove")){ else{ p.sendMessage(ChatColor.RED + "Specify if you want to add or remove."); } - return true; - } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)) - return null; - - if (args.length == 0) - return GroupTabCompleter.complete(null, PermissionType.getPermission("PERMS"), (Player) sender); - else if (args.length == 1) - return GroupTabCompleter.complete(args[0], PermissionType.getPermission("PERMS"), (Player)sender); - else if (args.length == 2) { - - if (args[1].length() > 0) { - if (args[1].charAt(0) == 'a') return java.util.Arrays.asList(new String[]{"add"}); - else if (args[1].charAt(0) == 'r') return java.util.Arrays.asList(new String[]{"remove"}); - } else { - return java.util.Arrays.asList(new String[]{"add", "remove"}); - } - - } else if (args.length == 3) { - return MemberTypeCompleter.complete(args[2]); - } else if (args.length == 4) { - return PermissionCompleter.complete(args[3]); - } - - return null; } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/NameLayerGroupGui.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/NameLayerGroupGui.java index 3c4f3340..366eb9be 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/NameLayerGroupGui.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/NameLayerGroupGui.java @@ -1,62 +1,44 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Optional; +import co.aikar.commands.annotation.Syntax; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.gui.GUIGroupOverview; import vg.civcraft.mc.namelayer.gui.MainGroupGUI; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class NameLayerGroupGui extends PlayerCommandMiddle { - - public NameLayerGroupGui(String name) { - super(name); - setIdentifier("nl"); - setDescription("Open the group management GUI"); - setUsage("/nl [group]"); - setArguments(0,1); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { +public class NameLayerGroupGui extends BaseCommandMiddle { + + @CommandAlias("nl") + @Syntax("[group]") + @Description("Open the group management GUI") + @CommandCompletion("@NL_Groups") + public void execute(CommandSender sender, @Optional String groupName) { if (!(sender instanceof Player)) { sender.sendMessage(ChatColor.BLUE + "Go back home console man, we dont want you here"); - return true; + return; } - if (args.length == 0) { + if (groupName == null) { GUIGroupOverview gui = new GUIGroupOverview((Player) sender); gui.showScreen(); - return true; + return; } - Group g = gm.getGroup(args [0]); + Group g = gm.getGroup(groupName); if (g == null) { sender.sendMessage(ChatColor.RED + "This group doesn't exist"); - return true; + return; } if (!gm.hasAccess(g, ((Player) sender).getUniqueId(), PermissionType.getPermission("OPEN_GUI"))) { sender.sendMessage(ChatColor.RED + "You don't have permission to do this"); - return true; + return; } MainGroupGUI gui = new MainGroupGUI((Player) sender, g); - return true; } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)) { - sender.sendMessage(ChatColor.BLUE + "Go back home console man, we dont want you here"); - return null; - } - if (args.length == 0) { - return GroupTabCompleter.complete(null, PermissionType.getPermission("OPEN_GUI"), (Player)sender); - } - else { - return GroupTabCompleter.complete(args [0], PermissionType.getPermission("OPEN_GUI"), (Player)sender); - } - } - } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/PromotePlayer.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/PromotePlayer.java index d65aa043..0db8498e 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/PromotePlayer.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/PromotePlayer.java @@ -1,79 +1,69 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; -import vg.civcraft.mc.namelayer.command.TabCompleters.MemberTypeCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.events.PromotePlayerEvent; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class PromotePlayer extends PlayerCommandMiddle{ +public class PromotePlayer extends BaseCommandMiddle { - public PromotePlayer(String name) { - super(name); - setIdentifier("nlpp"); - setDescription("Promote/Demote a Player in a Group"); - setUsage("/nlpp "); - setArguments(3,3); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { - if (!(sender instanceof Player)){ - sender.sendMessage("How about No?"); - return true; - } - + @CommandAlias("nlpp|promote|promoteplayer") + @Syntax(" ") + @Description("Promote/Demote a Player in a Group") + @CommandCompletion("@NL_Groups @allplayers @NL_Ranks") + public void execute(Player sender, String groupName, String playerName, String playerType) { Player p = (Player) sender; UUID executor = NameAPI.getUUID(p.getName()); - UUID promotee = NameAPI.getUUID(args[1]); + UUID promotee = NameAPI.getUUID(playerName); if(promotee ==null){ p.sendMessage(ChatColor.RED + "That player does not exist"); - return true; + return; } if(promotee.equals(executor)){ p.sendMessage(ChatColor.RED + "You cannot promote yourself"); - return true; + return; } - Group group = gm.getGroup(args[0]); - if (groupIsNull(sender, args[0], group)) { - return true; + Group group = gm.getGroup(groupName); + if (groupIsNull(sender, groupName, group)) { + return; } if (group.isDisciplined()){ p.sendMessage(ChatColor.RED + "This group is disiplined."); - return true; + return; } PlayerType promoteecurrentType = group.getPlayerType(promotee); - PlayerType promoteeType = PlayerType.getPlayerType(args[2]); + PlayerType promoteeType = PlayerType.getPlayerType(playerType); if(promoteeType == null){ PlayerType.displayPlayerTypes(p); - return true; + return; } if(promoteeType == PlayerType.NOT_BLACKLISTED) { p.sendMessage(ChatColor.RED + "Nice try"); - return true; + return; } PlayerType t = group.getPlayerType(executor); // playertype for the player running the command. if (t == null){ p.sendMessage(ChatColor.RED + "You are not on that group."); - return true; + return; } boolean allowed = false; @@ -97,7 +87,7 @@ public boolean execute(CommandSender sender, String[] args) { if (!allowed){ p.sendMessage(ChatColor.RED + "You do not have permissions to promote to this rank"); - return true; + return; } if (promoteecurrentType != null) { switch (promoteecurrentType){ // depending on the type the executor wants to add the player to @@ -124,13 +114,13 @@ public boolean execute(CommandSender sender, String[] args) { if (!allowed || !group.isMember(promotee)){ //can't edit a player who isn't in the group p.sendMessage(ChatColor.RED + NameAPI.getCurrentName(promotee) + " is not a member of this group or you do not have permission to edit their rank"); - return true; + return; } if (group.isOwner(promotee)){ p.sendMessage(ChatColor.RED + "That player owns the group, you cannot " + "demote the player."); - return true; + return; } OfflinePlayer prom = Bukkit.getOfflinePlayer(promotee); @@ -139,7 +129,7 @@ public boolean execute(CommandSender sender, String[] args) { PromotePlayerEvent event = new PromotePlayerEvent(oProm, group, promoteecurrentType, promoteeType); Bukkit.getPluginManager().callEvent(event); if(event.isCancelled()){ - return false; + return; } group.removeMember(promotee); group.addMember(promotee, promoteeType); @@ -155,28 +145,5 @@ public boolean execute(CommandSender sender, String[] args) { p.sendMessage(ChatColor.GREEN + NameAPI.getCurrentName(promotee) + " has been added as (PlayerType) " + promoteeType.toString() + " in (Group) " + group.getName()); } - return true; - } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)){ - sender.sendMessage(ChatColor.RED + "I'm sorry baby, please run this as a player :)"); - return null; - } - if (args.length < 2) { - if (args.length == 0) - return GroupTabCompleter.complete(null, null, (Player) sender); - else - return GroupTabCompleter.complete(args[0], null, (Player)sender); - - } else if (args.length == 2) - return null; - //return GroupMemberTabCompleter.complete(args[0], args[1], (Player) sender); - else if (args.length == 3) - return MemberTypeCompleter.complete(args[2]); - - else return null; } - } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/RejectInvite.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/RejectInvite.java index 9325fb50..ea9ceea0 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/RejectInvite.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/RejectInvite.java @@ -1,35 +1,34 @@ package vg.civcraft.mc.namelayer.command.commands; +import co.aikar.commands.BukkitCommandCompletionContext; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.List; import java.util.UUID; import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import vg.civcraft.mc.civmodcore.commands.TabComplete; import vg.civcraft.mc.namelayer.GroupManager; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.command.TabCompleters.InviteTabCompleter; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.listeners.PlayerListener; -public class RejectInvite extends PlayerCommandMiddle { +public class RejectInvite extends BaseCommandMiddle { - public RejectInvite(String name) { - super(name); - setIdentifier("nlrg"); - setDescription("Reject an invitation to a group."); - setUsage("/nlrg "); - setArguments(1,1); - setSenderMustBePlayer(true); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { + @CommandAlias("nlrg|reject|rejectinvite") + @Syntax("") + @Description("Reject an invitation to a group.") + @CommandCompletion("@NL_Invites") + public void execute(Player sender, String targetGroup) { Player player = (Player) sender; - String groupName = args[0]; + String groupName = targetGroup; Group group = GroupManager.getGroup(groupName); if (groupIsNull(sender, groupName, group)) { - return true; + return; } UUID uuid = NameAPI.getUUID(player.getName()); // The IDE is highlighting this as a potention NullReferenceException @@ -37,27 +36,20 @@ public boolean execute(CommandSender sender, String[] args) { GroupManager.PlayerType type = group.getInvite(uuid); if (type == null) { player.sendMessage(ChatColor.RED + "You were not invited to that group."); - return true; + return; } if (group.isMember(uuid)) { player.sendMessage(ChatColor.RED + "You cannot reject an invite to a group that you're already a member of."); group.removeInvite(uuid, true); - return true; + return; } group.removeInvite(uuid, true); PlayerListener.removeNotification(uuid, group); player.sendMessage(ChatColor.GREEN + "You've successfully declined that group invitation."); - return true; } - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (args.length > 0) { - return InviteTabCompleter.complete(args[0], (Player) sender); - } - else { - return InviteTabCompleter.complete(null, (Player) sender); - } + @TabComplete("NL_Invites") + public List tabComplete(BukkitCommandCompletionContext context) { + return InviteTabCompleter.complete(context.getInput(), context.getPlayer()); } - } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/RemoveBlacklist.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/RemoveBlacklist.java index 50ece3dd..35c42d12 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/RemoveBlacklist.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/RemoveBlacklist.java @@ -1,85 +1,56 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.ArrayList; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.UUID; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager; import vg.civcraft.mc.namelayer.NameAPI; import vg.civcraft.mc.namelayer.NameLayerPlugin; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.BlackList; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class RemoveBlacklist extends PlayerCommandMiddle { - - public RemoveBlacklist(String name) { - super(name); - setIdentifier("nlubl"); - setDescription("Removes a player from the blacklist for a specific group"); - setUsage("/nlubl "); - setArguments(2, 2); - } +public class RemoveBlacklist extends BaseCommandMiddle { - @Override - public boolean execute(CommandSender arg0, String[] arg1) { - if (!(arg0 instanceof Player)) { - arg0.sendMessage(ChatColor.RED + @CommandAlias("nlubl|unblacklist") + @Syntax(" ") + @Description("Removes a player from the blacklist for a specific group") + @CommandCompletion("@NL_Groups @allplayers") + public void execute(CommandSender sender, String groupName, String targetPlayer) { + if (!(sender instanceof Player)) { + sender.sendMessage(ChatColor.RED + "Why do you have to make this so difficult?"); - return true; + return; } - Player p = (Player) arg0; - Group g = GroupManager.getGroup(arg1[0]); + Player p = (Player) sender; + Group g = GroupManager.getGroup(groupName); if (g == null) { p.sendMessage(ChatColor.RED + "This group does not exist"); - return true; + return; } if (!gm.hasAccess(g, p.getUniqueId(), PermissionType.getPermission("BLACKLIST")) && !(p.isOp() || p.hasPermission("namelayer.admin"))) { p.sendMessage(ChatColor.RED + "You do not have the required permissions to do this"); - return true; + return; } - UUID targetUUID = NameAPI.getUUID(arg1[1]); + UUID targetUUID = NameAPI.getUUID(targetPlayer); if (targetUUID == null) { p.sendMessage(ChatColor.RED + "This player does not exist"); - return true; + return; } BlackList bl = NameLayerPlugin.getBlackList(); if (!bl.isBlacklisted(g, targetUUID)) { p.sendMessage(ChatColor.RED + "This player is not blacklisted"); - return true; + return; } bl.removeBlacklistMember(g, targetUUID, true); p.sendMessage(ChatColor.GREEN + NameAPI.getCurrentName(targetUUID) + " was successfully removed from the blacklist for the group " + g.getName()); - return true; - } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)){ - sender.sendMessage(ChatColor.RED + "I'm sorry baby, please run this as a player :)"); - return null; - } - if (args.length < 2) { - if (args.length == 0) - return GroupTabCompleter.complete(null, null, (Player) sender); - else - return GroupTabCompleter.complete(args[0], null, (Player)sender); - - } else if (args.length == 2) { - List namesToReturn = new ArrayList(); - for (Player p: Bukkit.getOnlinePlayers()) { - if (p.getName().toLowerCase().startsWith(args[0].toLowerCase())) - namesToReturn.add(p.getName()); - } - return namesToReturn; - } - return null; } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/RemoveMember.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/RemoveMember.java index 3b6a4b1a..cbda1a4e 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/RemoveMember.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/RemoveMember.java @@ -1,49 +1,45 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.UUID; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class RemoveMember extends PlayerCommandMiddle { +public class RemoveMember extends BaseCommandMiddle { - public RemoveMember(String name) { - super(name); - setIdentifier("nlrm"); - setDescription("Remove a member from a group."); - setUsage("/nlrm "); - setArguments(2,2); - - } - - @Override - public boolean execute(CommandSender sender, String[] args) { + @CommandAlias("nlrm|remove|removeplayer") + @Syntax(" ") + @Description("Remove a member from a group.") + @CommandCompletion("@NL_Groups @allplayers") + public void execute(CommandSender sender, String groupName, String targetPlayer) { if (!(sender instanceof Player)){ sender.sendMessage(ChatColor.RED + "I'm sorry baby, please run this as a player :)"); - return true; + return; } Player p = (Player) sender; - Group group = gm.getGroup(args[0]); - if (groupIsNull(sender, args[0], group)) { - return true; + Group group = gm.getGroup(groupName); + if (groupIsNull(sender, groupName, group)) { + return; } if (group.isDisciplined()){ p.sendMessage(ChatColor.RED + "This group is disiplined."); - return true; + return; } UUID executor = NameAPI.getUUID(p.getName()); - UUID uuid = NameAPI.getUUID(args[1]); + UUID uuid = NameAPI.getUUID(targetPlayer); if (uuid == null){ p.sendMessage(ChatColor.RED + "The player has never played before."); - return true; + return; } String playerName = NameAPI.getCurrentName(uuid); @@ -70,44 +66,21 @@ public boolean execute(CommandSender sender, String[] args) { if (!allowed && !(p.isOp() || p.hasPermission("namelayer.admin"))){ p.sendMessage(ChatColor.RED + "You do not have permissions to modify this group."); - return true; + return; } if (!group.isMember(uuid)){ p.sendMessage(ChatColor.RED + "That player is not on the group."); - return true; + return; } if (group.isOwner(uuid)){ p.sendMessage(ChatColor.RED + "That player owns the group, you cannot " + "remove the player."); - return true; + return; } p.sendMessage(ChatColor.GREEN + playerName + " has been removed from the group."); group.removeMember(uuid); - return true; } - - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)) - return null; - - if (args.length < 2) { - if (args.length == 1) - return GroupTabCompleter.complete(args[0], null, (Player) sender); - else { - return GroupTabCompleter.complete(null, null, (Player)sender); - } - } - if (args.length == 2) { - return null; - //return GroupMemberTabCompleter.complete(args[0],args[1], (Player) sender); - } - - return null; - } - } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/RevokeInvite.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/RevokeInvite.java index 9093249d..7ba30b51 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/RevokeInvite.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/RevokeInvite.java @@ -1,6 +1,9 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.UUID; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; @@ -8,43 +11,37 @@ import vg.civcraft.mc.namelayer.GroupManager; import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.listeners.PlayerListener; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class RevokeInvite extends PlayerCommandMiddle{ +public class RevokeInvite extends BaseCommandMiddle { - public RevokeInvite(String name) { - super(name); - setIdentifier("nlri"); - setDescription("Revoke an Invite."); - setUsage("/nlri "); - setArguments(2,2); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { + @CommandAlias("nlri|revokeinvite|revoke") + @Syntax(" ") + @Description("Revoke an Invite.") + @CommandCompletion("@NL_Groups @allplayers") + public void execute(CommandSender sender, String groupName, String targetPlayer) { if (!(sender instanceof Player)){ sender.sendMessage(ChatColor.RED + "I'm sorry baby, please run this as a player :)"); - return true; + return; } Player p = (Player) sender; - Group group = GroupManager.getGroup(args[0]); - if (groupIsNull(sender, args[0], group)) { - return true; + Group group = GroupManager.getGroup(groupName); + if (groupIsNull(sender, groupName, group)) { + return; } if (group.isDisciplined()){ p.sendMessage(ChatColor.RED + "This group is disiplined."); - return true; + return; } UUID executor = NameAPI.getUUID(p.getName()); - UUID uuid = NameAPI.getUUID(args[1]); + UUID uuid = NameAPI.getUUID(targetPlayer); if (uuid == null){ p.sendMessage(ChatColor.RED + "The player has never played before."); - return true; + return; } //check invitee has invite @@ -52,10 +49,10 @@ public boolean execute(CommandSender sender, String[] args) { if(group.isMember(uuid)){ p.sendMessage(ChatColor.RED + NameAPI.getCurrentName(uuid) + " is already part of that group, " + "use /remove to remove them."); - return true; + return; } p.sendMessage(ChatColor.RED + NameAPI.getCurrentName(uuid) + " does not have an invite to that group."); - return true; + return; } //get invitee PlayerType @@ -64,7 +61,7 @@ public boolean execute(CommandSender sender, String[] args) { PlayerType t = group.getPlayerType(executor); // playertype for the player running the command. if (t == null){ p.sendMessage(ChatColor.RED + "You are not on that group."); - return true; + return; } boolean allowed = false; switch (pType){ // depending on the type the executor wants to add the player to @@ -86,31 +83,12 @@ public boolean execute(CommandSender sender, String[] args) { } if (!allowed){ p.sendMessage(ChatColor.RED + "You do not have permissions to modify this group."); - return true; + return; } group.removeInvite(uuid, true); PlayerListener.removeNotification(uuid, group); p.sendMessage(ChatColor.GREEN + NameAPI.getCurrentName(uuid) + "'s invitation has been revoked."); - return true; - } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)){ - sender.sendMessage(ChatColor.RED + "I'm sorry baby, please run this as a player :)"); - return null; - } - if (args.length < 2) { - if (args.length == 0) - return GroupTabCompleter.complete(null, null, (Player) sender); - else - return GroupTabCompleter.complete(args[0], null, (Player)sender); - - } else if (args.length == 2) - return null; - - else return null; } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/SetDefaultGroup.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/SetDefaultGroup.java index 3f1d6dbe..a95779df 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/SetDefaultGroup.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/SetDefaultGroup.java @@ -1,44 +1,40 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.UUID; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; -import vg.civcraft.mc.namelayer.permission.PermissionType; -public class SetDefaultGroup extends PlayerCommandMiddle{ +public class SetDefaultGroup extends BaseCommandMiddle { - public SetDefaultGroup(String name) { - super(name); - setIdentifier("nlsdg"); - setDescription("Set or change a default group"); - setUsage("/nlsdg "); - setArguments(1,1); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { + @CommandAlias("nlsdg") + @Syntax("") + @Description("Set or change a default group") + @CommandCompletion("@NL_Groups") + public void execute(CommandSender sender, String groupName) { if (!(sender instanceof Player)){ sender.sendMessage("I don't think you need to do that."); - return true; + return; } Player p = (Player) sender; UUID uuid = NameAPI.getUUID(p.getName()); - Group g = gm.getGroup(args[0]); - if (groupIsNull(sender, args[0], g)) { - return true; + Group g = gm.getGroup(groupName); + if (groupIsNull(sender, groupName, g)) { + return; } PlayerType pType = g.getPlayerType(uuid); if (pType == null){ p.sendMessage(ChatColor.RED + "You do not have access to that group."); - return true; + return; } String x = gm.getDefaultGroup(uuid); @@ -50,18 +46,5 @@ public boolean execute(CommandSender sender, String[] args) { g.changeDefaultGroup(uuid); p.sendMessage(ChatColor.GREEN + "You changed your default group from " + x + " to " + gm.getDefaultGroup(uuid)); } - return true; - } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)) - return null; - - if (args.length == 1) - return GroupTabCompleter.complete(args[0], PermissionType.getPermission("BLOCKS"), (Player) sender); - else{ - return GroupTabCompleter.complete(null, PermissionType.getPermission("BLOCKS"), (Player)sender); - } } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/SetPassword.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/SetPassword.java index f93e5165..452209b1 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/SetPassword.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/SetPassword.java @@ -1,68 +1,52 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.UUID; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class SetPassword extends PlayerCommandMiddle{ +public class SetPassword extends BaseCommandMiddle { - public SetPassword(String name) { - super(name); - setIdentifier("nlsp"); - setDescription("Set a password on a group."); - setUsage("/nlsp "); - setArguments(1,2); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { + @CommandAlias("nlsp|setpassword") + @Syntax(" ") + @Description("Set a password on a group.") + @CommandCompletion("@NL_Groups") + public void execute(CommandSender sender, String groupName, String userPassword) { if (!(sender instanceof Player)){ sender.sendMessage("You may not use this command, must be a pluer."); - return true; + return; } Player p = (Player) sender; UUID uuid = NameAPI.getUUID(p.getName()); - Group g = gm.getGroup(args[0]); - if (groupIsNull(sender, args[0], g)) { - return true; + Group g = gm.getGroup(groupName); + if (groupIsNull(sender, groupName, g)) { + return; } PlayerType pType = g.getPlayerType(uuid); if (pType == null){ p.sendMessage(ChatColor.RED + "You do not have access to that group."); - return true; + return; } if (!gm.hasAccess(g, uuid, PermissionType.getPermission("PASSWORD"))){ p.sendMessage(ChatColor.RED + "You do not have permission to modify that group."); - return true; + return; } String password = null; - if (args.length == 2) - password = args[1]; + if (userPassword != null) + password = userPassword; g.setPassword(password); p.sendMessage(ChatColor.GREEN + "Password has been successfully set to: " + g.getPassword()); - return true; - } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)) - return null; - - if (args.length == 1) - return GroupTabCompleter.complete(args[0], PermissionType.getPermission("PASSWORD"), (Player) sender); - else{ - return GroupTabCompleter.complete(null, PermissionType.getPermission("PASSWORD"), (Player)sender); - } } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ShowBlacklist.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ShowBlacklist.java index 7838ffe9..9a95d09f 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ShowBlacklist.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ShowBlacklist.java @@ -1,53 +1,48 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.ArrayList; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.Set; import java.util.UUID; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.NameAPI; import vg.civcraft.mc.namelayer.NameLayerPlugin; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class ShowBlacklist extends PlayerCommandMiddle { +public class ShowBlacklist extends BaseCommandMiddle { - public ShowBlacklist(String name) { - super(name); - setIdentifier("nlsbl"); - setDescription("Shows all blacklisted players for a specific group"); - setUsage("/nlsbl "); - setArguments(1, 1); - } - - @Override - public boolean execute(CommandSender arg0, String[] arg1) { - if (!(arg0 instanceof Player)) { - arg0.sendMessage(ChatColor.RED + @CommandAlias("nlsbl|showblacklist") + @Syntax("") + @Description("Shows all blacklisted players for a specific group") + @CommandCompletion("@NL_Groups") + public void execute(CommandSender sender, String groupName) { + if (!(sender instanceof Player)) { + sender.sendMessage(ChatColor.RED + "Why do you have to make this so difficult?"); - return true; + return; } - Player p = (Player) arg0; - Group g = gm.getGroup(arg1[0]); + Player p = (Player) sender; + Group g = gm.getGroup(groupName); if (g == null) { p.sendMessage(ChatColor.RED + "This group does not exist"); - return true; + return; } if (!gm.hasAccess(g, p.getUniqueId(), PermissionType.getPermission("BLACKLIST")) && !(p.isOp() || p.hasPermission("namelayer.admin"))) { p.sendMessage(ChatColor.RED + "You do not have the required permissions to do this"); - return true; + return; } Set ids = NameLayerPlugin.getBlackList().getBlacklist(g); if (ids.size() == 0) { p.sendMessage(ChatColor.GOLD + "There are no blacklisted players for the group " + g.getName()); - return true; + return; } StringBuilder sb = new StringBuilder(); sb.append(ChatColor.GOLD + "Blacklisted players for group " + g.getName() + " are: "); @@ -58,29 +53,5 @@ public boolean execute(CommandSender arg0, String[] arg1) { String reply = sb.toString(); //remove last ", " p.sendMessage(reply.substring(0, reply.length() - 2)); - return true; - } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)){ - sender.sendMessage(ChatColor.RED + "I'm sorry baby, please run this as a player :)"); - return null; - } - if (args.length < 2) { - if (args.length == 0) - return GroupTabCompleter.complete(null, null, (Player) sender); - else - return GroupTabCompleter.complete(args[0], null, (Player)sender); - - } else if (args.length == 2) { - List namesToReturn = new ArrayList(); - for (Player p: Bukkit.getOnlinePlayers()) { - if (p.getName().toLowerCase().startsWith(args[0].toLowerCase())) - namesToReturn.add(p.getName()); - } - return namesToReturn; - } - return null; } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ToggleAutoAcceptInvites.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ToggleAutoAcceptInvites.java index 9eb714b3..3f9d36bf 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ToggleAutoAcceptInvites.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/ToggleAutoAcceptInvites.java @@ -1,31 +1,26 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.Description; import java.util.UUID; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.NameAPI; import vg.civcraft.mc.namelayer.NameLayerPlugin; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.AutoAcceptHandler; -public class ToggleAutoAcceptInvites extends PlayerCommandMiddle{ +public class ToggleAutoAcceptInvites extends BaseCommandMiddle { private AutoAcceptHandler handler = NameLayerPlugin.getAutoAcceptHandler(); - public ToggleAutoAcceptInvites(String name) { - super(name); - setIdentifier("nltaai"); - setDescription("Toggle the acceptance of invites."); - setUsage("/nltaai"); - setArguments(0,0); - } - @Override - public boolean execute(CommandSender sender, String[] args) { + @CommandAlias("nltaai|autoaccept") + @Description("Toggle the acceptance of invites.") + public void execute(CommandSender sender) { if (!(sender instanceof Player)){ sender.sendMessage("how would this even work"); - return true; + return; } Player p = (Player) sender; UUID uuid = NameAPI.getUUID(p.getName()); @@ -36,11 +31,5 @@ public boolean execute(CommandSender sender, String[] args) { p.sendMessage(ChatColor.GREEN + "You will automatically accept group requests."); } handler.toggleAutoAccept(uuid, true); - return true; - } - - public List tabComplete(CommandSender sender, String[] args) { - return null; } - } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/TransferGroup.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/TransferGroup.java index e1984442..5216790b 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/TransferGroup.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/TransferGroup.java @@ -1,6 +1,9 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.UUID; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; @@ -8,41 +11,34 @@ import vg.civcraft.mc.namelayer.GroupManager; import vg.civcraft.mc.namelayer.NameAPI; import vg.civcraft.mc.namelayer.NameLayerPlugin; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; -import vg.civcraft.mc.namelayer.permission.PermissionType; -public class TransferGroup extends PlayerCommandMiddle{ +public class TransferGroup extends BaseCommandMiddle { - public TransferGroup(String name) { - super(name); - setIdentifier("nltg"); - setDescription("Transfer one group to another person."); - setUsage("/nltg "); - setArguments(2,2); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { + @CommandAlias("nltg|transfer|transfergroup") + @Syntax(" ") + @Description("Transfer one group to another person.") + @CommandCompletion("@NL_Groups @allplayers") + public void execute(CommandSender sender, String groupName, String playerName) { if (!(sender instanceof Player)){ sender.sendMessage("Nope?"); - return true; + return; } Player p = (Player) sender; - Group g = GroupManager.getGroup(args[0]); - if (groupIsNull(sender, args[0], g)) { - return true; + Group g = GroupManager.getGroup(groupName); + if (groupIsNull(sender, groupName, g)) { + return; } - UUID oPlayer = NameAPI.getUUID(args[1]); // uuid of the second player + UUID oPlayer = NameAPI.getUUID(playerName); // uuid of the second player if (oPlayer == null){ p.sendMessage(ChatColor.RED + "This player has never played before and cannot be given the group."); - return true; + return; } - return attemptTransfer(g, p, oPlayer); + attemptTransfer(g, p, oPlayer); } public static boolean attemptTransfer(Group g, Player owner, UUID futureOwner) { @@ -75,18 +71,4 @@ public static boolean attemptTransfer(Group g, Player owner, UUID futureOwner) { + " has been given ownership of the group."); return true; } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)) - return null; - - if (args.length == 1) - return GroupTabCompleter.complete(args[0], PermissionType.getPermission("TRANSFER"), (Player) sender); - else if (args.length == 0) { - return GroupTabCompleter.complete(null, PermissionType.getPermission("TRANSFER"), (Player)sender); - } - return null; - } - } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/UnlinkGroups.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/UnlinkGroups.java index 2ae211a5..77bfa70e 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/UnlinkGroups.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/UnlinkGroups.java @@ -1,47 +1,44 @@ package vg.civcraft.mc.namelayer.command.commands; -import java.util.List; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.UUID; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager; import vg.civcraft.mc.namelayer.NameAPI; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; -import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class UnlinkGroups extends PlayerCommandMiddle { +public class UnlinkGroups extends BaseCommandMiddle { - public UnlinkGroups(String name) { - super(name); - setIdentifier("nlunlink"); - setDescription("Unlinks two groups from each other."); - setUsage("/nlunlink "); - setArguments(2,2); - } - - @Override - public boolean execute(CommandSender sender, String[] args) { + @CommandAlias("nlunlink|unlink|unlinkgroups") + @Syntax(" ") + @Description("Unlinks two groups from each other.") + @CommandCompletion("@NL_Groups @NL_Groups") + public void execute(CommandSender sender, String parentGroup, String childGroup) { if (!(sender instanceof Player)) { sender.sendMessage(ChatColor.LIGHT_PURPLE + "Sorry bruh, no can do."); - return true; + return; } Player p = (Player) sender; // check if groups exist - String supername = args[0], subname = args[1]; + String supername = parentGroup, subname = childGroup; Group supergroup = GroupManager.getGroup(supername); if (groupIsNull(sender, supername, supergroup)) { - return true; + return; } Group subgroup = GroupManager.getGroup(subname); if (groupIsNull(sender, subname, subgroup)) { - return true; + return; } // check if groups are accessible @@ -50,23 +47,23 @@ public boolean execute(CommandSender sender, String[] args) { if (!supergroup.isMember(uuid) || !subgroup.isMember(uuid)) { p.sendMessage(ChatColor.RED + "You're not on one of the groups."); - return true; + return; } if (supergroup.isDisciplined() || subgroup.isDisciplined()) { p.sendMessage(ChatColor.RED + "One of the groups is disciplined."); - return true; + return; } if (!gm.hasAccess(supergroup, uuid, PermissionType.getPermission("LINKING"))) { p.sendMessage(ChatColor.RED + "You don't have permission to do that on the super group."); - return true; + return; } if (!Group.areLinked(supergroup, subgroup)) { p.sendMessage(ChatColor.RED + "These groups are not linked."); - return true; + return; } boolean success = Group.unlink(supergroup, subgroup); @@ -78,21 +75,5 @@ public boolean execute(CommandSender sender, String[] args) { message = ChatColor.RED + "Failed to unlink the groups."; } p.sendMessage(message); - return true; - } - - @Override - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)) { - return null; - } - - if (args.length > 0) { - return GroupTabCompleter.complete(args[0], - PermissionType.getPermission("LINKING"), (Player)sender); - } else { - return GroupTabCompleter.complete(null, - PermissionType.getPermission("LINKING"), (Player)sender); - } } } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/UpdateName.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/UpdateName.java index a290e5f4..9055a6c5 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/UpdateName.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/command/commands/UpdateName.java @@ -1,49 +1,38 @@ package vg.civcraft.mc.namelayer.command.commands; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.Syntax; import java.util.Collections; -import java.util.List; import java.util.Map; import java.util.TreeMap; import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.NameAPI; import vg.civcraft.mc.namelayer.NameLayerPlugin; -import vg.civcraft.mc.namelayer.command.PlayerCommandMiddle; +import vg.civcraft.mc.namelayer.command.BaseCommandMiddle; import vg.civcraft.mc.namelayer.misc.NameFetcher; -public class UpdateName extends PlayerCommandMiddle { +public class UpdateName extends BaseCommandMiddle { - private Map newNames; + private Map newNames = Collections.synchronizedSortedMap(new TreeMap()); - public UpdateName(String name) { - super(name); - setIdentifier("nlun"); - setDescription("Updates your name on this server to the one your minecraft account currently has"); - setUsage("/nlun [CONFIRM]"); - setArguments(0, 1); - newNames = Collections - .synchronizedSortedMap(new TreeMap()); - } - - public boolean execute(CommandSender sender, String[] args) { - if (!(sender instanceof Player)) { - sender.sendMessage(ChatColor.LIGHT_PURPLE - + "NO NO NO NO NO NO NO NO"); - return true; - } + @CommandAlias("nlun|updatename|") + @Syntax("[confirm]") + @Description("Updates your name on this server to the one your minecraft account currently has") + public void execute(Player sender, String newNameOrConfirm) { final Player p = (Player) sender; final UUID uuid = p.getUniqueId(); final String oldName = NameAPI.getCurrentName(uuid); if (NameLayerPlugin.getGroupManagerDao().hasChangedNameBefore(uuid)) { p.sendMessage(ChatColor.RED + "You already changed your name"); - return true; + return; } - if (args.length == 0) { + if (newNameOrConfirm.isEmpty()) { Bukkit.getScheduler().runTaskAsynchronously( NameLayerPlugin.getInstance(), new Runnable() { @Override @@ -92,19 +81,19 @@ public void run() { newNames.put(uuid, newName); } }); - return true; + return; } else { String newName = newNames.get(uuid); if (newName == null) { sender.sendMessage(ChatColor.RED + "Run \"/nlun\" first to initiate the name changes process"); - return true; + return; } - if (!args[0].equals("CONFIRM")) { + if (!newNameOrConfirm.equals("CONFIRM")) { sender.sendMessage(ChatColor.RED + "Run \"/nlun CONFIRM\" to confirm your name change to \"" + newName + "\""); - return true; + return; } NameLayerPlugin.getGroupManagerDao().logNameChange(uuid, oldName, newName); @@ -116,17 +105,5 @@ public void run() { + newName + "\". This change will be applied together with all other name changes at a previously announced date."); } - return true; - } - - public List tabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof Player)) { - return null; - } - if (newNames.get(((Player) sender).getUniqueId()) != null) { - return Collections.singletonList("CONFIRM"); - } - return null; } - } diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/AdminFunctionsGUI.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/AdminFunctionsGUI.java index 419e93b9..af9c66b3 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/AdminFunctionsGUI.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/AdminFunctionsGUI.java @@ -12,10 +12,10 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.util.StringUtil; import vg.civcraft.mc.civmodcore.chat.dialog.Dialog; +import vg.civcraft.mc.civmodcore.inventory.gui.Clickable; +import vg.civcraft.mc.civmodcore.inventory.gui.ClickableInventory; +import vg.civcraft.mc.civmodcore.inventory.gui.DecorationStack; import vg.civcraft.mc.civmodcore.inventory.items.ItemUtils; -import vg.civcraft.mc.civmodcore.inventorygui.Clickable; -import vg.civcraft.mc.civmodcore.inventorygui.ClickableInventory; -import vg.civcraft.mc.civmodcore.inventorygui.DecorationStack; import vg.civcraft.mc.namelayer.NameAPI; import vg.civcraft.mc.namelayer.NameLayerPlugin; import vg.civcraft.mc.namelayer.command.commands.TransferGroup; diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/GUIGroupOverview.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/GUIGroupOverview.java index 57200660..a4523706 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/GUIGroupOverview.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/GUIGroupOverview.java @@ -18,10 +18,10 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import vg.civcraft.mc.civmodcore.chat.dialog.Dialog; +import vg.civcraft.mc.civmodcore.inventory.gui.Clickable; +import vg.civcraft.mc.civmodcore.inventory.gui.ClickableInventory; +import vg.civcraft.mc.civmodcore.inventory.gui.DecorationStack; import vg.civcraft.mc.civmodcore.inventory.items.ItemUtils; -import vg.civcraft.mc.civmodcore.inventorygui.Clickable; -import vg.civcraft.mc.civmodcore.inventorygui.ClickableInventory; -import vg.civcraft.mc.civmodcore.inventorygui.DecorationStack; import vg.civcraft.mc.namelayer.GroupManager; import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameAPI; diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/InvitationGUI.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/InvitationGUI.java index e9e30d0e..2d8ac0d2 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/InvitationGUI.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/InvitationGUI.java @@ -14,10 +14,10 @@ import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.util.StringUtil; import vg.civcraft.mc.civmodcore.chat.dialog.Dialog; +import vg.civcraft.mc.civmodcore.inventory.gui.Clickable; +import vg.civcraft.mc.civmodcore.inventory.gui.ClickableInventory; +import vg.civcraft.mc.civmodcore.inventory.gui.DecorationStack; import vg.civcraft.mc.civmodcore.inventory.items.ItemUtils; -import vg.civcraft.mc.civmodcore.inventorygui.Clickable; -import vg.civcraft.mc.civmodcore.inventorygui.ClickableInventory; -import vg.civcraft.mc.civmodcore.inventorygui.DecorationStack; import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameAPI; import vg.civcraft.mc.namelayer.NameLayerPlugin; diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/LinkingGUI.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/LinkingGUI.java index 3062d237..19e6dca1 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/LinkingGUI.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/LinkingGUI.java @@ -7,10 +7,10 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import vg.civcraft.mc.civmodcore.inventory.gui.Clickable; +import vg.civcraft.mc.civmodcore.inventory.gui.ClickableInventory; +import vg.civcraft.mc.civmodcore.inventory.gui.DecorationStack; import vg.civcraft.mc.civmodcore.inventory.items.ItemUtils; -import vg.civcraft.mc.civmodcore.inventorygui.Clickable; -import vg.civcraft.mc.civmodcore.inventorygui.ClickableInventory; -import vg.civcraft.mc.civmodcore.inventorygui.DecorationStack; import vg.civcraft.mc.namelayer.NameLayerPlugin; import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.PermissionType; diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/MainGroupGUI.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/MainGroupGUI.java index 83a80739..731e5ef2 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/MainGroupGUI.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/MainGroupGUI.java @@ -20,10 +20,10 @@ import org.bukkit.inventory.meta.LeatherArmorMeta; import org.bukkit.util.StringUtil; import vg.civcraft.mc.civmodcore.chat.dialog.Dialog; +import vg.civcraft.mc.civmodcore.inventory.gui.Clickable; +import vg.civcraft.mc.civmodcore.inventory.gui.ClickableInventory; +import vg.civcraft.mc.civmodcore.inventory.gui.DecorationStack; import vg.civcraft.mc.civmodcore.inventory.items.ItemUtils; -import vg.civcraft.mc.civmodcore.inventorygui.Clickable; -import vg.civcraft.mc.civmodcore.inventorygui.ClickableInventory; -import vg.civcraft.mc.civmodcore.inventorygui.DecorationStack; import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameAPI; import vg.civcraft.mc.namelayer.NameLayerPlugin; diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/MergeGUI.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/MergeGUI.java index f65d83a7..5689675a 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/MergeGUI.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/MergeGUI.java @@ -6,10 +6,10 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import vg.civcraft.mc.civmodcore.inventory.gui.Clickable; +import vg.civcraft.mc.civmodcore.inventory.gui.ClickableInventory; +import vg.civcraft.mc.civmodcore.inventory.gui.DecorationStack; import vg.civcraft.mc.civmodcore.inventory.items.ItemUtils; -import vg.civcraft.mc.civmodcore.inventorygui.Clickable; -import vg.civcraft.mc.civmodcore.inventorygui.ClickableInventory; -import vg.civcraft.mc.civmodcore.inventorygui.DecorationStack; import vg.civcraft.mc.namelayer.GroupManager; import vg.civcraft.mc.namelayer.NameLayerPlugin; import vg.civcraft.mc.namelayer.group.Group; diff --git a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/PermissionManageGUI.java b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/PermissionManageGUI.java index 354a267b..a3997941 100644 --- a/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/PermissionManageGUI.java +++ b/namelayer-spigot/src/main/java/vg/civcraft/mc/namelayer/gui/PermissionManageGUI.java @@ -13,10 +13,10 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.LeatherArmorMeta; +import vg.civcraft.mc.civmodcore.inventory.gui.Clickable; +import vg.civcraft.mc.civmodcore.inventory.gui.ClickableInventory; +import vg.civcraft.mc.civmodcore.inventory.gui.DecorationStack; import vg.civcraft.mc.civmodcore.inventory.items.ItemUtils; -import vg.civcraft.mc.civmodcore.inventorygui.Clickable; -import vg.civcraft.mc.civmodcore.inventorygui.ClickableInventory; -import vg.civcraft.mc.civmodcore.inventorygui.DecorationStack; import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameLayerPlugin; import vg.civcraft.mc.namelayer.group.Group; diff --git a/namelayer-spigot/src/main/resources/plugin.yml b/namelayer-spigot/src/main/resources/plugin.yml index 34efa36f..133b03c8 100644 --- a/namelayer-spigot/src/main/resources/plugin.yml +++ b/namelayer-spigot/src/main/resources/plugin.yml @@ -6,78 +6,6 @@ authors: [BlackXnt, Maxopoly, ProgrammerDan, Tyrothalos, Scuwr, Mr_Little_Kitty] depend: [CivModCore] api-version: 1.16 description: NameLayer handles groups creation and management, in addition to name changes. Once you have connected to Civcraft with a name, it is permanently yours. If a name is already taken, then NameLayer will add a number to the name. -commands: - nlag: - aliases: [nlacceptinvite, nlacceptgroup, acceptinvite, acceptgroup, accept, join, ctjoin, ctj, ag] - nlcg: - aliases: [nlcreategroup, creategroup, create, ctcreate, creategroup, cg] - nldg: - aliases: [nldeletegroup, deletegroup, dg, delete, deletegroup, ctdelete] - nldig: - aliases: [nldisiplinegroup, nldisablegroup, nldisable] - permission: namelayer.admin - nlgls: - aliases: [nlglobalstats] - nlgs: - aliases: [nlgroupstats] - nlid: - aliases: [nlinfodump] - nlip: - aliases: [nlinviteplayer, nlinvite, invite, ctinvite, allow, cta] - nljg: - aliases: [nljoingroup, nljoin, join] - nllg: - aliases: [nllistgroups, nllistg, listgroups, ctlist, lg] - nllm: - aliases: [nllistmembers, nllistm, listmembers, ctmembers, lm, members] - nllcm: - nllp: - aliases: [nllistpermissions, nllistperms, listpermissions] - nlpp: - aliases: [nlpromoteplayer, nlpromote, promoteplayer, ctpromote, ctaddmod, ctam, addmod] - #nlmg: - #aliases: [nlmergegroups, nlmerge, mergegroup, mergegroups, merge] - nlmp: - aliases: [nlmodifyperms, nlmodifypermissions, nlmodperms, modifypermissions] - nlrm: - aliases: [nlremovemember, nlremove, nlkick, kickmember, removemember, remove, kickmember, ctremove, ctkick] - nlrg: - aliases: [nlrejectinvite, nldeclineinvite] - nlri: - aliases: [nlrevokeinvite, nluninvite, revoke, uninvite, revokeinvite, uninvite] - #nllink: - #nlunlink: - #nllsg: - nlsp: - aliases: [nlsetpassword, nlsetpass, setpass, setpassword] - nltg: - aliases: [nltransfergroup, nltransfer, transfergroup] - nlleg: - aliases: [nlleavegroup, nlleave, leavegroup, ctleave] - nllgt: - aliases: [nllistgrouptypes, nllistgtypes, listgrouptypes] - nllpt: - aliases: [nllistplayertypes, nllistptypes, listplayertypes] - nllci: - aliases: [nllistcurrentinvites, nllistinvites, invites, listinvites, ctinvites] - nltaai: - aliases: [nlautoacceptinvites, nlautoaccept, autoaccept] - nlcpn: - permission: namelayer.admin - nlsdg: - aliases: [nlsetdefaultgroup, nlsetdefault, setdefault, setdefaultgroup, default] - nlgdg: - aliases: [nlgetdefaultgroup, nlgetdefault, getdefaultgroup] - nlun: - aliases: [updatename] - nlsbl: - aliases: [showblacklist, listblacklist] - nlbl: - aliases: [blacklist, addblacklist] - nlubl: - aliases: [removeblacklist, unblacklist] - nl: - permissions: namelayer.admin: default: op diff --git a/nms/interface/pom.xml b/nms/interface/pom.xml index 9fa44098..ab46ac9b 100755 --- a/nms/interface/pom.xml +++ b/nms/interface/pom.xml @@ -6,7 +6,7 @@ namelayer-parent - vg.civcraft.mc.namelayer + com.github.civclassic 1.0.0 ../../pom.xml @@ -16,12 +16,12 @@ jar - - com.destroystokyo.paper - paper - 1.16.5-R0.1-SNAPSHOT - provided - - + + io.papermc.paper + paper + 1.17-R0.1-SNAPSHOT + provided + + diff --git a/nms/interface/src/main/java/vg/civcraft/mc/namelayer/misc/MaterialInterface.java b/nms/interface/src/main/java/vg/civcraft/mc/namelayer/misc/MaterialInterface.java index 90897982..ef35ed36 100644 --- a/nms/interface/src/main/java/vg/civcraft/mc/namelayer/misc/MaterialInterface.java +++ b/nms/interface/src/main/java/vg/civcraft/mc/namelayer/misc/MaterialInterface.java @@ -1,5 +1,6 @@ package vg.civcraft.mc.namelayer.misc; + import org.bukkit.Material; import org.bukkit.inventory.ItemStack; diff --git a/nms/v1_10_R1/pom.xml b/nms/v1_10_R1/pom.xml index edd7f95b..fb87e8f1 100644 --- a/nms/v1_10_R1/pom.xml +++ b/nms/v1_10_R1/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-parent 1.0.0 ../../pom.xml @@ -17,7 +17,7 @@ - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-nms-interface 1.0.1 diff --git a/nms/v1_11_R1/pom.xml b/nms/v1_11_R1/pom.xml index 891fd3b2..90511272 100644 --- a/nms/v1_11_R1/pom.xml +++ b/nms/v1_11_R1/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-parent 1.0.0 ../../pom.xml @@ -17,7 +17,7 @@ - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-nms-interface 1.0.1 diff --git a/nms/v1_12_R1/pom.xml b/nms/v1_12_R1/pom.xml index 6e0a00dd..262d2ba2 100644 --- a/nms/v1_12_R1/pom.xml +++ b/nms/v1_12_R1/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-parent 1.0.0 ../../pom.xml @@ -17,7 +17,7 @@ - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-nms-interface 1.0.1 diff --git a/nms/v1_13_R2/pom.xml b/nms/v1_13_R2/pom.xml index 96fe8da4..49f36acb 100644 --- a/nms/v1_13_R2/pom.xml +++ b/nms/v1_13_R2/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-parent 1.0.0 ../../pom.xml @@ -17,7 +17,7 @@ - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-nms-interface 1.0.1 diff --git a/nms/v1_14_R1/pom.xml b/nms/v1_14_R1/pom.xml index e602c88a..aa56ca01 100644 --- a/nms/v1_14_R1/pom.xml +++ b/nms/v1_14_R1/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-parent 1.0.0 ../../pom.xml @@ -17,7 +17,7 @@ - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-nms-interface 1.0.1 diff --git a/nms/v1_16_R1/pom.xml b/nms/v1_16_R1/pom.xml index 2ad70fd1..b49b78e3 100644 --- a/nms/v1_16_R1/pom.xml +++ b/nms/v1_16_R1/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-parent 1.0.0 ../../pom.xml @@ -17,7 +17,7 @@ - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-nms-interface 1.0.1 diff --git a/nms/v1_16_R3/pom.xml b/nms/v1_16_R3/pom.xml index 5f354f3b..51ca3a07 100755 --- a/nms/v1_16_R3/pom.xml +++ b/nms/v1_16_R3/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-parent 1.0.0 ../../pom.xml @@ -17,7 +17,7 @@ - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-nms-interface 1.0.1 diff --git a/nms/v1_17_R1/pom.xml b/nms/v1_17_R1/pom.xml new file mode 100644 index 00000000..6886c9ce --- /dev/null +++ b/nms/v1_17_R1/pom.xml @@ -0,0 +1,32 @@ + + + 4.0.0 + + + com.github.civclassic + namelayer-parent + 1.0.0 + ../../pom.xml + + + namelayer-nms-v1_17_R1 + 1.0.1 + jar + + + + com.github.civclassic + namelayer-nms-interface + 1.0.1 + + + io.papermc.paper + paper + 1.17.1-R0.1-SNAPSHOT + provided + + + + diff --git a/nms/v1_17_R1/src/main/java/vg/civcraft/mc/namelayer/misc/v1_17_R1/MaterialMap.java b/nms/v1_17_R1/src/main/java/vg/civcraft/mc/namelayer/misc/v1_17_R1/MaterialMap.java new file mode 100644 index 00000000..368ab679 --- /dev/null +++ b/nms/v1_17_R1/src/main/java/vg/civcraft/mc/namelayer/misc/v1_17_R1/MaterialMap.java @@ -0,0 +1,30 @@ +package vg.civcraft.mc.namelayer.misc.v1_17_R1; + +import vg.civcraft.mc.namelayer.misc.MaterialInterface; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +public class MaterialMap implements MaterialInterface { + + @Override + public Material getMaterial(final MaterialInterface.Specific specific) { + return switch (specific) { + case GREEN -> Material.LIME_DYE; + case RED -> Material.RED_DYE; + case BACK -> Material.OAK_DOOR; + case MOD -> Material.GOLDEN_CHESTPLATE; + case BLACKLIST -> Material.LEAD; + case PERMS -> Material.OAK_FENCE_GATE; + case MERGE -> Material.CHEST_MINECART; + case DEFAULT -> Material.BRICKS; + }; + } + + @Override + public ItemStack getItemStack(final MaterialInterface.Specific specific) { + return switch (specific) { + case GREEN, RED, BACK, MOD, BLACKLIST, PERMS, MERGE, DEFAULT -> new ItemStack(getMaterial(specific)); + }; + } + +} diff --git a/nms/v1_17_R1/src/main/java/vg/civcraft/mc/namelayer/misc/v1_17_R1/ProfileModifier.java b/nms/v1_17_R1/src/main/java/vg/civcraft/mc/namelayer/misc/v1_17_R1/ProfileModifier.java new file mode 100644 index 00000000..a66aff88 --- /dev/null +++ b/nms/v1_17_R1/src/main/java/vg/civcraft/mc/namelayer/misc/v1_17_R1/ProfileModifier.java @@ -0,0 +1,28 @@ +package vg.civcraft.mc.namelayer.misc.v1_17_R1; + +import com.destroystokyo.paper.profile.CraftPlayerProfile; +import java.util.logging.Logger; +import net.kyori.adventure.text.Component; +import org.bukkit.entity.Player; +import vg.civcraft.mc.namelayer.misc.ProfileInterface; + +public class ProfileModifier implements ProfileInterface { + + private static final Logger LOGGER = Logger.getLogger(ProfileModifier.class.getSimpleName()); + + @Override + public void setPlayerProfile(final Player player, final String name) { + final String oldName = player.getName(); + if (name.length() > 16) { + LOGGER.info(String.format("The player %s (%s) was kicked from the server due to their " + + "name already existing but now becoming over 16 characters.", + name, player.getUniqueId())); + } + player.setPlayerProfile(new CraftPlayerProfile(player.getUniqueId(), name)); + player.displayName(Component.text(name)); + player.playerListName(Component.text(name)); + player.customName(Component.text(name)); + LOGGER.info(String.format("The player \"%s\" has had their name changed to \"%s\"", oldName, name)); + } + +} diff --git a/nms/v1_8_R1/pom.xml b/nms/v1_8_R1/pom.xml index b382fbba..3ee12853 100644 --- a/nms/v1_8_R1/pom.xml +++ b/nms/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-parent 1.0.0 ../../pom.xml @@ -17,7 +17,7 @@ - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-nms-interface 1.0.1 diff --git a/nms/v1_8_R2/pom.xml b/nms/v1_8_R2/pom.xml index c15b88b2..1e483ef1 100644 --- a/nms/v1_8_R2/pom.xml +++ b/nms/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-parent 1.0.0 ../../pom.xml @@ -17,7 +17,7 @@ - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-nms-interface 1.0.1 diff --git a/nms/v1_8_R3/pom.xml b/nms/v1_8_R3/pom.xml index 9abac05e..167db9b1 100644 --- a/nms/v1_8_R3/pom.xml +++ b/nms/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-parent 1.0.0 ../../pom.xml @@ -17,7 +17,7 @@ - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-nms-interface 1.0.1 diff --git a/nms/v1_9_R1/pom.xml b/nms/v1_9_R1/pom.xml index d2488d0f..a6f66701 100644 --- a/nms/v1_9_R1/pom.xml +++ b/nms/v1_9_R1/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-parent 1.0.0 ../../pom.xml @@ -17,7 +17,7 @@ - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-nms-interface 1.0.1 diff --git a/nms/v1_9_R2/pom.xml b/nms/v1_9_R2/pom.xml index 71d4674f..dd6dd141 100644 --- a/nms/v1_9_R2/pom.xml +++ b/nms/v1_9_R2/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-parent 1.0.0 ../../pom.xml @@ -17,7 +17,7 @@ - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-nms-interface 1.0.1 diff --git a/pom.xml b/pom.xml index 50c90744..2281b8d4 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - vg.civcraft.mc.namelayer + com.github.civclassic namelayer-parent 1.0.0 pom @@ -13,16 +13,16 @@ nms/interface - nms/v1_16_R3 + nms/v1_17_R1 namelayer-spigot namelayer-bungee namelayer-all - 2.14.1 - 11 - 11 + 2.15.0 + 16 + 16 UTF-8 UTF-8 @@ -30,7 +30,7 @@ codecrafter47-repo - http://nexus.codecrafter47.dyndns.eu/content/repositories/public/ + https://nexus.codecrafter47.dyndns.eu/content/repositories/public/ @@ -42,9 +42,14 @@ https://hub.spigotmc.org/nexus/content/repositories/snapshots + + papermc + https://papermc.io/repo/repository/maven-public/ + + md_5-repo - http://repo.md-5.net/content/repositories/public/ + https://repo.md-5.net/content/repositories/public/ bungeecord-repo @@ -79,6 +84,7 @@ nms/v1_14_R1 nms/v1_16_R1 nms/v1_16_R3 + nms/v1_17_R1