@@ -1,9 +1,15 @@
|
|||||||
package dev.zxq5.fantasysmp.groups;
|
package dev.zxq5.fantasysmp.groups;
|
||||||
|
|
||||||
import dev.zxq5.fantasysmp.chatutils.Chat;
|
import dev.zxq5.fantasysmp.chatutils.Chat;
|
||||||
|
import dev.zxq5.fantasysmp.warps.Warp;
|
||||||
|
import dev.zxq5.fantasysmp.warps.WarpType;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import static org.bukkit.Bukkit.getServer;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Commands:
|
* Commands:
|
||||||
*
|
*
|
||||||
@@ -48,6 +54,7 @@ public class Commands implements CommandExecutor {
|
|||||||
case "list" -> this.handleList(player, args);
|
case "list" -> this.handleList(player, args);
|
||||||
case "create" -> this.handleCreate(player, args);
|
case "create" -> this.handleCreate(player, args);
|
||||||
case "rename" -> this.handleRename(player, args);
|
case "rename" -> this.handleRename(player, args);
|
||||||
|
case "tag" -> this.handleSetTag(player, args);
|
||||||
case "transfer" -> this.handleTransfer(player, args);
|
case "transfer" -> this.handleTransfer(player, args);
|
||||||
case "join" -> this.handleJoin(player, args);
|
case "join" -> this.handleJoin(player, args);
|
||||||
case "invite" -> this.handleInvite(player, args);
|
case "invite" -> this.handleInvite(player, args);
|
||||||
@@ -77,31 +84,127 @@ public class Commands implements CommandExecutor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void handleList(Player player, String[] args) {}
|
public void handleList(Player player, String[] args) {
|
||||||
|
String[] teams = Team.getTeams();
|
||||||
|
String result = "Teams: [\n " + String.join("\n ", teams) + "\n]";
|
||||||
|
Chat.info(player, result);
|
||||||
|
}
|
||||||
|
|
||||||
public void handleCreate(Player player, String[] args) {}
|
public void handleCreate(Player player, String[] args) {
|
||||||
|
if (args.length != 2) {
|
||||||
|
Chat.error(player, "Usage: /team create <name>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
public void handleRename(Player player, String[] args) {}
|
Team.createTeam(player, args[1]);
|
||||||
|
}
|
||||||
|
|
||||||
public void handleTransfer(Player player, String[] args) {}
|
public void handleRename(Player player, String[] args) {
|
||||||
|
if (args.length != 2) {
|
||||||
|
Chat.error(player, "Usage: /team rename <new name>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
public void handleJoin(Player player, String[] args) {}
|
if (args[1].isEmpty() || args[1].contains(" ") || args[1].contains("\t")) {
|
||||||
|
Chat.error(player, "Invalid name!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
public void handleInvite(Player player, String[] args) {}
|
Team.renameTeam(player, args[1]);
|
||||||
|
}
|
||||||
|
|
||||||
public void handleLeave(Player player, String[] args) {}
|
public void handleSetTag(Player player, String[] args) {
|
||||||
|
if (args.length != 2) {
|
||||||
|
Chat.error(player, "Usage: /team tag <tag>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
public void handleDisband(Player player, String[] args) {}
|
if (args[1].length < 3 || args[1].contains(" ") || args[1].contains("\t") || args.length > 8) {
|
||||||
|
Chat.error(player, "Invalid tag!");
|
||||||
|
Chat.error(player, "tags should be 3-8 chars, alphanumeric and have no spaces");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void handleSetWarp(Player player, String[] args) {}
|
public void handleTransfer(Player player, String[] args) {
|
||||||
|
if (args.length != 2) {
|
||||||
|
Chat.error(player, "Usage: /team transfer <player>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void handleDelWarp(Player player, String[] args) {}
|
public void handleJoin(Player player, String[] args) {
|
||||||
|
if (args.length != 2) {
|
||||||
|
Chat.error(player, "Usage: /team join <name>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void handleWarp(Player player, String[] args) {}
|
public void handleInvite(Player player, String[] args) {
|
||||||
|
if (args.length != 2) {
|
||||||
|
Chat.error(player, "Usage: /team invite <player>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void handleKick(Player player, String[] args) {}
|
public void handleLeave(Player player, String[] args) {
|
||||||
|
if (args.length != 1) {
|
||||||
|
Chat.error(player, "Usage: /team leave");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
public void handleLog(Player player, String[] args) {}
|
Team.leaveTeam(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void handleDisband(Player player, String[] args) {
|
||||||
|
if (args.length != 1) {
|
||||||
|
Chat.error(player, "Usage: /team disband");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Team.disbandTeam(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void handleSetWarp(Player player, String[] args) {
|
||||||
|
if (args.length != 2) {
|
||||||
|
Chat.error(player, "Usage: /team setwarp <name>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Warp.setWarp(args[1], player, WarpType.TEAM);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void handleDelWarp(Player player, String[] args) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void handleWarp(Player player, String[] args) {
|
||||||
|
if (args.length != 2) {
|
||||||
|
Chat.error(player, "Usage: /team warp <name>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Team team = Team.fromMember(player);
|
||||||
|
Warp warp = Warp.getTeamWarp(team, args[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void handleKick(Player player, String[] args) {
|
||||||
|
if (args.length != 2) {
|
||||||
|
Chat.error(player, "Usage: /team kick <player>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Team.removePlayer(player, args[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void handleLog(Player player, String[] args) {
|
||||||
|
if (args.length != 1) {
|
||||||
|
Chat.error(player, "Usage: /team log");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<String> logs = Team.getLogs(player);
|
||||||
|
String result = "Logs: [\n " + String.join("\n ", logs) + "\n]";
|
||||||
|
Chat.info(player, result);
|
||||||
|
}
|
||||||
|
|
||||||
public void handleCreateRank(Player player, String[] args) {}
|
public void handleCreateRank(Player player, String[] args) {}
|
||||||
|
|
||||||
|
|||||||
@@ -1,55 +1,157 @@
|
|||||||
package dev.zxq5.fantasysmp.groups;
|
package dev.zxq5.fantasysmp.groups;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
import dev.zxq5.fantasysmp.chatutils.Chat;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import static org.bukkit.Bukkit.getServer;
|
import static org.bukkit.Bukkit.getServer;
|
||||||
|
|
||||||
public class Team {
|
public class Team {
|
||||||
private static Team[] teams;
|
private static ArrayList<Team> teams;
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
private String ownerUUID;
|
private String ownerUUID;
|
||||||
private ArrayList<String> members;
|
private ArrayList<String> members;
|
||||||
|
private ArrayList<String> logs;
|
||||||
|
private String teamUUID;
|
||||||
private String tag;
|
private String tag;
|
||||||
|
|
||||||
public Team(Player creator, String name, String tag) {
|
public Team(Player creator, String name, String tag) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.tag = tag;
|
this.tag = tag;
|
||||||
|
this.teamUUID = UUID.randomUUID().toString();
|
||||||
this.ownerUUID = creator.getUniqueId().toString();
|
this.ownerUUID = creator.getUniqueId().toString();
|
||||||
this.members = new ArrayList<>();
|
this.members = new ArrayList<>();
|
||||||
members.add(creator.getUniqueId().toString());
|
members.add(creator.getUniqueId().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Team createTeam(Player creator, String name) {
|
public static Team createTeam(Player creator, String name) {
|
||||||
Team team = new Team(creator, name, name);
|
Team team = new Team(creator, name, name);
|
||||||
|
teams.add(team);
|
||||||
|
|
||||||
|
|
||||||
return team;
|
return team;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Team fromMember(Player member) {
|
||||||
|
for (Team team : teams) {
|
||||||
|
if (team.members.contains(member.getUniqueId().toString())) return team;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String[] getTeams() {
|
||||||
|
String[] names = new String[teams.size()];
|
||||||
|
for (int i = 0; i < teams.size(); i++) {
|
||||||
|
names[i] = teams.get(i).name;
|
||||||
|
}
|
||||||
|
return names;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void renameTeam(Player player, String newName) {
|
||||||
|
for (Team team : teams) {
|
||||||
|
if (!team.ownerUUID.equals(player.getUniqueId().toString())) continue;
|
||||||
|
|
||||||
|
team.name = newName;
|
||||||
|
team.log(player.getName() + " renamed the team to " + newName + ".");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void transferTeam(Player player, String playerName) {
|
||||||
|
Player newOwner = getServer().getPlayer(playerName);
|
||||||
|
for (Team team : teams) {
|
||||||
|
if (!team.ownerUUID.equals(player.getUniqueId().toString())) continue;
|
||||||
|
|
||||||
|
team.ownerUUID = newOwner.getUniqueId().toString();
|
||||||
|
team.log(player.getName() + " transferred ownership to " + newOwner.getName() + ".");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void removePlayer(Player remover, String playerName) {
|
||||||
|
Player removedPlayer = getServer().getPlayer(playerName);
|
||||||
|
|
||||||
|
if (removedPlayer == null) {
|
||||||
|
Chat.error(remover, "Player not found!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String removerUUID = remover.getUniqueId().toString();
|
||||||
|
String removedPlayerUUID = removedPlayer.getUniqueId().toString();
|
||||||
|
|
||||||
|
for (Team team : teams) {
|
||||||
|
if (!team.members.contains(removerUUID)) continue;
|
||||||
|
|
||||||
|
if (!team.ownerUUID.equals(removerUUID)) {
|
||||||
|
Chat.error(remover, "You do not have permission to remove players from this team.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!team.members.contains(removedPlayerUUID)) {
|
||||||
|
Chat.error(remover, "This player is not in your team.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (removedPlayerUUID.equals(team.ownerUUID)) {
|
||||||
|
Chat.error(remover, "You cannot remove yourself!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
team.members.remove(removedPlayerUUID);
|
||||||
|
team.log(remover.getName() + " removed " + removedPlayer.getName() + " from the team.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void leaveTeam(Player player) {
|
||||||
|
for (Team team : teams) {
|
||||||
|
if (!team.members.contains(player.getUniqueId().toString())) continue;
|
||||||
|
if (team.ownerUUID.equals(player.getUniqueId().toString())) {
|
||||||
|
player.sendMessage("You cannot leave a team that you own!");
|
||||||
|
}
|
||||||
|
|
||||||
|
team.members.remove(player.getUniqueId().toString());
|
||||||
|
team.log(player.getName() + " left the team.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void disbandTeam(Player player) {
|
||||||
|
for (Team team : teams) {
|
||||||
|
if (!team.ownerUUID.equals(player.getUniqueId().toString())) continue;
|
||||||
|
|
||||||
|
teams.remove(team);
|
||||||
|
team.log(player.getName() + " disbanded the team.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void addMember(Player player) {
|
||||||
|
for (Team team : teams) {
|
||||||
|
if (!team.ownerUUID.equals(player.getUniqueId().toString())) continue;
|
||||||
|
|
||||||
|
team.members.add(player.getUniqueId().toString());
|
||||||
|
team.log(player.getName() + " joined the team.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ArrayList<String> getLogs(Player player) {
|
||||||
|
for (Team team : teams) {
|
||||||
|
if (team.ownerUUID.equals(player.getUniqueId().toString())) {
|
||||||
|
return team.logs;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void log(String message) {
|
||||||
|
this.logs.add(message);
|
||||||
|
}
|
||||||
|
|
||||||
public static void loadTeams() throws Exception {
|
public static void loadTeams() throws Exception {
|
||||||
File dataFolder = getServer().getPluginManager().getPlugin("Fantasysmp").getDataFolder();
|
File dataFolder = getServer().getPluginManager().getPlugin("Fantasysmp").getDataFolder();
|
||||||
@@ -63,7 +165,7 @@ public class Team {
|
|||||||
reader = new BufferedReader(new FileReader(file));
|
reader = new BufferedReader(new FileReader(file));
|
||||||
|
|
||||||
Gson gson = new Gson();
|
Gson gson = new Gson();
|
||||||
teams = gson.fromJson(reader, Team[].class);
|
teams = gson.fromJson(reader, new TypeToken<ArrayList<Team>>(){}.getType());
|
||||||
|
|
||||||
reader.close();
|
reader.close();
|
||||||
}
|
}
|
||||||
@@ -96,4 +198,8 @@ public class Team {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getUUID() {
|
||||||
|
return this.teamUUID;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package dev.zxq5.fantasysmp.warps;
|
package dev.zxq5.fantasysmp.warps;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
|
import dev.zxq5.fantasysmp.groups.Team;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
@@ -105,6 +106,17 @@ public class Warp {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Warp getTeamWarp(Team team, String name) {
|
||||||
|
for (Warp warp : warps) {
|
||||||
|
if (warp.type.equals(WarpType.TEAM)) {
|
||||||
|
if (warp.name.equals(name) && warp.setby.equals(team.getUUID())) {
|
||||||
|
return warp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public static String listWarps(UUID player) {
|
public static String listWarps(UUID player) {
|
||||||
String message = ChatColor.WHITE + "All Warps: [\n" + ChatColor.GREEN;
|
String message = ChatColor.WHITE + "All Warps: [\n" + ChatColor.GREEN;
|
||||||
|
|
||||||
@@ -162,13 +174,6 @@ public class Warp {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enum WarpType {
|
|
||||||
HOME,
|
|
||||||
PUBLIC,
|
|
||||||
DEATH,
|
|
||||||
TEAM,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package dev.zxq5.fantasysmp.warps;
|
||||||
|
|
||||||
|
public enum WarpType {
|
||||||
|
HOME,
|
||||||
|
PUBLIC,
|
||||||
|
DEATH,
|
||||||
|
TEAM,
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user