You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
3.3 KiB

1 year ago
package org.poopki.duckdns.user_db.WorldGuard;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import de.netzkronehd.wgregionevents.api.SimpleWorldGuardAPI;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class WgCommand implements CommandExecutor, TabExecutor {
private final SimpleWorldGuardAPI simpleWorldGuardAPI;
public WgCommand() {
simpleWorldGuardAPI = new SimpleWorldGuardAPI();
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(args.length == 2) {
if(args[0].equals("playersinregion")) {
final List<Player> players = simpleWorldGuardAPI.getPlayersInRegion(args[1]);
final StringBuilder sb = new StringBuilder(WGRegionExample.PREFIX+"Player: ");
for(Player player : players) {
sb.append(player.getName()).append(", ");
}
sender.sendMessage(sb.toString());
return true;
} else if(args[0].equalsIgnoreCase("regions")) {
final Player p = Bukkit.getPlayer(args[1]);
if(p != null) {
final StringBuilder sb = new StringBuilder(WGRegionExample.PREFIX+"Regions: ");
for (ProtectedRegion region : simpleWorldGuardAPI.getRegions(p.getLocation())) {
sb.append(region.getId()).append("§7, ");
}
sender.sendMessage(sb.toString());
} else sender.sendMessage(WGRegionExample.PREFIX+"That player is offline.");
return true;
}
}
sendHelp(sender);
return false;
}
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
final List<String> tabs = new ArrayList<>();
if(args.length == 1) {
args[0] = args[0].toLowerCase();
if("regions".startsWith(args[0])) tabs.add("regions");
if("playersinregion".startsWith(args[0])) tabs.add("playersinregion");
} else if(args.length == 2) {
if(args[0].equalsIgnoreCase("regions")) {
args[1] = args[1].toLowerCase();
for (Player player : Bukkit.getOnlinePlayers()) {
if(player.getName().toLowerCase().startsWith(args[1])) {
tabs.add(player.getName());
}
}
} else if(args[0].equalsIgnoreCase("playersinregion")) {
args[1] = args[1].toLowerCase();
for(ProtectedRegion pr : simpleWorldGuardAPI.getRegions().values()) {
if(pr.getId().toLowerCase().startsWith(args[1])) {
tabs.add(pr.getId());
}
}
}
}
return tabs;
}
private void sendHelp(CommandSender s) {
s.sendMessage(WGRegionExample.PREFIX+"Wrong usage, please use:");
s.sendMessage("§e/wge playersinregion§8 <§eRegion§8>");
s.sendMessage("§e/wge regions§8 <§ePlayer§8>");
}
}