diff options
Diffstat (limited to 'src/main/java/com/redstoner/bungeeBans/commands')
3 files changed, 248 insertions, 0 deletions
diff --git a/src/main/java/com/redstoner/bungeeBans/commands/BanCommand.java b/src/main/java/com/redstoner/bungeeBans/commands/BanCommand.java new file mode 100644 index 0000000..ec9e980 --- /dev/null +++ b/src/main/java/com/redstoner/bungeeBans/commands/BanCommand.java @@ -0,0 +1,102 @@ +package com.redstoner.bungeeBans.commands; + +import com.mojang.api.profiles.Profile; +import com.redstoner.bungeeBans.BanManager; +import com.redstoner.bungeeBans.Main; +import com.redstoner.bungeeBans.Util; +import com.redstoner.bungeeBans.json.PlayerBan; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.chat.ComponentBuilder; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.plugin.Command; + +import java.io.IOException; +import java.util.Arrays; + +public class BanCommand extends Command { + private BanManager<PlayerBan> bm; + private Main plugin; + + public BanCommand(BanManager<PlayerBan> bm, Main plugin) { + super("ban", "bungeeBans.ban"); + + this.bm = bm; + this.plugin = plugin; + } + + @Override + public void execute(CommandSender sender, String[] args) { + String reason = "Banned by an operator."; + + switch (args.length) { + case 0: + sender.sendMessage( + new ComponentBuilder("Usage: ") + .append(ChatColor.AQUA + "/ban ") + .append(ChatColor.GOLD + "<username> ") + .append(ChatColor.YELLOW + "[reason]") + .create() + ); + case 1: + break; + default: + reason = String.join(" ", Arrays.copyOfRange(args, 1, args.length)); + break; + } + + Profile[] profiles = Util.findProfilesByNames(args[0]); + + if (profiles.length != 1) { + sender.sendMessage(new TextComponent(ChatColor.RED + "Invalid name!")); + return; + } + + String uuid = Util.dashUUID(profiles[0].getId()); + String name = profiles[0].getName(); + String expires = "forever"; //TODO: expiry option + + if (bm.getBan(uuid) != null) { + sender.sendMessage(new TextComponent(ChatColor.RED + "That player is already banned!")); + return; + } + + PlayerBan ban = new PlayerBan(uuid, name, Util.getNow(), sender.getName(), expires, reason); + bm.addBan(ban); + + try { + bm.saveBans(); + sender.sendMessage(new TextComponent(ChatColor.GREEN + "Saved bans to file!")); + } catch (IOException e) { + sender.sendMessage(new TextComponent(ChatColor.RED + "Failed to save bans to file!")); + e.printStackTrace(); + + bm.removeBan(ban); + return; + } + + ProxiedPlayer proxiedPlayer = plugin.getProxy().getPlayer(name); + + if (proxiedPlayer != null) { + proxiedPlayer.disconnect( + new ComponentBuilder(ChatColor.RED + "You were banned by ") + .append(ChatColor.AQUA + sender.getName()) + .append(ChatColor.RED + " for ") + .append(ChatColor.YELLOW + reason) + .create() + ); + } + + + sender.sendMessage( + new ComponentBuilder(ChatColor.GREEN + "Banned player ") + .append(ChatColor.AQUA + name) + .append(ChatColor.GREEN + " with uuid ") + .append(ChatColor.AQUA + uuid) + .append(ChatColor.GREEN + " and reason ") + .append(ChatColor.AQUA + reason) + .create() + ); + } +} diff --git a/src/main/java/com/redstoner/bungeeBans/commands/GetBanCommand.java b/src/main/java/com/redstoner/bungeeBans/commands/GetBanCommand.java new file mode 100644 index 0000000..5ff213a --- /dev/null +++ b/src/main/java/com/redstoner/bungeeBans/commands/GetBanCommand.java @@ -0,0 +1,66 @@ +package com.redstoner.bungeeBans.commands; + +import com.mojang.api.profiles.Profile; +import com.redstoner.bungeeBans.BanManager; +import com.redstoner.bungeeBans.Util; +import com.redstoner.bungeeBans.json.PlayerBan; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.chat.ComponentBuilder; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.plugin.Command; + +public class GetBanCommand extends Command { + private BanManager<PlayerBan> bm; + + public GetBanCommand(BanManager<PlayerBan> bm) { + super("getban", "bungeebans.getban"); + + this.bm = bm; + } + + @Override + public void execute(CommandSender sender, String[] args) { + if (args.length != 1) { + sender.sendMessage( + new ComponentBuilder(ChatColor.RED + "Invalid command! ") + .append("Usage: ") + .append(ChatColor.AQUA + "/getban ") + .append(ChatColor.GOLD + "<username> ") + .create() + ); + + return; + } + + Profile[] profiles = Util.findProfilesByNames(args[0]); + + if (profiles.length != 1) { + sender.sendMessage(new TextComponent(ChatColor.RED + "Invalid name!")); + return; + } + + String uuid = Util.dashUUID(profiles[0].getId()); + String name = profiles[0].getName(); + + PlayerBan ban = bm.getBan(uuid); + + if (ban == null) { + sender.sendMessage(new TextComponent(ChatColor.RED + "That player is not banned!")); + return; + } + + sender.sendMessage( + new ComponentBuilder(ChatColor.GREEN + "Player ") + .append(ChatColor.AQUA + name) + .append(ChatColor.GREEN + " with uuid ") + .append(ChatColor.AQUA + uuid) + .append(ChatColor.GREEN + " is banned for ") + .append(ChatColor.AQUA + ban.getReason()) + .append(ChatColor.GREEN + " until ") + .append(ChatColor.AQUA + ban.getExpires()) + .create() + ); + + } +} diff --git a/src/main/java/com/redstoner/bungeeBans/commands/UnbanCommand.java b/src/main/java/com/redstoner/bungeeBans/commands/UnbanCommand.java new file mode 100644 index 0000000..a495dbb --- /dev/null +++ b/src/main/java/com/redstoner/bungeeBans/commands/UnbanCommand.java @@ -0,0 +1,80 @@ +package com.redstoner.bungeeBans.commands; + +import com.mojang.api.profiles.HttpProfileRepository; +import com.mojang.api.profiles.Profile; +import com.redstoner.bungeeBans.BanManager; +import com.redstoner.bungeeBans.Util; +import com.redstoner.bungeeBans.json.PlayerBan; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.chat.ComponentBuilder; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.plugin.Command; + +import java.io.IOException; + +public class UnbanCommand extends Command { + HttpProfileRepository profileRepo = new HttpProfileRepository("minecraft"); + + private BanManager<PlayerBan> bm; + + public UnbanCommand(BanManager<PlayerBan> bm) { + super("unban", "bungeebans.unban", "pardon"); + + this.bm = bm; + } + + @Override + public void execute(CommandSender sender, String[] args) { + if (args.length != 1) { + sender.sendMessage( + new ComponentBuilder(ChatColor.RED + "Invalid command! ") + .append("Usage: ") + .append(ChatColor.AQUA + "/unban ") + .append(ChatColor.GOLD + "<username> ") + .create() + ); + + return; + } + + Profile[] profiles = profileRepo.findProfilesByNames(args[0]); + + if (profiles.length != 1) { + sender.sendMessage(new TextComponent(ChatColor.RED + "Invalid name!")); + return; + } + + String uuid = Util.dashUUID(profiles[0].getId()); + String name = profiles[0].getName(); + + PlayerBan ban = bm.getBan(uuid); + + if (ban == null) { + sender.sendMessage(new TextComponent(ChatColor.RED + "That player is not banned!")); + return; + } + + bm.removeBan(ban); + + try { + bm.saveBans(); + sender.sendMessage(new TextComponent(ChatColor.GREEN + "Saved bans to file!")); + } catch (IOException e) { + sender.sendMessage(new TextComponent(ChatColor.RED + "Failed to save bans to file!")); + e.printStackTrace(); + + bm.addBan(ban); + return; + } + + sender.sendMessage( + new ComponentBuilder(ChatColor.GREEN + "Unbanned player ") + .append(ChatColor.AQUA + name) + .append(ChatColor.GREEN + " with uuid ") + .append(ChatColor.AQUA + uuid) + .create() + ); + + } +} |