progress on teams
Java CI with Maven / build (push) Failing after 1m4s

This commit is contained in:
2025-02-12 18:55:11 +00:00
parent 3eac0e391f
commit 14452adf08
4 changed files with 248 additions and 26 deletions
@@ -1,9 +1,15 @@
package dev.zxq5.fantasysmp.groups;
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.entity.Player;
import java.util.ArrayList;
import static org.bukkit.Bukkit.getServer;
/*
* Commands:
*
@@ -48,6 +54,7 @@ public class Commands implements CommandExecutor {
case "list" -> this.handleList(player, args);
case "create" -> this.handleCreate(player, args);
case "rename" -> this.handleRename(player, args);
case "tag" -> this.handleSetTag(player, args);
case "transfer" -> this.handleTransfer(player, args);
case "join" -> this.handleJoin(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) {}
@@ -1,55 +1,157 @@
package dev.zxq5.fantasysmp.groups;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import dev.zxq5.fantasysmp.chatutils.Chat;
import org.bukkit.entity.Player;
import java.io.*;
import java.util.ArrayList;
import java.util.UUID;
import static org.bukkit.Bukkit.getServer;
public class Team {
private static Team[] teams;
private static ArrayList<Team> teams;
private String name;
private String ownerUUID;
private ArrayList<String> members;
private ArrayList<String> logs;
private String teamUUID;
private String tag;
public Team(Player creator, String name, String tag) {
this.name = name;
this.tag = tag;
this.teamUUID = UUID.randomUUID().toString();
this.ownerUUID = creator.getUniqueId().toString();
this.members = new ArrayList<>();
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);
teams.add(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 {
File dataFolder = getServer().getPluginManager().getPlugin("Fantasysmp").getDataFolder();
@@ -63,7 +165,7 @@ public class Team {
reader = new BufferedReader(new FileReader(file));
Gson gson = new Gson();
teams = gson.fromJson(reader, Team[].class);
teams = gson.fromJson(reader, new TypeToken<ArrayList<Team>>(){}.getType());
reader.close();
}
@@ -96,4 +198,8 @@ public class Team {
}
}
}
public String getUUID() {
return this.teamUUID;
}
}
@@ -1,6 +1,7 @@
package dev.zxq5.fantasysmp.warps;
import com.google.gson.Gson;
import dev.zxq5.fantasysmp.groups.Team;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
@@ -105,6 +106,17 @@ public class Warp {
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) {
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,
}