@@ -81,6 +81,10 @@ public static void register(CommandDispatcher<ServerCommandSource> dispatcher) {
8181 // /jail time <player>
8282 .then (CommandManager .argument ("player" , EntityArgumentType .player ())
8383 .executes (JailCommand ::checkPlayerJailTime )))
84+
85+ // /jail list
86+ .then (CommandManager .literal ("list" )
87+ .executes (JailCommand ::listJailedPlayers ))
8488 );
8589 }
8690
@@ -371,6 +375,56 @@ private static int checkPlayerJailTime(CommandContext<ServerCommandSource> conte
371375 return 1 ;
372376 }
373377
378+ private static int listJailedPlayers (CommandContext <ServerCommandSource > context ) throws CommandSyntaxException {
379+ ServerCommandSource source = context .getSource ();
380+
381+ // Check permission - only admins can list jailed players
382+ if (!PermissionUtil .hasPermission (source , PermissionUtil .JAIL_PLAYER )) {
383+ source .sendError (Text .literal ("§cYou don't have permission to list jailed players!" ));
384+ return 0 ;
385+ }
386+
387+ JailedPlayersData jailedData = OldSchoolJailMod .getJailedPlayersData ();
388+ Collection <JailedPlayer > jailedPlayers = jailedData .getAllJailedPlayers ();
389+
390+ if (jailedPlayers .isEmpty ()) {
391+ source .sendFeedback (() -> Text .literal ("§aNo players are currently jailed." ), false );
392+ return 1 ;
393+ }
394+
395+ source .sendFeedback (() -> Text .literal ("§e=== Currently Jailed Players ===" ), false );
396+
397+ for (JailedPlayer jailedPlayer : jailedPlayers ) {
398+ // Try to get player name from server
399+ final MinecraftServer server = source .getServer ();
400+ final String playerName ;
401+
402+ if (server != null ) {
403+ ServerPlayerEntity player = server .getPlayerManager ().getPlayer (jailedPlayer .getPlayerUuid ());
404+ if (player != null ) {
405+ playerName = player .getName ().getString ();
406+ } else {
407+ // Player is offline, use UUID as fallback
408+ playerName = jailedPlayer .getPlayerUuid ().toString ().substring (0 , 8 ) + "..." ;
409+ }
410+ } else {
411+ playerName = "Unknown" ;
412+ }
413+
414+ final long remaining = jailedPlayer .getRemainingTimeSeconds ();
415+ final String status = server != null && server .getPlayerManager ().getPlayer (jailedPlayer .getPlayerUuid ()) != null ? "§aOnline" : "§7Offline" ;
416+
417+ source .sendFeedback (() -> Text .literal ("§e" + playerName + " §7- Jail: §f" + jailedPlayer .getJailName () +
418+ " §7- Time: §f" + formatTime (remaining ) + " §7- Status: " + status ), false );
419+ source .sendFeedback (() -> Text .literal ("§7 Reason: §f" + jailedPlayer .getReason () +
420+ " §7- Jailed by: §f" + jailedPlayer .getJailedBy ()), false );
421+ }
422+
423+ source .sendFeedback (() -> Text .literal ("§eTotal: §f" + jailedPlayers .size () + " §eplayers jailed" ), false );
424+
425+ return 1 ;
426+ }
427+
374428 private static void teleportToJail (ServerPlayerEntity player , Jail jail ) {
375429 // Get the world
376430 MinecraftServer server = player .getServer ();
0 commit comments