diff --git a/src/de/steamwar/bungeecore/EventStarter.java b/src/de/steamwar/bungeecore/EventStarter.java index 9cb1eaf9..5271eccc 100644 --- a/src/de/steamwar/bungeecore/EventStarter.java +++ b/src/de/steamwar/bungeecore/EventStarter.java @@ -73,7 +73,7 @@ public class EventStarter implements Runnable { eventServer.put(blue.getTeamId(), subserver); eventServer.put(red.getTeamId(), subserver); - BungeeCore.broadcast(BungeeCore.CHAT_PREFIX + "§7Hier §eklicken §7für den Kampf §e" + blue.getTeamName() + " §8vs §e" + red.getTeamName(), + BungeeCore.broadcast(BungeeCore.CHAT_PREFIX + "§7Hier §eklicken §7für den Kampf §" + blue.getTeamColor() + blue.getTeamName() + " §8vs §" + red.getTeamColor() + red.getTeamName(), "§eEvent beitreten", new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/event " + blue.getTeamKuerzel())); } diff --git a/src/de/steamwar/bungeecore/commands/EventCommand.java b/src/de/steamwar/bungeecore/commands/EventCommand.java index 4a93cc19..6e4b8e54 100644 --- a/src/de/steamwar/bungeecore/commands/EventCommand.java +++ b/src/de/steamwar/bungeecore/commands/EventCommand.java @@ -91,9 +91,9 @@ public class EventCommand extends BasicCommand { e.getEventName()); Set teams = TeamTeilnahme.getTeams(e.getEventID()); if(!teams.isEmpty()){ - StringBuilder tline = new StringBuilder("§7 Mit§8: §e"); + StringBuilder tline = new StringBuilder("§7 Mit§8: "); for(Team t : teams){ - tline.append(t.getTeamKuerzel()).append(" "); + tline.append("§").append(t.getTeamColor()).append(t.getTeamKuerzel()).append(" "); } BungeeCore.send(player, tline.toString()); } diff --git a/src/de/steamwar/bungeecore/commands/TeamCommand.java b/src/de/steamwar/bungeecore/commands/TeamCommand.java index 601bd580..f9cb50eb 100644 --- a/src/de/steamwar/bungeecore/commands/TeamCommand.java +++ b/src/de/steamwar/bungeecore/commands/TeamCommand.java @@ -20,6 +20,8 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.BungeeCore; +import de.steamwar.bungeecore.inventory.SWItem; +import de.steamwar.bungeecore.inventory.SWListInv; import de.steamwar.bungeecore.sql.Event; import de.steamwar.bungeecore.sql.SteamwarUser; import de.steamwar.bungeecore.sql.Team; @@ -40,6 +42,31 @@ import static de.steamwar.bungeecore.Storage.teamInvitations; public class TeamCommand extends BasicCommand { + private static final List> COLOR_CODES = new ArrayList<>(); + + static { + addColor("4", 1); + addColor("c", 15); + addColor("6", 14); + addColor("e", 11); + addColor("2", 2); + addColor("a", 10); + addColor("b", 12); + addColor("3", 6); + addColor("1", 4); + addColor("9", 6); + addColor("d", 9); + addColor("5", 5); + addColor("f", 15); + addColor("7", 7); + addColor("8", 8); + addColor("0", 16); + } + + private static void addColor(String color, int colorCode) { + COLOR_CODES.add(new SWListInv.SWListEntry(new SWItem("§" + color, colorCode), color)); + } + public TeamCommand() { super("team", ""); } @@ -67,6 +94,7 @@ public class TeamCommand extends BasicCommand { BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "§8/§eteam remove §8- §7Entferne jemanden aus deinem Team"); BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "§8/§eteam changekuerzel §8- §7Ändere dein Teamkürzel"); BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "§8/§eteam changename §8- §7Ändere deinen Teamnamen"); + BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "§8/§eteam changecolor §8- §7Ändere deine Teamfarbe"); BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "§8/§eteam changeleader §8- §7Ernenne jemanden zum Teamleader"); } } @@ -111,6 +139,9 @@ public class TeamCommand extends BasicCommand { case "changeleader": changeleader(player, user, team, args); break; + case "changecolor": + changeColor(player, user, team); + break; case "info": info(player, user, team, args); break; @@ -371,7 +402,7 @@ public class TeamCommand extends BasicCommand { return; } - BungeeCore.send(player, "§7Team §e" + team.getTeamName() + " §8[§e" + team.getTeamKuerzel() + "§8]"); + BungeeCore.send(player, "§7Team §e" + team.getTeamName() + " §8[§" + team.getTeamColor() + team.getTeamKuerzel() + "§8]"); BungeeCore.send(player, "§7Leader§8: " + SteamwarUser.get(team.getTeamLeader()).getUserName()); if(team.getMembers().size() > 1) { @@ -423,7 +454,7 @@ public class TeamCommand extends BasicCommand { for(int i = (page-1) * TEAMS_PER_PAGE; i < (page-1) * TEAMS_PER_PAGE + TEAMS_PER_PAGE && i < all.size(); i++){ Team tm = all.get(i); BungeeCore.send(player, - "§8" + tm.getTeamKuerzel() + " §e" + tm.getTeamName() + " §8[§7" + SteamwarUser.get(tm.getTeamLeader()).getUserName() + "§8]", + "§" + tm.getTeamColor() + tm.getTeamKuerzel() + " §e" + tm.getTeamName() + " §8[§7" + SteamwarUser.get(tm.getTeamLeader()).getUserName() + "§8]", "§7Teaminfo", new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/team info " + tm.getTeamKuerzel())); } @@ -490,6 +521,28 @@ public class TeamCommand extends BasicCommand { } } + private void changeColor(ProxiedPlayer player, SteamwarUser user, Team team) { + if(notLeader(player, user, team)) + return; + + if(notDuringEvent(player)) + return; + + List> colors = new ArrayList<>(); + COLOR_CODES.forEach(stringSWListEntry -> { + SWItem item = stringSWListEntry.getItem().clone(); + item.setName(stringSWListEntry.getItem().getTitle() + Team.get(user.getTeam()).getTeamKuerzel()); + colors.add(new SWListInv.SWListEntry<>(item, stringSWListEntry.getObject())); + }); + + SWListInv inv = new SWListInv<>(player, "§6Farbe wählen", colors, (click, element) -> {}); + inv.setCallback((click, element) -> { + inv.close(); + team.setTeamColor(element); + }); + inv.open(); + } + private boolean checkTeamName(ProxiedPlayer player, Team team, String arg){ if(arg.length() < 4 || arg.length() > 15){ BungeeCore.send(player, BungeeCore.CHAT_PREFIX + "§cEin Teamname muss aus 4 bis 15 Buchstaben bestehen"); @@ -566,6 +619,7 @@ public class TeamCommand extends BasicCommand { tab.add("changekuerzel"); tab.add("changename"); tab.add("changeleader"); + tab.add("changecolor"); }else if(args.length == 2){ if(args[1].equalsIgnoreCase("event")){ List coming = Event.getComing(); diff --git a/src/de/steamwar/bungeecore/inventory/SWItem.java b/src/de/steamwar/bungeecore/inventory/SWItem.java index 41f6ea11..f5a4476a 100644 --- a/src/de/steamwar/bungeecore/inventory/SWItem.java +++ b/src/de/steamwar/bungeecore/inventory/SWItem.java @@ -97,8 +97,13 @@ public class SWItem { this.hideAttributes = hideAttributes; } - public void setName(String name) { + public SWItem setName(String name) { title = name; + return this; + } + + public String getTitle() { + return title; } public void addLore(String lore) { @@ -151,4 +156,18 @@ public class SWItem { public void setLore(List lore) { this.lore = lore; } + + public SWItem clone() { + SWItem item; + if(color != 0) { + item = new SWItem(title, color); + }else { + item = new SWItem(material, title); + } + item.setLore(lore); + item.setCallback(callback); + item.setEnchanted(enchanted); + item.setHideAttributes(hideAttributes); + return item; + } } diff --git a/src/de/steamwar/bungeecore/inventory/SWListInv.java b/src/de/steamwar/bungeecore/inventory/SWListInv.java index bd437303..1161260c 100644 --- a/src/de/steamwar/bungeecore/inventory/SWListInv.java +++ b/src/de/steamwar/bungeecore/inventory/SWListInv.java @@ -40,7 +40,6 @@ public class SWListInv extends SWInventory { @Override public void open(){ - setCallback(-999, (InvCallback.ClickType click) -> close()); if(elements.size() > 54){ if(page != 0) addItem(45, new SWItem("§eSeite zurück", 10), (InvCallback.ClickType click) -> { diff --git a/src/de/steamwar/bungeecore/listeners/ChatListener.java b/src/de/steamwar/bungeecore/listeners/ChatListener.java index 0ee62653..878ea45e 100644 --- a/src/de/steamwar/bungeecore/listeners/ChatListener.java +++ b/src/de/steamwar/bungeecore/listeners/ChatListener.java @@ -166,7 +166,8 @@ public class ChatListener extends BasicListener { String msg = name + "§7»" + chatcolor + " " + message; if(user.getTeam() != 0){ - msg = "§8" + Team.get(user.getTeam()).getTeamKuerzel() + " §r" + msg; + Team team = Team.get(user.getTeam()); + msg = "§" + team.getTeamColor() + team.getTeamKuerzel() + " §r" + msg; } String[] msgSplits = msg.split(" "); diff --git a/src/de/steamwar/bungeecore/sql/Team.java b/src/de/steamwar/bungeecore/sql/Team.java index d2416cc3..12855478 100644 --- a/src/de/steamwar/bungeecore/sql/Team.java +++ b/src/de/steamwar/bungeecore/sql/Team.java @@ -34,22 +34,24 @@ public class Team { private String teamKuerzel; private String teamName; private int teamLeader; + private String teamColor; private static final List teamCache = new LinkedList<>(); - private static final Team pub = new Team(0, "PUB", "Öffentlich", 0); + private static final Team pub = new Team(0, "PUB", "Öffentlich", 0, "8"); - private Team(int id, String kuerzel, String name, int leader){ + private Team(int id, String kuerzel, String name, int leader, String color){ teamId = id; teamKuerzel = kuerzel; teamName = name; teamLeader = leader; + teamColor = color; if (id != 0) { teamCache.add(this); } } private Team(ResultSet rs) throws SQLException { - this(rs.getInt("TeamID"), rs.getString("TeamKuerzel"), rs.getString("TeamName"), rs.getInt("TeamLeader")); + this(rs.getInt("TeamID"), rs.getString("TeamKuerzel"), rs.getString("TeamName"), rs.getInt("TeamLeader"), rs.getString("TeamColor")); } public static void create(String kuerzel, String name, int leader){ @@ -58,7 +60,7 @@ public class Team { public static Team get(int id){ if(id == -1) - return new Team(-1, "?", "?", 0); + return new Team(-1, "?", "?", 0, "8"); if(id == 0) return pub; for(Team team : teamCache) @@ -108,7 +110,7 @@ public class Team { } private void updateDB(){ - SQL.update("INSERT INTO Team (TeamID, TeamKuerzel, TeamName, TeamLeader) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE TeamName = VALUES(TeamName), TeamKuerzel = VALUES(TeamKuerzel), TeamLeader = VALUES(TeamLeader)", teamId, teamKuerzel, teamName, teamLeader); + SQL.update("INSERT INTO Team (TeamID, TeamKuerzel, TeamName, TeamLeader, TeamColor) VALUES (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE TeamName = VALUES(TeamName), TeamKuerzel = VALUES(TeamKuerzel), TeamLeader = VALUES(TeamLeader), TeamColor = VALUES(TeamColor)", teamId, teamKuerzel, teamName, teamLeader, teamColor); } public int getTeamId() { @@ -142,6 +144,15 @@ public class Team { updateDB(); } + public String getTeamColor() { + return teamColor; + } + + public void setTeamColor(String teamColor) { + this.teamColor = teamColor; + updateDB(); + } + public int size(){ ResultSet rs = select("SELECT COUNT(id) FROM UserData WHERE Team = ?", teamId); try {