mirror of
https://github.com/GeyserMC/Floodgate.git
synced 2026-01-04 15:31:48 +00:00
ProfileAudienceParser now respects the given player type
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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<UserAudience, ProfileAudience> {
|
||||
@@ -76,12 +77,6 @@ public class ProfileAudienceArgument extends CommandArgument<UserAudience, Profi
|
||||
return of(name, false, allowOffline, PlayerType.ALL_PLAYERS);
|
||||
}
|
||||
|
||||
public enum PlayerType {
|
||||
ALL_PLAYERS,
|
||||
ONLY_BEDROCK,
|
||||
ONLY_JAVA
|
||||
}
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public static final class ProfileAudienceParser
|
||||
implements ArgumentParser<UserAudience, ProfileAudience> {
|
||||
@@ -94,7 +89,6 @@ public class ProfileAudienceArgument extends CommandArgument<UserAudience, Profi
|
||||
public @NonNull ArgumentParseResult<ProfileAudience> 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<UserAudience, Profi
|
||||
|
||||
try {
|
||||
// We only want to make sure the UUID is valid here.
|
||||
Object player = commandUtil.getPlayerByUuid(UUID.fromString(input));
|
||||
Object player = commandUtil.getPlayerByUuid(UUID.fromString(input), limitTo);
|
||||
profileAudience = commandUtil.getProfileAudience(player, allowOffline);
|
||||
} catch (final IllegalArgumentException ignored) {
|
||||
return ArgumentParseResult.failure(
|
||||
@@ -156,7 +150,7 @@ public class ProfileAudienceArgument extends CommandArgument<UserAudience, Profi
|
||||
}
|
||||
} else {
|
||||
// This is a username.
|
||||
Object player = commandUtil.getPlayerByUsername(input);
|
||||
Object player = commandUtil.getPlayerByUsername(input, limitTo);
|
||||
profileAudience = commandUtil.getProfileAudience(player, allowOffline);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user