diff --git a/src/main/java/de/fanta/challenges/commands/CommandRegistration.java b/src/main/java/de/fanta/challenges/commands/CommandRegistration.java index e1775cd..ea99c48 100644 --- a/src/main/java/de/fanta/challenges/commands/CommandRegistration.java +++ b/src/main/java/de/fanta/challenges/commands/CommandRegistration.java @@ -18,9 +18,11 @@ import de.fanta.challenges.commands.editor.EditorSetCommand; import de.fanta.challenges.commands.event.CreateTeamsCommand; import de.fanta.challenges.commands.event.EventCommand; +import de.fanta.challenges.commands.event.EventForceTeamCommand; import de.fanta.challenges.commands.event.EventGetScoreCommand; import de.fanta.challenges.commands.event.EventSettingsCommand; import de.fanta.challenges.commands.event.EventStartCommand; +import de.fanta.challenges.commands.event.EventTeamsSetTeamSpawnCommand; import de.fanta.challenges.commands.event.EventToggleCommand; import de.fanta.challenges.commands.hp.HPAddCommand; import de.fanta.challenges.commands.hp.HPGetCommand; @@ -101,6 +103,8 @@ eventRouter.addCommandMapping(new EventGetScoreCommand(plugin), "getscore"); eventRouter.addCommandMapping(new EventStartCommand(plugin), "start"); eventRouter.addCommandMapping(new CreateTeamsCommand(), "createteams"); + eventRouter.addCommandMapping(new EventTeamsSetTeamSpawnCommand(), "setteamspawn"); + eventRouter.addCommandMapping(new EventForceTeamCommand(plugin), "forceteam"); CommandRouter bingoRouter = new CommandRouter(plugin.getCommand("bingo")); bingoRouter.addCommandMapping(new BingoCommand(plugin)); diff --git a/src/main/java/de/fanta/challenges/commands/event/EventForceTeamCommand.java b/src/main/java/de/fanta/challenges/commands/event/EventForceTeamCommand.java new file mode 100644 index 0000000..5fdbc8a --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/event/EventForceTeamCommand.java @@ -0,0 +1,96 @@ +package de.fanta.challenges.commands.event; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.teams.ChallengeTeam; +import de.fanta.challenges.teams.TeamUtils; +import de.fanta.challenges.utils.ChatUtil; +import de.iani.cubesideutils.bukkit.commands.SubCommand; +import de.iani.cubesideutils.commands.ArgsParser; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; + +public class EventForceTeamCommand extends SubCommand { + + private final Challenges plugin; + + public EventForceTeamCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (!(sender instanceof Player player)) { + ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); + return true; + } + if (sender.hasPermission("challenges.event")) { + + if (!plugin.getConfig().getBoolean("event.teams")) { + ChatUtil.sendErrorMessage(player, "Teams sind nicht Aktiv!"); + return true; + } + + if (TeamUtils.getTeams().length == 0) { + ChatUtil.sendErrorMessage(player, "Aktuell gibt es keine Teams!"); + return true; + } + + String teamname; + ChallengeTeam team = null; + String forceplayername; + Player forceplayer = null; + + if (args.hasNext()) { + forceplayername = args.getNext(); + forceplayer = Bukkit.getPlayer(forceplayername); + if (forceplayer == null) { + ChatUtil.sendErrorMessage(player, "Spieler " + ChatUtil.BLUE + forceplayername + ChatUtil.RED + " nicht gefunden."); + return true; + } + } + + if (args.hasNext()) { + teamname = args.getNext(); + team = TeamUtils.getTeam(teamname); + if (team == null) { + ChatUtil.sendErrorMessage(player, "Team " + ChatUtil.BLUE + teamname + ChatUtil.RED + " nicht gefunden."); + return true; + } + } + + TeamUtils.selectTeam(forceplayer, team); + ChatUtil.sendNormalMessage(player, ChatUtil.BLUE + forceplayer.getName() + ChatUtil.GREEN + " ist nun in Team " + team.getChatColor() + team.getName()); + + } else { + ChatUtil.sendErrorMessage(sender, "Keine Berechtigung!"); + } + return true; + } + + @Override + public Collection onTabComplete(CommandSender sender, Command command, String alias, ArgsParser args) { + args.getNext(null); + if (args.hasNext()) { + Collection teamNames = new ArrayList<>(); + if (TeamUtils.getTeams() != null) { + for (ChallengeTeam team : TeamUtils.getTeams()) { + teamNames.add(team.getName()); + } + } + + if (!teamNames.isEmpty()) { + return teamNames; + } else { + return Collections.emptyList(); + } + + } + return Bukkit.getOnlinePlayers().stream().map(Player::getName).toList(); + } +} diff --git a/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java b/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java index 915b4b9..01d0f34 100644 --- a/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java +++ b/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java @@ -2,6 +2,7 @@ import de.fanta.challenges.Challenges; import de.fanta.challenges.ServerType; +import de.fanta.challenges.teams.ChallengeTeam; import de.fanta.challenges.teams.TeamUtils; import de.fanta.challenges.utils.ChatUtil; import de.fanta.challenges.utils.guiutils.GUIUtils; @@ -9,6 +10,7 @@ import de.iani.cubesideutils.commands.ArgsParser; import org.bukkit.Bukkit; import org.bukkit.GameRule; +import org.bukkit.OfflinePlayer; import org.bukkit.World; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -53,6 +55,17 @@ } else { TeamUtils.setAllPlayerWithoutTeamToTeam(); Bukkit.getOnlinePlayers().forEach(p -> plugin.getScoreManager().updateTeamScore(p, 0)); + + + for (ChallengeTeam team : TeamUtils.getTeams()) { + if (team.getSpawn() != null) { + for (OfflinePlayer teamofflineplayer : TeamUtils.getPlayersInTeam(team)) { + if (teamofflineplayer instanceof Player teamplayer) { + teamplayer.teleport(team.getSpawn()); + } + } + } + } } } }, 10, 20); diff --git a/src/main/java/de/fanta/challenges/commands/event/EventTeamsSetTeamSpawnCommand.java b/src/main/java/de/fanta/challenges/commands/event/EventTeamsSetTeamSpawnCommand.java new file mode 100644 index 0000000..5eee2f7 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/event/EventTeamsSetTeamSpawnCommand.java @@ -0,0 +1,56 @@ +package de.fanta.challenges.commands.event; + +import de.fanta.challenges.teams.ChallengeTeam; +import de.fanta.challenges.teams.TeamUtils; +import de.fanta.challenges.utils.ChatUtil; +import de.iani.cubesideutils.bukkit.commands.SubCommand; +import de.iani.cubesideutils.commands.ArgsParser; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; + +public class EventTeamsSetTeamSpawnCommand extends SubCommand { + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (!(sender instanceof Player player)) { + ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); + return true; + } + if (sender.hasPermission("challenges.event")) { + if (args.hasNext()) { + String teamname = args.getNext(); + ChallengeTeam team = TeamUtils.getTeam(teamname); + if (team != null) { + team.setSpawn(player.getLocation()); + ChatUtil.sendNormalMessage(player, "Spawn für Team " + team.getChatColor() + team.getName() + ChatUtil.GREEN + " wurde gesetzt."); + } else { + ChatUtil.sendErrorMessage(player, "Team " + ChatUtil.BLUE + teamname + ChatUtil.RED + " nicht gefunden."); + } + } else { + ChatUtil.sendErrorMessage(sender, "/event setTeamSpawn "); + return true; + } + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Keine Berechtigung!"); + } + return true; + } + + @Override + public Collection onTabComplete(CommandSender sender, Command command, String alias, ArgsParser args) { + if (TeamUtils.getTeams() != null) { + Collection teamNames = new ArrayList<>(); + for (ChallengeTeam team : TeamUtils.getTeams()) { + teamNames.add(team.getName()); + } + return teamNames; + } + return Collections.emptyList(); + } +} diff --git a/src/main/java/de/fanta/challenges/gravestones/GravestoneListener.java b/src/main/java/de/fanta/challenges/gravestones/GravestoneListener.java index db8e8d8..fa67db5 100644 --- a/src/main/java/de/fanta/challenges/gravestones/GravestoneListener.java +++ b/src/main/java/de/fanta/challenges/gravestones/GravestoneListener.java @@ -34,14 +34,11 @@ return; } - - Player p = e.getEntity(); World world = p.getLocation().getWorld(); - if (world != null) { - if (world.getGameRuleValue(GameRule.KEEP_INVENTORY) == true) { - return; - } + + if (world != null && world.getGameRuleValue(GameRule.KEEP_INVENTORY) == true) { + return; } if (p.getLocation().getBlockY() > p.getLocation().getWorld().getMinHeight() - 3) { @@ -62,7 +59,6 @@ if (container.get(GravestoneUtils.getUUIDKey(), PersistentDataType.STRING) != null) { e.setCancelled(true); } - } @EventHandler diff --git a/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java b/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java index 9aa2c75..0182d67 100644 --- a/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java +++ b/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java @@ -2,7 +2,6 @@ import de.fanta.challenges.Challenges; import de.fanta.challenges.challenges.DeathrunChallengeEvent; -import de.fanta.challenges.teams.TeamUtils; import de.fanta.challenges.utils.ChatUtil; import de.fanta.challenges.utils.guiutils.GUIUtils; import org.bukkit.Bukkit; @@ -47,11 +46,9 @@ } else { EVENT_GUI.setItem(NULL_EVENT_INDEX, GUIUtils.EMPTY_ICON); } - if (!plugin.getConfig().getBoolean("event.teams")) { - EVENT_GUI.setItem(TEAM_INDEX, GUIUtils.createGuiItem(Material.RED_BED, "Teams deaktiviert")); - } else { - EVENT_GUI.setItem(TEAM_INDEX, GUIUtils.createGuiItem(Material.LIME_BED, "Teams aktiviert", true)); - } + + EVENT_GUI.setItem(TEAM_INDEX, GUIUtils.createGuiItem(Material.ORANGE_BED, ChatUtil.BLUE + "Team Settings")); + if (Objects.equals(plugin.getConfig().getString("event.type"), "build")) { EVENT_GUI.setItem(BUILD_EVENT_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_PICKAXE, ChatUtil.GREEN + "Build Event", true, ChatUtil.GREEN + "Baue so viele Blöcke wie möglich ab", ChatUtil.RED + "Einen Block setzen gibt einen Minus Punkt")); } else { @@ -108,29 +105,6 @@ GUIUtils.sendTitleToAll("Event", "Event beendet", ChatUtil.RED); } } - case TEAM_INDEX -> { - - if (TeamUtils.getTeams() != null && TeamUtils.getTeamSize() != 0) { - if (!plugin.getConfig().getBoolean("event.teams")) { - GUIUtils.setConfig("event.teams", true); - GUIUtils.sendTitleToAll("Event", "Teams aktiviert", ChatUtil.GREEN); - for (Player pp : Bukkit.getOnlinePlayers()) { - plugin.getSBManager().removeScoreboard(pp); - pp.getInventory().setItem(8, TeamUtils.selctItem()); - } - plugin.getScoreManager().resetScores(); - plugin.getSBManager().updateEventScoreboard(); - } else { - GUIUtils.setConfig("event.teams", false); - GUIUtils.sendTitleToAll("Event", "Teams deaktiviert", ChatUtil.RED); - for (Player pp : Bukkit.getOnlinePlayers()) { - pp.getInventory().removeItem(TeamUtils.selctItem()); - } - } - } else { - ChatUtil.sendErrorMessage(p, "Du musst erst teams anlegen! /event createteams "); - } - } case BUILD_EVENT_INDEX -> { GUIUtils.setConfig("event.type", "build"); GUIUtils.sendTitleToAll("Event", "Baue die meisten Blöcke ab!", ChatUtil.GREEN); @@ -166,6 +140,7 @@ switch (slot) { case BINGO_ITEMS_INDEX -> EventItemsGui.openEventGUI(p); case SAMMEL_FIEBER_SETTINGS_INDEX -> SammelFieberSettingsGui.createSammelFieberSettingsGUI(p); + case TEAM_INDEX -> TeamSettingsGUI.createTeamSettingsGUI(p); case CLOSE_IDEX -> p.closeInventory(); } } diff --git a/src/main/java/de/fanta/challenges/guis/eventgui/TeamSettingsGUI.java b/src/main/java/de/fanta/challenges/guis/eventgui/TeamSettingsGUI.java new file mode 100644 index 0000000..9715b0b --- /dev/null +++ b/src/main/java/de/fanta/challenges/guis/eventgui/TeamSettingsGUI.java @@ -0,0 +1,117 @@ +package de.fanta.challenges.guis.eventgui; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.teams.TeamUtils; +import de.fanta.challenges.utils.ChatUtil; +import de.fanta.challenges.utils.guiutils.GUIUtils; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +public class TeamSettingsGUI implements Listener { + + private static final Challenges plugin = Challenges.getPlugin(); + + private static final int TEAM_INDEX = 0; + private static final int TEAM_SELECT_INDEX = 2; + private static final int AUTOTEAM_BY_JOIN_INDEX = 4; + + public static final int INVENTORY_SIZE = 5; + public static final Inventory TEAM_SETTINGS_GUI = Bukkit.createInventory(null, InventoryType.HOPPER, plugin.getGUIPREFIX() + " >> Team Settings"); + + public static void createTeamSettingsGUI(Player p) { + if (!plugin.getConfig().getBoolean("event.teams")) { + TEAM_SETTINGS_GUI.setItem(TEAM_INDEX, GUIUtils.createGuiItem(Material.RED_BED, "Teams deaktiviert")); + } else { + TEAM_SETTINGS_GUI.setItem(TEAM_INDEX, GUIUtils.createGuiItem(Material.LIME_BED, "Teams aktiviert", true)); + } + + if (!plugin.getConfig().getBoolean("event.teamselect")) { + TEAM_SETTINGS_GUI.setItem(TEAM_SELECT_INDEX, GUIUtils.createGuiItem(Material.RED_CONCRETE_POWDER, "Team auswahl deaktiviert")); + } else { + TEAM_SETTINGS_GUI.setItem(TEAM_SELECT_INDEX, GUIUtils.createGuiItem(Material.LIME_CONCRETE_POWDER, "Team auswahl aktiviert", true)); + } + + if (!plugin.getConfig().getBoolean("event.autoteams")) { + TEAM_SETTINGS_GUI.setItem(AUTOTEAM_BY_JOIN_INDEX, GUIUtils.createGuiItem(Material.RED_CONCRETE_POWDER, "Autoteams by Join deaktiviert")); + } else { + TEAM_SETTINGS_GUI.setItem(AUTOTEAM_BY_JOIN_INDEX, GUIUtils.createGuiItem(Material.LIME_CONCRETE_POWDER, "Autoteams by Join aktiviert", true)); + } + + + for (int i = 0; i < INVENTORY_SIZE; i++) { + ItemStack item = TEAM_SETTINGS_GUI.getItem(i); + if (item == null || item.getType() == Material.AIR) { + TEAM_SETTINGS_GUI.setItem(i, GUIUtils.EMPTY_ICON); + } + } + p.openInventory(TEAM_SETTINGS_GUI); + } + + @EventHandler + public void onInventoryClick(InventoryClickEvent e) { + int slot = e.getRawSlot(); + Player p = (Player) e.getWhoClicked(); + if (TEAM_SETTINGS_GUI.equals(e.getClickedInventory())) { + switch (slot) { + case TEAM_INDEX -> { + if (TeamUtils.getTeams() != null && TeamUtils.getTeamSize() != 0) { + if (!plugin.getConfig().getBoolean("event.teams")) { + GUIUtils.setConfig("event.teams", true); + GUIUtils.sendTitleToAll("Event", "Teams aktiviert", ChatUtil.GREEN); + plugin.getScoreManager().resetScores(); + plugin.getSBManager().updateEventScoreboard(); + } else { + GUIUtils.setConfig("event.teams", false); + GUIUtils.sendTitleToAll("Event", "Teams deaktiviert", ChatUtil.RED); + for (Player pp : Bukkit.getOnlinePlayers()) { + pp.getInventory().removeItem(TeamUtils.selctItem()); + } + } + } else { + ChatUtil.sendErrorMessage(p, "Du musst erst teams anlegen! /event createteams "); + } + } + + case TEAM_SELECT_INDEX -> { + if (TeamUtils.getTeams() != null && TeamUtils.getTeamSize() != 0) { + if (!plugin.getConfig().getBoolean("event.teamselect")) { + GUIUtils.setConfig("event.teamselect", true); + GUIUtils.sendTitleToAll("Event", "Team auswahl aktiviert", ChatUtil.GREEN); + for (Player pp : Bukkit.getOnlinePlayers()) { + plugin.getSBManager().removeScoreboard(pp); + pp.getInventory().setItem(8, TeamUtils.selctItem()); + } + } else { + GUIUtils.setConfig("event.teamselect", false); + GUIUtils.sendTitleToAll("Event", "Team auswahl deaktiviert", ChatUtil.RED); + for (Player pp : Bukkit.getOnlinePlayers()) { + pp.getInventory().removeItem(TeamUtils.selctItem()); + } + } + } else { + ChatUtil.sendErrorMessage(p, "Du musst erst teams anlegen! /event createteams "); + } + } + + case AUTOTEAM_BY_JOIN_INDEX -> { + if (plugin.getConfig().getBoolean("event.autoteams")) { + GUIUtils.setConfig("event.autoteams", false); + GUIUtils.sendTitleToAll("Event", "Autoteams by Join deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("event.autoteams", true); + GUIUtils.sendTitleToAll("Event", "Autoteams by Join aktiviert", ChatUtil.GREEN); + } + } + } + createTeamSettingsGUI(p); + e.setCancelled(true); + } + } +} diff --git a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java index fd48ddd..b6e5b4f 100644 --- a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java +++ b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java @@ -10,6 +10,7 @@ import de.fanta.challenges.guis.eventgui.SammelFieberSettingsGui; import de.fanta.challenges.guis.eventgui.EventItemsGui; import de.fanta.challenges.guis.eventgui.TeamSelectGUI; +import de.fanta.challenges.guis.eventgui.TeamSettingsGUI; import de.fanta.challenges.guis.settingsgui.MainGui; import de.fanta.challenges.guis.settingsgui.OtherSettingsGui; import de.fanta.challenges.guis.settingsgui.ServerSettingsGui; @@ -31,6 +32,7 @@ pM.registerEvents(new EntityListener(), plugin); pM.registerEvents(new PlayerListener(), plugin); pM.registerEvents(new VoidListener(), plugin); + pM.registerEvents(new TimerGui(), plugin); pM.registerEvents(new ResetGui(), plugin); pM.registerEvents(new MainGui(), plugin); @@ -44,6 +46,7 @@ pM.registerEvents(new CommandBlockListener(), plugin); pM.registerEvents(new TeleportGUI(), plugin); pM.registerEvents(new TeamSelectGUI(), plugin); + pM.registerEvents(new TeamSettingsGUI(), plugin); pM.registerEvents(new GravestoneListener(), plugin); diff --git a/src/main/java/de/fanta/challenges/teams/TeamListener.java b/src/main/java/de/fanta/challenges/teams/TeamListener.java index aa72a6d..38cdc66 100644 --- a/src/main/java/de/fanta/challenges/teams/TeamListener.java +++ b/src/main/java/de/fanta/challenges/teams/TeamListener.java @@ -2,6 +2,8 @@ import de.fanta.challenges.Challenges; import de.fanta.challenges.guis.eventgui.TeamSelectGUI; +import de.fanta.challenges.guis.eventgui.TeamSettingsGUI; +import de.fanta.challenges.scoreboard.ScoreManager; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -13,15 +15,22 @@ import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerLoginEvent; +import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerSwapHandItemsEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import java.util.HashMap; +import java.util.UUID; + public class TeamListener implements Listener { private final Challenges plugin = Challenges.getPlugin(); + private static final HashMap playerTeams = new HashMap<>(); + @EventHandler public void onSwapItem(PlayerSwapHandItemsEvent e) { Player p = e.getPlayer(); @@ -95,7 +104,7 @@ @EventHandler(priority = EventPriority.MONITOR) public void onJoin(PlayerJoinEvent e) { Inventory inventory = e.getPlayer().getInventory(); - if (plugin.getConfig().getBoolean("event.teams") && !plugin.getTimer().isRunning()) { + if (plugin.getConfig().getBoolean("event.teams") && plugin.getConfig().getBoolean("event.teamselect") && !plugin.getTimer().isRunning()) { inventory.setItem(8, TeamUtils.selctItem()); } else { inventory.removeItem(TeamUtils.selctItem()); @@ -104,10 +113,34 @@ if (plugin.getConfig().getBoolean("event.teams") && plugin.getTimer().isRunning()) { if (!plugin.getVanish().isVanish(e.getPlayer())) { if (TeamUtils.getPlayerTeam(e.getPlayer()) == null) { - TeamUtils.setAllPlayerWithoutTeamToTeam(); - plugin.getScoreManager().updateTeamScore(e.getPlayer(), 0); + if (playerTeams.containsKey(e.getPlayer().getUniqueId())) { + TeamUtils.selectTeam(e.getPlayer(), playerTeams.get(e.getPlayer().getUniqueId())); + } else { + TeamUtils.setAllPlayerWithoutTeamToTeam(); + plugin.getScoreManager().updateTeamScore(e.getPlayer(), 0); + } } } } } + + @EventHandler + public void onLogin(PlayerLoginEvent e) { + if (plugin.getConfig().getBoolean("event.teams") && !plugin.getConfig().getBoolean("event.autoteams") && plugin.getTimer().isRunning()) { + if (!playerTeams.containsKey(e.getPlayer().getUniqueId())) { + e.setResult(PlayerLoginEvent.Result.KICK_OTHER); + e.setKickMessage("Bei diesem Event kannst du nicht nach joinen."); + } + } + } + + @EventHandler + public void onDisconect(PlayerQuitEvent e) { + if (plugin.getConfig().getBoolean("event.teams") && plugin.getTimer().isRunning()) { + ChallengeTeam team = TeamUtils.getPlayerTeam(e.getPlayer()); + if (team != null) { + playerTeams.put(e.getPlayer().getUniqueId(), team); + } + } + } } diff --git a/src/main/java/de/fanta/challenges/teams/TeamUtils.java b/src/main/java/de/fanta/challenges/teams/TeamUtils.java index 17b8a3b..91b59c0 100644 --- a/src/main/java/de/fanta/challenges/teams/TeamUtils.java +++ b/src/main/java/de/fanta/challenges/teams/TeamUtils.java @@ -25,10 +25,11 @@ import java.util.Collections; import java.util.HashMap; import java.util.Set; +import java.util.UUID; public class TeamUtils { - private static final HashMap playerTeams = new HashMap<>(); + private static final HashMap playerTeams = new HashMap<>(); private static final NamespacedKey selectKey = new NamespacedKey(Challenges.getPlugin(), "selectitem"); private static ChallengeTeam[] teams; private static int teamsize; @@ -191,7 +192,7 @@ } public static void selectTeam(Player player, ChallengeTeam team) { - ChallengeTeam oldteam = playerTeams.get(player); + ChallengeTeam oldteam = playerTeams.get(player.getUniqueId()); if (team != null && !Challenges.getPlugin().getConfig().getBoolean("event.teams")) { ChatUtil.sendErrorMessage(player, "In dieser Arena können keine Teams gewählt werden!"); return; @@ -205,7 +206,7 @@ ChatUtil.sendNormalMessage(player, "Das Team " + team.getChatColor() + team.getName() + ChatUtil.GREEN + " ist voll."); return; } - playerTeams.put(player, team); + playerTeams.put(player.getUniqueId(), team); ChatUtil.sendNormalMessage(player, "Du bist nun in Team " + team.getChatColor() + team.getName()); if (oldteam != null) { diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 5a1c675..8851f69 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -48,6 +48,8 @@ enabled: false type: nix teams: false + teamselect: false + autoteams: false sammelfieber: item: AIR money: 100