Skip to content

Commit

Permalink
No longer use Adventure internally. Started working on adding Checkstyle
Browse files Browse the repository at this point in the history
  • Loading branch information
Tim203 committed Mar 5, 2022
1 parent 0e055d1 commit 0e1e1b8
Show file tree
Hide file tree
Showing 27 changed files with 704 additions and 914 deletions.
2 changes: 0 additions & 2 deletions build-logic/src/main/kotlin/Versions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,6 @@ object Versions {
const val nettyVersion = "4.1.49.Final"
const val snakeyamlVersion = "1.28"
const val cloudVersion = "1.5.0"
const val adventureApiVersion = "4.10.0"
const val adventurePlatformVersion = "4.0.1"

const val javaWebsocketVersion = "1.5.2"

Expand Down
10 changes: 9 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ plugins {
id("floodgate.build-logic")
// id("com.github.spotbugs") version "4.8.0" apply false
id("io.freefair.lombok") version "6.3.0" apply false
// checkstyle
}

allprojects {
Expand All @@ -22,15 +23,22 @@ val platforms = setOf(
val api: Project = projects.api.dependencyProject

subprojects {
// apply(plugin = "pmd")
// apply(plugin = "com.github.spotbugs")

apply {
plugin("java-library")
// plugin("checkstyle")
plugin("io.freefair.lombok")
plugin("floodgate.build-logic")
}

// checkstyle {
// toolVersion = "9.3"
// configFile = rootProject.projectDir.resolve("checkstyle.xml")
// maxErrors = 0
// maxWarnings = 0
// }

val relativePath = projectDir.relativeTo(rootProject.projectDir).path

if (relativePath.startsWith("database" + File.separator)) {
Expand Down
3 changes: 0 additions & 3 deletions bungee/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@ var guavaVersion = "21.0"

dependencies {
api(projects.core)

implementation("cloud.commandframework", "cloud-bungee", Versions.cloudVersion)
implementation("net.kyori", "adventure-text-serializer-gson", Versions.adventureApiVersion)
implementation("net.kyori", "adventure-text-serializer-bungeecord", Versions.adventurePlatformVersion)
}

relocate("com.google.inject")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@
import org.geysermc.floodgate.config.ProxyFloodgateConfig;
import org.geysermc.floodgate.skin.SkinApplier;
import org.geysermc.floodgate.skin.SkinData;
import org.geysermc.floodgate.util.BungeeCommandUtil;
import org.geysermc.floodgate.util.LanguageManager;
import org.geysermc.floodgate.util.ReflectionUtils;

Expand Down Expand Up @@ -140,7 +139,5 @@ public void onPostLogin(PostLoginEvent event) {
@EventHandler(priority = EventPriority.HIGHEST)
public void onPlayerDisconnect(PlayerDisconnectEvent event) {
api.playerRemoved(event.getPlayer().getUniqueId());

BungeeCommandUtil.AUDIENCE_CACHE.remove(event.getPlayer().getUniqueId()); //todo
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public CommandManager<UserAudience> commandManager(CommandUtil commandUtil) {
CommandManager<UserAudience> commandManager = new BungeeCommandManager<>(
plugin,
CommandExecutionCoordinator.simpleCoordinator(),
commandUtil::getAudience,
commandUtil::getUserAudience,
audience -> (CommandSender) audience.source()
);
commandManager.registerCommandPreProcessor(new FloodgateCommandPreprocessor<>(commandUtil));
Expand All @@ -92,11 +92,8 @@ public CommandManager<UserAudience> commandManager(CommandUtil commandUtil) {

@Provides
@Singleton
public CommandUtil commandUtil(
FloodgateApi api,
FloodgateLogger logger,
LanguageManager languageManager) {
return new BungeeCommandUtil(plugin.getProxy(), api, logger, languageManager);
public CommandUtil commandUtil(FloodgateApi api, LanguageManager languageManager) {
return new BungeeCommandUtil(languageManager, plugin.getProxy(), api);
}

@Provides
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,42 +25,29 @@

package org.geysermc.floodgate.util;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import lombok.RequiredArgsConstructor;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.geysermc.floodgate.api.FloodgateApi;
import org.geysermc.floodgate.api.logger.FloodgateLogger;
import org.geysermc.floodgate.platform.command.CommandUtil;
import org.geysermc.floodgate.platform.command.TranslatableMessage;
import org.geysermc.floodgate.player.UserAudience;
import org.geysermc.floodgate.player.UserAudienceArgument.PlayerType;
import org.geysermc.floodgate.util.BungeeUserAudience.BungeeConsoleAudience;
import org.geysermc.floodgate.util.BungeeUserAudience.BungeePlayerAudience;

@RequiredArgsConstructor
public final class BungeeCommandUtil implements CommandUtil {
public static final @NonNull Map<UUID, UserAudience> AUDIENCE_CACHE = new HashMap<>();
private static UserAudience console;
import org.geysermc.floodgate.player.UserAudience.ConsoleAudience;
import org.geysermc.floodgate.player.UserAudience.PlayerAudience;

public final class BungeeCommandUtil extends CommandUtil {
private final ProxyServer server;
private final FloodgateApi api;
private UserAudience console;

private final FloodgateLogger logger;
private final LanguageManager manager;
public BungeeCommandUtil(LanguageManager manager, ProxyServer server, FloodgateApi api) {
super(manager, api);
this.server = server;
}

@Override
public @NonNull UserAudience getAudience(@NonNull Object sourceObj) {
public @NonNull UserAudience getUserAudience(@NonNull Object sourceObj) {
if (!(sourceObj instanceof CommandSender)) {
throw new IllegalArgumentException("Can only work with CommandSource!");
}
Expand All @@ -70,90 +57,47 @@ public final class BungeeCommandUtil implements CommandUtil {
if (console != null) {
return console;
}
return console = new BungeeConsoleAudience(source, this);
return console = new ConsoleAudience(source, this);
}

ProxiedPlayer player = (ProxiedPlayer) source;
UUID uuid = player.getUniqueId();
String username = player.getName();
String locale = Utils.getLocale(player.getLocale());

return AUDIENCE_CACHE.computeIfAbsent(uuid,
$ -> new BungeePlayerAudience(uuid, username, locale, source, true, this));
return new PlayerAudience(uuid, username, locale, source, this, true);
}

@Override
public @Nullable UserAudience getAudienceByUsername(@NonNull String username) {
ProxiedPlayer player = server.getPlayer(username);
return player != null ? getAudience(player) : null;
protected String getUsernameFromSource(@NonNull Object source) {
return ((ProxiedPlayer) source).getName();
}

@Override
public @NonNull UserAudience getOfflineAudienceByUsername(@NonNull String username) {
return new BungeePlayerAudience(null, username, null, null, false, this);
protected UUID getUuidFromSource(@NonNull Object source) {
return ((ProxiedPlayer) source).getUniqueId();
}

@Override
public @Nullable UserAudience getAudienceByUuid(@NonNull UUID uuid) {
ProxiedPlayer player = server.getPlayer(uuid);
return player != null ? getAudience(player) : null;
protected Collection<?> getOnlinePlayers() {
return server.getPlayers();
}

@Override
public @NonNull UserAudience getOfflineAudienceByUuid(@NonNull UUID uuid) {
return new BungeePlayerAudience(uuid, null, null, null, false, this);
public Object getPlayerByUuid(@NonNull UUID uuid) {
ProxiedPlayer player = server.getPlayer(uuid);
return player != null ? player : uuid;
}

@Override
public @NonNull Collection<String> getOnlineUsernames(@NonNull PlayerType limitTo) {
Collection<ProxiedPlayer> players = server.getPlayers();

Collection<String> usernames = new ArrayList<>();
switch (limitTo) {
case ALL_PLAYERS:
for (ProxiedPlayer player : players) {
usernames.add(player.getName());
}
break;
case ONLY_JAVA:
for (ProxiedPlayer player : players) {
if (!api.isFloodgatePlayer(player.getUniqueId())) {
usernames.add(player.getName());
}
}
break;
case ONLY_BEDROCK:
for (ProxiedPlayer player : players) {
if (api.isFloodgatePlayer(player.getUniqueId())) {
usernames.add(player.getName());
}
}
break;
default:
throw new IllegalStateException("Unknown PlayerType");
}
return usernames;
public Object getPlayerByUsername(@NonNull String username) {
ProxiedPlayer player = server.getPlayer(username);
return player != null ? player : username;
}

@Override
public boolean hasPermission(Object player, String permission) {
return cast(player).hasPermission(permission);
}

@Override
public Collection<Object> getOnlinePlayersWithPermission(String permission) {
List<Object> players = new ArrayList<>();
for (ProxiedPlayer player : ProxyServer.getInstance().getPlayers()) {
if (hasPermission(player, permission)) {
players.add(player);
}
}
return players;
}

@Override
public void sendMessage(Object target, String locale, TranslatableMessage message, Object... args) {
((CommandSender) target).sendMessage(translateAndTransform(locale, message, args));
return ((CommandSender) player).hasPermission(permission);
}

@Override
Expand All @@ -162,23 +106,10 @@ public void sendMessage(Object target, String message) {
}

@Override
public void kickPlayer(Object player, String locale, TranslatableMessage message, Object... args) {
cast(player).disconnect(translateAndTransform(locale, message, args));
}

public BaseComponent[] translateAndTransform(
String locale,
TranslatableMessage message,
Object... args) {
return TextComponent.fromLegacyText(message.translateMessage(manager, locale, args));
}

protected ProxiedPlayer cast(Object player) {
try {
return (ProxiedPlayer) player;
} catch (ClassCastException exception) {
logger.error("Failed to cast {} to ProxiedPlayer", player.getClass().getName());
throw exception;
public void kickPlayer(Object player, String message) {
// can also be a console
if (player instanceof ProxiedPlayer) {
((ProxiedPlayer) player).disconnect(message);
}
}
}
Loading

0 comments on commit 0e1e1b8

Please sign in to comment.