From 28ff6611fa569dd62e18eb48de397548e17ed45f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Oliva=20Del=20R=C3=ADo?= Date: Tue, 14 Apr 2026 20:38:51 +0200 Subject: [PATCH] Add /jailedplayers command to list all jailed players --- .../com/earth2me/essentials/Essentials.java | 7 ++++++ .../com/earth2me/essentials/IEssentials.java | 2 ++ .../commands/Commandjailedplayers.java | 23 +++++++++++++++++++ .../src/main/resources/messages.properties | 4 ++++ Essentials/src/main/resources/plugin.yml | 6 +++++ 5 files changed, 42 insertions(+) create mode 100644 Essentials/src/main/java/com/earth2me/essentials/commands/Commandjailedplayers.java diff --git a/Essentials/src/main/java/com/earth2me/essentials/Essentials.java b/Essentials/src/main/java/com/earth2me/essentials/Essentials.java index 9488832f2a9..8f8e378900f 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Essentials.java @@ -146,6 +146,8 @@ import java.util.function.Predicate; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.Objects; +import java.util.stream.Collectors; import static com.earth2me.essentials.I18n.tlLiteral; import static com.earth2me.essentials.I18n.tlLocale; @@ -903,6 +905,11 @@ public BukkitScheduler getScheduler() { return this.getServer().getScheduler(); } + @Override + public List getJailedPlayers() { + return getUsers().getAllUserUUIDs().stream().map(this::getUser).filter(Objects::nonNull).filter(User::isJailed).map(User::getBase).filter(Objects::nonNull).collect(Collectors.toList()); + } + @Override public IJails getJails() { return jails; diff --git a/Essentials/src/main/java/com/earth2me/essentials/IEssentials.java b/Essentials/src/main/java/com/earth2me/essentials/IEssentials.java index 6e69b938bdb..48a2aa2b130 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/IEssentials.java +++ b/Essentials/src/main/java/com/earth2me/essentials/IEssentials.java @@ -82,6 +82,8 @@ public interface IEssentials extends Plugin { BukkitScheduler getScheduler(); + List getJailedPlayers(); + IJails getJails(); IWarps getWarps(); diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandjailedplayers.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandjailedplayers.java new file mode 100644 index 00000000000..dfc2b8df627 --- /dev/null +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandjailedplayers.java @@ -0,0 +1,23 @@ +package com.earth2me.essentials.commands; + +import com.earth2me.essentials.CommandSource; +import com.earth2me.essentials.utils.StringUtil; +import org.bukkit.Server; +import org.bukkit.entity.Player; + +import java.util.stream.Collectors; + +public class Commandjailedplayers extends EssentialsCommand { + public Commandjailedplayers() { + super("jailedplayers"); + } + + @Override + protected void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception { + if (ess.getJailedPlayers() != null && !ess.getJailedPlayers().isEmpty()) { + sender.sendTl("jailedPlayersList", StringUtil.joinList(", ", ess.getJailedPlayers().stream().map(Player::getName).collect(Collectors.toList()))); + } else { + sender.sendTl("jailedPlayersEmpty"); + } + } +} diff --git a/Essentials/src/main/resources/messages.properties b/Essentials/src/main/resources/messages.properties index 0c8b6bc05f3..85f1d20dc36 100644 --- a/Essentials/src/main/resources/messages.properties +++ b/Essentials/src/main/resources/messages.properties @@ -625,6 +625,8 @@ itemdbCommandUsage=/ itemdbCommandUsage1=/ itemdbCommandUsage1Description=Searches the item database for the given item jailAlreadyIncarcerated=Person is already in jail\: {0} +jailedPlayersList=Jailed Players\: {0} +jailedPlayersEmpty=There are no jailed players. jailList=Jails\: {0} jailMessage=You do the crime, you do the time. jailNotExist=That jail does not exist. @@ -638,6 +640,8 @@ jailSet=Jail {0} has been set. jailWorldNotExist=That jail's world does not exist. jumpEasterDisable=Flying wizard mode disabled. jumpEasterEnable=Flying wizard mode enabled. +jailedplayersCommandDescription=List all jailed players. +jailedplayersCommandUsage=/ jailsCommandDescription=List all jails. jailsCommandUsage=/ jumpCommandDescription=Jumps to the nearest block in the line of sight. diff --git a/Essentials/src/main/resources/plugin.yml b/Essentials/src/main/resources/plugin.yml index b18e7f06f6c..c8c40728db7 100644 --- a/Essentials/src/main/resources/plugin.yml +++ b/Essentials/src/main/resources/plugin.yml @@ -243,6 +243,10 @@ commands: description: Names an item. usage: / [name] aliases: [iname, einame, eitemname, itemrename, irename, eitemrename, eirename] + jailedplayers: + description: List all jailed players. + usage: / + aliases: [ejailed, ejp] jails: description: List all jails. usage: / @@ -955,6 +959,8 @@ permissions: description: Allows the bearer to damage blocks while jailed essentials.jail.allow-interact: description: Allows the bearer to interact with blocks while jailed + essentials.jailedplayers: + description: Allows access to the /jailedplayers command essentials.jails: description: Allows access to the /jails command essentials.deljail: