Compare commits
	
		
			3 commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| a89930a73a | |||
| 8c105bba58 | |||
| 017a02a0c0 | 
					 17 changed files with 209 additions and 122 deletions
				
			
		
							
								
								
									
										6
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							|  | @ -114,3 +114,9 @@ buildNumber.properties | |||
| 
 | ||||
| # Common working directory | ||||
| run/ | ||||
| 
 | ||||
| # eclipse | ||||
| /.classpath | ||||
| /.project | ||||
| /.settings | ||||
| /target | ||||
|  | @ -4,6 +4,7 @@ | |||
|     <facet type="minecraft" name="Minecraft"> | ||||
|       <configuration> | ||||
|         <autoDetectTypes> | ||||
|           <platformType>PAPER</platformType> | ||||
|           <platformType>ADVENTURE</platformType> | ||||
|         </autoDetectTypes> | ||||
|         <projectReimportVersion>1</projectReimportVersion> | ||||
|  |  | |||
							
								
								
									
										2
									
								
								pom.xml
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								pom.xml
									
										
									
									
									
								
							|  | @ -86,7 +86,7 @@ | |||
|         <dependency> | ||||
|             <groupId>io.papermc.paper</groupId> | ||||
|             <artifactId>paper-api</artifactId> | ||||
|             <version>1.20.6-R0.1-SNAPSHOT</version> | ||||
|             <version>1.21.3-R0.1-SNAPSHOT</version> | ||||
|             <scope>provided</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|  |  | |||
|  | @ -8,6 +8,7 @@ import java.util.HashMap; | |||
| import java.util.Iterator; | ||||
| import java.util.UUID; | ||||
| import java.util.logging.Level; | ||||
| import de.lunarakai.minecleaner.utils.MinecleanerUtils; | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.Location; | ||||
| import org.bukkit.block.Block; | ||||
|  | @ -100,6 +101,13 @@ public class ArenaList { | |||
|         save(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * checks for any other arena that might be at the same location as the new MinecleanerArena | ||||
|      * | ||||
|      * @param newArena  the new Arena that is set to be created | ||||
|      * @return          true if another MinecleanerArena (or at least one Block of another arena) is at the same location as newArena otherwise false | ||||
|      * @see             MinecleanerArena | ||||
|      */ | ||||
|     public boolean collidesWithArena(MinecleanerArena newArena) { | ||||
|         for(Location location : newArena.getBlocks()) { | ||||
|             if(arenaBlocks.get(location) != null) { | ||||
|  | @ -125,7 +133,7 @@ public class ArenaList { | |||
|         if(playersInArena.get(player.getUniqueId()) == null) { | ||||
|             return null; | ||||
|         } | ||||
|         int arraySize = plugin.getGroupManager().getGroup(player) != null ? plugin.getGroupManager().getGroup(player).getPlayers().size() : 1; | ||||
|         int arraySize = MinecleanerUtils.isPlayerInGroup(plugin, player) ? plugin.getGroupManager().getGroupSize(player) : 1; | ||||
|         Player[] players = new Player[arraySize]; | ||||
| 
 | ||||
|         if(plugin.getGroupManager().getGroup(player) != null) { | ||||
|  | @ -192,17 +200,26 @@ public class ArenaList { | |||
|             plugin.getManager().leaveArena(arena.getCurrentPlayers(), true, true); | ||||
|         } | ||||
| 
 | ||||
|         for(UUID id : arena.getBlockDisplays()) { | ||||
|             if(id != null) { | ||||
|                 arenaBlockDisplays.remove(id); | ||||
|             } | ||||
|         } | ||||
|         for(Location block : arena.getBlocks()) {  | ||||
|             arenaBlocks.remove(block); | ||||
|         } | ||||
|         removeArenaBlockDisplayIDs(arena); | ||||
|         removeArenaBlocks(arena); | ||||
| 
 | ||||
|         arena.removeBlockDisplays(); | ||||
| 
 | ||||
|         arenas.remove(arena.getName()); | ||||
|         save(); | ||||
|     } | ||||
| 
 | ||||
|     private void removeArenaBlocks(MinecleanerArena arena) { | ||||
|         for(Location block : arena.getBlocks()) { | ||||
|             arenaBlocks.remove(block); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private void removeArenaBlockDisplayIDs(MinecleanerArena arena) { | ||||
|         for(UUID id : arena.getBlockDisplays()) { | ||||
|             if(id != null) { | ||||
|                 arenaBlockDisplays.remove(id); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| }  | ||||
|  |  | |||
|  | @ -1,8 +1,35 @@ | |||
| package de.lunarakai.minecleaner; | ||||
| 
 | ||||
| /** | ||||
|  *  Possible Status of a MinecleanerArena | ||||
|  *  <li>{@link #INACTIVE}</li> | ||||
|  *  <li>{@link #CONFIRM_PLAYING}</li> | ||||
|  *  <li>{@link #PLAYING}</li> | ||||
|  *  <li>{@link #COMPLETED}</li> | ||||
|  * | ||||
|  * @see MinecleanerArena | ||||
|  * | ||||
|  */ | ||||
| public enum ArenaStatus { | ||||
|     /** | ||||
|      * default state | ||||
|      */ | ||||
|     INACTIVE, | ||||
| 
 | ||||
|     /** | ||||
|      * Active when the player (or group leader) has interacted with an {@link #INACTIVE} arena and | ||||
|      * sees the confirmPlayingInventory to decide if they start a Game or not | ||||
|      * @see MinecleanerManager#getConfirmPlayingInventory() | ||||
|      */ | ||||
|     CONFIRM_PLAYING, | ||||
| 
 | ||||
|     /** | ||||
|      * Active when a Player (or Group) has confirmed to start a Minecleaner Game (and while playing) | ||||
|      */ | ||||
|     PLAYING, | ||||
| 
 | ||||
|     /** | ||||
|      * Active when a Player (or Group) has either won or lost a Mineclenaer Game and the Arena the scheduled for a reset -> {@link #INACTIVE} | ||||
|      */ | ||||
|     COMPLETED | ||||
| } | ||||
|  |  | |||
|  | @ -55,13 +55,13 @@ public class MinecleanerGroupManager { | |||
|                         continue; | ||||
|                     } | ||||
|                     Player iteratorPlayer = Bukkit.getPlayer(iterator.next()); | ||||
|                     ChatUtils.sendSimpleInfoMessage(iteratorPlayer, "Die Gruppe wurde aufgelöst, da die Person, welche die Gruppe erstellt hat, aus der Gruppe entfernt wurde."); | ||||
|                     ChatUtils.sendSimpleInfoMessage(iteratorPlayer, "group.creator.removed"); | ||||
|                 } | ||||
|                 deleteGroup(getGroup(Bukkit.getPlayer(owner))); | ||||
|             } | ||||
|             players.remove(playerUUID); | ||||
|             if(players.size() < 2) { | ||||
|                 ChatUtils.sendSimpleInfoMessage(Bukkit.getPlayer(owner), "Die Gruppe wurde aufgelöst, da du nur noch alleine in der Gruppe bist"); | ||||
|                 ChatUtils.sendSimpleInfoMessage(Bukkit.getPlayer(owner), "group.dismantled.alone"); | ||||
|                 deleteGroup(getGroup(Bukkit.getPlayer(owner))); | ||||
|             } | ||||
|         } | ||||
|  | @ -116,6 +116,12 @@ public class MinecleanerGroupManager { | |||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      *  loops through all MinecleanerGroups to check if the player is invited to any group | ||||
|      * | ||||
|      * @param player    Minecraft Player | ||||
|      * @return          the MinecleanerGroup the Player is invited to or null | ||||
|      */ | ||||
|     public MinecleanerGroup getInvitedGroup(Player player){ | ||||
|         UUID playerUUID = player.getUniqueId(); | ||||
|         for (MinecleanerGroup group : groups) { | ||||
|  | @ -130,7 +136,20 @@ public class MinecleanerGroupManager { | |||
|         groups.remove(minecleanerGroup); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * removes all MinecleanerGroups | ||||
|      */ | ||||
|     public void deleteAllGroups() { | ||||
|         groups.clear(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns the size of the MinecleanerGroup the player is in | ||||
|      * | ||||
|      * @param player    the Minecraft Player | ||||
|      * @return          the size of the group the player is in | ||||
|      */ | ||||
|     public int getGroupSize(Player player) { | ||||
|         return getGroup(player).getPlayers().size(); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -152,7 +152,7 @@ public class MinecleanerListener implements Listener { | |||
|                         if(hasConfirmed) { | ||||
|                             Player[] players; | ||||
|                             if(plugin.getGroupManager().getGroup(player) != null) { | ||||
|                                 players = new Player[plugin.getGroupManager().getGroup(player).getPlayers().size()]; | ||||
|                                 players = new Player[plugin.getGroupManager().getGroupSize(player)]; | ||||
|                                 players[0] = player; | ||||
|                             } else { | ||||
|                                 players = new Player[1]; | ||||
|  | @ -175,7 +175,7 @@ public class MinecleanerListener implements Listener { | |||
|             MinecleanerArena arena = plugin.getArenaList().getPlayerArena(player); | ||||
|             if(arena != null) { | ||||
|                 if(arena.getArenaStatus() == ArenaStatus.CONFIRM_PLAYING && e.getInventory().equals(plugin.getManager().getConfirmPlayingInventory())) { | ||||
|                     int arraySize = plugin.getGroupManager().getGroup(player) != null ? plugin.getGroupManager().getGroup(player).getPlayers().size() : 1; | ||||
|                     int arraySize = plugin.getGroupManager().getGroup(player) != null ? plugin.getGroupManager().getGroupSize(player) : 1; | ||||
|                     Player[] players = new Player[arraySize]; | ||||
| 
 | ||||
|                     if(plugin.getGroupManager().getGroup(player) != null) { | ||||
|  | @ -199,7 +199,7 @@ public class MinecleanerListener implements Listener { | |||
|         if(arena != null) { | ||||
|             if(plugin.getGroupManager().getGroup(player) == null) { | ||||
|                 if((arena.isTooFarAway(player))) { | ||||
|                     ChatUtils.sendSimpleInfoMessage(player, "Du hast dich zu weit von der Arena entfernt. Das Spiel wurde abgebrochen."); | ||||
|                     ChatUtils.sendSimpleInfoMessage(player, "arena.common.toofaraway"); | ||||
|                     Player[] players = new Player[] { | ||||
|                             player | ||||
|                     }; | ||||
|  | @ -213,11 +213,11 @@ public class MinecleanerListener implements Listener { | |||
|                         for(Iterator<UUID> iterator = plugin.getGroupManager().getGroup(player).getPlayers().iterator(); iterator.hasNext();) { | ||||
|                             Player iteratorPlayer = Bukkit.getPlayer(iterator.next()); | ||||
|                             if(iteratorPlayer == ownerPlayer) { | ||||
|                                 ChatUtils.sendSimpleInfoMessage(iteratorPlayer, "Du hast dich zu weit von der Arena entfernt. Das Spiel wurde abgebrochen."); | ||||
|                                 ChatUtils.sendSimpleInfoMessage(iteratorPlayer, "arena.common.toofaraway"); | ||||
|                                 continue; | ||||
|                             } | ||||
|                             assert iteratorPlayer != null; | ||||
|                             ChatUtils.sendSimpleInfoMessage(iteratorPlayer, "Der Ersteller der Gruppe hat sich zu weit von der Arena entfernt. Das Spiel wurde abgebrochen."); | ||||
|                             ChatUtils.sendSimpleInfoMessage(iteratorPlayer, "arena.common.groupleadertoofaraway"); | ||||
|                         } | ||||
|                         Player[] players = new Player[] { | ||||
|                                 ownerPlayer | ||||
|  |  | |||
|  | @ -36,8 +36,8 @@ import de.iani.cubesideutils.bukkit.items.ItemStacks; | |||
| import de.iani.playerUUIDCache.CachedPlayer; | ||||
| import de.lunarakai.minecleaner.game.BoardSize; | ||||
| import de.lunarakai.minecleaner.utils.MinecleanerStringUtil; | ||||
| import net.md_5.bungee.api.ChatColor; | ||||
| 
 | ||||
| // Todo: translatable components verwenden | ||||
| public class MinecleanerManager { | ||||
|     private final MinecleanerPlugin plugin; | ||||
|     private final Inventory confirmPlayingInventory; | ||||
|  | @ -158,18 +158,11 @@ public class MinecleanerManager { | |||
|     } | ||||
| 
 | ||||
|     public void leaveArena(Player[] players, boolean message, boolean reset) { | ||||
|         MinecleanerGroupManager.MinecleanerGroup group = null; | ||||
|         MinecleanerArena arena; | ||||
|         if(plugin.getGroupManager().getGroup(players[0]) != null) { | ||||
|             group = plugin.getGroupManager().getGroup(players[0]); | ||||
|             arena = plugin.getArenaList().getPlayerArena(Objects.requireNonNull(Bukkit.getPlayer(group.getOwner()))); | ||||
|         } else { | ||||
|             arena = plugin.getArenaList().getPlayerArena(players); | ||||
|         } | ||||
|         Player[] players1 = group != null ? new Player[group.getPlayers().size()] : new Player[1]; | ||||
|         getGroupLeaderOrPlayer player = getGetGroupLeaderOrPlayer(players); | ||||
|         Player[] players1 = player.group() != null ? new Player[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();) { | ||||
|             for(Iterator<UUID> iterator = player.group().getPlayers().iterator(); iterator.hasNext();) { | ||||
|                 Player iteratorPlayer = Bukkit.getPlayer(iterator.next()); | ||||
|                 players1[i] = iteratorPlayer; | ||||
|                 i++; | ||||
|  | @ -178,17 +171,17 @@ public class MinecleanerManager { | |||
|             players1 = players; | ||||
|         } | ||||
| 
 | ||||
|         Preconditions.checkArgument(arena != null, "player is in no arena"); | ||||
|         Preconditions.checkArgument(player.arena() != null, "player is in no arena"); | ||||
| 
 | ||||
|         if(reset) { | ||||
|             arena.setArenaStaus(ArenaStatus.INACTIVE); | ||||
|             player.arena().setArenaStaus(ArenaStatus.INACTIVE); | ||||
|             for(int i = 0; i < players1.length; i++) { | ||||
|                 players1[i].closeInventory(); | ||||
|             } | ||||
|             arena.removePlayers(); | ||||
|             player.arena().removePlayers(); | ||||
|             if(message) { | ||||
|                 for(int i = 0; i < players.length; i++) { | ||||
|                     players1[i].sendMessage(ChatColor.YELLOW + "Das " + plugin.getDisplayedPluginName() + "spiel wurde abgebrochen."); | ||||
|                     players1[i].sendMessage(NamedTextColor.YELLOW + "Das " + plugin.getDisplayedPluginName() + "spiel wurde abgebrochen."); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | @ -196,6 +189,21 @@ public class MinecleanerManager { | |||
|         plugin.getArenaList().setArenaForPlayers(players1, null); | ||||
|     } | ||||
| 
 | ||||
|     private @NotNull getGroupLeaderOrPlayer getGetGroupLeaderOrPlayer(Player[] players) { | ||||
|         MinecleanerGroupManager.MinecleanerGroup group = null; | ||||
|         MinecleanerArena arena; | ||||
|         if(plugin.getGroupManager().getGroup(players[0]) != null) { | ||||
|             group = plugin.getGroupManager().getGroup(players[0]); | ||||
|             arena = plugin.getArenaList().getPlayerArena(Objects.requireNonNull(Bukkit.getPlayer(group.getOwner()))); | ||||
|         } else { | ||||
|             arena = plugin.getArenaList().getPlayerArena(players); | ||||
|         } | ||||
|         return new getGroupLeaderOrPlayer(group, arena); | ||||
|     } | ||||
| 
 | ||||
|     private record getGroupLeaderOrPlayer(MinecleanerGroupManager.MinecleanerGroup group, MinecleanerArena arena) { | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     public void startGame(Player[] players) { | ||||
|         MinecleanerArena arena = plugin.getArenaList().getPlayerArena(players); | ||||
|  | @ -308,9 +316,9 @@ public class MinecleanerManager { | |||
|             if(sg != null) { | ||||
|                 ps.minScore(sg, millis, isUpdated -> { | ||||
|                     if(isUpdated != null && isUpdated) { | ||||
|                         player[0].sendMessage(ChatColor.GOLD + "Herzlichen Glückwunsch! Du hast eine neue Bestzeit erreicht! " + ChatColor.RED + MinecleanerStringUtil.timeToString(millis, false) ); | ||||
|                         player[0].sendMessage(NamedTextColor.GOLD + "Herzlichen Glückwunsch! Du hast eine neue Bestzeit erreicht! " + NamedTextColor.RED + MinecleanerStringUtil.timeToString(millis, false) ); | ||||
|                     } else { | ||||
|                         player[0].sendMessage(ChatColor.YELLOW + "Glückwunsch, du konntest das " + plugin.getDisplayedPluginName() + "-Feld in " + ChatColor.RED + MinecleanerStringUtil.timeToString(millis, false) + ChatColor.YELLOW + " erfolgreich lösen!"); | ||||
|                         player[0].sendMessage(NamedTextColor.YELLOW + "Glückwunsch, du konntest das " + plugin.getDisplayedPluginName() + "-Feld in " + NamedTextColor.RED + MinecleanerStringUtil.timeToString(millis, false) + NamedTextColor.YELLOW + " erfolgreich lösen!"); | ||||
|                     } | ||||
|                 }); | ||||
|             } | ||||
|  | @ -318,7 +326,7 @@ public class MinecleanerManager { | |||
|             int wIndex = arena.getWidthIndex(); | ||||
|             increaseScore(wIndex, ps, 1); | ||||
|         } else { | ||||
|             player[0].sendMessage(ChatColor.YELLOW + "Glückwunsch, du konntest das " + plugin.getDisplayedPluginName() + "-Feld in " + ChatColor.RED + MinecleanerStringUtil.timeToString(millis, false) + ChatColor.YELLOW + " erfolgreich lösen!"); | ||||
|             player[0].sendMessage(NamedTextColor.YELLOW + "Glückwunsch, du konntest das " + plugin.getDisplayedPluginName() + "-Feld in " + NamedTextColor.RED + MinecleanerStringUtil.timeToString(millis, false) + NamedTextColor.YELLOW + " erfolgreich lösen!"); | ||||
|         } | ||||
| 
 | ||||
|         scheduleArenaReset(player[0], arena); | ||||
|  | @ -359,7 +367,7 @@ public class MinecleanerManager { | |||
|                 if (arena.getCurrentPlayers() == null) { | ||||
|                     arena.removePlayers(); | ||||
|                 } else { | ||||
|                     int arraySize = plugin.getGroupManager().getGroup(player) != null ? plugin.getGroupManager().getGroup(player).getPlayers().size() : 1; | ||||
|                     int arraySize = plugin.getGroupManager().getGroup(player) != null ? plugin.getGroupManager().getGroupSize(player) : 1; | ||||
|                     Player[] players = new Player[arraySize]; | ||||
|                     int i = 0; | ||||
|                     if(plugin.getGroupManager().getGroup(player) != null) { | ||||
|  |  | |||
|  | @ -56,17 +56,9 @@ public final class MinecleanerPlugin extends JavaPlugin { | |||
|     } | ||||
| 
 | ||||
|     public void onLateEnable() { | ||||
|         if(getServer().getPluginManager().getPlugin("PlayerUUIDCache") != null) { | ||||
|             playerUUIDCache = (PlayerUUIDCache) getServer().getPluginManager().getPlugin("PlayerUUIDCache"); | ||||
|         } else { | ||||
|             this.getLogger().log(Level.WARNING, "PlayerUUIDCache not found."); | ||||
|         } | ||||
|         checkForPlayerUUIDChache(); | ||||
| 
 | ||||
|         if(getServer().getPluginManager().getPlugin("CubesideStatistics") != null) { | ||||
|             cubesideStatistics = getServer().getServicesManager().load(CubesideStatisticsAPI.class); | ||||
|         } else { | ||||
|             this.getLogger().log(Level.WARNING, "Cubeside Statistics not found. No Statistics will be available"); | ||||
|         } | ||||
|         checkForCubesideStatistics(); | ||||
| 
 | ||||
|         arenaList = new ArenaList(this); | ||||
|         arenaList.load(); | ||||
|  | @ -90,6 +82,10 @@ public final class MinecleanerPlugin extends JavaPlugin { | |||
|         minecleanerCommand.addCommandMapping(new DismantleGroupCommand(this), "dismantlegroup"); | ||||
|         minecleanerCommand.addCommandMapping(new ListGroupMembersCommand(this), "groupmembers"); | ||||
| 
 | ||||
|         enableCubesideStatisticsCommands(minecleanerCommand); | ||||
|     } | ||||
| 
 | ||||
|     private void enableCubesideStatisticsCommands(CommandRouter minecleanerCommand) { | ||||
|         if(isStatisticsEnabled()) { | ||||
|             minecleanerCommand.addCommandMapping(new SettingsCommand(this), "settings"); | ||||
|             minecleanerCommand.addCommandMapping(new StatsCommand(this), "stats"); | ||||
|  | @ -97,6 +93,22 @@ public final class MinecleanerPlugin extends JavaPlugin { | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private void checkForCubesideStatistics() { | ||||
|         if(getServer().getPluginManager().getPlugin("CubesideStatistics") != null) { | ||||
|             cubesideStatistics = getServer().getServicesManager().load(CubesideStatisticsAPI.class); | ||||
|         } else { | ||||
|             this.getLogger().log(Level.WARNING, "Cubeside Statistics not found. No Statistics will be available"); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private void checkForPlayerUUIDChache() { | ||||
|         if(getServer().getPluginManager().getPlugin("PlayerUUIDCache") != null) { | ||||
|             playerUUIDCache = (PlayerUUIDCache) getServer().getPluginManager().getPlugin("PlayerUUIDCache"); | ||||
|         } else { | ||||
|             this.getLogger().log(Level.WARNING, "PlayerUUIDCache not found."); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void onDisable() { | ||||
|         if(minecleanerManager != null) { | ||||
|  |  | |||
|  | @ -2,7 +2,8 @@ package de.lunarakai.minecleaner; | |||
| 
 | ||||
| import de.iani.cubesideutils.bukkit.inventory.AbstractWindow; | ||||
| import de.lunarakai.minecleaner.utils.ItemUtil; | ||||
| import net.md_5.bungee.api.ChatColor; | ||||
| import net.kyori.adventure.text.Component; | ||||
| import net.kyori.adventure.text.format.NamedTextColor; | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.Material; | ||||
| import org.bukkit.entity.Player; | ||||
|  | @ -35,28 +36,28 @@ public class MinecleanerSettingsInventory extends AbstractWindow { | |||
|             switch (i) { | ||||
|                 case SETTINGS_ALLOW_MANUEL_RESET -> { | ||||
|                     if (plugin.getManager().getSettingsValue("allowmanualreset", player) == 0) { | ||||
|                         item = ItemUtil.createGuiItem(Material.SHEARS, ChatColor.RED + "Manuelles Resetten deaktiviert"); | ||||
|                         item = ItemUtil.createGuiItem(Material.SHEARS, Component.translatable("settings.manualreset.deny", NamedTextColor.RED)); | ||||
|                     } else { | ||||
|                         item = ItemUtil.createGuiItem(Material.SHEARS, ChatColor.GREEN + "Manuelles Resetten aktiviert"); | ||||
|                         item = ItemUtil.createGuiItem(Material.SHEARS, Component.translatable("settings.manualreset.allow", NamedTextColor.GREEN)); | ||||
|                     } | ||||
|                 } | ||||
|                 case SETTINGS_ADDITIONAL_DISPLAY -> { | ||||
|                     if (plugin.getManager().getSettingsValue("additionaldisplay", player) == 0) { | ||||
|                         item = ItemUtil.createGuiItem(Material.NAME_TAG, ChatColor.RED + "Zusätzliche Anzeige in der Action Bar deaktiviert\""); | ||||
|                         item = ItemUtil.createGuiItem(Material.NAME_TAG, Component.translatable("settings.additionaltimer.deny", NamedTextColor.RED)); | ||||
|                     } else { | ||||
|                         item = ItemUtil.createGuiItem(Material.NAME_TAG, ChatColor.GREEN + "Zusätzliche Anzeige in der Action Bar aktiviert\""); | ||||
|                         item = ItemUtil.createGuiItem(Material.NAME_TAG, Component.translatable("settings.additionaltimer.allow", NamedTextColor.GREEN)); | ||||
|                     } | ||||
|                 } | ||||
|                 case SETTINGS_TIMER -> { | ||||
|                     if (plugin.getManager().getSettingsValue("timer", player) == 0) { | ||||
|                         item = ItemUtil.createGuiItem(Material.CLOCK, ChatColor.RED + "Timer wird nicht angezeigt"); | ||||
|                         item = ItemUtil.createGuiItem(Material.CLOCK, Component.translatable("settings.timer.deny", NamedTextColor.RED)); | ||||
|                     } else { | ||||
|                         item = ItemUtil.createGuiItem(Material.CLOCK, ChatColor.GREEN + "Timer wird angezeigt"); | ||||
|                         item = ItemUtil.createGuiItem(Material.CLOCK, Component.translatable("settings.timer.allow", NamedTextColor.GREEN)); | ||||
|                     } | ||||
|                 } | ||||
|                 case SETTINGS_RESETTIME -> { | ||||
|                     int current = plugin.getManager().getSettingsValue("resettime", player); | ||||
|                     item = ItemUtil.createGuiItem(Material.CANDLE, ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + current + "s"); | ||||
|                     item = ItemUtil.createGuiItem(Material.CANDLE, Component.translatable("settings.resettime.text", NamedTextColor.GOLD).append(Component.text(": ")).append(Component.text(current, NamedTextColor.RED)).append(Component.text(" s", NamedTextColor.RED))); | ||||
|                 } | ||||
|                 default -> item = ItemUtil.EMPTY_ICON; | ||||
|             } | ||||
|  |  | |||
|  | @ -19,6 +19,12 @@ import org.bukkit.command.CommandSender; | |||
| import org.bukkit.entity.Player; | ||||
| 
 | ||||
| public class InviteCommand extends SubCommand { | ||||
|     /* | ||||
|         TODO: | ||||
|             - Invite other Players to play in Duo Mode | ||||
|             - Add Functionality to support multiple Players in the same game | ||||
|             - use settings of player that invited the other player | ||||
|      */ | ||||
| 
 | ||||
|     private final MinecleanerPlugin plugin; | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,53 +0,0 @@ | |||
| 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 de.lunarakai.minecleaner.utils.ChatUtils; | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.command.Command; | ||||
| import org.bukkit.command.CommandSender; | ||||
| import org.bukkit.entity.Player; | ||||
| 
 | ||||
| public class LeaveGroupCommand extends SubCommand { | ||||
|     private final MinecleanerPlugin plugin; | ||||
| 
 | ||||
|     public LeaveGroupCommand(MinecleanerPlugin plugin) { | ||||
|         this.plugin = plugin; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getUsage() { | ||||
|         return ""; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean requiresPlayer() { | ||||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean onCommand(CommandSender sender, Command command, String s, String commandString, ArgsParser args) throws DisallowsCommandBlockException, RequiresPlayerException, NoPermissionException, IllegalSyntaxException, InternalCommandException { | ||||
|         Player player = (Player) sender; | ||||
|         if(plugin.getGroupManager().getGroup(player) == null) { | ||||
|             ChatUtils.sendSimpleWarningMessage(player, "group.common.notingroup"); | ||||
|             return true; | ||||
|         } | ||||
| 
 | ||||
|         Player groupOwnerPlayer = Bukkit.getPlayer(plugin.getGroupManager().getGroup(player).getOwner()); | ||||
| 
 | ||||
|         if(player == groupOwnerPlayer) { | ||||
|             ChatUtils.sendSimpleWarningMessage(player, "group.leave.usedismantle"); | ||||
|             return true; | ||||
|         } | ||||
| 
 | ||||
|         plugin.getGroupManager().getGroup(player).removePlayerFromGroup(player); | ||||
|         return true; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | @ -1,6 +1,7 @@ | |||
| package de.lunarakai.minecleaner.utils; | ||||
| 
 | ||||
| import de.iani.cubesideutils.bukkit.items.ItemBuilder; | ||||
| import net.kyori.adventure.text.Component; | ||||
| import org.bukkit.Material; | ||||
| import org.bukkit.enchantments.Enchantment; | ||||
| import org.bukkit.inventory.ItemFlag; | ||||
|  | @ -8,13 +9,13 @@ import org.bukkit.inventory.ItemStack; | |||
| 
 | ||||
| public class ItemUtil { | ||||
| 
 | ||||
|     public static final ItemStack EMPTY_ICON = createGuiItem(Material.GRAY_STAINED_GLASS_PANE, " ", true, true); | ||||
|     public static final ItemStack EMPTY_ICON = createGuiItem(Material.GRAY_STAINED_GLASS_PANE, Component.text(" "), true, true); | ||||
| 
 | ||||
|     public static ItemStack createGuiItem(Material material, String name, String... lore) { | ||||
|     public static ItemStack createGuiItem(Material material, Component name, String... lore) { | ||||
|         return createGuiItem(material, name, false, lore); | ||||
|     } | ||||
| 
 | ||||
|     public static ItemStack createGuiItem(Material material, String name, boolean glowing, boolean showTooltip, String... lore) { | ||||
|     public static ItemStack createGuiItem(Material material, Component name, boolean glowing, boolean showTooltip, String... lore) { | ||||
|         ItemBuilder builder = ItemBuilder.fromMaterial(material).displayName(name).lore(lore); | ||||
|         if (glowing) { | ||||
|             builder.enchantment(Enchantment.UNBREAKING, 1, true).flag(ItemFlag.HIDE_ENCHANTS); | ||||
|  | @ -26,7 +27,7 @@ public class ItemUtil { | |||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     public static ItemStack createGuiItem(Material material, String name, boolean glowing, String... lore) { | ||||
|     public static ItemStack createGuiItem(Material material, Component name, boolean glowing, String... lore) { | ||||
|         return createGuiItem(material, name, glowing, true, lore); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -1,6 +1,7 @@ | |||
| package de.lunarakai.minecleaner.utils; | ||||
| 
 | ||||
| import java.net.URL; | ||||
| import net.kyori.adventure.text.Component; | ||||
| 
 | ||||
| public class MinecleanerStringUtil { | ||||
|     private MinecleanerStringUtil() { | ||||
|  | @ -14,7 +15,7 @@ public class MinecleanerStringUtil { | |||
|         min = min % 60; | ||||
|         StringBuilder timeString = new StringBuilder(); | ||||
|         if (hours > 0) { | ||||
|             String hoursString = " Stunden"; | ||||
|             String hoursString = " " + Component.translatable("minecleaner.common.hours"); | ||||
|             if(shorten) { | ||||
|                 hoursString = " h"; | ||||
|             } | ||||
|  | @ -24,7 +25,7 @@ public class MinecleanerStringUtil { | |||
|             if (!timeString.isEmpty()) { | ||||
|                 timeString.append(", "); | ||||
|             } | ||||
|             String minString = " Minuten"; | ||||
|             String minString = " " + Component.translatable("minecleaner.common.minutes"); | ||||
|             if(shorten) { | ||||
|                 minString = " min"; | ||||
|             } | ||||
|  | @ -32,9 +33,9 @@ public class MinecleanerStringUtil { | |||
|         } | ||||
|         if (sec > 0 || !timeString.isEmpty()) { | ||||
|             if (!timeString.isEmpty()) { | ||||
|                 timeString.append(" und "); | ||||
|                 timeString.append(Component.text(" ")).append(Component.translatable("minecleaner.common.and").append(Component.text(" "))); | ||||
|             } | ||||
|             String secondsString = " Sekunden"; | ||||
|             String secondsString = " " + Component.translatable("minecleaner.common.seconds"); | ||||
|             if(shorten) { | ||||
|                 secondsString = " s"; | ||||
|             } | ||||
|  |  | |||
|  | @ -0,0 +1,11 @@ | |||
| package de.lunarakai.minecleaner.utils; | ||||
| 
 | ||||
| import de.lunarakai.minecleaner.MinecleanerPlugin; | ||||
| import org.bukkit.entity.Player; | ||||
| 
 | ||||
| public class MinecleanerUtils { | ||||
| 
 | ||||
|     public static boolean isPlayerInGroup(MinecleanerPlugin plugin, Player player) { | ||||
|         return plugin.getGroupManager().getGroup(player) != null; | ||||
|     } | ||||
| } | ||||
|  | @ -3,6 +3,20 @@ minecleaner.info.developer=Entwickelt von | |||
| minecleaner.info.website=Website | ||||
| minecleaner.info.license=Lizenz | ||||
| 
 | ||||
| minecleaner.common.hours=Stunden | ||||
| minecleaner.common.minutes=Minuten | ||||
| minecleaner.common.seconds=Sekunden | ||||
| minecleaner.common.and=und | ||||
| 
 | ||||
| settings.manualreset.allow=Manuelles Resetten aktiviert | ||||
| settings.manualreset.deny=Manuelles Resetten deaktiviert | ||||
| settings.additionaltimer.allow=Zusätzliche Anzeige in der Action Bar aktiviert | ||||
| settings.additionaltimer.deny=Zusätzliche Anzeige in der Action Bar deaktiviert | ||||
| settings.timer.allow=Timer wird angezeigt | ||||
| settings.timer.deny=Timer wird nicht angezeigt | ||||
| settings.resettime.text=Resetzeit | ||||
| 
 | ||||
| 
 | ||||
| arena.name.invalid=Ungültiger Arenaname. Erlaubt sind Buchstaben, Zahlen und der Unterstrich | ||||
| arena.name.exists=Eine Arena mit diesem Namen existiert bereits | ||||
| arena.width.klein=Klein | ||||
|  | @ -20,6 +34,8 @@ arena.delete.success=Die {0}-Arena {1} wurde gelöscht. | |||
| arena.delete.noarena=Hier befindet sich keine {0}-Arena. | ||||
| 
 | ||||
| arena.common.noarena=Hier befindet sich keine Arena. | ||||
| arena.common.toofaraway=Du hast dich zu weit von der Arena entfernt. Das Spiel wurde abgebrochen. | ||||
| arena.common.groupleadertoofaraway=Der Ersteller der Gruppe hat sich zu weit von der Arena entfernt. Das Spiel wurde abgebrochen. | ||||
| 
 | ||||
| arena.list.created=Angelegte {0}-Arenen | ||||
| arena.list.none=(keine) | ||||
|  | @ -53,9 +69,9 @@ group.invite.nopermission=Nur als Ersteller der Gruppe bist du berechtigt Leute | |||
| group.invite.accept=Annehmen | ||||
| group.invite.deny=Ablehnen | ||||
| 
 | ||||
| group.leave.usedismantle=Als Ersteller der Gruppe nutze /... dismantlegroup um die Gruppe aufzulösen. | ||||
| 
 | ||||
| group.dismantle.nopermission=Du bist nicht berechtigt deine Gruppe aufzulösen. | ||||
| group.dismantle.yourgroup=Die Gruppe in der du dich befindest wurde aufgelöst. | ||||
| 
 | ||||
| group.game.nopermission=Nur der Ersteller der Gruppe kann eine neue Runde starten! | ||||
| group.creator.removed=Die Gruppe wurde aufgelöst, da die Person, welche die Gruppe erstellt hat, aus der Gruppe entfernt wurde. | ||||
| group.dismantled.alone=Die Gruppe wurde aufgelöst, da du nur noch alleine in der Gruppe bist. | ||||
|  | @ -3,6 +3,19 @@ minecleaner.info.developer=Developed by | |||
| minecleaner.info.website=Website | ||||
| minecleaner.info.license=License | ||||
| 
 | ||||
| minecleaner.common.hours=hours | ||||
| minecleaner.common.minutes=minutes | ||||
| minecleaner.common.seconds=seconds | ||||
| minecleaner.common.and=and | ||||
| 
 | ||||
| settings.manualreset.allow=Manual reset activated | ||||
| settings.manualreset.deny=Manual reset deactivated | ||||
| settings.additionaltimer.allow=Additional display activated in the action bar | ||||
| settings.additionaltimer.deny=Additional display deactivated in the action bar | ||||
| settings.timer.allow=Timer is displayed | ||||
| settings.timer.deny=Timer is not displayed | ||||
| settings.resettime.text=reset time | ||||
| 
 | ||||
| arena.name.invalid=Invalid arena name. Allowed are letters, numbers and the underscore | ||||
| arena.name.exists=An arena with this name already exists | ||||
| arena.width.klein=Small | ||||
|  | @ -20,7 +33,8 @@ arena.delete.success=The {0}-arena {1} has been deleted. | |||
| arena.delete.noarena=There is no {0}-arena here. | ||||
| 
 | ||||
| arena.common.noarena=There is no arena here. | ||||
| 
 | ||||
| arena.common.toofaraway=You have moved too far away from the arena. The match has been abandoned. | ||||
| arena.common.groupleadertoofaraway=The creator of the group has moved too far away from the arena. The match has been abandoned. | ||||
| 
 | ||||
| arena.list.created=Created {0} arenas | ||||
| arena.list.none=(none) | ||||
|  | @ -54,9 +68,9 @@ group.invite.nopermission=Only as the creator of the group are you authorized to | |||
| group.invite.accept=Accept | ||||
| group.invite.deny=Deny | ||||
| 
 | ||||
| group.leave.usedismantle=As the creator of the group use /... dismantlegroup tO dissolve the group. | ||||
| 
 | ||||
| group.dismantle.nopermission=You are not authorized to dissolve your group. | ||||
| group.dismantle.yourgroup=The group you are in has been disbanded. | ||||
| 
 | ||||
| group.game.nopermission=Only the creator of the group can start a new round! | ||||
| group.creator.removed=The group has been dissolved because the person who created the group has been removed from the group. | ||||
| group.dismantled.alone=The group has been dissolved as you are now only alone in the group. | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue