diff --git a/api/src/main/java/org/geysermc/floodgate/api/FloodgateApi.java b/api/src/main/java/org/geysermc/floodgate/api/FloodgateApi.java index 1e105a8b..c422b120 100644 --- a/api/src/main/java/org/geysermc/floodgate/api/FloodgateApi.java +++ b/api/src/main/java/org/geysermc/floodgate/api/FloodgateApi.java @@ -25,6 +25,7 @@ package org.geysermc.floodgate.api; +import java.util.Collection; import java.util.UUID; import org.geysermc.cumulus.Form; import org.geysermc.cumulus.util.FormBuilder; @@ -39,6 +40,16 @@ public interface FloodgateApi { return InstanceHolder.getApi(); } + /** + * Returns all the online Floodgate players. + */ + Collection getPlayers(); + + /** + * Returns the number of Floodgate players who are currently online. + */ + int getPlayerCount(); + /** * Method to determine if the given online player is a bedrock player * diff --git a/common/src/main/java/org/geysermc/floodgate/api/SimpleFloodgateApi.java b/common/src/main/java/org/geysermc/floodgate/api/SimpleFloodgateApi.java index 255bcac1..2ef2ebb4 100644 --- a/common/src/main/java/org/geysermc/floodgate/api/SimpleFloodgateApi.java +++ b/common/src/main/java/org/geysermc/floodgate/api/SimpleFloodgateApi.java @@ -25,6 +25,8 @@ package org.geysermc.floodgate.api; +import com.google.common.collect.ImmutableSet; +import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.UUID; @@ -39,9 +41,19 @@ import org.geysermc.floodgate.util.Utils; @RequiredArgsConstructor public class SimpleFloodgateApi implements FloodgateApi { - public final Map players = new HashMap<>(); + private final Map players = new HashMap<>(); private final PluginMessageHandler pluginMessageHandler; + @Override + public Collection getPlayers() { + return ImmutableSet.copyOf(players.values()); + } + + @Override + public int getPlayerCount() { + return players.size(); + } + @Override public boolean isFloodgatePlayer(UUID uuid) { return getPlayer(uuid) != null; diff --git a/common/src/main/java/org/geysermc/floodgate/command/TestCommand.java b/common/src/main/java/org/geysermc/floodgate/command/TestCommand.java index 8a804522..92cbccd0 100644 --- a/common/src/main/java/org/geysermc/floodgate/command/TestCommand.java +++ b/common/src/main/java/org/geysermc/floodgate/command/TestCommand.java @@ -30,7 +30,6 @@ import cloud.commandframework.CommandManager; import cloud.commandframework.context.CommandContext; import net.kyori.adventure.text.Component; import org.geysermc.floodgate.api.FloodgateApi; -import org.geysermc.floodgate.api.SimpleFloodgateApi; import org.geysermc.floodgate.config.FloodgateConfig; import org.geysermc.floodgate.platform.command.FloodgateCommand; import org.geysermc.floodgate.player.UserAudience; @@ -47,7 +46,7 @@ public class TestCommand implements FloodgateCommand { @Override public void execute(CommandContext context) { - int players = ((SimpleFloodgateApi) FloodgateApi.getInstance()).players.size(); + int players = FloodgateApi.getInstance().getPlayers().size(); context.getSender().sendMessage(Component.text(players)); }