From 4f9ce6f7704907034d3c89839ab153be987ebdf5 Mon Sep 17 00:00:00 2001 From: Tim203 Date: Wed, 9 Mar 2022 11:24:21 +0100 Subject: [PATCH] ProfileAudienceParser now respects the given player type --- .../geysermc/floodgate/FloodgatePlatform.java | 2 -- .../floodgate/command/WhitelistCommand.java | 2 +- .../platform/command/CommandUtil.java | 22 ++++++++++++++++++- .../audience/ProfileAudienceArgument.java | 12 +++------- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/core/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java b/core/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java index 6bb12fc9..245ef777 100644 --- a/core/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java +++ b/core/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java @@ -100,8 +100,6 @@ public class FloodgatePlatform { InstanceHolder.set(api, link, this.injector, packetHandlers, handshakeHandlers, KEY); - // todo this was the place where we provided the build number and branch for Geyser dump - guice.getInstance(NewsChecker.class).start(); } diff --git a/core/src/main/java/org/geysermc/floodgate/command/WhitelistCommand.java b/core/src/main/java/org/geysermc/floodgate/command/WhitelistCommand.java index 8176c71d..cce707cc 100644 --- a/core/src/main/java/org/geysermc/floodgate/command/WhitelistCommand.java +++ b/core/src/main/java/org/geysermc/floodgate/command/WhitelistCommand.java @@ -44,10 +44,10 @@ import org.geysermc.floodgate.config.ProxyFloodgateConfig; import org.geysermc.floodgate.platform.command.CommandUtil; import org.geysermc.floodgate.platform.command.FloodgateCommand; import org.geysermc.floodgate.platform.command.TranslatableMessage; +import org.geysermc.floodgate.platform.util.PlatformUtils.PlayerType; import org.geysermc.floodgate.player.UserAudience; import org.geysermc.floodgate.player.audience.ProfileAudience; import org.geysermc.floodgate.player.audience.ProfileAudienceArgument; -import org.geysermc.floodgate.player.audience.ProfileAudienceArgument.PlayerType; import org.geysermc.floodgate.util.Constants; import org.geysermc.floodgate.util.HttpUtils; diff --git a/core/src/main/java/org/geysermc/floodgate/platform/command/CommandUtil.java b/core/src/main/java/org/geysermc/floodgate/platform/command/CommandUtil.java index d29f0f75..bf9129a1 100644 --- a/core/src/main/java/org/geysermc/floodgate/platform/command/CommandUtil.java +++ b/core/src/main/java/org/geysermc/floodgate/platform/command/CommandUtil.java @@ -25,6 +25,9 @@ package org.geysermc.floodgate.platform.command; +import static org.geysermc.floodgate.platform.util.PlatformUtils.PlayerType.ALL_PLAYERS; +import static org.geysermc.floodgate.platform.util.PlatformUtils.PlayerType.ONLY_BEDROCK; + import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -35,9 +38,9 @@ import lombok.RequiredArgsConstructor; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.geysermc.floodgate.api.FloodgateApi; +import org.geysermc.floodgate.platform.util.PlatformUtils.PlayerType; import org.geysermc.floodgate.player.UserAudience; import org.geysermc.floodgate.player.audience.ProfileAudience; -import org.geysermc.floodgate.player.audience.ProfileAudienceArgument.PlayerType; import org.geysermc.floodgate.util.LanguageManager; import org.geysermc.floodgate.util.Utils; @@ -116,8 +119,25 @@ public abstract class CommandUtil { */ public abstract Object getPlayerByUuid(@NonNull UUID uuid); + public Object getPlayerByUuid(@NonNull UUID uuid, PlayerType limitTo) { + return applyPlayerTypeFilter(getPlayerByUuid(uuid), limitTo, uuid); + } + public abstract Object getPlayerByUsername(@NonNull String username); + public Object getPlayerByUsername(@NonNull String username, PlayerType limitTo) { + return applyPlayerTypeFilter(getPlayerByUsername(username), limitTo, username); + } + + protected Object applyPlayerTypeFilter(Object player, PlayerType filter, Object fallback) { + if (filter == ALL_PLAYERS || player instanceof String || player instanceof UUID) { + return player; + } + return (filter == ONLY_BEDROCK) == api.isFloodgatePlayer(getUuidFromSource(player)) + ? player + : fallback; + } + /** * Checks if the given player has the given permission. * diff --git a/core/src/main/java/org/geysermc/floodgate/player/audience/ProfileAudienceArgument.java b/core/src/main/java/org/geysermc/floodgate/player/audience/ProfileAudienceArgument.java index c1739f6e..d9ed8e47 100644 --- a/core/src/main/java/org/geysermc/floodgate/player/audience/ProfileAudienceArgument.java +++ b/core/src/main/java/org/geysermc/floodgate/player/audience/ProfileAudienceArgument.java @@ -37,6 +37,7 @@ import java.util.UUID; import lombok.RequiredArgsConstructor; import org.checkerframework.checker.nullness.qual.NonNull; import org.geysermc.floodgate.platform.command.CommandUtil; +import org.geysermc.floodgate.platform.util.PlatformUtils.PlayerType; import org.geysermc.floodgate.player.UserAudience; public class ProfileAudienceArgument extends CommandArgument { @@ -76,12 +77,6 @@ public class ProfileAudienceArgument extends CommandArgument { @@ -94,7 +89,6 @@ public class ProfileAudienceArgument extends CommandArgument parse( @NonNull CommandContext<@NonNull UserAudience> commandContext, @NonNull Queue<@NonNull String> inputQueue) { - //todo we don't use the limitTo in the getProfile methods CommandUtil commandUtil = commandContext.get("CommandUtil"); String input = inputQueue.poll(); @@ -148,7 +142,7 @@ public class ProfileAudienceArgument extends CommandArgument