duo mode works but spaghetti (+ 2 small known bugs)
This commit is contained in:
		
					parent
					
						
							
								45ad276699
							
						
					
				
			
			
				commit
				
					
						70605461ef
					
				
			
		
					 14 changed files with 413 additions and 61 deletions
				
			
		|  | @ -2,9 +2,12 @@ package de.lunarakai.minecleaner; | |||
| 
 | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| import java.util.*; | ||||
| import java.util.Arrays; | ||||
| import java.util.Collection; | ||||
| import java.util.HashMap; | ||||
| import java.util.Iterator; | ||||
| import java.util.UUID; | ||||
| import java.util.logging.Level; | ||||
| 
 | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.Location; | ||||
| import org.bukkit.block.Block; | ||||
|  | @ -119,13 +122,18 @@ public class ArenaList { | |||
|     } | ||||
| 
 | ||||
|     public MinecleanerArena getPlayerArena(Player player) { | ||||
|         if(playersInArena.get(player.getUniqueId()) == null) { | ||||
|             return null; | ||||
|         } | ||||
|         int arraySize = plugin.getGroupManager().getGroup(player) != null ? plugin.getGroupManager().getGroup(player).getPlayers().size() : 1; | ||||
|         Player[] players = new Player[arraySize]; | ||||
| 
 | ||||
|         if(plugin.getGroupManager().getGroup(player) != null) { | ||||
|             int i = 0; | ||||
|             for(Iterator<UUID> iterator = plugin.getGroupManager().getGroup(player).getPlayers().iterator(); iterator.hasNext();) { | ||||
|                 Player iteratorPlayer = Bukkit.getPlayer(iterator.next()); | ||||
|                 Arrays.fill(players, iteratorPlayer); | ||||
|                 players[i] = iteratorPlayer; | ||||
|                 i++; | ||||
|             } | ||||
|         } else { | ||||
|             Arrays.fill(players, player); | ||||
|  | @ -134,21 +142,41 @@ public class ArenaList { | |||
|     } | ||||
| 
 | ||||
|     public MinecleanerArena getPlayerArena(Player[] players) { | ||||
|         if(plugin.getGroupManager().getGroup(players[0]) != null) { | ||||
|             MinecleanerArena[] arenas = new MinecleanerArena[players.length]; | ||||
|             for(int i = 0; i < players.length; i++) { | ||||
|                 arenas[i] = playersInArena.get(players[i].getUniqueId()); | ||||
|             } | ||||
|             boolean match = Arrays.stream(arenas).allMatch(s -> s.equals(arenas[0])); | ||||
|             if(match) { | ||||
|                 return arenas[0]; | ||||
|             } else { | ||||
|                 return null; | ||||
|             } | ||||
|         } else { | ||||
|             return playersInArena.get(players[0].getUniqueId()); | ||||
|         } | ||||
| 
 | ||||
|         return playersInArena.get(players[0].getUniqueId()); | ||||
| //        if(plugin.getGroupManager().getGroup(players[0]) != null) { | ||||
| //            if(players.length == 1) { | ||||
| //                return null; | ||||
| //            } | ||||
| //            MinecleanerArena[] arenas = new MinecleanerArena[players.length]; | ||||
| //            for(int i = 0; i < players.length; i++) { | ||||
| //                if(playersInArena.get(players[i].getUniqueId()) != null) { | ||||
| //                    if(playersInArena.get(Bukkit.getPlayer(plugin.getGroupManager().getGroup(players[0]).getOwner()).getUniqueId()) != null)  { | ||||
| //                        arenas[i] = playersInArena.get(players[i].getUniqueId()); | ||||
| //                        continue; | ||||
| //                    } | ||||
| //                    arenas[i] = null; | ||||
| //                } else { | ||||
| //                    arenas = null; | ||||
| //                } | ||||
| //            } | ||||
| //            if(playersInArena.get(players[0].getUniqueId()) == null)  { | ||||
| //                return null; | ||||
| //            } | ||||
| // | ||||
| //            if(arenas != null && arenas[0] != null) { | ||||
| //                MinecleanerArena[] finalArenas = arenas; | ||||
| //                boolean match = Arrays.stream(arenas).allMatch(s -> s.equals(finalArenas[0])); | ||||
| //                if(match) { | ||||
| //                    return arenas[0]; | ||||
| //                } else { | ||||
| //                    return null; | ||||
| //                } | ||||
| //            } | ||||
| //            return null; | ||||
| // | ||||
| //        } else { | ||||
| //            return playersInArena.get(players[0].getUniqueId()); | ||||
| //        } | ||||
|     } | ||||
| 
 | ||||
|     public MinecleanerArena getArenaAtBlock(Block block) { | ||||
|  |  | |||
|  | @ -1,12 +1,14 @@ | |||
| package de.lunarakai.minecleaner; | ||||
| 
 | ||||
| import java.util.HashSet; | ||||
| import java.util.Iterator; | ||||
| import java.util.Set; | ||||
| import java.util.UUID; | ||||
| import net.kyori.adventure.text.Component; | ||||
| import net.kyori.adventure.text.format.NamedTextColor; | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.entity.Player; | ||||
| 
 | ||||
| import java.util.*; | ||||
| 
 | ||||
| public class MinecleanerGroupManager { | ||||
| 
 | ||||
|     public class MinecleanerGroup { | ||||
|  | @ -19,6 +21,8 @@ public class MinecleanerGroupManager { | |||
|             this.owner = owner; | ||||
|             this.players = new HashSet<>(); | ||||
|             this.invitedPlayers = new HashSet<>(); | ||||
| 
 | ||||
|             players.add(owner); | ||||
|         } | ||||
| 
 | ||||
|         public UUID getOwner() { | ||||
|  | @ -90,7 +94,7 @@ public class MinecleanerGroupManager { | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private final UUID groupCreator; | ||||
|     private UUID groupCreator; | ||||
|     private final Set<MinecleanerGroup> groups; | ||||
| 
 | ||||
|     public MinecleanerGroupManager() { | ||||
|  | @ -103,7 +107,6 @@ public class MinecleanerGroupManager { | |||
|         if (getGroup(player) != null) { | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         groups.add(new MinecleanerGroup(player.getUniqueId())); | ||||
|     } | ||||
| 
 | ||||
|  | @ -127,7 +130,7 @@ public class MinecleanerGroupManager { | |||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     private void deleteGroup(MinecleanerGroup minecleanerGroup) { | ||||
|     public void deleteGroup(MinecleanerGroup minecleanerGroup) { | ||||
|         groups.remove(minecleanerGroup); | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,10 +1,11 @@ | |||
| package de.lunarakai.minecleaner; | ||||
| 
 | ||||
| import java.sql.Array; | ||||
| import java.util.Arrays; | ||||
| import java.util.Iterator; | ||||
| import java.util.UUID; | ||||
| 
 | ||||
| import java.util.logging.Level; | ||||
| import net.kyori.adventure.text.Component; | ||||
| import net.kyori.adventure.text.format.NamedTextColor; | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.Location; | ||||
| import org.bukkit.block.Block; | ||||
|  | @ -101,13 +102,18 @@ public class MinecleanerListener implements Listener { | |||
|                     e.setCancelled(true); | ||||
|                     if(e.getHand() == EquipmentSlot.HAND) { | ||||
|                         if(arena.getArenaStatus() == ArenaStatus.INACTIVE) { | ||||
|                             int arraySize = plugin.getGroupManager().getGroup(e.getPlayer()) != null ? plugin.getGroupManager().getGroup(e.getPlayer()).getPlayers().size() : 1; | ||||
|                             int arraySize = 1; | ||||
|                             if(plugin.getGroupManager().getGroup(e.getPlayer()) != null) { | ||||
|                                 arraySize = plugin.getGroupManager().getGroup(e.getPlayer()).getPlayers().size(); | ||||
|                             } | ||||
|                             Player[] players = new Player[arraySize]; | ||||
| 
 | ||||
|                             if(plugin.getGroupManager().getGroup(e.getPlayer()) != null) { | ||||
|                                 int i = 0; | ||||
|                                 for(Iterator<UUID> iterator = plugin.getGroupManager().getGroup(e.getPlayer()).getPlayers().iterator(); iterator.hasNext();) { | ||||
|                                     Player iteratorPlayer = Bukkit.getPlayer(iterator.next()); | ||||
|                                     Arrays.fill(players, iteratorPlayer); | ||||
|                                     players[i] = iteratorPlayer; | ||||
|                                     i++; | ||||
|                                 } | ||||
|                             } else { | ||||
|                                 Arrays.fill(players, e.getPlayer()); | ||||
|  | @ -187,12 +193,14 @@ public class MinecleanerListener implements Listener { | |||
|         final Player player = e.getPlayer(); | ||||
|         MinecleanerArena arena = plugin.getArenaList().getPlayerArena(player); | ||||
|         if(arena != null) { | ||||
|             if(arena.isTooFarAway(player) && plugin.getGroupManager().getGroup(player) == null) { | ||||
|                 player.sendMessage(ChatColor.YELLOW + "Du hast dich zu weit von der Arena entfernt. Das Spiel wurde abgebrochen."); | ||||
|                 Player[] players = new Player[] { | ||||
|                         player | ||||
|                 }; | ||||
|                 plugin.getManager().leaveArena(players, false, true); | ||||
|             if(plugin.getGroupManager().getGroup(player) == null) { | ||||
|                 if((arena.isTooFarAway(player))) { | ||||
|                     player.sendMessage(ChatColor.YELLOW + "Du hast dich zu weit von der Arena entfernt. Das Spiel wurde abgebrochen."); | ||||
|                     Player[] players = new Player[] { | ||||
|                             player | ||||
|                     }; | ||||
|                     plugin.getManager().leaveArena(players, false, true); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | @ -222,6 +230,35 @@ public class MinecleanerListener implements Listener { | |||
|                 }; | ||||
|                 plugin.getManager().leaveArena(players, false, true); | ||||
|             } | ||||
|         } else { | ||||
|             if(plugin.getGroupManager().getGroup(e.getPlayer()) != null) { | ||||
|                 if(plugin.getGroupManager().getGroup(e.getPlayer()).getOwner().equals(e.getPlayer())) { | ||||
|                     int i = 0; | ||||
|                     Player[] players = new Player[plugin.getGroupManager().getGroup(e.getPlayer()).getPlayers().size()]; | ||||
|                     for(Iterator<UUID> iterator = plugin.getGroupManager().getGroup(e.getPlayer()).getPlayers().iterator(); iterator.hasNext();) { | ||||
|                         Player iteratorPlayer = Bukkit.getPlayer(iterator.next()); | ||||
|                         if(iteratorPlayer == e.getPlayer()) { | ||||
|                             i++; | ||||
|                             continue; | ||||
|                         } | ||||
|                         players[i] = iteratorPlayer; | ||||
|                         players[i].sendMessage(Component.text("Die " + plugin.getDisplayedPluginName() + "gruppe in der du dich befindest wurde aufgelöst. Die Person, welche die Gruppe erstellt hat, hat den Server verlassen", NamedTextColor.YELLOW)); | ||||
|                         i++; | ||||
|                     } | ||||
|                     if(plugin.getArenaList().getPlayerArena(e.getPlayer()) != null) { | ||||
|                         plugin.getManager().leaveArena(players, false, true); | ||||
|                     } | ||||
|                     return; | ||||
|                 } | ||||
|                 Player[] players = new Player[] { | ||||
|                         e.getPlayer() | ||||
|                 }; | ||||
|                 plugin.getGroupManager().getGroup(e.getPlayer()).removePlayerFromGroup(e.getPlayer()); | ||||
|                 if(plugin.getArenaList().getPlayerArena(e.getPlayer()) != null) { | ||||
|                     plugin.getManager().leaveArena(players, false, false); | ||||
|                 } | ||||
| 
 | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,10 +1,17 @@ | |||
| package de.lunarakai.minecleaner; | ||||
| 
 | ||||
| import de.iani.cubesidestats.api.SettingKey; | ||||
| 
 | ||||
| import java.util.*; | ||||
| import java.util.ArrayList; | ||||
| import java.util.Arrays; | ||||
| import java.util.HashMap; | ||||
| import java.util.Iterator; | ||||
| import java.util.List; | ||||
| import java.util.Map.Entry; | ||||
| import java.util.Objects; | ||||
| import java.util.UUID; | ||||
| import java.util.function.Consumer; | ||||
| import net.kyori.adventure.text.Component; | ||||
| import net.kyori.adventure.text.format.NamedTextColor; | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.Material; | ||||
| import org.bukkit.OfflinePlayer; | ||||
|  | @ -130,11 +137,13 @@ public class MinecleanerManager { | |||
| 
 | ||||
| 
 | ||||
|     public void joinArena(Player[] players, MinecleanerArena arena) { | ||||
|         if (!players[0].hasPermission(MinecleanerPlugin.PERMISSION_PLAY)) { | ||||
|         if ((plugin.getGroupManager().getGroup(players[0]) == null && !players[0].hasPermission(MinecleanerPlugin.PERMISSION_PLAY)) || (plugin.getGroupManager().getGroup(players[0]) != null && !Bukkit.getPlayer(plugin.getGroupManager().getGroup(players[0]).getOwner()).hasPermission(MinecleanerPlugin.PERMISSION_PLAY))) { | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         Preconditions.checkArgument(plugin.getArenaList().getPlayerArena(players) == null, "player is in an arena"); | ||||
|         Preconditions.checkArgument(arena.getArenaStatus() == ArenaStatus.INACTIVE, "arena is in use"); | ||||
| 
 | ||||
|         arena.addJoiningPlayers(players); | ||||
|         plugin.getArenaList().setArenaForPlayers(players, arena); | ||||
|         for(int i = 0; i < players.length; i++) { | ||||
|  | @ -157,23 +166,34 @@ public class MinecleanerManager { | |||
|         } else { | ||||
|             arena = plugin.getArenaList().getPlayerArena(players); | ||||
|         } | ||||
|         Player[] players1 = group != null ? new Player[group.getPlayers().size()] : new Player[1]; | ||||
|         if(plugin.getGroupManager().getGroup(players[0]) != null) { | ||||
|             int i = 0; | ||||
|             for(Iterator<UUID> iterator = group.getPlayers().iterator(); iterator.hasNext();) { | ||||
|                 Player iteratorPlayer = Bukkit.getPlayer(iterator.next()); | ||||
|                 players1[i] = iteratorPlayer; | ||||
|                 i++; | ||||
|             } | ||||
|         } else { | ||||
|             players1 = players; | ||||
|         } | ||||
| 
 | ||||
|         Preconditions.checkArgument(arena != null, "player is in no arena"); | ||||
| 
 | ||||
|         if(reset) { | ||||
|             arena.setArenaStaus(ArenaStatus.INACTIVE); | ||||
|             for(int i = 0; i < players.length; i++) { | ||||
|                 players[i].closeInventory(); | ||||
|             for(int i = 0; i < players1.length; i++) { | ||||
|                 players1[i].closeInventory(); | ||||
|             } | ||||
|             arena.removePlayers(); | ||||
|             if(message) { | ||||
|                 for(int i = 0; i < players.length; i++) { | ||||
|                     players[i].sendMessage(ChatColor.YELLOW + "Das " + plugin.getDisplayedPluginName() + "spiel wurde abgebrochen."); | ||||
|                     players1[i].sendMessage(ChatColor.YELLOW + "Das " + plugin.getDisplayedPluginName() + "spiel wurde abgebrochen."); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         plugin.getArenaList().setArenaForPlayers(players, null); | ||||
|         plugin.getArenaList().setArenaForPlayers(players1, null); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -182,16 +202,53 @@ public class MinecleanerManager { | |||
|         Preconditions.checkArgument(arena != null, "player is in no arena"); | ||||
|         Preconditions.checkState(arena.getArenaStatus() == ArenaStatus.CONFIRM_PLAYING, "not confirming playing status"); | ||||
|         arena.startNewGame(); | ||||
|         for(int i = 0; i < players.length; i++) { | ||||
|             players[i].sendMessage(ChatColor.YELLOW + "Du hast eine neue Runde " + plugin.getDisplayedPluginName() + " gestartet."); | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         if(plugin.getGroupManager().getGroup(players[0]) != null) { | ||||
|             for(Iterator<UUID> iterator = plugin.getGroupManager().getGroup(players[0]).getPlayers().iterator(); iterator.hasNext();) { | ||||
|                 Player iteratorPlayer = Bukkit.getPlayer(iterator.next()); | ||||
|                 assert iteratorPlayer != null; | ||||
|                 iteratorPlayer.sendMessage(Component.text("Du hast eine neue Runde " + plugin.getDisplayedPluginName() + " gestartet.", NamedTextColor.YELLOW)); | ||||
|             } | ||||
|         } else { | ||||
|             players[0].sendMessage(Component.text("Du hast eine neue Runde " + plugin.getDisplayedPluginName() + " gestartet.", NamedTextColor.YELLOW)); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public void handleGameover(Player[] player, MinecleanerArena arena, boolean isSuccessfullyCleared) { | ||||
|         if(plugin.getGroupManager().getGroup(player[0]) != null) { | ||||
|             // Todo | ||||
|             //  eigene Extra Punkte | ||||
|             World world = player[0].getWorld(); | ||||
|             if(!isSuccessfullyCleared) { | ||||
|                 world.playSound(player[0].getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 0.5f, 0.5f); | ||||
| 
 | ||||
|                 int arraySize = plugin.getGroupManager().getGroup(player[0]) != null ? plugin.getGroupManager().getGroup(player[0]).getPlayers().size() : 1; | ||||
|                 Player[] players = new Player[arraySize]; | ||||
| 
 | ||||
|                 for(Iterator<UUID> iterator = plugin.getGroupManager().getGroup(player[0]).getPlayers().iterator(); iterator.hasNext();) { | ||||
|                         Player iteratorPlayer = Bukkit.getPlayer(iterator.next()); | ||||
|                     assert iteratorPlayer != null; | ||||
|                     iteratorPlayer.sendMessage(Component.text("Game Over! Ihr konntest das " + plugin.getDisplayedPluginName() + "-Feld nicht erfolgreich lösen!", NamedTextColor.YELLOW)); | ||||
|                 } | ||||
| 
 | ||||
|                 arena.showMines(); | ||||
|                 scheduleArenaReset(player[0], arena); | ||||
|                 return; | ||||
|             } | ||||
|             // Todo: Punkte durch Anzahl der Leute in der Gruppe teilen => bei floats abrunden (heißt für Kleine (1 Punkt normal) => 0 Punkte in der Gruppe) | ||||
|             int millis = (int) (System.currentTimeMillis() - arena.getCurrentGameStartTime()); | ||||
|             world.playSound(player[0].getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 0.5f, 0.5f); | ||||
|             int arraySize = plugin.getGroupManager().getGroup(player[0]) != null ? plugin.getGroupManager().getGroup(player[0]).getPlayers().size() : 1; | ||||
|             Player[] players = new Player[arraySize]; | ||||
| 
 | ||||
|             for(Iterator<UUID> iterator = plugin.getGroupManager().getGroup(player[0]).getPlayers().iterator(); iterator.hasNext();) { | ||||
|                 Player iteratorPlayer = Bukkit.getPlayer(iterator.next()); | ||||
|                 assert iteratorPlayer != null; | ||||
|                 iteratorPlayer.sendMessage(Component.text( | ||||
|                         "Glückwunsch, ihr konntest das " + plugin.getDisplayedPluginName() + "-Feld in ", NamedTextColor.YELLOW) | ||||
|                         .append(Component.text(MinecleanerStringUtil.timeToString(millis, false), NamedTextColor.RED)) | ||||
|                         .append(Component.text(" erfolgreich lösen!", NamedTextColor.YELLOW))); | ||||
|             } | ||||
|             scheduleArenaReset(player[0], arena); | ||||
|             return; | ||||
|         } | ||||
|         World world = player[0].getWorld(); | ||||
|  | @ -277,10 +334,12 @@ public class MinecleanerManager { | |||
|                 } else { | ||||
|                     int arraySize = plugin.getGroupManager().getGroup(player) != null ? plugin.getGroupManager().getGroup(player).getPlayers().size() : 1; | ||||
|                     Player[] players = new Player[arraySize]; | ||||
|                     int i = 0; | ||||
|                     if(plugin.getGroupManager().getGroup(player) != null) { | ||||
|                         for(Iterator<UUID> iterator = plugin.getGroupManager().getGroup(player).getPlayers().iterator(); iterator.hasNext();) { | ||||
|                             Player iteratorPlayer = Bukkit.getPlayer(iterator.next()); | ||||
|                             Arrays.fill(players, iteratorPlayer); | ||||
|                             players[i] = iteratorPlayer; | ||||
|                             i++; | ||||
|                         } | ||||
|                     } else { | ||||
|                         Arrays.fill(players, player); | ||||
|  |  | |||
|  | @ -1,6 +1,19 @@ | |||
| package de.lunarakai.minecleaner; | ||||
| 
 | ||||
| 
 | ||||
| import de.lunarakai.minecleaner.commands.CreateCommand; | ||||
| import de.lunarakai.minecleaner.commands.DeleteCommand; | ||||
| import de.lunarakai.minecleaner.commands.DeletePlayerScoreCommand; | ||||
| import de.lunarakai.minecleaner.commands.InfoCommand; | ||||
| import de.lunarakai.minecleaner.commands.ListCommand; | ||||
| import de.lunarakai.minecleaner.commands.ListPlayersInArenaCommand; | ||||
| import de.lunarakai.minecleaner.commands.SettingsCommand; | ||||
| import de.lunarakai.minecleaner.commands.StatsCommand; | ||||
| import de.lunarakai.minecleaner.commands.groups.AcceptCommand; | ||||
| import de.lunarakai.minecleaner.commands.groups.DenyCommand; | ||||
| import de.lunarakai.minecleaner.commands.groups.DismantleGroupCommand; | ||||
| import de.lunarakai.minecleaner.commands.groups.InviteCommand; | ||||
| import de.lunarakai.minecleaner.commands.groups.ListGroupMembersCommand; | ||||
| import net.kyori.adventure.key.Key; | ||||
| import net.kyori.adventure.translation.GlobalTranslator; | ||||
| import net.kyori.adventure.translation.TranslationRegistry; | ||||
|  | @ -9,12 +22,6 @@ import org.bukkit.plugin.java.JavaPlugin; | |||
| import de.iani.cubesidestats.api.CubesideStatisticsAPI; | ||||
| import de.iani.cubesideutils.bukkit.commands.CommandRouter; | ||||
| import de.iani.playerUUIDCache.PlayerUUIDCache; | ||||
| import de.lunarakai.minecleaner.commands.CreateCommand; | ||||
| import de.lunarakai.minecleaner.commands.DeleteCommand; | ||||
| import de.lunarakai.minecleaner.commands.DeletePlayerScoreCommand; | ||||
| import de.lunarakai.minecleaner.commands.InfoCommand; | ||||
| import de.lunarakai.minecleaner.commands.ListCommand; | ||||
| import de.lunarakai.minecleaner.commands.StatsCommand; | ||||
| 
 | ||||
| import java.util.Locale; | ||||
| import java.util.ResourceBundle; | ||||
|  | @ -73,6 +80,14 @@ public final class MinecleanerPlugin extends JavaPlugin { | |||
|         minecleanerCommand.addCommandMapping(new DeleteCommand(this), "delete"); | ||||
|         minecleanerCommand.addCommandMapping(new ListCommand(this), "list"); | ||||
|         minecleanerCommand.addCommandMapping(new InfoCommand(this), "info"); | ||||
|         minecleanerCommand.addCommandMapping(new ListPlayersInArenaCommand(this), "currentplayers"); | ||||
| 
 | ||||
|         // Groups | ||||
|         minecleanerCommand.addCommandMapping(new InviteCommand(this), "invite"); | ||||
|         minecleanerCommand.addCommandMapping(new AcceptCommand(this), "accept"); | ||||
|         minecleanerCommand.addCommandMapping(new DenyCommand(this), "deny"); | ||||
|         minecleanerCommand.addCommandMapping(new DismantleGroupCommand(this), "dismantlegroup"); | ||||
|         minecleanerCommand.addCommandMapping(new ListGroupMembersCommand(this), "groupmembers"); | ||||
| 
 | ||||
|         if(isStatisticsEnabled()) { | ||||
|             minecleanerCommand.addCommandMapping(new SettingsCommand(this), "settings"); | ||||
|  |  | |||
|  | @ -2,7 +2,6 @@ package de.lunarakai.minecleaner.commands; | |||
| 
 | ||||
| import java.util.Collection; | ||||
| import java.util.List; | ||||
| 
 | ||||
| import net.kyori.adventure.text.format.NamedTextColor; | ||||
| import org.bukkit.block.Block; | ||||
| import org.bukkit.block.BlockFace; | ||||
|  | @ -18,7 +17,6 @@ import de.iani.cubesideutils.bukkit.commands.exceptions.RequiresPlayerException; | |||
| import de.iani.cubesideutils.commands.ArgsParser; | ||||
| import de.lunarakai.minecleaner.MinecleanerArena; | ||||
| import de.lunarakai.minecleaner.MinecleanerPlugin; | ||||
| import net.md_5.bungee.api.ChatColor; | ||||
| 
 | ||||
| import static de.lunarakai.minecleaner.utils.MinecleanerComponentUtils.createLangComponent; | ||||
| 
 | ||||
|  | @ -67,5 +65,4 @@ public class DeleteCommand extends SubCommand { | |||
|     public Collection<String> onTabComplete(CommandSender sender, Command command, String alias, ArgsParser args) { | ||||
|         return List.of(); | ||||
|     } | ||||
|      | ||||
| } | ||||
|  |  | |||
|  | @ -2,7 +2,6 @@ package de.lunarakai.minecleaner.commands; | |||
| 
 | ||||
| import java.util.Collection; | ||||
| import java.util.List; | ||||
| 
 | ||||
| import net.kyori.adventure.text.format.NamedTextColor; | ||||
| import org.bukkit.Location; | ||||
| import org.bukkit.command.Command; | ||||
|  |  | |||
|  | @ -0,0 +1,63 @@ | |||
| package de.lunarakai.minecleaner.commands; | ||||
| 
 | ||||
| import de.iani.cubesideutils.bukkit.commands.SubCommand; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.*; | ||||
| import de.iani.cubesideutils.commands.ArgsParser; | ||||
| import de.lunarakai.minecleaner.MinecleanerArena; | ||||
| import de.lunarakai.minecleaner.MinecleanerPlugin; | ||||
| import net.kyori.adventure.text.Component; | ||||
| import net.kyori.adventure.text.format.NamedTextColor; | ||||
| import org.bukkit.block.Block; | ||||
| import org.bukkit.block.BlockFace; | ||||
| import org.bukkit.command.Command; | ||||
| import org.bukkit.command.CommandSender; | ||||
| import org.bukkit.entity.Player; | ||||
| import java.util.Arrays; | ||||
| import java.util.Collection; | ||||
| import java.util.List; | ||||
| 
 | ||||
| public class ListPlayersInArenaCommand extends SubCommand { | ||||
|     private final MinecleanerPlugin plugin; | ||||
| 
 | ||||
|     public ListPlayersInArenaCommand(MinecleanerPlugin plugin) { | ||||
|         this.plugin = plugin; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getUsage() { | ||||
|         return "<name>"; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean requiresPlayer() { | ||||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getRequiredPermission() { | ||||
|         return MinecleanerPlugin.PERMISSION_ADMIN; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean onCommand(CommandSender sender, Command command, String s, String s1, ArgsParser argsParser) throws DisallowsCommandBlockException, RequiresPlayerException, NoPermissionException, IllegalSyntaxException, InternalCommandException { | ||||
|         Player player = (Player) sender; | ||||
|         MinecleanerArena arena = plugin.getArenaList().getArenaAtBlock(player.getLocation().getBlock().getRelative(BlockFace.DOWN)); | ||||
|         if(arena == null) { | ||||
|             Block target = player.getTargetBlockExact(6); | ||||
|             if(target != null) { | ||||
|                 arena = plugin.getArenaList().getArenaAtBlock(target); | ||||
|             } | ||||
|         } | ||||
|         if(arena != null) { | ||||
|            player.sendMessage(Component.text("Players in Arena: " + Arrays.toString(arena.getCurrentPlayers()), NamedTextColor.GRAY)); | ||||
|         } else { | ||||
|             player.sendMessage(Component.text("Hier befindet sich keine Arena.", NamedTextColor.GRAY)); | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public Collection<String> onTabComplete(CommandSender sender, Command command, String alias, ArgsParser args) { | ||||
|         return List.of(); | ||||
|     } | ||||
| } | ||||
|  | @ -2,7 +2,6 @@ package de.lunarakai.minecleaner.commands; | |||
| 
 | ||||
| import java.util.Map.Entry; | ||||
| import java.util.function.Consumer; | ||||
| 
 | ||||
| import net.kyori.adventure.text.Component; | ||||
| import net.kyori.adventure.text.format.NamedTextColor; | ||||
| import org.bukkit.command.Command; | ||||
|  |  | |||
|  | @ -1,7 +1,11 @@ | |||
| package de.lunarakai.minecleaner.commands.groups; | ||||
| 
 | ||||
| import de.iani.cubesideutils.bukkit.commands.SubCommand; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.*; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.DisallowsCommandBlockException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.IllegalSyntaxException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.InternalCommandException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.NoPermissionException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.RequiresPlayerException; | ||||
| import de.iani.cubesideutils.commands.ArgsParser; | ||||
| import de.lunarakai.minecleaner.MinecleanerPlugin; | ||||
| import net.kyori.adventure.text.Component; | ||||
|  |  | |||
|  | @ -1,8 +1,13 @@ | |||
| package de.lunarakai.minecleaner.commands.groups; | ||||
| 
 | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.DisallowsCommandBlockException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.IllegalSyntaxException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.InternalCommandException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.NoPermissionException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.RequiresPlayerException; | ||||
| import de.iani.cubesideutils.bukkit.commands.SubCommand; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.*; | ||||
| import de.iani.cubesideutils.commands.ArgsParser; | ||||
| import de.lunarakai.minecleaner.MinecleanerGroupManager; | ||||
| import de.lunarakai.minecleaner.MinecleanerPlugin; | ||||
| import net.kyori.adventure.text.Component; | ||||
| import net.kyori.adventure.text.format.NamedTextColor; | ||||
|  | @ -41,7 +46,11 @@ public class DenyCommand extends SubCommand { | |||
| 
 | ||||
|         if(plugin.getGroupManager().getInvitedGroup(player) != null && plugin.getGroupManager().getGroup(player) == null) { | ||||
|             Player groupOwner = Bukkit.getPlayer(plugin.getGroupManager().getInvitedGroup(player).getOwner()); | ||||
|             plugin.getGroupManager().getInvitedGroup(player).removePlayerFromInvitedList(player); | ||||
|             MinecleanerGroupManager.MinecleanerGroup invitedGroup = plugin.getGroupManager().getInvitedGroup(player); | ||||
|             invitedGroup.removePlayerFromInvitedList(player); | ||||
|             if(plugin.getGroupManager().getGroup(Bukkit.getPlayer(invitedGroup.getOwner())).invitedPlayers.isEmpty()) { | ||||
|                 plugin.getGroupManager().deleteGroup(invitedGroup); | ||||
|             } | ||||
| 
 | ||||
|             assert groupOwner != null; | ||||
|             groupOwner.sendMessage(Component.text(player.getName() + " hat deine Einladung abgelehnt.", NamedTextColor.RED)); | ||||
|  |  | |||
|  | @ -0,0 +1,66 @@ | |||
| package de.lunarakai.minecleaner.commands.groups; | ||||
| 
 | ||||
| import de.iani.cubesideutils.bukkit.commands.SubCommand; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.DisallowsCommandBlockException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.IllegalSyntaxException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.InternalCommandException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.NoPermissionException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.RequiresPlayerException; | ||||
| import de.iani.cubesideutils.commands.ArgsParser; | ||||
| import de.lunarakai.minecleaner.MinecleanerPlugin; | ||||
| import java.util.Iterator; | ||||
| import java.util.UUID; | ||||
| import net.kyori.adventure.text.Component; | ||||
| import net.kyori.adventure.text.format.NamedTextColor; | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.command.Command; | ||||
| import org.bukkit.command.CommandSender; | ||||
| import org.bukkit.entity.Player; | ||||
| 
 | ||||
| public class DismantleGroupCommand extends SubCommand { | ||||
|     private final MinecleanerPlugin plugin; | ||||
| 
 | ||||
|     public DismantleGroupCommand(MinecleanerPlugin plugin) { | ||||
|         this.plugin = plugin; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getUsage() { | ||||
|         return ""; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean requiresPlayer() { | ||||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getRequiredPermission() { | ||||
|         return MinecleanerPlugin.PERMISSION_PLAY; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean onCommand(CommandSender commandSender, Command command, String s, String s1, ArgsParser argsParser) throws DisallowsCommandBlockException, RequiresPlayerException, NoPermissionException, IllegalSyntaxException, InternalCommandException { | ||||
|         Player player = (Player) commandSender; | ||||
|         if(plugin.getGroupManager().getGroup(player) == null) { | ||||
|             player.sendMessage(Component.text("Du bist in keiner Gruppe die du auflösen könntest.", NamedTextColor.YELLOW)); | ||||
|             return true; | ||||
|         } | ||||
|         Player groupOwnerPlayer = Bukkit.getPlayer(plugin.getGroupManager().getGroup(player).getOwner()); | ||||
| 
 | ||||
|         if(player != groupOwnerPlayer) { | ||||
|             player.sendMessage(Component.text("Du bist nicht berechtigt deine Gruppe aufzulösen.", NamedTextColor.YELLOW)); | ||||
|             return true; | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         for(Iterator<UUID> iterator = plugin.getGroupManager().getGroup(player).getPlayers().iterator(); iterator.hasNext();) { | ||||
|             Player iteratorPlayer = Bukkit.getPlayer(iterator.next()); | ||||
|             iteratorPlayer.sendMessage(Component.text("Die Gruppe in der du dich befindest wurde aufgelöst.", NamedTextColor.YELLOW)); | ||||
|         } | ||||
|         plugin.getGroupManager().deleteGroup(plugin.getGroupManager().getGroup(player)); | ||||
| 
 | ||||
|         return true; | ||||
|     } | ||||
| } | ||||
|  | @ -1,7 +1,11 @@ | |||
| package de.lunarakai.minecleaner.commands.groups; | ||||
| 
 | ||||
| import de.iani.cubesideutils.bukkit.commands.SubCommand; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.*; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.DisallowsCommandBlockException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.IllegalSyntaxException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.InternalCommandException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.NoPermissionException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.RequiresPlayerException; | ||||
| import de.iani.cubesideutils.commands.ArgsParser; | ||||
| import de.lunarakai.minecleaner.MinecleanerGroupManager; | ||||
| import de.lunarakai.minecleaner.MinecleanerPlugin; | ||||
|  | @ -51,6 +55,11 @@ public class InviteCommand extends SubCommand { | |||
|         String playerName = args.getNext().trim(); | ||||
|         Player invitedPlayer = plugin.getServer().getPlayer(playerName); | ||||
| 
 | ||||
|         if(invitedPlayer == player) { | ||||
|             player.sendMessage(Component.text("Du kannst dich nicht selber in eine Gruppe einladen.", NamedTextColor.DARK_RED)); | ||||
|             return true; | ||||
|         } | ||||
| 
 | ||||
|         MinecleanerGroupManager groupManager = plugin.getGroupManager(); | ||||
|         if(groupManager.getInvitedGroup(player) != null) { | ||||
|             player.sendMessage(Component.text("Du wurdest bereits in eine Gruppe eingeladen. Bitte kümmere dich zuerst um die Einladung bevor du eine eigene Gruppe erstellst.", NamedTextColor.YELLOW)); | ||||
|  | @ -67,6 +76,8 @@ public class InviteCommand extends SubCommand { | |||
|         } | ||||
| 
 | ||||
|         assert invitedPlayer != null; | ||||
|         player.sendMessage(Component.text("Du hast " + invitedPlayer.getName() + " in eine " + plugin.getDisplayedPluginName() + "-Gruppe eingeladen", NamedTextColor.GREEN)); | ||||
|         invitedPlayer.sendMessage(Component.text("Du wurdest von " + player.getName() + " in eine " + plugin.getDisplayedPluginName() + "-Gruppe eingeladen.", NamedTextColor.GREEN)); | ||||
|         groupManager.getGroup(player).invitePlayerToGroup(invitedPlayer); | ||||
| 
 | ||||
|         return true; | ||||
|  |  | |||
|  | @ -0,0 +1,62 @@ | |||
| package de.lunarakai.minecleaner.commands.groups; | ||||
| 
 | ||||
| import de.iani.cubesideutils.bukkit.commands.SubCommand; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.DisallowsCommandBlockException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.IllegalSyntaxException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.InternalCommandException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.NoPermissionException; | ||||
| import de.iani.cubesideutils.bukkit.commands.exceptions.RequiresPlayerException; | ||||
| import de.iani.cubesideutils.commands.ArgsParser; | ||||
| import de.lunarakai.minecleaner.MinecleanerPlugin; | ||||
| import java.util.Iterator; | ||||
| import java.util.UUID; | ||||
| import net.kyori.adventure.text.Component; | ||||
| import net.kyori.adventure.text.format.NamedTextColor; | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.command.Command; | ||||
| import org.bukkit.command.CommandSender; | ||||
| import org.bukkit.entity.Player; | ||||
| 
 | ||||
| public class ListGroupMembersCommand extends SubCommand { | ||||
|     private final MinecleanerPlugin plugin; | ||||
| 
 | ||||
|     public ListGroupMembersCommand(MinecleanerPlugin plugin) { | ||||
|         this.plugin = plugin; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getUsage() { | ||||
|         return ""; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean requiresPlayer() { | ||||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getRequiredPermission() { | ||||
|         return MinecleanerPlugin.PERMISSION_PLAY; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean onCommand(CommandSender commandSender, Command command, String s, String s1, ArgsParser argsParser) throws DisallowsCommandBlockException, RequiresPlayerException, NoPermissionException, IllegalSyntaxException, InternalCommandException { | ||||
|         Player player = (Player) commandSender; | ||||
| 
 | ||||
|         if(plugin.getGroupManager().getGroup(player) == null) { | ||||
|             player.sendMessage(Component.text("Du bist in keiner Gruppe.", NamedTextColor.YELLOW)); | ||||
|             return true; | ||||
|         } | ||||
| 
 | ||||
|         player.sendMessage(Component.text("-- Mitglieder deiner " + plugin.getDisplayedPluginName() + "gruppe --", NamedTextColor.AQUA)); | ||||
|         for(Iterator<UUID> iterator = plugin.getGroupManager().getGroup(player).getPlayers().iterator(); iterator.hasNext();) { | ||||
|             Player iteratorPlayer = Bukkit.getPlayer(iterator.next()); | ||||
|             String ownerString = ""; | ||||
|             if(iteratorPlayer == Bukkit.getPlayer(plugin.getGroupManager().getGroup(player).getOwner())) { | ||||
|                 ownerString = " (Ersteller der Gruppe)"; | ||||
|             } | ||||
|             player.sendMessage(Component.text("  - " + iteratorPlayer.getName(), NamedTextColor.GREEN).append(Component.text(ownerString, NamedTextColor.RED))); | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue