1
0
mirror of https://github.com/GeyserMC/Floodgate.git synced 2025-12-19 14:59:20 +00:00

Removed config holder and changed a few things

This commit is contained in:
Tim203
2022-07-03 22:03:52 +02:00
parent 69aacfa91b
commit 1815613be6
18 changed files with 99 additions and 232 deletions

View File

@@ -80,18 +80,7 @@ public interface FloodgateLogger {
void trace(String message, Object... args);
/**
* Enables debug mode for the Floodgate logger.
*/
void enableDebug();
/**
* Disables debug mode for the Floodgate logger. Debug messages can still be sent after running
* this method, but they will be hidden from the console.
*/
void disableDebug();
/**
* Returns if debugging is enabled
* Returns true if debugging is enabled
*/
boolean isDebug();
}

View File

@@ -29,7 +29,7 @@ object Versions {
const val configUtilsVersion = "1.0-SNAPSHOT"
const val spigotVersion = "1.13-R0.1-SNAPSHOT"
const val fastutilVersion = "8.5.3"
const val guiceVersion = "5.0.1"
const val guiceVersion = "5.1.0"
const val nettyVersion = "4.1.49.Final"
const val snakeyamlVersion = "1.28"
const val cloudVersion = "1.5.0"

View File

@@ -66,6 +66,7 @@ public final class BungeePlatformModule extends AbstractModule {
@Override
protected void configure() {
bind(PlatformUtils.class).to(BungeePlatformUtils.class);
bind(FloodgateLogger.class).to(JavaUtilFloodgateLogger.class);
}
@Provides
@@ -74,12 +75,6 @@ public final class BungeePlatformModule extends AbstractModule {
return plugin;
}
@Provides
@Singleton
public FloodgateLogger floodgateLogger(LanguageManager languageManager) {
return new JavaUtilFloodgateLogger(plugin.getLogger(), languageManager);
}
/*
Commands / Listeners
*/

View File

@@ -28,10 +28,6 @@ package org.geysermc.floodgate;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.Module;
import com.google.inject.name.Named;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.UUID;
import net.engio.mbassy.bus.common.PubSubSupport;
import org.geysermc.floodgate.api.FloodgateApi;
@@ -41,12 +37,9 @@ import org.geysermc.floodgate.api.inject.PlatformInjector;
import org.geysermc.floodgate.api.link.PlayerLink;
import org.geysermc.floodgate.api.logger.FloodgateLogger;
import org.geysermc.floodgate.api.packet.PacketHandlers;
import org.geysermc.floodgate.config.ConfigLoader;
import org.geysermc.floodgate.config.FloodgateConfig;
import org.geysermc.floodgate.config.FloodgateConfigHolder;
import org.geysermc.floodgate.event.ShutdownEvent;
import org.geysermc.floodgate.link.PlayerLinkLoader;
import org.geysermc.floodgate.module.ConfigLoadedModule;
import org.geysermc.floodgate.module.PostInitializeModule;
import org.geysermc.floodgate.news.NewsChecker;
import org.geysermc.floodgate.util.Metrics;
@@ -54,51 +47,16 @@ import org.geysermc.floodgate.util.PrefixCheckTask;
public class FloodgatePlatform {
private static final UUID KEY = UUID.randomUUID();
private final FloodgateApi api;
private final PlatformInjector injector;
@Inject private FloodgateApi api;
@Inject private PlatformInjector injector;
private final FloodgateLogger logger;
@Inject private FloodgateLogger logger;
private FloodgateConfig config;
private Injector guice;
@Inject private FloodgateConfig config;
@Inject private Injector guice;
@Inject
public FloodgatePlatform(
FloodgateApi api,
PlatformInjector platformInjector,
FloodgateLogger logger,
Injector guice) {
this.api = api;
this.injector = platformInjector;
this.logger = logger;
this.guice = guice;
}
@Inject
public void init(
@Named("dataDirectory") Path dataDirectory,
ConfigLoader configLoader,
FloodgateConfigHolder configHolder,
PacketHandlers packetHandlers,
HandshakeHandlers handshakeHandlers) {
if (!Files.isDirectory(dataDirectory)) {
try {
Files.createDirectory(dataDirectory);
} catch (IOException exception) {
logger.error("Failed to create the data folder", exception);
throw new RuntimeException("Failed to create the data folder", exception);
}
}
config = configLoader.load();
if (config.isDebug()) {
logger.enableDebug();
}
configHolder.set(config);
guice = guice.createChildInjector(new ConfigLoadedModule(config));
public void init(PacketHandlers packetHandlers, HandshakeHandlers handshakeHandlers) {
PlayerLink link = guice.getInstance(PlayerLinkLoader.class).load();
InstanceHolder.set(api, link, this.injector, packetHandlers, handshakeHandlers, KEY);
@@ -131,7 +89,7 @@ public class FloodgatePlatform {
return true;
}
public boolean disable() {
public void disable() {
guice.getInstance(PubSubSupport.class).publish(new ShutdownEvent());
if (injector != null && injector.canRemoveInjection()) {
@@ -143,7 +101,6 @@ public class FloodgatePlatform {
logger.error("Failed to remove the injection!", exception);
}
}
return true;
}
public boolean isProxy() {

View File

@@ -42,7 +42,7 @@ import org.geysermc.cumulus.form.util.FormBuilder;
import org.geysermc.floodgate.api.logger.FloodgateLogger;
import org.geysermc.floodgate.api.player.FloodgatePlayer;
import org.geysermc.floodgate.api.unsafe.Unsafe;
import org.geysermc.floodgate.config.FloodgateConfigHolder;
import org.geysermc.floodgate.config.FloodgateConfig;
import org.geysermc.floodgate.pluginmessage.PluginMessageManager;
import org.geysermc.floodgate.pluginmessage.channel.FormChannel;
import org.geysermc.floodgate.pluginmessage.channel.TransferChannel;
@@ -58,13 +58,13 @@ public class SimpleFloodgateApi implements FloodgateApi {
.build();
@Inject private PluginMessageManager pluginMessageManager;
@Inject private FloodgateConfigHolder configHolder;
@Inject private FloodgateConfig config;
@Inject private HttpClient httpClient;
@Inject private FloodgateLogger logger;
@Override
public String getPlayerPrefix() {
return configHolder.get().getUsernamePrefix();
return config.getUsernamePrefix();
}
@Override

View File

@@ -32,23 +32,16 @@ import cloud.commandframework.Command;
import cloud.commandframework.Command.Builder;
import cloud.commandframework.CommandManager;
import cloud.commandframework.context.CommandContext;
import com.google.inject.Inject;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import org.geysermc.floodgate.command.util.Permission;
import org.geysermc.floodgate.platform.command.FloodgateCommand;
import org.geysermc.floodgate.platform.command.FloodgateSubCommand;
import org.geysermc.floodgate.platform.command.SubCommands;
import org.geysermc.floodgate.player.UserAudience;
public final class MainCommand implements FloodgateCommand {
private final List<FloodgateSubCommand> subCommands = new ArrayList<>();
@Inject
public void createSubCommands(FirewallCheckSubcommand firewallCheckSubcommand) {
//todo move subcommand logic to a separate class
subCommands.clear();
subCommands.add(firewallCheckSubcommand);
public final class MainCommand extends SubCommands implements FloodgateCommand {
public MainCommand() {
defineSubCommand(FirewallCheckSubcommand.class);
}
@Override
@@ -60,7 +53,7 @@ public final class MainCommand implements FloodgateCommand {
.permission(Permission.COMMAND_MAIN.get())
.handler(this::execute);
for (FloodgateSubCommand subCommand : subCommands) {
for (FloodgateSubCommand subCommand : subCommands()) {
commandManager.command(builder
.literal(subCommand.name().toLowerCase(Locale.ROOT), subCommand.description())
.permission(subCommand.permission().get())
@@ -76,7 +69,7 @@ public final class MainCommand implements FloodgateCommand {
public void execute(CommandContext<UserAudience> context) {
StringBuilder helpMessage = new StringBuilder("Available subcommands are:\n");
for (FloodgateSubCommand subCommand : subCommands) {
for (FloodgateSubCommand subCommand : subCommands()) {
if (context.getSender().hasPermission(subCommand.permission().get())) {
helpMessage.append('\n').append(COLOR_CHAR).append('b')
.append(subCommand.name().toLowerCase(Locale.ROOT))

View File

@@ -35,7 +35,6 @@ import org.geysermc.configutils.ConfigUtilities;
import org.geysermc.configutils.file.codec.PathFileCodec;
import org.geysermc.configutils.file.template.ResourceTemplateReader;
import org.geysermc.configutils.updater.change.Changes;
import org.geysermc.floodgate.api.logger.FloodgateLogger;
import org.geysermc.floodgate.crypto.FloodgateCipher;
import org.geysermc.floodgate.crypto.KeyProducer;
@@ -48,8 +47,6 @@ public final class ConfigLoader {
private final KeyProducer keyProducer;
private final FloodgateCipher cipher;
private final FloodgateLogger logger;
@SuppressWarnings("unchecked")
public <T extends FloodgateConfig> T load() {
String templateFile = "config.yml";
@@ -100,21 +97,16 @@ public final class ConfigLoader {
String decrypted = cipher.decryptToString(encrypted);
if (!test.equals(decrypted)) {
logger.error("Whoops, we tested the generated Floodgate keys but " +
"the decrypted test message doesn't match the original.\n" +
throw new RuntimeException("Failed to decrypt test message.\n" +
"Original message: " + test + "." +
"Decrypted message: " + decrypted + ".\n" +
"The encrypted message itself: " + new String(encrypted)
);
throw new RuntimeException(
"Tested the generated public and private key but, " +
"the decrypted message doesn't match the original!"
);
}
Files.write(keyPath, key.getEncoded());
} catch (Exception exception) {
logger.error("Error while creating key", exception);
throw new RuntimeException("Error while creating key", exception);
}
}
}

View File

@@ -27,17 +27,23 @@ package org.geysermc.floodgate.logger;
import static org.geysermc.floodgate.util.MessageFormatter.format;
import com.google.inject.Inject;
import java.util.logging.Level;
import java.util.logging.Logger;
import lombok.RequiredArgsConstructor;
import org.geysermc.floodgate.api.logger.FloodgateLogger;
import org.geysermc.floodgate.config.FloodgateConfig;
import org.geysermc.floodgate.util.LanguageManager;
@RequiredArgsConstructor
public final class JavaUtilFloodgateLogger implements FloodgateLogger {
private final Logger logger;
private final LanguageManager languageManager;
private Level originLevel;
@Inject private Logger logger;
@Inject private LanguageManager languageManager;
@Inject
private void init(FloodgateConfig config) {
if (config.isDebug()) {
logger.setLevel(Level.ALL);
}
}
@Override
public void error(String message, Object... args) {
@@ -74,19 +80,6 @@ public final class JavaUtilFloodgateLogger implements FloodgateLogger {
logger.finer(format(message, args));
}
@Override
public void enableDebug() {
originLevel = logger.getLevel();
logger.setLevel(Level.ALL);
}
@Override
public void disableDebug() {
if (originLevel != null) {
logger.setLevel(originLevel);
}
}
@Override
public boolean isDebug() {
return logger.getLevel() == Level.ALL;

View File

@@ -49,7 +49,6 @@ import org.geysermc.floodgate.api.packet.PacketHandlers;
import org.geysermc.floodgate.api.player.FloodgatePlayer;
import org.geysermc.floodgate.config.ConfigLoader;
import org.geysermc.floodgate.config.FloodgateConfig;
import org.geysermc.floodgate.config.FloodgateConfigHolder;
import org.geysermc.floodgate.crypto.AesCipher;
import org.geysermc.floodgate.crypto.AesKeyProducer;
import org.geysermc.floodgate.crypto.Base64Topping;
@@ -65,7 +64,6 @@ import org.geysermc.floodgate.skin.SkinApplier;
import org.geysermc.floodgate.skin.SkinUploadManager;
import org.geysermc.floodgate.util.Constants;
import org.geysermc.floodgate.util.HttpClient;
import org.geysermc.floodgate.util.LanguageManager;
@RequiredArgsConstructor
public class CommonModule extends AbstractModule {
@@ -97,6 +95,12 @@ public class CommonModule extends AbstractModule {
bind(NewsChecker.class).in(Singleton.class);
}
@Provides
@Singleton
public FloodgateConfig floodgateConfig(ConfigLoader configLoader) {
return configLoader.load();
}
@Provides
@Singleton
public KeyProducer keyProducer() {
@@ -116,28 +120,13 @@ public class CommonModule extends AbstractModule {
return dataDirectory;
}
@Provides
@Singleton
public FloodgateConfigHolder configHolder() {
return new FloodgateConfigHolder();
}
@Provides
@Singleton
public ConfigLoader configLoader(
@Named("configClass") Class<? extends FloodgateConfig> configClass,
KeyProducer producer,
FloodgateCipher cipher,
FloodgateLogger logger) {
return new ConfigLoader(dataDirectory, configClass, producer, cipher, logger);
}
@Provides
@Singleton
public LanguageManager languageLoader(
FloodgateConfigHolder configHolder,
FloodgateLogger logger) {
return new LanguageManager(configHolder, logger);
FloodgateCipher cipher) {
return new ConfigLoader(dataDirectory, configClass, producer, cipher);
}
@Provides
@@ -146,12 +135,12 @@ public class CommonModule extends AbstractModule {
HandshakeHandlersImpl handshakeHandlers,
SimpleFloodgateApi api,
FloodgateCipher cipher,
FloodgateConfigHolder configHolder,
FloodgateConfig config,
SkinUploadManager skinUploadManager,
@Named("playerAttribute") AttributeKey<FloodgatePlayer> playerAttribute,
FloodgateLogger logger) {
return new FloodgateHandshakeHandler(handshakeHandlers, api, cipher, configHolder,
return new FloodgateHandshakeHandler(handshakeHandlers, api, cipher, config,
skinUploadManager, playerAttribute, logger);
}

View File

@@ -47,6 +47,12 @@ public final class ProxyCommonModule extends CommonModule {
bind(ProxyFloodgateApi.class).in(Singleton.class);
}
@Provides
@Singleton
public ProxyFloodgateConfig proxyFloodgateConfig(FloodgateConfig config) {
return (ProxyFloodgateConfig) config;
}
@Provides
@Singleton
@Named("configClass")

View File

@@ -39,6 +39,7 @@ public final class ServerCommonModule extends CommonModule {
@Override
protected void configure() {
super.configure();
bind(SimpleFloodgateApi.class).in(Singleton.class);
}

View File

@@ -23,37 +23,32 @@
* @link https://github.com/GeyserMC/Floodgate
*/
package org.geysermc.floodgate.config;
package org.geysermc.floodgate.platform.command;
import org.geysermc.floodgate.util.FloodgateInfoHolder;
import com.google.inject.Inject;
import com.google.inject.Injector;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
public class FloodgateConfigHolder {
private FloodgateConfig config;
public abstract class SubCommands {
private final Set<Class<? extends FloodgateSubCommand>> toRegister = new HashSet<>();
private Set<FloodgateSubCommand> subCommands;
public boolean has() {
return config != null;
public void defineSubCommand(Class<? extends FloodgateSubCommand> subCommandClass) {
toRegister.add(subCommandClass);
}
public boolean isProxy() {
return config instanceof ProxyFloodgateConfig;
@Inject
public void registerSubCommands(Injector injector) {
Set<FloodgateSubCommand> subCommandSet = new HashSet<>();
for (Class<? extends FloodgateSubCommand> subCommand : toRegister) {
subCommandSet.add(injector.getInstance(subCommand));
}
subCommands = Collections.unmodifiableSet(subCommandSet);
}
public FloodgateConfig get() {
return config;
}
public ProxyFloodgateConfig getAsProxy() {
return getAs();
}
@SuppressWarnings("unchecked")
public <T extends FloodgateConfig> T getAs() {
return (T) config;
}
public void set(FloodgateConfig config) {
this.config = config;
// for Geyser dump
FloodgateInfoHolder.setConfig(config);
protected Set<FloodgateSubCommand> subCommands() {
return subCommands;
}
}

View File

@@ -48,7 +48,7 @@ import org.geysermc.floodgate.api.handshake.HandshakeData;
import org.geysermc.floodgate.api.logger.FloodgateLogger;
import org.geysermc.floodgate.api.player.FloodgatePlayer;
import org.geysermc.floodgate.api.player.PropertyKey;
import org.geysermc.floodgate.config.FloodgateConfigHolder;
import org.geysermc.floodgate.config.FloodgateConfig;
import org.geysermc.floodgate.crypto.FloodgateCipher;
import org.geysermc.floodgate.skin.SkinUploadManager;
import org.geysermc.floodgate.util.BedrockData;
@@ -60,7 +60,7 @@ public final class FloodgateHandshakeHandler {
private final HandshakeHandlersImpl handshakeHandlers;
private final SimpleFloodgateApi api;
private final FloodgateCipher cipher;
private final FloodgateConfigHolder configHolder;
private final FloodgateConfig config;
private final SkinUploadManager skinUploadManager;
private final AttributeKey<FloodgatePlayer> playerAttribute;
private final FloodgateLogger logger;
@@ -69,7 +69,7 @@ public final class FloodgateHandshakeHandler {
HandshakeHandlersImpl handshakeHandlers,
SimpleFloodgateApi api,
FloodgateCipher cipher,
FloodgateConfigHolder configHolder,
FloodgateConfig config,
SkinUploadManager skinUploadManager,
AttributeKey<FloodgatePlayer> playerAttribute,
FloodgateLogger logger) {
@@ -77,7 +77,7 @@ public final class FloodgateHandshakeHandler {
this.handshakeHandlers = handshakeHandlers;
this.api = api;
this.cipher = cipher;
this.configHolder = configHolder;
this.config = config;
this.skinUploadManager = skinUploadManager;
this.playerAttribute = playerAttribute;
this.logger = logger;
@@ -134,7 +134,7 @@ public final class FloodgateHandshakeHandler {
);
} catch (Exception e) {
// all the other exceptions are caused by invalid/tempered Floodgate data
if (configHolder.get().isDebug()) {
if (config.isDebug()) {
e.printStackTrace();
}
@@ -207,10 +207,10 @@ public final class FloodgateHandshakeHandler {
try {
HandshakeData handshakeData = new HandshakeDataImpl(
channel, true, bedrockData.clone(), configHolder.get(),
channel, true, bedrockData.clone(), config,
linkedPlayer != null ? linkedPlayer.clone() : null, hostname);
if (configHolder.get().getPlayerLink().isRequireLink() && linkedPlayer == null) {
if (config.getPlayerLink().isRequireLink() && linkedPlayer == null) {
handshakeData.setDisconnectReason("floodgate.core.not_linked");
}
@@ -245,7 +245,7 @@ public final class FloodgateHandshakeHandler {
String hostname) {
HandshakeData handshakeData = new HandshakeDataImpl(channel, bedrockData != null,
bedrockData, configHolder.get(), null, hostname);
bedrockData, config, null, hostname);
handshakeHandlers.callHandshakeHandlers(handshakeData);
return new HandshakeResult(resultType, handshakeData, bedrockData, null);

View File

@@ -26,6 +26,8 @@
package org.geysermc.floodgate.util;
import com.google.common.base.Joiner;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
@@ -37,19 +39,18 @@ import java.util.Locale;
import java.util.Map;
import java.util.Properties;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.geysermc.floodgate.api.logger.FloodgateLogger;
import org.geysermc.floodgate.config.FloodgateConfig;
import org.geysermc.floodgate.config.FloodgateConfigHolder;
/**
* Manages translations for strings in Floodgate
*/
@RequiredArgsConstructor
@Singleton
public final class LanguageManager {
private final Map<String, Properties> localeMappings = new HashMap<>();
private final FloodgateConfigHolder configHolder;
private final FloodgateLogger logger;
@Inject private FloodgateConfig config;
@Inject private FloodgateLogger logger;
/**
* The locale used in console and as a fallback
@@ -71,24 +72,15 @@ public final class LanguageManager {
}
}
public boolean isLoaded() {
return logger != null && defaultLocale != null;
}
/**
* Tries to load the log's locale file once a string has been requested
*/
@Inject
private void init() {
if (!loadLocale("en_US")) {// Fallback
logger.error("Failed to load the fallback language. This will likely cause errors!");
}
FloodgateConfig config = configHolder.get();
if (config == null) {
// :thonk:
return;
}
defaultLocale = formatLocale(config.getDefaultLocale());
if (isValidLanguage(defaultLocale)) {
@@ -167,14 +159,6 @@ public final class LanguageManager {
* @return translated string or "key arg1, arg2 (etc.)" if it was not found in the given locale
*/
public String getString(String key, String locale, Object... values) {
if (!isLoaded()) {
init();
// we can skip everything if the LanguageManager can't be loaded yet
if (!isLoaded()) {
return formatNotFound(key, values);
}
}
Properties properties = localeMappings.get(locale);
String formatString = null;

View File

@@ -26,23 +26,13 @@
package org.geysermc.floodgate;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.Module;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import org.geysermc.floodgate.api.FloodgateApi;
import org.geysermc.floodgate.api.inject.PlatformInjector;
import org.geysermc.floodgate.api.logger.FloodgateLogger;
public final class SpigotPlatform extends FloodgatePlatform {
@Inject private JavaPlugin plugin;
@Inject
public SpigotPlatform(FloodgateApi api, PlatformInjector platformInjector,
FloodgateLogger logger, Injector injector) {
super(api, platformInjector, logger, injector);
}
@Override
public boolean enable(Module... postInitializeModules) {
boolean success = super.enable(postInitializeModules);

View File

@@ -60,6 +60,7 @@ public final class SpigotPlatformModule extends AbstractModule {
@Override
protected void configure() {
bind(PlatformUtils.class).to(SpigotPlatformUtils.class);
bind(FloodgateLogger.class).to(JavaUtilFloodgateLogger.class);
}
@Provides
@@ -68,12 +69,6 @@ public final class SpigotPlatformModule extends AbstractModule {
return plugin;
}
@Provides
@Singleton
public FloodgateLogger floodgateLogger(LanguageManager languageManager) {
return new JavaUtilFloodgateLogger(plugin.getLogger(), languageManager);
}
/*
Commands / Listeners
*/

View File

@@ -27,17 +27,26 @@ package org.geysermc.floodgate.logger;
import static org.geysermc.floodgate.util.MessageFormatter.format;
import lombok.RequiredArgsConstructor;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.config.Configurator;
import org.geysermc.floodgate.api.logger.FloodgateLogger;
import org.geysermc.floodgate.config.FloodgateConfig;
import org.geysermc.floodgate.util.LanguageManager;
import org.slf4j.Logger;
@RequiredArgsConstructor
@Singleton
public final class Slf4jFloodgateLogger implements FloodgateLogger {
private final Logger logger;
private final LanguageManager languageManager;
@Inject private Logger logger;
@Inject private LanguageManager languageManager;
@Inject
private void init(FloodgateConfig config) {
if (config.isDebug() && !logger.isDebugEnabled()) {
Configurator.setLevel(logger.getName(), Level.DEBUG);
}
}
@Override
public void error(String message, Object... args) {
@@ -74,20 +83,6 @@ public final class Slf4jFloodgateLogger implements FloodgateLogger {
logger.trace(message, args);
}
@Override
public void enableDebug() {
if (!logger.isDebugEnabled()) {
Configurator.setLevel(logger.getName(), Level.DEBUG);
}
}
@Override
public void disableDebug() {
if (logger.isDebugEnabled()) {
Configurator.setLevel(logger.getName(), Level.INFO);
}
}
@Override
public boolean isDebug() {
return logger.isDebugEnabled();

View File

@@ -56,11 +56,9 @@ import org.geysermc.floodgate.pluginmessage.PluginMessageRegistration;
import org.geysermc.floodgate.pluginmessage.VelocityPluginMessageRegistration;
import org.geysermc.floodgate.pluginmessage.VelocityPluginMessageUtils;
import org.geysermc.floodgate.skin.SkinApplier;
import org.geysermc.floodgate.util.LanguageManager;
import org.geysermc.floodgate.util.VelocityCommandUtil;
import org.geysermc.floodgate.util.VelocityPlatformUtils;
import org.geysermc.floodgate.util.VelocitySkinApplier;
import org.slf4j.Logger;
@RequiredArgsConstructor
public final class VelocityPlatformModule extends AbstractModule {
@@ -70,6 +68,7 @@ public final class VelocityPlatformModule extends AbstractModule {
protected void configure() {
bind(CommandUtil.class).to(VelocityCommandUtil.class);
bind(PlatformUtils.class).to(VelocityPlatformUtils.class);
bind(FloodgateLogger.class).to(Slf4jFloodgateLogger.class);
}
@Provides
@@ -89,12 +88,6 @@ public final class VelocityPlatformModule extends AbstractModule {
return commandManager;
}
@Provides
@Singleton
public FloodgateLogger floodgateLogger(Logger logger, LanguageManager languageManager) {
return new Slf4jFloodgateLogger(logger, languageManager);
}
/*
Commands / Listeners
*/