diff --git a/bungee/src/main/java/org/geysermc/floodgate/BungeePlatform.java b/bungee/src/main/java/org/geysermc/floodgate/bungee/BungeePlatform.java similarity index 85% rename from bungee/src/main/java/org/geysermc/floodgate/BungeePlatform.java rename to bungee/src/main/java/org/geysermc/floodgate/bungee/BungeePlatform.java index 7e0d5a8d..b98c5b8f 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/BungeePlatform.java +++ b/bungee/src/main/java/org/geysermc/floodgate/bungee/BungeePlatform.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,12 +23,13 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate; +package org.geysermc.floodgate.bungee; import com.google.inject.Module; import net.md_5.bungee.api.plugin.Plugin; -import org.geysermc.floodgate.module.BungeePlatformModule; -import org.geysermc.floodgate.util.ReflectionUtils; +import org.geysermc.floodgate.bungee.module.BungeePlatformModule; +import org.geysermc.floodgate.core.FloodgatePlatform; +import org.geysermc.floodgate.core.util.ReflectionUtils; public class BungeePlatform extends FloodgatePlatform { private final Plugin plugin; diff --git a/bungee/src/main/java/org/geysermc/floodgate/BungeePlugin.java b/bungee/src/main/java/org/geysermc/floodgate/bungee/BungeePlugin.java similarity index 94% rename from bungee/src/main/java/org/geysermc/floodgate/BungeePlugin.java rename to bungee/src/main/java/org/geysermc/floodgate/bungee/BungeePlugin.java index 511ed704..d7eff730 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/BungeePlugin.java +++ b/bungee/src/main/java/org/geysermc/floodgate/bungee/BungeePlugin.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate; +package org.geysermc.floodgate.bungee; import net.md_5.bungee.api.plugin.Plugin; diff --git a/bungee/src/main/java/org/geysermc/floodgate/addon/data/BungeeDataAddon.java b/bungee/src/main/java/org/geysermc/floodgate/bungee/addon/data/BungeeDataAddon.java similarity index 90% rename from bungee/src/main/java/org/geysermc/floodgate/addon/data/BungeeDataAddon.java rename to bungee/src/main/java/org/geysermc/floodgate/bungee/addon/data/BungeeDataAddon.java index 45c313b6..58c85f27 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/addon/data/BungeeDataAddon.java +++ b/bungee/src/main/java/org/geysermc/floodgate/bungee/addon/data/BungeeDataAddon.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,19 +23,20 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon.data; +package org.geysermc.floodgate.bungee.addon.data; import io.netty.channel.Channel; import io.netty.util.AttributeKey; import jakarta.inject.Inject; import jakarta.inject.Named; import jakarta.inject.Singleton; -import org.geysermc.floodgate.api.ProxyFloodgateApi; import org.geysermc.floodgate.api.inject.InjectorAddon; import org.geysermc.floodgate.api.logger.FloodgateLogger; import org.geysermc.floodgate.api.player.FloodgatePlayer; -import org.geysermc.floodgate.config.ProxyFloodgateConfig; -import org.geysermc.floodgate.player.FloodgateHandshakeHandler; +import org.geysermc.floodgate.core.addon.data.PacketBlocker; +import org.geysermc.floodgate.core.api.ProxyFloodgateApi; +import org.geysermc.floodgate.core.config.ProxyFloodgateConfig; +import org.geysermc.floodgate.core.player.FloodgateHandshakeHandler; @Singleton public class BungeeDataAddon implements InjectorAddon { diff --git a/bungee/src/main/java/org/geysermc/floodgate/addon/data/BungeeProxyDataHandler.java b/bungee/src/main/java/org/geysermc/floodgate/bungee/addon/data/BungeeProxyDataHandler.java similarity index 89% rename from bungee/src/main/java/org/geysermc/floodgate/addon/data/BungeeProxyDataHandler.java rename to bungee/src/main/java/org/geysermc/floodgate/bungee/addon/data/BungeeProxyDataHandler.java index 610b6023..b482570e 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/addon/data/BungeeProxyDataHandler.java +++ b/bungee/src/main/java/org/geysermc/floodgate/bungee/addon/data/BungeeProxyDataHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon.data; +package org.geysermc.floodgate.bungee.addon.data; import static com.google.common.base.Preconditions.checkNotNull; @@ -37,9 +37,11 @@ import net.md_5.bungee.netty.HandlerBoss; import net.md_5.bungee.protocol.DefinedPacket; import net.md_5.bungee.protocol.PacketWrapper; import net.md_5.bungee.protocol.packet.Handshake; -import org.geysermc.floodgate.config.ProxyFloodgateConfig; -import org.geysermc.floodgate.player.FloodgateHandshakeHandler; -import org.geysermc.floodgate.util.ReflectionUtils; +import org.geysermc.floodgate.core.addon.data.CommonDataHandler; +import org.geysermc.floodgate.core.addon.data.PacketBlocker; +import org.geysermc.floodgate.core.config.ProxyFloodgateConfig; +import org.geysermc.floodgate.core.player.FloodgateHandshakeHandler; +import org.geysermc.floodgate.core.util.ReflectionUtils; @SuppressWarnings("ConstantConditions") public class BungeeProxyDataHandler extends CommonDataHandler { diff --git a/bungee/src/main/java/org/geysermc/floodgate/addon/data/BungeeServerDataHandler.java b/bungee/src/main/java/org/geysermc/floodgate/bungee/addon/data/BungeeServerDataHandler.java similarity index 94% rename from bungee/src/main/java/org/geysermc/floodgate/addon/data/BungeeServerDataHandler.java rename to bungee/src/main/java/org/geysermc/floodgate/bungee/addon/data/BungeeServerDataHandler.java index 2a0add8c..5e46004b 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/addon/data/BungeeServerDataHandler.java +++ b/bungee/src/main/java/org/geysermc/floodgate/bungee/addon/data/BungeeServerDataHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon.data; +package org.geysermc.floodgate.bungee.addon.data; import static com.google.common.base.Preconditions.checkNotNull; @@ -39,11 +39,11 @@ import net.md_5.bungee.netty.ChannelWrapper; import net.md_5.bungee.netty.HandlerBoss; import net.md_5.bungee.netty.PacketHandler; import net.md_5.bungee.protocol.packet.Handshake; -import org.geysermc.floodgate.api.ProxyFloodgateApi; import org.geysermc.floodgate.api.player.FloodgatePlayer; -import org.geysermc.floodgate.player.FloodgatePlayerImpl; +import org.geysermc.floodgate.core.api.ProxyFloodgateApi; +import org.geysermc.floodgate.core.player.FloodgatePlayerImpl; +import org.geysermc.floodgate.core.util.ReflectionUtils; import org.geysermc.floodgate.util.BedrockData; -import org.geysermc.floodgate.util.ReflectionUtils; @SuppressWarnings("ConstantConditions") @RequiredArgsConstructor diff --git a/bungee/src/main/java/org/geysermc/floodgate/inject/bungee/BungeeInjector.java b/bungee/src/main/java/org/geysermc/floodgate/bungee/inject/BungeeInjector.java similarity index 94% rename from bungee/src/main/java/org/geysermc/floodgate/inject/bungee/BungeeInjector.java rename to bungee/src/main/java/org/geysermc/floodgate/bungee/inject/BungeeInjector.java index c5f611b3..9515299a 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/inject/bungee/BungeeInjector.java +++ b/bungee/src/main/java/org/geysermc/floodgate/bungee/inject/BungeeInjector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.inject.bungee; +package org.geysermc.floodgate.bungee.inject; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; @@ -38,9 +38,9 @@ import net.md_5.bungee.netty.PipelineUtils; import net.md_5.bungee.protocol.MinecraftEncoder; import net.md_5.bungee.protocol.Varint21LengthFieldPrepender; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.inject.CommonPlatformInjector; -import org.geysermc.floodgate.util.BungeeReflectionUtils; -import org.geysermc.floodgate.util.ReflectionUtils; +import org.geysermc.floodgate.bungee.util.BungeeReflectionUtils; +import org.geysermc.floodgate.core.inject.CommonPlatformInjector; +import org.geysermc.floodgate.core.util.ReflectionUtils; @RequiredArgsConstructor @Singleton diff --git a/bungee/src/main/java/org/geysermc/floodgate/listener/BungeeListener.java b/bungee/src/main/java/org/geysermc/floodgate/bungee/listener/BungeeListener.java similarity index 91% rename from bungee/src/main/java/org/geysermc/floodgate/listener/BungeeListener.java rename to bungee/src/main/java/org/geysermc/floodgate/bungee/listener/BungeeListener.java index c66c6f73..c0e8847b 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/listener/BungeeListener.java +++ b/bungee/src/main/java/org/geysermc/floodgate/bungee/listener/BungeeListener.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.listener; +package org.geysermc.floodgate.bungee.listener; import static com.google.common.base.Preconditions.checkNotNull; @@ -44,15 +44,15 @@ import net.md_5.bungee.connection.InitialHandler; import net.md_5.bungee.event.EventHandler; import net.md_5.bungee.event.EventPriority; import net.md_5.bungee.netty.ChannelWrapper; -import org.geysermc.floodgate.api.ProxyFloodgateApi; import org.geysermc.floodgate.api.logger.FloodgateLogger; import org.geysermc.floodgate.api.player.FloodgatePlayer; -import org.geysermc.floodgate.config.ProxyFloodgateConfig; -import org.geysermc.floodgate.register.ListenerRegister; -import org.geysermc.floodgate.skin.SkinApplier; -import org.geysermc.floodgate.skin.SkinDataImpl; -import org.geysermc.floodgate.util.LanguageManager; -import org.geysermc.floodgate.util.ReflectionUtils; +import org.geysermc.floodgate.core.api.ProxyFloodgateApi; +import org.geysermc.floodgate.core.config.ProxyFloodgateConfig; +import org.geysermc.floodgate.core.register.ListenerRegister; +import org.geysermc.floodgate.core.skin.SkinApplier; +import org.geysermc.floodgate.core.skin.SkinDataImpl; +import org.geysermc.floodgate.core.util.LanguageManager; +import org.geysermc.floodgate.core.util.ReflectionUtils; @ListenerRegister.Listener @Singleton diff --git a/bungee/src/main/java/org/geysermc/floodgate/listener/BungeeListenerRegistration.java b/bungee/src/main/java/org/geysermc/floodgate/bungee/listener/BungeeListenerRegistration.java similarity index 90% rename from bungee/src/main/java/org/geysermc/floodgate/listener/BungeeListenerRegistration.java rename to bungee/src/main/java/org/geysermc/floodgate/bungee/listener/BungeeListenerRegistration.java index 0282a738..5578ccca 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/listener/BungeeListenerRegistration.java +++ b/bungee/src/main/java/org/geysermc/floodgate/bungee/listener/BungeeListenerRegistration.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,14 +23,14 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.listener; +package org.geysermc.floodgate.bungee.listener; import jakarta.inject.Inject; import lombok.RequiredArgsConstructor; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.api.plugin.Plugin; -import org.geysermc.floodgate.platform.listener.ListenerRegistration; +import org.geysermc.floodgate.core.platform.listener.ListenerRegistration; @RequiredArgsConstructor(onConstructor = @__(@Inject)) public final class BungeeListenerRegistration implements ListenerRegistration { diff --git a/bungee/src/main/java/org/geysermc/floodgate/module/BungeePlatformModule.java b/bungee/src/main/java/org/geysermc/floodgate/bungee/module/BungeePlatformModule.java similarity index 78% rename from bungee/src/main/java/org/geysermc/floodgate/module/BungeePlatformModule.java rename to bungee/src/main/java/org/geysermc/floodgate/bungee/module/BungeePlatformModule.java index 801c0262..c05e8af1 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/module/BungeePlatformModule.java +++ b/bungee/src/main/java/org/geysermc/floodgate/bungee/module/BungeePlatformModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.module; +package org.geysermc.floodgate.bungee.module; import cloud.commandframework.CommandManager; import cloud.commandframework.bungee.BungeeCommandManager; @@ -40,22 +40,22 @@ import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.api.plugin.Plugin; import org.geysermc.floodgate.api.FloodgateApi; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.inject.CommonPlatformInjector; -import org.geysermc.floodgate.inject.bungee.BungeeInjector; -import org.geysermc.floodgate.listener.BungeeListenerRegistration; -import org.geysermc.floodgate.logger.JavaUtilFloodgateLogger; -import org.geysermc.floodgate.platform.command.CommandUtil; -import org.geysermc.floodgate.platform.listener.ListenerRegistration; -import org.geysermc.floodgate.platform.util.PlatformUtils; -import org.geysermc.floodgate.player.FloodgateCommandPreprocessor; -import org.geysermc.floodgate.player.UserAudience; -import org.geysermc.floodgate.pluginmessage.BungeePluginMessageRegistration; -import org.geysermc.floodgate.pluginmessage.BungeeSkinApplier; -import org.geysermc.floodgate.pluginmessage.PluginMessageRegistration; -import org.geysermc.floodgate.skin.SkinApplier; -import org.geysermc.floodgate.util.BungeeCommandUtil; -import org.geysermc.floodgate.util.BungeePlatformUtils; -import org.geysermc.floodgate.util.LanguageManager; +import org.geysermc.floodgate.bungee.inject.BungeeInjector; +import org.geysermc.floodgate.bungee.listener.BungeeListenerRegistration; +import org.geysermc.floodgate.bungee.pluginmessage.BungeePluginMessageRegistration; +import org.geysermc.floodgate.bungee.pluginmessage.BungeeSkinApplier; +import org.geysermc.floodgate.bungee.util.BungeeCommandUtil; +import org.geysermc.floodgate.bungee.util.BungeePlatformUtils; +import org.geysermc.floodgate.core.inject.CommonPlatformInjector; +import org.geysermc.floodgate.core.logger.JavaUtilFloodgateLogger; +import org.geysermc.floodgate.core.platform.command.CommandUtil; +import org.geysermc.floodgate.core.platform.listener.ListenerRegistration; +import org.geysermc.floodgate.core.platform.util.PlatformUtils; +import org.geysermc.floodgate.core.player.FloodgateCommandPreprocessor; +import org.geysermc.floodgate.core.player.UserAudience; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageRegistration; +import org.geysermc.floodgate.core.skin.SkinApplier; +import org.geysermc.floodgate.core.util.LanguageManager; @RequiredArgsConstructor public final class BungeePlatformModule extends AbstractModule { diff --git a/bungee/src/main/java/org/geysermc/floodgate/pluginmessage/BungeePluginMessageRegistration.java b/bungee/src/main/java/org/geysermc/floodgate/bungee/pluginmessage/BungeePluginMessageRegistration.java similarity index 84% rename from bungee/src/main/java/org/geysermc/floodgate/pluginmessage/BungeePluginMessageRegistration.java rename to bungee/src/main/java/org/geysermc/floodgate/bungee/pluginmessage/BungeePluginMessageRegistration.java index dc7bdeab..5fe283f7 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/pluginmessage/BungeePluginMessageRegistration.java +++ b/bungee/src/main/java/org/geysermc/floodgate/bungee/pluginmessage/BungeePluginMessageRegistration.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,9 +23,11 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.pluginmessage; +package org.geysermc.floodgate.bungee.pluginmessage; import net.md_5.bungee.api.ProxyServer; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageChannel; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageRegistration; public class BungeePluginMessageRegistration implements PluginMessageRegistration { @Override diff --git a/bungee/src/main/java/org/geysermc/floodgate/pluginmessage/BungeePluginMessageUtils.java b/bungee/src/main/java/org/geysermc/floodgate/bungee/pluginmessage/BungeePluginMessageUtils.java similarity index 86% rename from bungee/src/main/java/org/geysermc/floodgate/pluginmessage/BungeePluginMessageUtils.java rename to bungee/src/main/java/org/geysermc/floodgate/bungee/pluginmessage/BungeePluginMessageUtils.java index c4b62781..ae85ab8d 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/pluginmessage/BungeePluginMessageUtils.java +++ b/bungee/src/main/java/org/geysermc/floodgate/bungee/pluginmessage/BungeePluginMessageUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.pluginmessage; +package org.geysermc.floodgate.bungee.pluginmessage; import jakarta.inject.Inject; import jakarta.inject.Singleton; @@ -38,10 +38,12 @@ import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.event.EventHandler; import net.md_5.bungee.event.EventPriority; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.platform.pluginmessage.PluginMessageUtils; -import org.geysermc.floodgate.pluginmessage.PluginMessageChannel.Identity; -import org.geysermc.floodgate.pluginmessage.PluginMessageChannel.Result; -import org.geysermc.floodgate.register.ListenerRegister; +import org.geysermc.floodgate.core.platform.pluginmessage.PluginMessageUtils; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageChannel; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageChannel.Identity; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageChannel.Result; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageManager; +import org.geysermc.floodgate.core.register.ListenerRegister; @ListenerRegister.Listener @Singleton diff --git a/bungee/src/main/java/org/geysermc/floodgate/pluginmessage/BungeeSkinApplier.java b/bungee/src/main/java/org/geysermc/floodgate/bungee/pluginmessage/BungeeSkinApplier.java similarity index 90% rename from bungee/src/main/java/org/geysermc/floodgate/pluginmessage/BungeeSkinApplier.java rename to bungee/src/main/java/org/geysermc/floodgate/bungee/pluginmessage/BungeeSkinApplier.java index 5f73371e..e9549449 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/pluginmessage/BungeeSkinApplier.java +++ b/bungee/src/main/java/org/geysermc/floodgate/bungee/pluginmessage/BungeeSkinApplier.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,10 +23,10 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.pluginmessage; +package org.geysermc.floodgate.bungee.pluginmessage; import static com.google.common.base.Preconditions.checkNotNull; -import static org.geysermc.floodgate.util.ReflectionUtils.getFieldOfType; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getFieldOfType; import jakarta.inject.Inject; import jakarta.inject.Singleton; @@ -43,11 +43,11 @@ import org.geysermc.floodgate.api.event.skin.SkinApplyEvent; import org.geysermc.floodgate.api.event.skin.SkinApplyEvent.SkinData; import org.geysermc.floodgate.api.logger.FloodgateLogger; import org.geysermc.floodgate.api.player.FloodgatePlayer; -import org.geysermc.floodgate.event.EventBus; -import org.geysermc.floodgate.event.skin.SkinApplyEventImpl; -import org.geysermc.floodgate.skin.SkinApplier; -import org.geysermc.floodgate.skin.SkinDataImpl; -import org.geysermc.floodgate.util.ReflectionUtils; +import org.geysermc.floodgate.core.event.EventBus; +import org.geysermc.floodgate.core.event.skin.SkinApplyEventImpl; +import org.geysermc.floodgate.core.skin.SkinApplier; +import org.geysermc.floodgate.core.skin.SkinDataImpl; +import org.geysermc.floodgate.core.util.ReflectionUtils; @Singleton public final class BungeeSkinApplier implements SkinApplier { diff --git a/bungee/src/main/java/org/geysermc/floodgate/util/BungeeCommandUtil.java b/bungee/src/main/java/org/geysermc/floodgate/bungee/util/BungeeCommandUtil.java similarity index 89% rename from bungee/src/main/java/org/geysermc/floodgate/util/BungeeCommandUtil.java rename to bungee/src/main/java/org/geysermc/floodgate/bungee/util/BungeeCommandUtil.java index 8d1e7c1c..7a4fc594 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/util/BungeeCommandUtil.java +++ b/bungee/src/main/java/org/geysermc/floodgate/bungee/util/BungeeCommandUtil.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.bungee.util; import java.util.Collection; import java.util.UUID; @@ -32,10 +32,12 @@ import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; import org.checkerframework.checker.nullness.qual.NonNull; import org.geysermc.floodgate.api.FloodgateApi; -import org.geysermc.floodgate.platform.command.CommandUtil; -import org.geysermc.floodgate.player.UserAudience; -import org.geysermc.floodgate.player.UserAudience.ConsoleAudience; -import org.geysermc.floodgate.player.UserAudience.PlayerAudience; +import org.geysermc.floodgate.core.platform.command.CommandUtil; +import org.geysermc.floodgate.core.player.UserAudience; +import org.geysermc.floodgate.core.player.UserAudience.ConsoleAudience; +import org.geysermc.floodgate.core.player.UserAudience.PlayerAudience; +import org.geysermc.floodgate.core.util.LanguageManager; +import org.geysermc.floodgate.core.util.Utils; public final class BungeeCommandUtil extends CommandUtil { private final ProxyServer server; diff --git a/bungee/src/main/java/org/geysermc/floodgate/util/BungeePlatformUtils.java b/bungee/src/main/java/org/geysermc/floodgate/bungee/util/BungeePlatformUtils.java similarity index 92% rename from bungee/src/main/java/org/geysermc/floodgate/util/BungeePlatformUtils.java rename to bungee/src/main/java/org/geysermc/floodgate/bungee/util/BungeePlatformUtils.java index fae9a83c..23b0dd0c 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/util/BungeePlatformUtils.java +++ b/bungee/src/main/java/org/geysermc/floodgate/bungee/util/BungeePlatformUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,13 +23,14 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.bungee.util; import java.lang.reflect.Field; import java.util.List; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.protocol.ProtocolConstants; -import org.geysermc.floodgate.platform.util.PlatformUtils; +import org.geysermc.floodgate.core.platform.util.PlatformUtils; +import org.geysermc.floodgate.core.util.ReflectionUtils; @SuppressWarnings("ConstantConditions") public final class BungeePlatformUtils extends PlatformUtils { diff --git a/bungee/src/main/java/org/geysermc/floodgate/util/BungeeReflectionUtils.java b/bungee/src/main/java/org/geysermc/floodgate/bungee/util/BungeeReflectionUtils.java similarity index 94% rename from bungee/src/main/java/org/geysermc/floodgate/util/BungeeReflectionUtils.java rename to bungee/src/main/java/org/geysermc/floodgate/bungee/util/BungeeReflectionUtils.java index 05b1876b..0fe6068c 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/util/BungeeReflectionUtils.java +++ b/bungee/src/main/java/org/geysermc/floodgate/bungee/util/BungeeReflectionUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,9 +23,9 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.bungee.util; -import static org.geysermc.floodgate.util.MessageFormatter.format; +import static org.geysermc.floodgate.core.util.MessageFormatter.format; import java.lang.reflect.Field; import java.lang.reflect.Modifier; diff --git a/bungee/src/main/resources/plugin.yml b/bungee/src/main/resources/plugin.yml index 457d2a02..4c3dec63 100644 --- a/bungee/src/main/resources/plugin.yml +++ b/bungee/src/main/resources/plugin.yml @@ -2,4 +2,4 @@ name: ${name} description: ${description} version: ${version} author: ${author} -main: org.geysermc.floodgate.BungeePlugin \ No newline at end of file +main: org.geysermc.floodgate.bungee.BungeePlugin \ No newline at end of file diff --git a/core/build.gradle.kts b/core/build.gradle.kts index da8e8cf7..da00d512 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -19,11 +19,11 @@ dependencies { api("com.google.guava:guava:31.1-jre") - api("io.avaje:avaje-inject:8.13-RC2") - annotationProcessor("io.avaje:avaje-inject-generator:8.13-RC2") + api("io.avaje:avaje-inject:8.13") + annotationProcessor("io.avaje:avaje-inject-generator:8.13") - testImplementation("io.avaje:avaje-inject-test:8.13-RC2") - testAnnotationProcessor("io.avaje:avaje-inject-generator:8.13-RC2") + testImplementation("io.avaje:avaje-inject-test:8.13") + testAnnotationProcessor("io.avaje:avaje-inject-generator:8.13") } // present on all platforms diff --git a/core/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java b/core/src/main/java/org/geysermc/floodgate/core/FloodgatePlatform.java similarity index 75% rename from core/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java rename to core/src/main/java/org/geysermc/floodgate/core/FloodgatePlatform.java index 4cd48bf6..29614cc6 100644 --- a/core/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java +++ b/core/src/main/java/org/geysermc/floodgate/core/FloodgatePlatform.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,45 +23,47 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate; +package org.geysermc.floodgate.core; + +import static org.geysermc.floodgate.core.util.Utils.makeModule; import io.avaje.inject.BeanScope; +import io.avaje.inject.BeanScopeBuilder; import java.util.UUID; -import lombok.AccessLevel; -import lombok.Getter; import org.geysermc.floodgate.api.FloodgateApi; import org.geysermc.floodgate.api.InstanceHolder; -import org.geysermc.floodgate.api.ProxyModule; -import org.geysermc.floodgate.api.ServerModule; import org.geysermc.floodgate.api.event.FloodgateEventBus; import org.geysermc.floodgate.api.handshake.HandshakeHandlers; 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.FloodgateConfig; -import org.geysermc.floodgate.event.EventBus; -import org.geysermc.floodgate.event.lifecycle.PostEnableEvent; -import org.geysermc.floodgate.event.lifecycle.ShutdownEvent; +import org.geysermc.floodgate.core.event.EventBus; +import org.geysermc.floodgate.core.event.lifecycle.PostEnableEvent; +import org.geysermc.floodgate.core.event.lifecycle.ShutdownEvent; -@Getter(AccessLevel.PROTECTED) public abstract class FloodgatePlatform { private static final UUID KEY = UUID.randomUUID(); - + private static final String PROXY_MODULE = "org.geysermc.floodgate.core.api.ProxyModule"; + private static final String SERVER_MODULE = "org.geysermc.floodgate.core.api.ServerModule"; + private BeanScope scope; - private FloodgateConfig config; private PlatformInjector injector; - + + protected void onBuildBeanScope(BeanScopeBuilder builder) { + } + public void load() { long startTime = System.currentTimeMillis(); - scope = BeanScope.builder() - .bean("isProxy", boolean.class, isProxy()) - .modules(new FloodgateModule()) - .modules(isProxy() ? new ProxyModule() : new ServerModule()) - .build(); + var scopeBuilder = BeanScope.builder() + .bean("isProxy", boolean.class, isProxy()) + .modules(new CoreModule()) + // temporary fix for https://github.com/avaje/avaje-inject/issues/295 + .modules(makeModule(isProxy() ? PROXY_MODULE : SERVER_MODULE)); + onBuildBeanScope(scopeBuilder); + scope = scopeBuilder.build(); - config = scope.get(FloodgateConfig.class); injector = scope.get(PlatformInjector.class); InstanceHolder.set( @@ -109,5 +111,5 @@ public abstract class FloodgatePlatform { scope.close(); } - abstract boolean isProxy(); + abstract protected boolean isProxy(); } diff --git a/core/src/main/java/org/geysermc/floodgate/addon/AddonManagerAddon.java b/core/src/main/java/org/geysermc/floodgate/core/addon/AddonManagerAddon.java similarity index 91% rename from core/src/main/java/org/geysermc/floodgate/addon/AddonManagerAddon.java rename to core/src/main/java/org/geysermc/floodgate/core/addon/AddonManagerAddon.java index 4915166a..298b7124 100644 --- a/core/src/main/java/org/geysermc/floodgate/addon/AddonManagerAddon.java +++ b/core/src/main/java/org/geysermc/floodgate/core/addon/AddonManagerAddon.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,13 +23,13 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon; +package org.geysermc.floodgate.core.addon; import io.netty.channel.Channel; import jakarta.inject.Inject; import jakarta.inject.Singleton; import org.geysermc.floodgate.api.inject.InjectorAddon; -import org.geysermc.floodgate.inject.CommonPlatformInjector; +import org.geysermc.floodgate.core.inject.CommonPlatformInjector; @Singleton public final class AddonManagerAddon implements InjectorAddon { diff --git a/core/src/main/java/org/geysermc/floodgate/addon/DebugAddon.java b/core/src/main/java/org/geysermc/floodgate/core/addon/DebugAddon.java similarity index 87% rename from core/src/main/java/org/geysermc/floodgate/addon/DebugAddon.java rename to core/src/main/java/org/geysermc/floodgate/core/addon/DebugAddon.java index 3bc98901..616d4f25 100644 --- a/core/src/main/java/org/geysermc/floodgate/addon/DebugAddon.java +++ b/core/src/main/java/org/geysermc/floodgate/core/addon/DebugAddon.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,20 +23,20 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon; +package org.geysermc.floodgate.core.addon; import io.netty.channel.Channel; import io.netty.channel.ChannelPipeline; import jakarta.inject.Inject; import jakarta.inject.Named; import jakarta.inject.Singleton; -import org.geysermc.floodgate.addon.debug.ChannelInDebugHandler; -import org.geysermc.floodgate.addon.debug.ChannelOutDebugHandler; -import org.geysermc.floodgate.addon.debug.StateChangeDetector; import org.geysermc.floodgate.api.inject.InjectorAddon; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.config.FloodgateConfig; -import org.geysermc.floodgate.util.Utils; +import org.geysermc.floodgate.core.addon.debug.ChannelInDebugHandler; +import org.geysermc.floodgate.core.addon.debug.ChannelOutDebugHandler; +import org.geysermc.floodgate.core.addon.debug.StateChangeDetector; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.util.Utils; @Singleton public final class DebugAddon implements InjectorAddon { diff --git a/core/src/main/java/org/geysermc/floodgate/addon/PacketHandlerAddon.java b/core/src/main/java/org/geysermc/floodgate/core/addon/PacketHandlerAddon.java similarity index 87% rename from core/src/main/java/org/geysermc/floodgate/addon/PacketHandlerAddon.java rename to core/src/main/java/org/geysermc/floodgate/core/addon/PacketHandlerAddon.java index 4185b01b..79c61d90 100644 --- a/core/src/main/java/org/geysermc/floodgate/addon/PacketHandlerAddon.java +++ b/core/src/main/java/org/geysermc/floodgate/core/addon/PacketHandlerAddon.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,18 +23,18 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon; +package org.geysermc.floodgate.core.addon; import io.netty.channel.Channel; import io.netty.channel.ChannelPipeline; import jakarta.inject.Inject; import jakarta.inject.Named; import jakarta.inject.Singleton; -import org.geysermc.floodgate.addon.packethandler.ChannelInPacketHandler; -import org.geysermc.floodgate.addon.packethandler.ChannelOutPacketHandler; import org.geysermc.floodgate.api.inject.InjectorAddon; -import org.geysermc.floodgate.packet.PacketHandlersImpl; -import org.geysermc.floodgate.util.Utils; +import org.geysermc.floodgate.core.addon.packethandler.ChannelInPacketHandler; +import org.geysermc.floodgate.core.addon.packethandler.ChannelOutPacketHandler; +import org.geysermc.floodgate.core.packet.PacketHandlersImpl; +import org.geysermc.floodgate.core.util.Utils; @Singleton public class PacketHandlerAddon implements InjectorAddon { diff --git a/core/src/main/java/org/geysermc/floodgate/addon/data/CommonDataHandler.java b/core/src/main/java/org/geysermc/floodgate/core/addon/data/CommonDataHandler.java similarity index 94% rename from core/src/main/java/org/geysermc/floodgate/addon/data/CommonDataHandler.java rename to core/src/main/java/org/geysermc/floodgate/core/addon/data/CommonDataHandler.java index 04517989..c86804b3 100644 --- a/core/src/main/java/org/geysermc/floodgate/addon/data/CommonDataHandler.java +++ b/core/src/main/java/org/geysermc/floodgate/core/addon/data/CommonDataHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon.data; +package org.geysermc.floodgate.core.addon.data; import com.google.common.collect.Queues; import io.netty.channel.Channel; @@ -34,12 +34,12 @@ import java.net.InetSocketAddress; import java.util.Queue; import lombok.RequiredArgsConstructor; import org.geysermc.floodgate.api.handshake.HandshakeData; -import org.geysermc.floodgate.config.FloodgateConfig; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.player.FloodgateHandshakeHandler; +import org.geysermc.floodgate.core.player.FloodgateHandshakeHandler.HandshakeResult; +import org.geysermc.floodgate.core.player.HostnameSeparationResult; +import org.geysermc.floodgate.core.util.Constants; import org.geysermc.floodgate.crypto.FloodgateCipher; -import org.geysermc.floodgate.player.FloodgateHandshakeHandler; -import org.geysermc.floodgate.player.FloodgateHandshakeHandler.HandshakeResult; -import org.geysermc.floodgate.player.HostnameSeparationResult; -import org.geysermc.floodgate.util.Constants; @RequiredArgsConstructor public abstract class CommonDataHandler extends ChannelInboundHandlerAdapter { diff --git a/core/src/main/java/org/geysermc/floodgate/addon/data/HandshakeDataImpl.java b/core/src/main/java/org/geysermc/floodgate/core/addon/data/HandshakeDataImpl.java similarity index 93% rename from core/src/main/java/org/geysermc/floodgate/addon/data/HandshakeDataImpl.java rename to core/src/main/java/org/geysermc/floodgate/core/addon/data/HandshakeDataImpl.java index 480175e9..278732c7 100644 --- a/core/src/main/java/org/geysermc/floodgate/addon/data/HandshakeDataImpl.java +++ b/core/src/main/java/org/geysermc/floodgate/core/addon/data/HandshakeDataImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,17 +23,17 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon.data; +package org.geysermc.floodgate.core.addon.data; import io.netty.channel.Channel; import java.util.UUID; import lombok.Getter; import lombok.Setter; import org.geysermc.floodgate.api.handshake.HandshakeData; -import org.geysermc.floodgate.config.FloodgateConfig; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.util.Utils; import org.geysermc.floodgate.util.BedrockData; import org.geysermc.floodgate.util.LinkedPlayer; -import org.geysermc.floodgate.util.Utils; @Getter public class HandshakeDataImpl implements HandshakeData { diff --git a/core/src/main/java/org/geysermc/floodgate/addon/data/HandshakeHandlersImpl.java b/core/src/main/java/org/geysermc/floodgate/core/addon/data/HandshakeHandlersImpl.java similarity index 96% rename from core/src/main/java/org/geysermc/floodgate/addon/data/HandshakeHandlersImpl.java rename to core/src/main/java/org/geysermc/floodgate/core/addon/data/HandshakeHandlersImpl.java index d060467c..d73792a0 100644 --- a/core/src/main/java/org/geysermc/floodgate/addon/data/HandshakeHandlersImpl.java +++ b/core/src/main/java/org/geysermc/floodgate/core/addon/data/HandshakeHandlersImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon.data; +package org.geysermc.floodgate.core.addon.data; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; diff --git a/core/src/main/java/org/geysermc/floodgate/addon/data/PacketBlocker.java b/core/src/main/java/org/geysermc/floodgate/core/addon/data/PacketBlocker.java similarity index 96% rename from core/src/main/java/org/geysermc/floodgate/addon/data/PacketBlocker.java rename to core/src/main/java/org/geysermc/floodgate/core/addon/data/PacketBlocker.java index a20fe433..229efbca 100644 --- a/core/src/main/java/org/geysermc/floodgate/addon/data/PacketBlocker.java +++ b/core/src/main/java/org/geysermc/floodgate/core/addon/data/PacketBlocker.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon.data; +package org.geysermc.floodgate.core.addon.data; import com.google.common.collect.Queues; import io.netty.channel.ChannelHandlerContext; diff --git a/core/src/main/java/org/geysermc/floodgate/addon/debug/ChannelInDebugHandler.java b/core/src/main/java/org/geysermc/floodgate/core/addon/debug/ChannelInDebugHandler.java similarity index 96% rename from core/src/main/java/org/geysermc/floodgate/addon/debug/ChannelInDebugHandler.java rename to core/src/main/java/org/geysermc/floodgate/core/addon/debug/ChannelInDebugHandler.java index d1b1619c..eef25e4d 100644 --- a/core/src/main/java/org/geysermc/floodgate/addon/debug/ChannelInDebugHandler.java +++ b/core/src/main/java/org/geysermc/floodgate/core/addon/debug/ChannelInDebugHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon.debug; +package org.geysermc.floodgate.core.addon.debug; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; diff --git a/core/src/main/java/org/geysermc/floodgate/addon/debug/ChannelOutDebugHandler.java b/core/src/main/java/org/geysermc/floodgate/core/addon/debug/ChannelOutDebugHandler.java similarity index 96% rename from core/src/main/java/org/geysermc/floodgate/addon/debug/ChannelOutDebugHandler.java rename to core/src/main/java/org/geysermc/floodgate/core/addon/debug/ChannelOutDebugHandler.java index 05a80673..21c6eab9 100644 --- a/core/src/main/java/org/geysermc/floodgate/addon/debug/ChannelOutDebugHandler.java +++ b/core/src/main/java/org/geysermc/floodgate/core/addon/debug/ChannelOutDebugHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon.debug; +package org.geysermc.floodgate.core.addon.debug; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; diff --git a/core/src/main/java/org/geysermc/floodgate/addon/debug/State.java b/core/src/main/java/org/geysermc/floodgate/core/addon/debug/State.java similarity index 92% rename from core/src/main/java/org/geysermc/floodgate/addon/debug/State.java rename to core/src/main/java/org/geysermc/floodgate/core/addon/debug/State.java index 36a55cf5..b6f339a5 100644 --- a/core/src/main/java/org/geysermc/floodgate/addon/debug/State.java +++ b/core/src/main/java/org/geysermc/floodgate/core/addon/debug/State.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon.debug; +package org.geysermc.floodgate.core.addon.debug; public enum State { HANDSHAKE, STATUS, LOGIN, PLAY; diff --git a/core/src/main/java/org/geysermc/floodgate/addon/debug/StateChangeDetector.java b/core/src/main/java/org/geysermc/floodgate/core/addon/debug/StateChangeDetector.java similarity index 97% rename from core/src/main/java/org/geysermc/floodgate/addon/debug/StateChangeDetector.java rename to core/src/main/java/org/geysermc/floodgate/core/addon/debug/StateChangeDetector.java index 2c60a1c8..86e86d7c 100644 --- a/core/src/main/java/org/geysermc/floodgate/addon/debug/StateChangeDetector.java +++ b/core/src/main/java/org/geysermc/floodgate/core/addon/debug/StateChangeDetector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon.debug; +package org.geysermc.floodgate.core.addon.debug; import io.netty.buffer.ByteBuf; import io.netty.channel.Channel; @@ -31,8 +31,8 @@ import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelPipeline; import java.nio.charset.StandardCharsets; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.util.Constants; -import org.geysermc.floodgate.util.Utils; +import org.geysermc.floodgate.core.util.Constants; +import org.geysermc.floodgate.core.util.Utils; public class StateChangeDetector { private static volatile int pluginMessageToClientId = -1; diff --git a/core/src/main/java/org/geysermc/floodgate/addon/packethandler/ChannelInPacketHandler.java b/core/src/main/java/org/geysermc/floodgate/core/addon/packethandler/ChannelInPacketHandler.java similarity index 92% rename from core/src/main/java/org/geysermc/floodgate/addon/packethandler/ChannelInPacketHandler.java rename to core/src/main/java/org/geysermc/floodgate/core/addon/packethandler/ChannelInPacketHandler.java index d2c5f50a..0e4e9b5a 100644 --- a/core/src/main/java/org/geysermc/floodgate/addon/packethandler/ChannelInPacketHandler.java +++ b/core/src/main/java/org/geysermc/floodgate/core/addon/packethandler/ChannelInPacketHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,12 +23,12 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon.packethandler; +package org.geysermc.floodgate.core.addon.packethandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import org.geysermc.floodgate.api.util.TriFunction; -import org.geysermc.floodgate.packet.PacketHandlersImpl; +import org.geysermc.floodgate.core.packet.PacketHandlersImpl; public class ChannelInPacketHandler extends SimpleChannelInboundHandler { private final PacketHandlersImpl packetHandlers; diff --git a/core/src/main/java/org/geysermc/floodgate/addon/packethandler/ChannelOutPacketHandler.java b/core/src/main/java/org/geysermc/floodgate/core/addon/packethandler/ChannelOutPacketHandler.java similarity index 92% rename from core/src/main/java/org/geysermc/floodgate/addon/packethandler/ChannelOutPacketHandler.java rename to core/src/main/java/org/geysermc/floodgate/core/addon/packethandler/ChannelOutPacketHandler.java index 2ad5555a..0ad9657b 100644 --- a/core/src/main/java/org/geysermc/floodgate/addon/packethandler/ChannelOutPacketHandler.java +++ b/core/src/main/java/org/geysermc/floodgate/core/addon/packethandler/ChannelOutPacketHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,13 +23,13 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon.packethandler; +package org.geysermc.floodgate.core.addon.packethandler; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.MessageToMessageEncoder; import java.util.List; import org.geysermc.floodgate.api.util.TriFunction; -import org.geysermc.floodgate.packet.PacketHandlersImpl; +import org.geysermc.floodgate.core.packet.PacketHandlersImpl; public class ChannelOutPacketHandler extends MessageToMessageEncoder { private final PacketHandlersImpl packetHandlers; diff --git a/core/src/main/java/org/geysermc/floodgate/api/ProxyFloodgateApi.java b/core/src/main/java/org/geysermc/floodgate/core/api/ProxyFloodgateApi.java similarity index 92% rename from core/src/main/java/org/geysermc/floodgate/api/ProxyFloodgateApi.java rename to core/src/main/java/org/geysermc/floodgate/core/api/ProxyFloodgateApi.java index 86c1c9d6..e97b0d89 100644 --- a/core/src/main/java/org/geysermc/floodgate/api/ProxyFloodgateApi.java +++ b/core/src/main/java/org/geysermc/floodgate/core/api/ProxyFloodgateApi.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,12 +23,12 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.api; +package org.geysermc.floodgate.core.api; import jakarta.inject.Inject; import java.nio.charset.StandardCharsets; +import org.geysermc.floodgate.core.scope.ProxyScope; import org.geysermc.floodgate.crypto.FloodgateCipher; -import org.geysermc.floodgate.scope.ProxyScope; import org.geysermc.floodgate.util.BedrockData; @ProxyScope diff --git a/core/src/main/java/org/geysermc/floodgate/api/SimpleFloodgateApi.java b/core/src/main/java/org/geysermc/floodgate/core/api/SimpleFloodgateApi.java similarity index 92% rename from core/src/main/java/org/geysermc/floodgate/api/SimpleFloodgateApi.java rename to core/src/main/java/org/geysermc/floodgate/core/api/SimpleFloodgateApi.java index 59e53265..3e9361ba 100644 --- a/core/src/main/java/org/geysermc/floodgate/api/SimpleFloodgateApi.java +++ b/core/src/main/java/org/geysermc/floodgate/core/api/SimpleFloodgateApi.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.api; +package org.geysermc.floodgate.core.api; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; @@ -39,17 +39,18 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; import org.geysermc.cumulus.form.Form; import org.geysermc.cumulus.form.util.FormBuilder; +import org.geysermc.floodgate.api.FloodgateApi; 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.FloodgateConfig; -import org.geysermc.floodgate.pluginmessage.PluginMessageManager; -import org.geysermc.floodgate.pluginmessage.channel.FormChannel; -import org.geysermc.floodgate.pluginmessage.channel.TransferChannel; -import org.geysermc.floodgate.scope.ServerScope; -import org.geysermc.floodgate.util.Constants; -import org.geysermc.floodgate.util.HttpClient; -import org.geysermc.floodgate.util.Utils; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageManager; +import org.geysermc.floodgate.core.pluginmessage.channel.FormChannel; +import org.geysermc.floodgate.core.pluginmessage.channel.TransferChannel; +import org.geysermc.floodgate.core.scope.ServerScope; +import org.geysermc.floodgate.core.util.Constants; +import org.geysermc.floodgate.core.util.HttpClient; +import org.geysermc.floodgate.core.util.Utils; @ServerScope public class SimpleFloodgateApi implements FloodgateApi { diff --git a/core/src/main/java/org/geysermc/floodgate/api/UnsafeFloodgateApi.java b/core/src/main/java/org/geysermc/floodgate/core/api/UnsafeFloodgateApi.java similarity index 89% rename from core/src/main/java/org/geysermc/floodgate/api/UnsafeFloodgateApi.java rename to core/src/main/java/org/geysermc/floodgate/core/api/UnsafeFloodgateApi.java index 289eee5c..b853444c 100644 --- a/core/src/main/java/org/geysermc/floodgate/api/UnsafeFloodgateApi.java +++ b/core/src/main/java/org/geysermc/floodgate/core/api/UnsafeFloodgateApi.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,12 +23,12 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.api; +package org.geysermc.floodgate.core.api; import java.util.UUID; import org.geysermc.floodgate.api.unsafe.Unsafe; -import org.geysermc.floodgate.pluginmessage.PluginMessageManager; -import org.geysermc.floodgate.pluginmessage.channel.PacketChannel; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageManager; +import org.geysermc.floodgate.core.pluginmessage.channel.PacketChannel; public final class UnsafeFloodgateApi implements Unsafe { private final PacketChannel packetChannel; diff --git a/core/src/main/java/org/geysermc/floodgate/command/CommonCommandMessage.java b/core/src/main/java/org/geysermc/floodgate/core/command/CommonCommandMessage.java similarity index 92% rename from core/src/main/java/org/geysermc/floodgate/command/CommonCommandMessage.java rename to core/src/main/java/org/geysermc/floodgate/core/command/CommonCommandMessage.java index 4b0ab180..d4e9e23f 100644 --- a/core/src/main/java/org/geysermc/floodgate/command/CommonCommandMessage.java +++ b/core/src/main/java/org/geysermc/floodgate/core/command/CommonCommandMessage.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,10 +23,10 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.command; +package org.geysermc.floodgate.core.command; import lombok.Getter; -import org.geysermc.floodgate.platform.command.TranslatableMessage; +import org.geysermc.floodgate.core.platform.command.TranslatableMessage; /** * Messages (or part of messages) that are used in two or more commands and thus are 'commonly diff --git a/core/src/main/java/org/geysermc/floodgate/command/LinkAccountCommand.java b/core/src/main/java/org/geysermc/floodgate/core/command/LinkAccountCommand.java similarity index 90% rename from core/src/main/java/org/geysermc/floodgate/command/LinkAccountCommand.java rename to core/src/main/java/org/geysermc/floodgate/core/command/LinkAccountCommand.java index 674603da..da4509fe 100644 --- a/core/src/main/java/org/geysermc/floodgate/command/LinkAccountCommand.java +++ b/core/src/main/java/org/geysermc/floodgate/core/command/LinkAccountCommand.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,9 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.command; - -import static org.geysermc.floodgate.command.CommonCommandMessage.CHECK_CONSOLE; +package org.geysermc.floodgate.core.command; import cloud.commandframework.ArgumentDescription; import cloud.commandframework.Command; @@ -40,16 +38,16 @@ import org.geysermc.floodgate.api.FloodgateApi; import org.geysermc.floodgate.api.link.LinkRequestResult; import org.geysermc.floodgate.api.link.PlayerLink; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.command.util.Permission; -import org.geysermc.floodgate.config.FloodgateConfig; -import org.geysermc.floodgate.link.GlobalPlayerLinking; -import org.geysermc.floodgate.platform.command.FloodgateCommand; -import org.geysermc.floodgate.platform.command.TranslatableMessage; -import org.geysermc.floodgate.player.UserAudience; -import org.geysermc.floodgate.player.UserAudience.PlayerAudience; -import org.geysermc.floodgate.player.audience.ProfileAudience; -import org.geysermc.floodgate.player.audience.ProfileAudienceArgument; -import org.geysermc.floodgate.util.Constants; +import org.geysermc.floodgate.core.command.util.Permission; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.link.GlobalPlayerLinking; +import org.geysermc.floodgate.core.platform.command.FloodgateCommand; +import org.geysermc.floodgate.core.platform.command.TranslatableMessage; +import org.geysermc.floodgate.core.player.UserAudience; +import org.geysermc.floodgate.core.player.UserAudience.PlayerAudience; +import org.geysermc.floodgate.core.player.audience.ProfileAudience; +import org.geysermc.floodgate.core.player.audience.ProfileAudienceArgument; +import org.geysermc.floodgate.core.util.Constants; @Singleton @Secondary @@ -174,7 +172,7 @@ public final class LinkAccountCommand implements FloodgateCommand { BEDROCK_USAGE("floodgate.command.link_account.bedrock_usage"), LINK_REQUEST_EXPIRED("floodgate.command.link_account.link_request_expired"), LINK_REQUEST_COMPLETED("floodgate.command.link_account.link_request_completed"), - LINK_REQUEST_ERROR("floodgate.command.link_request.error " + CHECK_CONSOLE), + LINK_REQUEST_ERROR("floodgate.command.link_request.error " + CommonCommandMessage.CHECK_CONSOLE), INVALID_CODE("floodgate.command.link_account.invalid_code"), NO_LINK_REQUESTED("floodgate.command.link_account.no_link_requested"); diff --git a/core/src/main/java/org/geysermc/floodgate/command/TestCommand.java b/core/src/main/java/org/geysermc/floodgate/core/command/TestCommand.java similarity index 85% rename from core/src/main/java/org/geysermc/floodgate/command/TestCommand.java rename to core/src/main/java/org/geysermc/floodgate/core/command/TestCommand.java index 6c9613e3..a6adb20e 100644 --- a/core/src/main/java/org/geysermc/floodgate/command/TestCommand.java +++ b/core/src/main/java/org/geysermc/floodgate/core/command/TestCommand.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,17 +23,17 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.command; +package org.geysermc.floodgate.core.command; import cloud.commandframework.Command; import cloud.commandframework.CommandManager; import cloud.commandframework.context.CommandContext; import jakarta.inject.Singleton; import org.geysermc.floodgate.api.FloodgateApi; -import org.geysermc.floodgate.config.FloodgateConfig; -import org.geysermc.floodgate.platform.command.FloodgateCommand; -import org.geysermc.floodgate.player.UserAudience; -import org.geysermc.floodgate.util.Constants; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.platform.command.FloodgateCommand; +import org.geysermc.floodgate.core.player.UserAudience; +import org.geysermc.floodgate.core.util.Constants; @Singleton public class TestCommand implements FloodgateCommand { diff --git a/core/src/main/java/org/geysermc/floodgate/command/UnlinkAccountCommand.java b/core/src/main/java/org/geysermc/floodgate/core/command/UnlinkAccountCommand.java similarity index 87% rename from core/src/main/java/org/geysermc/floodgate/command/UnlinkAccountCommand.java rename to core/src/main/java/org/geysermc/floodgate/core/command/UnlinkAccountCommand.java index 221ebf54..2a84ca70 100644 --- a/core/src/main/java/org/geysermc/floodgate/command/UnlinkAccountCommand.java +++ b/core/src/main/java/org/geysermc/floodgate/core/command/UnlinkAccountCommand.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,9 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.command; - -import static org.geysermc.floodgate.command.CommonCommandMessage.CHECK_CONSOLE; +package org.geysermc.floodgate.core.command; import cloud.commandframework.ArgumentDescription; import cloud.commandframework.Command; @@ -36,14 +34,14 @@ import jakarta.inject.Singleton; import lombok.Getter; import org.geysermc.floodgate.api.FloodgateApi; import org.geysermc.floodgate.api.link.PlayerLink; -import org.geysermc.floodgate.command.util.Permission; -import org.geysermc.floodgate.config.FloodgateConfig; -import org.geysermc.floodgate.link.GlobalPlayerLinking; -import org.geysermc.floodgate.platform.command.FloodgateCommand; -import org.geysermc.floodgate.platform.command.TranslatableMessage; -import org.geysermc.floodgate.player.UserAudience; -import org.geysermc.floodgate.player.UserAudience.PlayerAudience; -import org.geysermc.floodgate.util.Constants; +import org.geysermc.floodgate.core.command.util.Permission; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.link.GlobalPlayerLinking; +import org.geysermc.floodgate.core.platform.command.FloodgateCommand; +import org.geysermc.floodgate.core.platform.command.TranslatableMessage; +import org.geysermc.floodgate.core.player.UserAudience; +import org.geysermc.floodgate.core.player.UserAudience.PlayerAudience; +import org.geysermc.floodgate.core.util.Constants; @Singleton public final class UnlinkAccountCommand implements FloodgateCommand { @@ -117,7 +115,7 @@ public final class UnlinkAccountCommand implements FloodgateCommand { public enum Message implements TranslatableMessage { NOT_LINKED("floodgate.command.unlink_account.not_linked"), UNLINK_SUCCESS("floodgate.command.unlink_account.unlink_success"), - UNLINK_ERROR("floodgate.command.unlink_account.error " + CHECK_CONSOLE); + UNLINK_ERROR("floodgate.command.unlink_account.error " + CommonCommandMessage.CHECK_CONSOLE); private final String rawMessage; private final String[] translateParts; diff --git a/core/src/main/java/org/geysermc/floodgate/command/WhitelistCommand.java b/core/src/main/java/org/geysermc/floodgate/core/command/WhitelistCommand.java similarity index 89% rename from core/src/main/java/org/geysermc/floodgate/command/WhitelistCommand.java rename to core/src/main/java/org/geysermc/floodgate/core/command/WhitelistCommand.java index 6fc911c2..875d2a3c 100644 --- a/core/src/main/java/org/geysermc/floodgate/command/WhitelistCommand.java +++ b/core/src/main/java/org/geysermc/floodgate/core/command/WhitelistCommand.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,9 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.command; - -import static org.geysermc.floodgate.command.CommonCommandMessage.CHECK_CONSOLE; +package org.geysermc.floodgate.core.command; import cloud.commandframework.ArgumentDescription; import cloud.commandframework.Command; @@ -39,18 +37,18 @@ import java.util.UUID; import lombok.Getter; import org.geysermc.floodgate.api.FloodgateApi; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.command.util.Permission; -import org.geysermc.floodgate.config.FloodgateConfig; -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.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.util.Constants; -import org.geysermc.floodgate.util.HttpClient; +import org.geysermc.floodgate.core.command.util.Permission; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.config.ProxyFloodgateConfig; +import org.geysermc.floodgate.core.platform.command.CommandUtil; +import org.geysermc.floodgate.core.platform.command.FloodgateCommand; +import org.geysermc.floodgate.core.platform.command.TranslatableMessage; +import org.geysermc.floodgate.core.platform.util.PlayerType; +import org.geysermc.floodgate.core.player.UserAudience; +import org.geysermc.floodgate.core.player.audience.ProfileAudience; +import org.geysermc.floodgate.core.player.audience.ProfileAudienceArgument; +import org.geysermc.floodgate.core.util.Constants; +import org.geysermc.floodgate.core.util.HttpClient; @Singleton public class WhitelistCommand implements FloodgateCommand { @@ -197,13 +195,13 @@ public class WhitelistCommand implements FloodgateCommand { @Getter public enum Message implements TranslatableMessage { INVALID_USERNAME("floodgate.command.fwhitelist.invalid_username"), - API_UNAVAILABLE("floodgate.command.fwhitelist.api_unavailable " + CHECK_CONSOLE), + API_UNAVAILABLE("floodgate.command.fwhitelist.api_unavailable " + CommonCommandMessage.CHECK_CONSOLE), USER_NOT_FOUND("floodgate.command.fwhitelist.user_not_found"), PLAYER_ADDED("floodgate.command.fwhitelist.player_added"), PLAYER_REMOVED("floodgate.command.fwhitelist.player_removed"), PLAYER_ALREADY_WHITELISTED("floodgate.command.fwhitelist.player_already_whitelisted"), PLAYER_NOT_WHITELISTED("floodgate.command.fwhitelist.player_not_whitelisted"), - UNEXPECTED_ERROR("floodgate.command.fwhitelist.unexpected_error " + CHECK_CONSOLE); + UNEXPECTED_ERROR("floodgate.command.fwhitelist.unexpected_error " + CommonCommandMessage.CHECK_CONSOLE); private final String rawMessage; private final String[] translateParts; diff --git a/core/src/main/java/org/geysermc/floodgate/command/main/FirewallCheckSubcommand.java b/core/src/main/java/org/geysermc/floodgate/core/command/main/FirewallCheckSubcommand.java similarity index 88% rename from core/src/main/java/org/geysermc/floodgate/command/main/FirewallCheckSubcommand.java rename to core/src/main/java/org/geysermc/floodgate/core/command/main/FirewallCheckSubcommand.java index 9486b0ae..df1970d9 100644 --- a/core/src/main/java/org/geysermc/floodgate/command/main/FirewallCheckSubcommand.java +++ b/core/src/main/java/org/geysermc/floodgate/core/command/main/FirewallCheckSubcommand.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,9 +23,9 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.command.main; +package org.geysermc.floodgate.core.command.main; -import static org.geysermc.floodgate.util.Constants.COLOR_CHAR; +import static org.geysermc.floodgate.core.util.Constants.COLOR_CHAR; import cloud.commandframework.context.CommandContext; import com.google.gson.JsonElement; @@ -34,13 +34,13 @@ import jakarta.inject.Inject; import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BooleanSupplier; -import org.geysermc.floodgate.command.util.Permission; -import org.geysermc.floodgate.platform.command.FloodgateSubCommand; -import org.geysermc.floodgate.player.UserAudience; -import org.geysermc.floodgate.util.Constants; -import org.geysermc.floodgate.util.HttpClient; -import org.geysermc.floodgate.util.HttpClient.HttpResponse; -import org.geysermc.floodgate.util.Utils; +import org.geysermc.floodgate.core.command.util.Permission; +import org.geysermc.floodgate.core.platform.command.FloodgateSubCommand; +import org.geysermc.floodgate.core.player.UserAudience; +import org.geysermc.floodgate.core.util.Constants; +import org.geysermc.floodgate.core.util.HttpClient; +import org.geysermc.floodgate.core.util.HttpClient.HttpResponse; +import org.geysermc.floodgate.core.util.Utils; final class FirewallCheckSubcommand extends FloodgateSubCommand { @Inject diff --git a/core/src/main/java/org/geysermc/floodgate/command/main/MainCommand.java b/core/src/main/java/org/geysermc/floodgate/core/command/main/MainCommand.java similarity index 86% rename from core/src/main/java/org/geysermc/floodgate/command/main/MainCommand.java rename to core/src/main/java/org/geysermc/floodgate/core/command/main/MainCommand.java index ada07aac..88c4a059 100644 --- a/core/src/main/java/org/geysermc/floodgate/command/main/MainCommand.java +++ b/core/src/main/java/org/geysermc/floodgate/core/command/main/MainCommand.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,9 +23,9 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.command.main; +package org.geysermc.floodgate.core.command.main; -import static org.geysermc.floodgate.util.Constants.COLOR_CHAR; +import static org.geysermc.floodgate.core.util.Constants.COLOR_CHAR; import cloud.commandframework.ArgumentDescription; import cloud.commandframework.Command; @@ -34,11 +34,11 @@ import cloud.commandframework.CommandManager; import cloud.commandframework.context.CommandContext; import jakarta.inject.Singleton; 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; +import org.geysermc.floodgate.core.command.util.Permission; +import org.geysermc.floodgate.core.platform.command.FloodgateCommand; +import org.geysermc.floodgate.core.platform.command.FloodgateSubCommand; +import org.geysermc.floodgate.core.platform.command.SubCommands; +import org.geysermc.floodgate.core.player.UserAudience; @Singleton public final class MainCommand extends SubCommands implements FloodgateCommand { diff --git a/core/src/main/java/org/geysermc/floodgate/command/main/VersionSubcommand.java b/core/src/main/java/org/geysermc/floodgate/core/command/main/VersionSubcommand.java similarity index 89% rename from core/src/main/java/org/geysermc/floodgate/command/main/VersionSubcommand.java rename to core/src/main/java/org/geysermc/floodgate/core/command/main/VersionSubcommand.java index c8fcfaf8..950bca4f 100644 --- a/core/src/main/java/org/geysermc/floodgate/command/main/VersionSubcommand.java +++ b/core/src/main/java/org/geysermc/floodgate/core/command/main/VersionSubcommand.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,20 +23,20 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.command.main; +package org.geysermc.floodgate.core.command.main; -import static org.geysermc.floodgate.util.Constants.COLOR_CHAR; +import static org.geysermc.floodgate.core.util.Constants.COLOR_CHAR; import cloud.commandframework.context.CommandContext; import com.google.gson.JsonElement; import jakarta.inject.Inject; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.command.WhitelistCommand.Message; -import org.geysermc.floodgate.command.util.Permission; -import org.geysermc.floodgate.platform.command.FloodgateSubCommand; -import org.geysermc.floodgate.player.UserAudience; -import org.geysermc.floodgate.util.Constants; -import org.geysermc.floodgate.util.HttpClient; +import org.geysermc.floodgate.core.command.WhitelistCommand.Message; +import org.geysermc.floodgate.core.command.util.Permission; +import org.geysermc.floodgate.core.platform.command.FloodgateSubCommand; +import org.geysermc.floodgate.core.player.UserAudience; +import org.geysermc.floodgate.core.util.Constants; +import org.geysermc.floodgate.core.util.HttpClient; public class VersionSubcommand extends FloodgateSubCommand { @Inject HttpClient httpClient; diff --git a/core/src/main/java/org/geysermc/floodgate/command/util/Permission.java b/core/src/main/java/org/geysermc/floodgate/core/command/util/Permission.java similarity index 72% rename from core/src/main/java/org/geysermc/floodgate/command/util/Permission.java rename to core/src/main/java/org/geysermc/floodgate/core/command/util/Permission.java index 87c2ec52..69710bff 100644 --- a/core/src/main/java/org/geysermc/floodgate/command/util/Permission.java +++ b/core/src/main/java/org/geysermc/floodgate/core/command/util/Permission.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,20 +23,17 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.command.util; - -import static org.geysermc.floodgate.command.util.PermissionDefault.OP; -import static org.geysermc.floodgate.command.util.PermissionDefault.TRUE; +package org.geysermc.floodgate.core.command.util; public enum Permission { - COMMAND_MAIN("floodgate.command.floodgate", TRUE), - COMMAND_MAIN_FIREWALL(COMMAND_MAIN, "firewall", OP), - COMMAND_MAIN_VERSION(COMMAND_MAIN, "version", OP), - COMMAND_LINK("floodgate.command.linkaccount", TRUE), - COMMAND_UNLINK("floodgate.command.unlinkaccount", TRUE), - COMMAND_WHITELIST("floodgate.command.fwhitelist", OP), + COMMAND_MAIN("floodgate.command.floodgate", PermissionDefault.TRUE), + COMMAND_MAIN_FIREWALL(COMMAND_MAIN, "firewall", PermissionDefault.OP), + COMMAND_MAIN_VERSION(COMMAND_MAIN, "version", PermissionDefault.OP), + COMMAND_LINK("floodgate.command.linkaccount", PermissionDefault.TRUE), + COMMAND_UNLINK("floodgate.command.unlinkaccount", PermissionDefault.TRUE), + COMMAND_WHITELIST("floodgate.command.fwhitelist", PermissionDefault.OP), - NEWS_RECEIVE("floodgate.news.receive", OP); + NEWS_RECEIVE("floodgate.news.receive", PermissionDefault.OP); private final String permission; private final PermissionDefault defaultValue; diff --git a/core/src/main/java/org/geysermc/floodgate/command/util/PermissionDefault.java b/core/src/main/java/org/geysermc/floodgate/core/command/util/PermissionDefault.java similarity index 91% rename from core/src/main/java/org/geysermc/floodgate/command/util/PermissionDefault.java rename to core/src/main/java/org/geysermc/floodgate/core/command/util/PermissionDefault.java index a98e1e89..ce96699f 100644 --- a/core/src/main/java/org/geysermc/floodgate/command/util/PermissionDefault.java +++ b/core/src/main/java/org/geysermc/floodgate/core/command/util/PermissionDefault.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.command.util; +package org.geysermc.floodgate.core.command.util; public enum PermissionDefault { TRUE, FALSE, OP, NOT_OP diff --git a/core/src/main/java/org/geysermc/floodgate/config/ConfigLoader.java b/core/src/main/java/org/geysermc/floodgate/core/config/ConfigLoader.java similarity index 82% rename from core/src/main/java/org/geysermc/floodgate/config/ConfigLoader.java rename to core/src/main/java/org/geysermc/floodgate/core/config/ConfigLoader.java index e4311058..d7d227b8 100644 --- a/core/src/main/java/org/geysermc/floodgate/config/ConfigLoader.java +++ b/core/src/main/java/org/geysermc/floodgate/core/config/ConfigLoader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,32 +23,58 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.config; +package org.geysermc.floodgate.core.config; +import io.avaje.inject.Bean; +import jakarta.inject.Inject; +import jakarta.inject.Named; +import jakarta.inject.Singleton; import java.nio.file.Files; import java.nio.file.Path; import java.security.Key; import java.util.UUID; import lombok.Getter; -import lombok.RequiredArgsConstructor; 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.core.scope.ProxyScope; +import org.geysermc.floodgate.core.scope.ServerScope; import org.geysermc.floodgate.crypto.FloodgateCipher; import org.geysermc.floodgate.crypto.KeyProducer; +@Singleton @Getter -@RequiredArgsConstructor public final class ConfigLoader { private final Path dataDirectory; - private final Class configClass; - private final KeyProducer keyProducer; private final FloodgateCipher cipher; + @Inject + ConfigLoader( + @Named("dataDirectory") Path dataDirectory, + KeyProducer keyProducer, + FloodgateCipher cipher + ) { + this.dataDirectory = dataDirectory; + this.keyProducer = keyProducer; + this.cipher = cipher; + } + + @Bean + @ServerScope + FloodgateConfig config() { + return load(FloodgateConfig.class); + } + + @Bean + @ProxyScope + ProxyFloodgateConfig proxyConfig() { + return load(ProxyFloodgateConfig.class); + } + @SuppressWarnings("unchecked") - public T load() { + private T load(Class configClass) { String templateFile = "config.yml"; if (ProxyFloodgateConfig.class.isAssignableFrom(configClass)) { templateFile = "proxy-" + templateFile; diff --git a/core/src/main/java/org/geysermc/floodgate/config/FloodgateConfig.java b/core/src/main/java/org/geysermc/floodgate/core/config/FloodgateConfig.java similarity index 96% rename from core/src/main/java/org/geysermc/floodgate/config/FloodgateConfig.java rename to core/src/main/java/org/geysermc/floodgate/core/config/FloodgateConfig.java index 246f9f0d..25ef233e 100644 --- a/core/src/main/java/org/geysermc/floodgate/config/FloodgateConfig.java +++ b/core/src/main/java/org/geysermc/floodgate/core/config/FloodgateConfig.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,9 +23,8 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.config; +package org.geysermc.floodgate.core.config; -import jakarta.inject.Singleton; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -39,7 +38,6 @@ import org.geysermc.configutils.loader.callback.GenericPostInitializeCallback; * addition to the global configuration like {@link ProxyFloodgateConfig} for the proxies. */ @Getter -@Singleton public class FloodgateConfig implements GenericPostInitializeCallback { private String keyFileName; private String usernamePrefix = ""; diff --git a/core/src/main/java/org/geysermc/floodgate/config/ProxyFloodgateConfig.java b/core/src/main/java/org/geysermc/floodgate/core/config/ProxyFloodgateConfig.java similarity index 93% rename from core/src/main/java/org/geysermc/floodgate/config/ProxyFloodgateConfig.java rename to core/src/main/java/org/geysermc/floodgate/core/config/ProxyFloodgateConfig.java index 7874af87..ff7429f1 100644 --- a/core/src/main/java/org/geysermc/floodgate/config/ProxyFloodgateConfig.java +++ b/core/src/main/java/org/geysermc/floodgate/core/config/ProxyFloodgateConfig.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.config; +package org.geysermc.floodgate.core.config; import lombok.Getter; diff --git a/core/src/main/java/org/geysermc/floodgate/database/config/DatabaseConfig.java b/core/src/main/java/org/geysermc/floodgate/core/database/config/DatabaseConfig.java similarity index 91% rename from core/src/main/java/org/geysermc/floodgate/database/config/DatabaseConfig.java rename to core/src/main/java/org/geysermc/floodgate/core/database/config/DatabaseConfig.java index b382760e..4a7cf18f 100644 --- a/core/src/main/java/org/geysermc/floodgate/database/config/DatabaseConfig.java +++ b/core/src/main/java/org/geysermc/floodgate/core/database/config/DatabaseConfig.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.database.config; +package org.geysermc.floodgate.core.database.config; /** * Base class for every database related configuration. diff --git a/core/src/main/java/org/geysermc/floodgate/database/config/DatabaseConfigLoader.java b/core/src/main/java/org/geysermc/floodgate/core/database/config/DatabaseConfigLoader.java similarity index 97% rename from core/src/main/java/org/geysermc/floodgate/database/config/DatabaseConfigLoader.java rename to core/src/main/java/org/geysermc/floodgate/core/database/config/DatabaseConfigLoader.java index 7c3b68a1..4089b2e4 100644 --- a/core/src/main/java/org/geysermc/floodgate/database/config/DatabaseConfigLoader.java +++ b/core/src/main/java/org/geysermc/floodgate/core/database/config/DatabaseConfigLoader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.database.config; +package org.geysermc.floodgate.core.database.config; import com.google.gson.JsonObject; import jakarta.inject.Inject; diff --git a/core/src/main/java/org/geysermc/floodgate/event/EventBus.java b/core/src/main/java/org/geysermc/floodgate/core/event/EventBus.java similarity index 84% rename from core/src/main/java/org/geysermc/floodgate/event/EventBus.java rename to core/src/main/java/org/geysermc/floodgate/core/event/EventBus.java index c7c288f5..0a59200a 100644 --- a/core/src/main/java/org/geysermc/floodgate/event/EventBus.java +++ b/core/src/main/java/org/geysermc/floodgate/core/event/EventBus.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,12 +23,15 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.event; +package org.geysermc.floodgate.core.event; +import io.avaje.inject.BeanScope; +import jakarta.inject.Inject; import jakarta.inject.Singleton; import java.util.function.BiConsumer; import java.util.function.Consumer; import org.checkerframework.checker.nullness.qual.NonNull; +import org.geysermc.event.Listener; import org.geysermc.event.PostOrder; import org.geysermc.event.bus.impl.EventBusImpl; import org.geysermc.event.subscribe.Subscribe; @@ -40,6 +43,15 @@ import org.geysermc.floodgate.api.event.FloodgateSubscriber; @SuppressWarnings("unchecked") public final class EventBus extends EventBusImpl> implements FloodgateEventBus { + @Inject + public void registerListeners(BeanScope scope) { + // https://github.com/avaje/avaje-inject/issues/289 + for (Object listener : scope.listByAnnotation(Listener.class)) { + register(listener); + } + } + + @Override protected > B makeSubscription( @NonNull Class eventClass, diff --git a/core/src/main/java/org/geysermc/floodgate/event/EventSubscriber.java b/core/src/main/java/org/geysermc/floodgate/core/event/EventSubscriber.java similarity index 95% rename from core/src/main/java/org/geysermc/floodgate/event/EventSubscriber.java rename to core/src/main/java/org/geysermc/floodgate/core/event/EventSubscriber.java index f01c209b..344d3132 100644 --- a/core/src/main/java/org/geysermc/floodgate/event/EventSubscriber.java +++ b/core/src/main/java/org/geysermc/floodgate/core/event/EventSubscriber.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.event; +package org.geysermc.floodgate.core.event; import java.util.function.BiConsumer; import java.util.function.Consumer; diff --git a/core/src/main/java/org/geysermc/floodgate/event/lifecycle/PostEnableEvent.java b/core/src/main/java/org/geysermc/floodgate/core/event/lifecycle/PostEnableEvent.java similarity index 91% rename from core/src/main/java/org/geysermc/floodgate/event/lifecycle/PostEnableEvent.java rename to core/src/main/java/org/geysermc/floodgate/core/event/lifecycle/PostEnableEvent.java index f274ff16..bfb73a28 100644 --- a/core/src/main/java/org/geysermc/floodgate/event/lifecycle/PostEnableEvent.java +++ b/core/src/main/java/org/geysermc/floodgate/core/event/lifecycle/PostEnableEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.event.lifecycle; +package org.geysermc.floodgate.core.event.lifecycle; public class PostEnableEvent { } diff --git a/core/src/main/java/org/geysermc/floodgate/event/lifecycle/ShutdownEvent.java b/core/src/main/java/org/geysermc/floodgate/core/event/lifecycle/ShutdownEvent.java similarity index 91% rename from core/src/main/java/org/geysermc/floodgate/event/lifecycle/ShutdownEvent.java rename to core/src/main/java/org/geysermc/floodgate/core/event/lifecycle/ShutdownEvent.java index 30e782c5..b5749d69 100644 --- a/core/src/main/java/org/geysermc/floodgate/event/lifecycle/ShutdownEvent.java +++ b/core/src/main/java/org/geysermc/floodgate/core/event/lifecycle/ShutdownEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.event.lifecycle; +package org.geysermc.floodgate.core.event.lifecycle; public class ShutdownEvent { } diff --git a/core/src/main/java/org/geysermc/floodgate/event/skin/SkinApplyEventImpl.java b/core/src/main/java/org/geysermc/floodgate/core/event/skin/SkinApplyEventImpl.java similarity index 95% rename from core/src/main/java/org/geysermc/floodgate/event/skin/SkinApplyEventImpl.java rename to core/src/main/java/org/geysermc/floodgate/core/event/skin/SkinApplyEventImpl.java index 52148986..226fbcf1 100644 --- a/core/src/main/java/org/geysermc/floodgate/event/skin/SkinApplyEventImpl.java +++ b/core/src/main/java/org/geysermc/floodgate/core/event/skin/SkinApplyEventImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.event.skin; +package org.geysermc.floodgate.core.event.skin; import java.util.Objects; import org.checkerframework.checker.nullness.qual.NonNull; diff --git a/core/src/main/java/org/geysermc/floodgate/inject/CommonPlatformInjector.java b/core/src/main/java/org/geysermc/floodgate/core/inject/CommonPlatformInjector.java similarity index 96% rename from core/src/main/java/org/geysermc/floodgate/inject/CommonPlatformInjector.java rename to core/src/main/java/org/geysermc/floodgate/core/inject/CommonPlatformInjector.java index b400c2bd..7b24104e 100644 --- a/core/src/main/java/org/geysermc/floodgate/inject/CommonPlatformInjector.java +++ b/core/src/main/java/org/geysermc/floodgate/core/inject/CommonPlatformInjector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.inject; +package org.geysermc.floodgate.core.inject; import io.netty.channel.Channel; import jakarta.inject.Inject; @@ -42,7 +42,7 @@ public abstract class CommonPlatformInjector implements PlatformInjector { private final Map, InjectorAddon> addons = new HashMap<>(); @Inject - void registerAddons(Set addons) { + public void registerAddons(Set addons) { addons.forEach(this::addAddon); } diff --git a/core/src/main/java/org/geysermc/floodgate/link/CommonPlayerLink.java b/core/src/main/java/org/geysermc/floodgate/core/link/CommonPlayerLink.java similarity index 91% rename from core/src/main/java/org/geysermc/floodgate/link/CommonPlayerLink.java rename to core/src/main/java/org/geysermc/floodgate/core/link/CommonPlayerLink.java index b53dc361..32b83a54 100644 --- a/core/src/main/java/org/geysermc/floodgate/link/CommonPlayerLink.java +++ b/core/src/main/java/org/geysermc/floodgate/core/link/CommonPlayerLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.link; +package org.geysermc.floodgate.core.link; import io.avaje.inject.BeanScope; import jakarta.inject.Inject; @@ -39,10 +39,10 @@ import org.geysermc.floodgate.api.FloodgateApi; import org.geysermc.floodgate.api.link.LinkRequest; import org.geysermc.floodgate.api.link.PlayerLink; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.config.FloodgateConfig; -import org.geysermc.floodgate.database.config.DatabaseConfig; -import org.geysermc.floodgate.database.config.DatabaseConfigLoader; -import org.geysermc.floodgate.event.lifecycle.ShutdownEvent; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.database.config.DatabaseConfig; +import org.geysermc.floodgate.core.database.config.DatabaseConfigLoader; +import org.geysermc.floodgate.core.event.lifecycle.ShutdownEvent; @Listener public abstract class CommonPlayerLink implements PlayerLink { diff --git a/core/src/main/java/org/geysermc/floodgate/link/DisabledPlayerLink.java b/core/src/main/java/org/geysermc/floodgate/core/link/DisabledPlayerLink.java similarity index 96% rename from core/src/main/java/org/geysermc/floodgate/link/DisabledPlayerLink.java rename to core/src/main/java/org/geysermc/floodgate/core/link/DisabledPlayerLink.java index eab39818..fada2a6a 100644 --- a/core/src/main/java/org/geysermc/floodgate/link/DisabledPlayerLink.java +++ b/core/src/main/java/org/geysermc/floodgate/core/link/DisabledPlayerLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.link; +package org.geysermc.floodgate.core.link; import java.util.UUID; import java.util.concurrent.CompletableFuture; @@ -31,8 +31,8 @@ import org.checkerframework.checker.nullness.qual.NonNull; import org.geysermc.floodgate.api.FloodgateApi; import org.geysermc.floodgate.api.link.LinkRequestResult; import org.geysermc.floodgate.api.link.PlayerLink; +import org.geysermc.floodgate.core.util.Utils; import org.geysermc.floodgate.util.LinkedPlayer; -import org.geysermc.floodgate.util.Utils; /** * Simple class used when PlayerLinking is disabled. This class has been made because Floodgate diff --git a/core/src/main/java/org/geysermc/floodgate/link/GlobalPlayerLinking.java b/core/src/main/java/org/geysermc/floodgate/core/link/GlobalPlayerLinking.java similarity index 95% rename from core/src/main/java/org/geysermc/floodgate/link/GlobalPlayerLinking.java rename to core/src/main/java/org/geysermc/floodgate/core/link/GlobalPlayerLinking.java index c339d04f..83fbe597 100644 --- a/core/src/main/java/org/geysermc/floodgate/link/GlobalPlayerLinking.java +++ b/core/src/main/java/org/geysermc/floodgate/core/link/GlobalPlayerLinking.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,9 +23,9 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.link; +package org.geysermc.floodgate.core.link; -import static org.geysermc.floodgate.util.Constants.GET_BEDROCK_LINK; +import static org.geysermc.floodgate.core.util.Constants.GET_BEDROCK_LINK; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -36,10 +36,10 @@ import lombok.Getter; import org.checkerframework.checker.nullness.qual.NonNull; import org.geysermc.floodgate.api.link.LinkRequestResult; import org.geysermc.floodgate.api.link.PlayerLink; -import org.geysermc.floodgate.util.HttpClient; -import org.geysermc.floodgate.util.HttpClient.DefaultHttpResponse; +import org.geysermc.floodgate.core.util.HttpClient; +import org.geysermc.floodgate.core.util.HttpClient.DefaultHttpResponse; +import org.geysermc.floodgate.core.util.Utils; import org.geysermc.floodgate.util.LinkedPlayer; -import org.geysermc.floodgate.util.Utils; @Getter public class GlobalPlayerLinking extends CommonPlayerLink { diff --git a/core/src/main/java/org/geysermc/floodgate/link/LinkRequestImpl.java b/core/src/main/java/org/geysermc/floodgate/core/link/LinkRequestImpl.java similarity index 96% rename from core/src/main/java/org/geysermc/floodgate/link/LinkRequestImpl.java rename to core/src/main/java/org/geysermc/floodgate/core/link/LinkRequestImpl.java index a18ac564..2b516a37 100644 --- a/core/src/main/java/org/geysermc/floodgate/link/LinkRequestImpl.java +++ b/core/src/main/java/org/geysermc/floodgate/core/link/LinkRequestImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.link; +package org.geysermc.floodgate.core.link; import java.time.Instant; import java.util.UUID; diff --git a/core/src/main/java/org/geysermc/floodgate/link/PlayerLinkHolder.java b/core/src/main/java/org/geysermc/floodgate/core/link/PlayerLinkHolder.java similarity index 90% rename from core/src/main/java/org/geysermc/floodgate/link/PlayerLinkHolder.java rename to core/src/main/java/org/geysermc/floodgate/core/link/PlayerLinkHolder.java index 0f1c41b2..423ad651 100644 --- a/core/src/main/java/org/geysermc/floodgate/link/PlayerLinkHolder.java +++ b/core/src/main/java/org/geysermc/floodgate/core/link/PlayerLinkHolder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,13 +23,15 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.link; +package org.geysermc.floodgate.core.link; import static java.util.Objects.requireNonNull; import com.google.gson.Gson; import com.google.gson.JsonObject; +import io.avaje.inject.Bean; import io.avaje.inject.BeanScope; +import io.avaje.inject.Factory; import jakarta.inject.Inject; import jakarta.inject.Named; import jakarta.inject.Singleton; @@ -43,35 +45,38 @@ import java.nio.file.Path; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.checkerframework.checker.nullness.qual.NonNull; import org.geysermc.event.Listener; import org.geysermc.event.subscribe.Subscribe; import org.geysermc.floodgate.api.link.PlayerLink; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.config.FloodgateConfig; -import org.geysermc.floodgate.config.FloodgateConfig.PlayerLinkConfig; -import org.geysermc.floodgate.event.lifecycle.ShutdownEvent; -import org.geysermc.floodgate.util.Constants; -import org.geysermc.floodgate.util.Utils; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.config.FloodgateConfig.PlayerLinkConfig; +import org.geysermc.floodgate.core.event.lifecycle.ShutdownEvent; +import org.geysermc.floodgate.core.util.Constants; +import org.geysermc.floodgate.core.util.Utils; @Listener -@Singleton +@Factory @SuppressWarnings("unchecked") public final class PlayerLinkHolder { - @Inject BeanScope currentScope; - @Inject FloodgateConfig config; - @Inject FloodgateLogger logger; - - @Inject - @Named("dataDirectory") - Path dataDirectory; + private final BeanScope currentScope; private URLClassLoader classLoader; private BeanScope childScope; private PlayerLink instance; - @NonNull - public PlayerLink load() { + @Inject + PlayerLinkHolder(BeanScope scope) { + this.currentScope = scope; + } + + @Bean + @Singleton + PlayerLink load( + FloodgateConfig config, + FloodgateLogger logger, + @Named("dataDirectory") Path dataDirectory + ) { if (instance != null) { return instance; } diff --git a/core/src/main/java/org/geysermc/floodgate/logger/JavaUtilFloodgateLogger.java b/core/src/main/java/org/geysermc/floodgate/core/logger/JavaUtilFloodgateLogger.java similarity index 90% rename from core/src/main/java/org/geysermc/floodgate/logger/JavaUtilFloodgateLogger.java rename to core/src/main/java/org/geysermc/floodgate/core/logger/JavaUtilFloodgateLogger.java index 1d51d228..1ffd8929 100644 --- a/core/src/main/java/org/geysermc/floodgate/logger/JavaUtilFloodgateLogger.java +++ b/core/src/main/java/org/geysermc/floodgate/core/logger/JavaUtilFloodgateLogger.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,9 +23,9 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.logger; +package org.geysermc.floodgate.core.logger; -import static org.geysermc.floodgate.util.MessageFormatter.format; +import static org.geysermc.floodgate.core.util.MessageFormatter.format; import io.avaje.inject.Secondary; import jakarta.inject.Inject; @@ -34,8 +34,8 @@ import jakarta.inject.Singleton; import java.util.logging.Level; import java.util.logging.Logger; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.config.FloodgateConfig; -import org.geysermc.floodgate.util.LanguageManager; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.util.LanguageManager; @Secondary @Singleton diff --git a/core/src/main/java/org/geysermc/floodgate/core/module/CommonModule.java b/core/src/main/java/org/geysermc/floodgate/core/module/CommonModule.java new file mode 100644 index 00000000..a4abfbac --- /dev/null +++ b/core/src/main/java/org/geysermc/floodgate/core/module/CommonModule.java @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @author GeyserMC + * @link https://github.com/GeyserMC/Floodgate + */ + +package org.geysermc.floodgate.core.module; + +import io.avaje.inject.Bean; +import io.avaje.inject.Factory; +import io.netty.util.AttributeKey; +import jakarta.inject.Inject; +import jakarta.inject.Named; +import jakarta.inject.Singleton; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.SynchronousQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import org.geysermc.event.Listener; +import org.geysermc.floodgate.api.player.FloodgatePlayer; +import org.geysermc.floodgate.core.event.EventBus; +import org.geysermc.floodgate.core.event.lifecycle.ShutdownEvent; +import org.geysermc.floodgate.core.util.Constants; +import org.geysermc.floodgate.crypto.AesCipher; +import org.geysermc.floodgate.crypto.AesKeyProducer; +import org.geysermc.floodgate.crypto.Base64Topping; +import org.geysermc.floodgate.crypto.FloodgateCipher; +import org.geysermc.floodgate.crypto.KeyProducer; + +@Factory +@Listener +public class CommonModule { + @Bean + @Singleton + @Named("commonPool") + public ExecutorService commonPool() { + return new ThreadPoolExecutor(0, 20, 60L, TimeUnit.SECONDS, new SynchronousQueue<>()); + } + + @Inject + public void registerShutdown( + EventBus eventBus, + @Named("commonPool") ExecutorService commonPool, + @Named("commonScheduledPool") ScheduledExecutorService commonScheduledPool + ) { + eventBus.subscribe(ShutdownEvent.class, ignored -> { + commonPool.shutdown(); + commonScheduledPool.shutdown(); + }); + } + + @Bean + @Singleton + public KeyProducer keyProducer() { + return new AesKeyProducer(); + } + + @Bean + @Singleton + public FloodgateCipher cipher() { + return new AesCipher(new Base64Topping()); + } + + @Bean + @Singleton + @Named("gitBranch") + public String gitBranch() { + return Constants.GIT_BRANCH; + } + + @Bean + @Singleton + @Named("buildNumber") + public Integer buildNumber() { + return Constants.BUILD_NUMBER; + } + + @Bean + @Singleton + @Named("kickMessageAttribute") + public AttributeKey kickMessageAttribute() { + return AttributeKey.valueOf("floodgate-kick-message"); + } + + @Bean + @Singleton + @Named("playerAttribute") + public AttributeKey playerAttribute() { + return AttributeKey.valueOf("floodgate-player"); + } +} diff --git a/core/src/main/java/org/geysermc/floodgate/news/NewsChecker.java b/core/src/main/java/org/geysermc/floodgate/core/news/NewsChecker.java similarity index 93% rename from core/src/main/java/org/geysermc/floodgate/news/NewsChecker.java rename to core/src/main/java/org/geysermc/floodgate/core/news/NewsChecker.java index be4fba1e..da9bf37d 100644 --- a/core/src/main/java/org/geysermc/floodgate/news/NewsChecker.java +++ b/core/src/main/java/org/geysermc/floodgate/core/news/NewsChecker.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.news; +package org.geysermc.floodgate.core.news; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -39,14 +39,16 @@ import java.util.Map; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.command.util.Permission; +import org.geysermc.floodgate.core.command.util.Permission; +import org.geysermc.floodgate.core.platform.command.CommandUtil; +import org.geysermc.floodgate.core.util.Constants; +import org.geysermc.floodgate.core.util.HttpClient; +import org.geysermc.floodgate.core.util.HttpClient.HttpResponse; +import org.geysermc.floodgate.news.NewsItem; +import org.geysermc.floodgate.news.NewsItemAction; import org.geysermc.floodgate.news.data.AnnouncementData; import org.geysermc.floodgate.news.data.BuildSpecificData; import org.geysermc.floodgate.news.data.CheckAfterData; -import org.geysermc.floodgate.platform.command.CommandUtil; -import org.geysermc.floodgate.util.Constants; -import org.geysermc.floodgate.util.HttpClient; -import org.geysermc.floodgate.util.HttpClient.HttpResponse; @Singleton public class NewsChecker { diff --git a/core/src/main/java/org/geysermc/floodgate/event/util/ListenerAnnotationMatcher.java b/core/src/main/java/org/geysermc/floodgate/core/package-info.java similarity index 64% rename from core/src/main/java/org/geysermc/floodgate/event/util/ListenerAnnotationMatcher.java rename to core/src/main/java/org/geysermc/floodgate/core/package-info.java index e0881e23..dc9bcd62 100644 --- a/core/src/main/java/org/geysermc/floodgate/event/util/ListenerAnnotationMatcher.java +++ b/core/src/main/java/org/geysermc/floodgate/core/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,16 +23,21 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.event.util; +@InjectModule(requires = { + PlatformUtils.class, + String.class, + // provided by either the Server- or ProxyModule + FloodgateApi.class, + FloodgateConfig.class, + Path.class +}, provides = { + LanguageManager.class, +}) +package org.geysermc.floodgate.core; -import com.google.inject.TypeLiteral; -import com.google.inject.matcher.AbstractMatcher; -import org.geysermc.event.Listener; - -public class ListenerAnnotationMatcher extends AbstractMatcher> { - @Override - public boolean matches(TypeLiteral typeLiteral) { - Class rawType = typeLiteral.getRawType(); - return rawType.isAnnotationPresent(Listener.class); - } -} +import io.avaje.inject.InjectModule; +import java.nio.file.Path; +import org.geysermc.floodgate.api.FloodgateApi; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.platform.util.PlatformUtils; +import org.geysermc.floodgate.core.util.LanguageManager; \ No newline at end of file diff --git a/core/src/main/java/org/geysermc/floodgate/packet/PacketHandlersImpl.java b/core/src/main/java/org/geysermc/floodgate/core/packet/PacketHandlersImpl.java similarity index 97% rename from core/src/main/java/org/geysermc/floodgate/packet/PacketHandlersImpl.java rename to core/src/main/java/org/geysermc/floodgate/core/packet/PacketHandlersImpl.java index da225010..91b0f1eb 100644 --- a/core/src/main/java/org/geysermc/floodgate/packet/PacketHandlersImpl.java +++ b/core/src/main/java/org/geysermc/floodgate/core/packet/PacketHandlersImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.packet; +package org.geysermc.floodgate.core.packet; import io.netty.channel.ChannelHandlerContext; import jakarta.inject.Singleton; diff --git a/core/src/main/java/org/geysermc/floodgate/platform/command/CommandUtil.java b/core/src/main/java/org/geysermc/floodgate/core/platform/command/CommandUtil.java similarity index 94% rename from core/src/main/java/org/geysermc/floodgate/platform/command/CommandUtil.java rename to core/src/main/java/org/geysermc/floodgate/core/platform/command/CommandUtil.java index d159a29e..36245cf0 100644 --- a/core/src/main/java/org/geysermc/floodgate/platform/command/CommandUtil.java +++ b/core/src/main/java/org/geysermc/floodgate/core/platform/command/CommandUtil.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,10 +23,10 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.platform.command; +package org.geysermc.floodgate.core.platform.command; -import static org.geysermc.floodgate.platform.util.PlayerType.ALL_PLAYERS; -import static org.geysermc.floodgate.platform.util.PlayerType.ONLY_BEDROCK; +import static org.geysermc.floodgate.core.platform.util.PlayerType.ALL_PLAYERS; +import static org.geysermc.floodgate.core.platform.util.PlayerType.ONLY_BEDROCK; import java.util.ArrayList; import java.util.Collection; @@ -38,11 +38,11 @@ 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.PlayerType; -import org.geysermc.floodgate.player.UserAudience; -import org.geysermc.floodgate.player.audience.ProfileAudience; -import org.geysermc.floodgate.util.LanguageManager; -import org.geysermc.floodgate.util.Utils; +import org.geysermc.floodgate.core.platform.util.PlayerType; +import org.geysermc.floodgate.core.player.UserAudience; +import org.geysermc.floodgate.core.player.audience.ProfileAudience; +import org.geysermc.floodgate.core.util.LanguageManager; +import org.geysermc.floodgate.core.util.Utils; /** * An interface used across all Floodgate platforms to simple stuff in commands like kicking players diff --git a/core/src/main/java/org/geysermc/floodgate/platform/command/FloodgateCommand.java b/core/src/main/java/org/geysermc/floodgate/core/platform/command/FloodgateCommand.java similarity index 90% rename from core/src/main/java/org/geysermc/floodgate/platform/command/FloodgateCommand.java rename to core/src/main/java/org/geysermc/floodgate/core/platform/command/FloodgateCommand.java index f61c336e..dad04940 100644 --- a/core/src/main/java/org/geysermc/floodgate/platform/command/FloodgateCommand.java +++ b/core/src/main/java/org/geysermc/floodgate/core/platform/command/FloodgateCommand.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,13 +23,13 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.platform.command; +package org.geysermc.floodgate.core.platform.command; import cloud.commandframework.Command; import cloud.commandframework.CommandManager; import cloud.commandframework.context.CommandContext; -import org.geysermc.floodgate.config.FloodgateConfig; -import org.geysermc.floodgate.player.UserAudience; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.player.UserAudience; /** The base class for every Floodgate command. */ public interface FloodgateCommand { diff --git a/core/src/main/java/org/geysermc/floodgate/platform/command/FloodgateSubCommand.java b/core/src/main/java/org/geysermc/floodgate/core/platform/command/FloodgateSubCommand.java similarity index 86% rename from core/src/main/java/org/geysermc/floodgate/platform/command/FloodgateSubCommand.java rename to core/src/main/java/org/geysermc/floodgate/core/platform/command/FloodgateSubCommand.java index 12bdbfd3..48a702e1 100644 --- a/core/src/main/java/org/geysermc/floodgate/platform/command/FloodgateSubCommand.java +++ b/core/src/main/java/org/geysermc/floodgate/core/platform/command/FloodgateSubCommand.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,11 +23,11 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.platform.command; +package org.geysermc.floodgate.core.platform.command; import cloud.commandframework.context.CommandContext; -import org.geysermc.floodgate.command.util.Permission; -import org.geysermc.floodgate.player.UserAudience; +import org.geysermc.floodgate.core.command.util.Permission; +import org.geysermc.floodgate.core.player.UserAudience; public abstract class FloodgateSubCommand { public abstract Class parent(); diff --git a/core/src/main/java/org/geysermc/floodgate/platform/command/SubCommands.java b/core/src/main/java/org/geysermc/floodgate/core/platform/command/SubCommands.java similarity index 93% rename from core/src/main/java/org/geysermc/floodgate/platform/command/SubCommands.java rename to core/src/main/java/org/geysermc/floodgate/core/platform/command/SubCommands.java index eb6051e6..770aff80 100644 --- a/core/src/main/java/org/geysermc/floodgate/platform/command/SubCommands.java +++ b/core/src/main/java/org/geysermc/floodgate/core/platform/command/SubCommands.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.platform.command; +package org.geysermc.floodgate.core.platform.command; import jakarta.inject.Inject; import java.util.Set; diff --git a/core/src/main/java/org/geysermc/floodgate/platform/command/TranslatableMessage.java b/core/src/main/java/org/geysermc/floodgate/core/platform/command/TranslatableMessage.java similarity index 92% rename from core/src/main/java/org/geysermc/floodgate/platform/command/TranslatableMessage.java rename to core/src/main/java/org/geysermc/floodgate/core/platform/command/TranslatableMessage.java index ee51f498..cebeba6d 100644 --- a/core/src/main/java/org/geysermc/floodgate/platform/command/TranslatableMessage.java +++ b/core/src/main/java/org/geysermc/floodgate/core/platform/command/TranslatableMessage.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,9 +23,9 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.platform.command; +package org.geysermc.floodgate.core.platform.command; -import org.geysermc.floodgate.util.LanguageManager; +import org.geysermc.floodgate.core.util.LanguageManager; /** * TranslatableMessage is the interface for a message that can be translated. Messages are generally diff --git a/core/src/main/java/org/geysermc/floodgate/platform/listener/ListenerRegistration.java b/core/src/main/java/org/geysermc/floodgate/core/platform/listener/ListenerRegistration.java similarity index 93% rename from core/src/main/java/org/geysermc/floodgate/platform/listener/ListenerRegistration.java rename to core/src/main/java/org/geysermc/floodgate/core/platform/listener/ListenerRegistration.java index e1895022..e8b89d13 100644 --- a/core/src/main/java/org/geysermc/floodgate/platform/listener/ListenerRegistration.java +++ b/core/src/main/java/org/geysermc/floodgate/core/platform/listener/ListenerRegistration.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.platform.listener; +package org.geysermc.floodgate.core.platform.listener; /** * This class is responsible for registering listeners to the listener manager of the platform that diff --git a/core/src/main/java/org/geysermc/floodgate/platform/pluginmessage/PluginMessageUtils.java b/core/src/main/java/org/geysermc/floodgate/core/platform/pluginmessage/PluginMessageUtils.java similarity index 93% rename from core/src/main/java/org/geysermc/floodgate/platform/pluginmessage/PluginMessageUtils.java rename to core/src/main/java/org/geysermc/floodgate/core/platform/pluginmessage/PluginMessageUtils.java index faa7bbd8..7fcefd7d 100644 --- a/core/src/main/java/org/geysermc/floodgate/platform/pluginmessage/PluginMessageUtils.java +++ b/core/src/main/java/org/geysermc/floodgate/core/platform/pluginmessage/PluginMessageUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.platform.pluginmessage; +package org.geysermc.floodgate.core.platform.pluginmessage; import java.util.UUID; diff --git a/core/src/main/java/org/geysermc/floodgate/platform/util/PlatformUtils.java b/core/src/main/java/org/geysermc/floodgate/core/platform/util/PlatformUtils.java similarity index 94% rename from core/src/main/java/org/geysermc/floodgate/platform/util/PlatformUtils.java rename to core/src/main/java/org/geysermc/floodgate/core/platform/util/PlatformUtils.java index d9901848..34351906 100644 --- a/core/src/main/java/org/geysermc/floodgate/platform/util/PlatformUtils.java +++ b/core/src/main/java/org/geysermc/floodgate/core/platform/util/PlatformUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.platform.util; +package org.geysermc.floodgate.core.platform.util; import lombok.RequiredArgsConstructor; diff --git a/core/src/main/java/org/geysermc/floodgate/platform/util/PlayerType.java b/core/src/main/java/org/geysermc/floodgate/core/platform/util/PlayerType.java similarity index 91% rename from core/src/main/java/org/geysermc/floodgate/platform/util/PlayerType.java rename to core/src/main/java/org/geysermc/floodgate/core/platform/util/PlayerType.java index f8c0c97c..ab6784b5 100644 --- a/core/src/main/java/org/geysermc/floodgate/platform/util/PlayerType.java +++ b/core/src/main/java/org/geysermc/floodgate/core/platform/util/PlayerType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.platform.util; +package org.geysermc.floodgate.core.platform.util; public enum PlayerType { ALL_PLAYERS, diff --git a/core/src/main/java/org/geysermc/floodgate/player/FloodgateCommandPreprocessor.java b/core/src/main/java/org/geysermc/floodgate/core/player/FloodgateCommandPreprocessor.java similarity index 92% rename from core/src/main/java/org/geysermc/floodgate/player/FloodgateCommandPreprocessor.java rename to core/src/main/java/org/geysermc/floodgate/core/player/FloodgateCommandPreprocessor.java index 104516de..a3872fff 100644 --- a/core/src/main/java/org/geysermc/floodgate/player/FloodgateCommandPreprocessor.java +++ b/core/src/main/java/org/geysermc/floodgate/core/player/FloodgateCommandPreprocessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,13 +23,13 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.player; +package org.geysermc.floodgate.core.player; import cloud.commandframework.execution.preprocessor.CommandPreprocessingContext; import cloud.commandframework.execution.preprocessor.CommandPreprocessor; import lombok.RequiredArgsConstructor; import org.checkerframework.checker.nullness.qual.NonNull; -import org.geysermc.floodgate.platform.command.CommandUtil; +import org.geysermc.floodgate.core.platform.command.CommandUtil; /** * Command preprocessor which decorated incoming {@link cloud.commandframework.context.CommandContext} diff --git a/core/src/main/java/org/geysermc/floodgate/player/FloodgateHandshakeHandler.java b/core/src/main/java/org/geysermc/floodgate/core/player/FloodgateHandshakeHandler.java similarity index 85% rename from core/src/main/java/org/geysermc/floodgate/player/FloodgateHandshakeHandler.java rename to core/src/main/java/org/geysermc/floodgate/core/player/FloodgateHandshakeHandler.java index b84ff1ba..d7861a65 100644 --- a/core/src/main/java/org/geysermc/floodgate/player/FloodgateHandshakeHandler.java +++ b/core/src/main/java/org/geysermc/floodgate/core/player/FloodgateHandshakeHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,10 +23,10 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.player; +package org.geysermc.floodgate.core.player; -import static org.geysermc.floodgate.player.FloodgateHandshakeHandler.ResultType.INVALID_DATA_LENGTH; -import static org.geysermc.floodgate.player.FloodgateHandshakeHandler.ResultType.NOT_FLOODGATE_DATA; +import static org.geysermc.floodgate.core.player.FloodgateHandshakeHandler.ResultType.INVALID_DATA_LENGTH; +import static org.geysermc.floodgate.core.player.FloodgateHandshakeHandler.ResultType.NOT_FLOODGATE_DATA; import static org.geysermc.floodgate.util.BedrockData.EXPECTED_LENGTH; import com.google.common.base.Charsets; @@ -34,6 +34,8 @@ import io.netty.channel.Channel; import io.netty.util.AttributeKey; import it.unimi.dsi.fastutil.Pair; import it.unimi.dsi.fastutil.objects.ObjectObjectImmutablePair; +import jakarta.inject.Inject; +import jakarta.inject.Named; import java.net.InetSocketAddress; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionException; @@ -41,52 +43,34 @@ import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NonNull; -import org.geysermc.floodgate.addon.data.HandshakeDataImpl; -import org.geysermc.floodgate.addon.data.HandshakeHandlersImpl; -import org.geysermc.floodgate.api.SimpleFloodgateApi; 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.FloodgateConfig; +import org.geysermc.floodgate.core.addon.data.HandshakeDataImpl; +import org.geysermc.floodgate.core.addon.data.HandshakeHandlersImpl; +import org.geysermc.floodgate.core.api.SimpleFloodgateApi; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.skin.SkinUploadManager; +import org.geysermc.floodgate.core.util.Constants; +import org.geysermc.floodgate.core.util.LanguageManager; +import org.geysermc.floodgate.core.util.Utils; import org.geysermc.floodgate.crypto.FloodgateCipher; -import org.geysermc.floodgate.skin.SkinUploadManager; import org.geysermc.floodgate.util.BedrockData; -import org.geysermc.floodgate.util.Constants; import org.geysermc.floodgate.util.InvalidFormatException; -import org.geysermc.floodgate.util.LanguageManager; import org.geysermc.floodgate.util.LinkedPlayer; -import org.geysermc.floodgate.util.Utils; public final class FloodgateHandshakeHandler { - private final HandshakeHandlersImpl handshakeHandlers; - private final SimpleFloodgateApi api; - private final FloodgateCipher cipher; - private final FloodgateConfig config; - private final SkinUploadManager skinUploadManager; - private final AttributeKey playerAttribute; - private final FloodgateLogger logger; - private final LanguageManager languageManager; - - public FloodgateHandshakeHandler( - HandshakeHandlersImpl handshakeHandlers, - SimpleFloodgateApi api, - FloodgateCipher cipher, - FloodgateConfig config, - SkinUploadManager skinUploadManager, - AttributeKey playerAttribute, - FloodgateLogger logger, - LanguageManager languageManager) { - - this.handshakeHandlers = handshakeHandlers; - this.api = api; - this.cipher = cipher; - this.config = config; - this.skinUploadManager = skinUploadManager; - this.playerAttribute = playerAttribute; - this.logger = logger; - this.languageManager = languageManager; - } + @Inject HandshakeHandlersImpl handshakeHandlers; + @Inject SimpleFloodgateApi api; + @Inject FloodgateCipher cipher; + @Inject FloodgateConfig config; + @Inject SkinUploadManager skinUploadManager; + @Inject + @Named("playerAttribute") + AttributeKey playerAttribute; + @Inject FloodgateLogger logger; + @Inject LanguageManager languageManager; /** * Separates the Floodgate data from the hostname diff --git a/core/src/main/java/org/geysermc/floodgate/player/FloodgatePlayerImpl.java b/core/src/main/java/org/geysermc/floodgate/core/player/FloodgatePlayerImpl.java similarity index 97% rename from core/src/main/java/org/geysermc/floodgate/player/FloodgatePlayerImpl.java rename to core/src/main/java/org/geysermc/floodgate/core/player/FloodgatePlayerImpl.java index 5945f66e..acb1ea94 100644 --- a/core/src/main/java/org/geysermc/floodgate/player/FloodgatePlayerImpl.java +++ b/core/src/main/java/org/geysermc/floodgate/core/player/FloodgatePlayerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.player; +package org.geysermc.floodgate.core.player; import java.util.HashMap; import java.util.Map; @@ -32,17 +32,17 @@ import lombok.AccessLevel; import lombok.Getter; import lombok.RequiredArgsConstructor; import org.geysermc.floodgate.api.FloodgateApi; -import org.geysermc.floodgate.api.ProxyFloodgateApi; import org.geysermc.floodgate.api.handshake.HandshakeData; import org.geysermc.floodgate.api.player.FloodgatePlayer; import org.geysermc.floodgate.api.player.PropertyKey; import org.geysermc.floodgate.api.player.PropertyKey.Result; +import org.geysermc.floodgate.core.api.ProxyFloodgateApi; +import org.geysermc.floodgate.core.util.Utils; import org.geysermc.floodgate.util.BedrockData; import org.geysermc.floodgate.util.DeviceOs; import org.geysermc.floodgate.util.InputMode; import org.geysermc.floodgate.util.LinkedPlayer; import org.geysermc.floodgate.util.UiProfile; -import org.geysermc.floodgate.util.Utils; @Getter @RequiredArgsConstructor(access = AccessLevel.PRIVATE) diff --git a/core/src/main/java/org/geysermc/floodgate/player/HostnameSeparationResult.java b/core/src/main/java/org/geysermc/floodgate/core/player/HostnameSeparationResult.java similarity index 94% rename from core/src/main/java/org/geysermc/floodgate/player/HostnameSeparationResult.java rename to core/src/main/java/org/geysermc/floodgate/core/player/HostnameSeparationResult.java index 9c2f0eb6..74667031 100644 --- a/core/src/main/java/org/geysermc/floodgate/player/HostnameSeparationResult.java +++ b/core/src/main/java/org/geysermc/floodgate/core/player/HostnameSeparationResult.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.player; +package org.geysermc.floodgate.core.player; public class HostnameSeparationResult { private final String floodgateData; diff --git a/core/src/main/java/org/geysermc/floodgate/player/UserAudience.java b/core/src/main/java/org/geysermc/floodgate/core/player/UserAudience.java similarity index 93% rename from core/src/main/java/org/geysermc/floodgate/player/UserAudience.java rename to core/src/main/java/org/geysermc/floodgate/core/player/UserAudience.java index 9ed5e20d..3f40e1d8 100644 --- a/core/src/main/java/org/geysermc/floodgate/player/UserAudience.java +++ b/core/src/main/java/org/geysermc/floodgate/core/player/UserAudience.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,15 +23,15 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.player; +package org.geysermc.floodgate.core.player; import java.util.Objects; import java.util.UUID; import lombok.Getter; import lombok.experimental.Accessors; import org.checkerframework.checker.nullness.qual.NonNull; -import org.geysermc.floodgate.platform.command.CommandUtil; -import org.geysermc.floodgate.platform.command.TranslatableMessage; +import org.geysermc.floodgate.core.platform.command.CommandUtil; +import org.geysermc.floodgate.core.platform.command.TranslatableMessage; @Getter @Accessors(fluent = true) public class UserAudience { diff --git a/core/src/main/java/org/geysermc/floodgate/player/audience/ProfileAudience.java b/core/src/main/java/org/geysermc/floodgate/core/player/audience/ProfileAudience.java similarity index 93% rename from core/src/main/java/org/geysermc/floodgate/player/audience/ProfileAudience.java rename to core/src/main/java/org/geysermc/floodgate/core/player/audience/ProfileAudience.java index 299f8152..274fce6c 100644 --- a/core/src/main/java/org/geysermc/floodgate/player/audience/ProfileAudience.java +++ b/core/src/main/java/org/geysermc/floodgate/core/player/audience/ProfileAudience.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.player.audience; +package org.geysermc.floodgate.core.player.audience; import java.util.UUID; import lombok.Getter; diff --git a/core/src/main/java/org/geysermc/floodgate/player/audience/ProfileAudienceArgument.java b/core/src/main/java/org/geysermc/floodgate/core/player/audience/ProfileAudienceArgument.java similarity index 96% rename from core/src/main/java/org/geysermc/floodgate/player/audience/ProfileAudienceArgument.java rename to core/src/main/java/org/geysermc/floodgate/core/player/audience/ProfileAudienceArgument.java index 9c425637..c874e1b6 100644 --- a/core/src/main/java/org/geysermc/floodgate/player/audience/ProfileAudienceArgument.java +++ b/core/src/main/java/org/geysermc/floodgate/core/player/audience/ProfileAudienceArgument.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.player.audience; +package org.geysermc.floodgate.core.player.audience; import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.arguments.parser.ArgumentParseResult; @@ -36,9 +36,9 @@ import java.util.Queue; 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.PlayerType; -import org.geysermc.floodgate.player.UserAudience; +import org.geysermc.floodgate.core.platform.command.CommandUtil; +import org.geysermc.floodgate.core.platform.util.PlayerType; +import org.geysermc.floodgate.core.player.UserAudience; public class ProfileAudienceArgument extends CommandArgument { private ProfileAudienceArgument(@NonNull String name, ProfileAudienceParser parser) { diff --git a/core/src/main/java/org/geysermc/floodgate/pluginmessage/PluginMessageChannel.java b/core/src/main/java/org/geysermc/floodgate/core/pluginmessage/PluginMessageChannel.java similarity index 95% rename from core/src/main/java/org/geysermc/floodgate/pluginmessage/PluginMessageChannel.java rename to core/src/main/java/org/geysermc/floodgate/core/pluginmessage/PluginMessageChannel.java index 067edd31..a97bf978 100644 --- a/core/src/main/java/org/geysermc/floodgate/pluginmessage/PluginMessageChannel.java +++ b/core/src/main/java/org/geysermc/floodgate/core/pluginmessage/PluginMessageChannel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.pluginmessage; +package org.geysermc.floodgate.core.pluginmessage; import java.util.UUID; import lombok.AccessLevel; diff --git a/core/src/main/java/org/geysermc/floodgate/pluginmessage/PluginMessageManager.java b/core/src/main/java/org/geysermc/floodgate/core/pluginmessage/PluginMessageManager.java similarity index 93% rename from core/src/main/java/org/geysermc/floodgate/pluginmessage/PluginMessageManager.java rename to core/src/main/java/org/geysermc/floodgate/core/pluginmessage/PluginMessageManager.java index 58ab20fe..8e3ffa69 100644 --- a/core/src/main/java/org/geysermc/floodgate/pluginmessage/PluginMessageManager.java +++ b/core/src/main/java/org/geysermc/floodgate/core/pluginmessage/PluginMessageManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,13 +23,15 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.pluginmessage; +package org.geysermc.floodgate.core.pluginmessage; import jakarta.inject.Inject; +import jakarta.inject.Singleton; import java.util.HashMap; import java.util.Map; import java.util.Set; +@Singleton public class PluginMessageManager { private final Map, PluginMessageChannel> classInstanceMap = new HashMap<>(); private final Map identifierInstanceMap = new HashMap<>(); diff --git a/core/src/main/java/org/geysermc/floodgate/pluginmessage/PluginMessageRegistration.java b/core/src/main/java/org/geysermc/floodgate/core/pluginmessage/PluginMessageRegistration.java similarity index 92% rename from core/src/main/java/org/geysermc/floodgate/pluginmessage/PluginMessageRegistration.java rename to core/src/main/java/org/geysermc/floodgate/core/pluginmessage/PluginMessageRegistration.java index 6e28cd40..02f6c095 100644 --- a/core/src/main/java/org/geysermc/floodgate/pluginmessage/PluginMessageRegistration.java +++ b/core/src/main/java/org/geysermc/floodgate/core/pluginmessage/PluginMessageRegistration.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.pluginmessage; +package org.geysermc.floodgate.core.pluginmessage; public interface PluginMessageRegistration { void register(PluginMessageChannel channel); diff --git a/core/src/main/java/org/geysermc/floodgate/pluginmessage/channel/FormChannel.java b/core/src/main/java/org/geysermc/floodgate/core/pluginmessage/channel/FormChannel.java similarity index 94% rename from core/src/main/java/org/geysermc/floodgate/pluginmessage/channel/FormChannel.java rename to core/src/main/java/org/geysermc/floodgate/core/pluginmessage/channel/FormChannel.java index 06c2dd82..bd76fd01 100644 --- a/core/src/main/java/org/geysermc/floodgate/pluginmessage/channel/FormChannel.java +++ b/core/src/main/java/org/geysermc/floodgate/core/pluginmessage/channel/FormChannel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.pluginmessage.channel; +package org.geysermc.floodgate.core.pluginmessage.channel; import com.google.common.base.Charsets; import it.unimi.dsi.fastutil.shorts.Short2ObjectMap; @@ -35,9 +35,9 @@ import org.geysermc.cumulus.form.Form; import org.geysermc.cumulus.form.impl.FormDefinition; import org.geysermc.cumulus.form.impl.FormDefinitions; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.config.FloodgateConfig; -import org.geysermc.floodgate.platform.pluginmessage.PluginMessageUtils; -import org.geysermc.floodgate.pluginmessage.PluginMessageChannel; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.platform.pluginmessage.PluginMessageUtils; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageChannel; public class FormChannel implements PluginMessageChannel { private final FormDefinitions formDefinitions = FormDefinitions.instance(); diff --git a/core/src/main/java/org/geysermc/floodgate/pluginmessage/channel/PacketChannel.java b/core/src/main/java/org/geysermc/floodgate/core/pluginmessage/channel/PacketChannel.java similarity index 88% rename from core/src/main/java/org/geysermc/floodgate/pluginmessage/channel/PacketChannel.java rename to core/src/main/java/org/geysermc/floodgate/core/pluginmessage/channel/PacketChannel.java index 5826308f..57bc43d6 100644 --- a/core/src/main/java/org/geysermc/floodgate/pluginmessage/channel/PacketChannel.java +++ b/core/src/main/java/org/geysermc/floodgate/core/pluginmessage/channel/PacketChannel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,13 +23,13 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.pluginmessage.channel; +package org.geysermc.floodgate.core.pluginmessage.channel; import jakarta.inject.Inject; import java.util.UUID; -import org.geysermc.floodgate.api.UnsafeFloodgateApi; -import org.geysermc.floodgate.platform.pluginmessage.PluginMessageUtils; -import org.geysermc.floodgate.pluginmessage.PluginMessageChannel; +import org.geysermc.floodgate.core.api.UnsafeFloodgateApi; +import org.geysermc.floodgate.core.platform.pluginmessage.PluginMessageUtils; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageChannel; public final class PacketChannel implements PluginMessageChannel { @Inject PluginMessageUtils pluginMessageUtils; diff --git a/core/src/main/java/org/geysermc/floodgate/pluginmessage/channel/SkinChannel.java b/core/src/main/java/org/geysermc/floodgate/core/pluginmessage/channel/SkinChannel.java similarity index 89% rename from core/src/main/java/org/geysermc/floodgate/pluginmessage/channel/SkinChannel.java rename to core/src/main/java/org/geysermc/floodgate/core/pluginmessage/channel/SkinChannel.java index d9a60204..d2fc02cf 100644 --- a/core/src/main/java/org/geysermc/floodgate/pluginmessage/channel/SkinChannel.java +++ b/core/src/main/java/org/geysermc/floodgate/core/pluginmessage/channel/SkinChannel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.pluginmessage.channel; +package org.geysermc.floodgate.core.pluginmessage.channel; import jakarta.inject.Inject; import java.nio.charset.StandardCharsets; @@ -31,11 +31,11 @@ import java.util.UUID; import org.geysermc.floodgate.api.FloodgateApi; import org.geysermc.floodgate.api.player.FloodgatePlayer; import org.geysermc.floodgate.api.player.PropertyKey; -import org.geysermc.floodgate.config.FloodgateConfig; -import org.geysermc.floodgate.config.ProxyFloodgateConfig; -import org.geysermc.floodgate.pluginmessage.PluginMessageChannel; -import org.geysermc.floodgate.skin.SkinApplier; -import org.geysermc.floodgate.skin.SkinDataImpl; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.config.ProxyFloodgateConfig; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageChannel; +import org.geysermc.floodgate.core.skin.SkinApplier; +import org.geysermc.floodgate.core.skin.SkinDataImpl; public class SkinChannel implements PluginMessageChannel { @Inject FloodgateApi api; diff --git a/core/src/main/java/org/geysermc/floodgate/pluginmessage/channel/TransferChannel.java b/core/src/main/java/org/geysermc/floodgate/core/pluginmessage/channel/TransferChannel.java similarity index 90% rename from core/src/main/java/org/geysermc/floodgate/pluginmessage/channel/TransferChannel.java rename to core/src/main/java/org/geysermc/floodgate/core/pluginmessage/channel/TransferChannel.java index 70bd363b..b800b934 100644 --- a/core/src/main/java/org/geysermc/floodgate/pluginmessage/channel/TransferChannel.java +++ b/core/src/main/java/org/geysermc/floodgate/core/pluginmessage/channel/TransferChannel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,13 +23,13 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.pluginmessage.channel; +package org.geysermc.floodgate.core.pluginmessage.channel; import jakarta.inject.Inject; import java.nio.charset.StandardCharsets; import java.util.UUID; -import org.geysermc.floodgate.platform.pluginmessage.PluginMessageUtils; -import org.geysermc.floodgate.pluginmessage.PluginMessageChannel; +import org.geysermc.floodgate.core.platform.pluginmessage.PluginMessageUtils; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageChannel; public class TransferChannel implements PluginMessageChannel { @Inject PluginMessageUtils pluginMessageUtils; diff --git a/core/src/main/java/org/geysermc/floodgate/register/CommandRegister.java b/core/src/main/java/org/geysermc/floodgate/core/register/CommandRegister.java similarity index 87% rename from core/src/main/java/org/geysermc/floodgate/register/CommandRegister.java rename to core/src/main/java/org/geysermc/floodgate/core/register/CommandRegister.java index 21938cbc..22d0f18e 100644 --- a/core/src/main/java/org/geysermc/floodgate/register/CommandRegister.java +++ b/core/src/main/java/org/geysermc/floodgate/core/register/CommandRegister.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,15 +23,15 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.register; +package org.geysermc.floodgate.core.register; import cloud.commandframework.CommandManager; import jakarta.inject.Inject; import jakarta.inject.Singleton; import java.util.Set; -import org.geysermc.floodgate.config.FloodgateConfig; -import org.geysermc.floodgate.platform.command.FloodgateCommand; -import org.geysermc.floodgate.player.UserAudience; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.platform.command.FloodgateCommand; +import org.geysermc.floodgate.core.player.UserAudience; /** * This class is responsible for registering commands to the command register of the platform that diff --git a/core/src/main/java/org/geysermc/floodgate/register/ListenerRegister.java b/core/src/main/java/org/geysermc/floodgate/core/register/ListenerRegister.java similarity index 91% rename from core/src/main/java/org/geysermc/floodgate/register/ListenerRegister.java rename to core/src/main/java/org/geysermc/floodgate/core/register/ListenerRegister.java index 06264b6e..50970b3e 100644 --- a/core/src/main/java/org/geysermc/floodgate/register/ListenerRegister.java +++ b/core/src/main/java/org/geysermc/floodgate/core/register/ListenerRegister.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.register; +package org.geysermc.floodgate.core.register; import jakarta.inject.Inject; import jakarta.inject.Qualifier; @@ -32,7 +32,7 @@ import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import org.geysermc.floodgate.platform.listener.ListenerRegistration; +import org.geysermc.floodgate.core.platform.listener.ListenerRegistration; @Singleton @SuppressWarnings({"rawtypes", "unchecked"}) diff --git a/core/src/main/java/org/geysermc/floodgate/scope/ProxyScope.java b/core/src/main/java/org/geysermc/floodgate/core/scope/ProxyScope.java similarity index 97% rename from core/src/main/java/org/geysermc/floodgate/scope/ProxyScope.java rename to core/src/main/java/org/geysermc/floodgate/core/scope/ProxyScope.java index ac5c5816..3971bcad 100644 --- a/core/src/main/java/org/geysermc/floodgate/scope/ProxyScope.java +++ b/core/src/main/java/org/geysermc/floodgate/core/scope/ProxyScope.java @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.scope; +package org.geysermc.floodgate.core.scope; import jakarta.inject.Scope; import java.lang.annotation.Retention; diff --git a/core/src/main/java/org/geysermc/floodgate/scope/ServerScope.java b/core/src/main/java/org/geysermc/floodgate/core/scope/ServerScope.java similarity index 88% rename from core/src/main/java/org/geysermc/floodgate/scope/ServerScope.java rename to core/src/main/java/org/geysermc/floodgate/core/scope/ServerScope.java index 90f5894a..d92dbbae 100644 --- a/core/src/main/java/org/geysermc/floodgate/scope/ServerScope.java +++ b/core/src/main/java/org/geysermc/floodgate/core/scope/ServerScope.java @@ -23,13 +23,16 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.scope; +package org.geysermc.floodgate.core.scope; +import io.avaje.inject.InjectModule; import jakarta.inject.Scope; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import org.geysermc.floodgate.core.config.FloodgateConfig; @Retention(RetentionPolicy.RUNTIME) @Scope +@InjectModule(provides = FloodgateConfig.class) public @interface ServerScope { } diff --git a/core/src/main/java/org/geysermc/floodgate/skin/SkinApplier.java b/core/src/main/java/org/geysermc/floodgate/core/skin/SkinApplier.java similarity index 94% rename from core/src/main/java/org/geysermc/floodgate/skin/SkinApplier.java rename to core/src/main/java/org/geysermc/floodgate/core/skin/SkinApplier.java index c8e7684c..3bb7d9b2 100644 --- a/core/src/main/java/org/geysermc/floodgate/skin/SkinApplier.java +++ b/core/src/main/java/org/geysermc/floodgate/core/skin/SkinApplier.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.skin; +package org.geysermc.floodgate.core.skin; import org.checkerframework.checker.nullness.qual.NonNull; import org.geysermc.floodgate.api.event.skin.SkinApplyEvent.SkinData; diff --git a/core/src/main/java/org/geysermc/floodgate/skin/SkinDataImpl.java b/core/src/main/java/org/geysermc/floodgate/core/skin/SkinDataImpl.java similarity index 95% rename from core/src/main/java/org/geysermc/floodgate/skin/SkinDataImpl.java rename to core/src/main/java/org/geysermc/floodgate/core/skin/SkinDataImpl.java index 9f44af79..183e1a22 100644 --- a/core/src/main/java/org/geysermc/floodgate/skin/SkinDataImpl.java +++ b/core/src/main/java/org/geysermc/floodgate/core/skin/SkinDataImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.skin; +package org.geysermc.floodgate.core.skin; import com.google.gson.JsonObject; import java.util.Objects; diff --git a/core/src/main/java/org/geysermc/floodgate/skin/SkinUploadManager.java b/core/src/main/java/org/geysermc/floodgate/core/skin/SkinUploadManager.java similarity index 93% rename from core/src/main/java/org/geysermc/floodgate/skin/SkinUploadManager.java rename to core/src/main/java/org/geysermc/floodgate/core/skin/SkinUploadManager.java index 87c5d798..3984aae0 100644 --- a/core/src/main/java/org/geysermc/floodgate/skin/SkinUploadManager.java +++ b/core/src/main/java/org/geysermc/floodgate/core/skin/SkinUploadManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.skin; +package org.geysermc.floodgate.core.skin; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; @@ -34,7 +34,7 @@ import org.geysermc.event.Listener; import org.geysermc.event.subscribe.Subscribe; import org.geysermc.floodgate.api.FloodgateApi; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.event.lifecycle.ShutdownEvent; +import org.geysermc.floodgate.core.event.lifecycle.ShutdownEvent; @Listener @Singleton diff --git a/core/src/main/java/org/geysermc/floodgate/skin/SkinUploadSocket.java b/core/src/main/java/org/geysermc/floodgate/core/skin/SkinUploadSocket.java similarity index 97% rename from core/src/main/java/org/geysermc/floodgate/skin/SkinUploadSocket.java rename to core/src/main/java/org/geysermc/floodgate/core/skin/SkinUploadSocket.java index 5018f8fa..e4761537 100644 --- a/core/src/main/java/org/geysermc/floodgate/skin/SkinUploadSocket.java +++ b/core/src/main/java/org/geysermc/floodgate/core/skin/SkinUploadSocket.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,9 +23,9 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.skin; +package org.geysermc.floodgate.core.skin; -import static org.geysermc.floodgate.util.Constants.WEBSOCKET_URL; +import static org.geysermc.floodgate.core.util.Constants.WEBSOCKET_URL; import com.google.gson.Gson; import com.google.gson.JsonObject; @@ -39,7 +39,7 @@ import org.geysermc.floodgate.api.event.skin.SkinApplyEvent.SkinData; 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.util.Utils; +import org.geysermc.floodgate.core.util.Utils; import org.geysermc.floodgate.util.WebsocketEventType; import org.java_websocket.client.WebSocketClient; import org.java_websocket.handshake.ServerHandshake; diff --git a/core/src/main/java/org/geysermc/floodgate/util/AutoBind.java b/core/src/main/java/org/geysermc/floodgate/core/util/AutoBind.java similarity index 93% rename from core/src/main/java/org/geysermc/floodgate/util/AutoBind.java rename to core/src/main/java/org/geysermc/floodgate/core/util/AutoBind.java index 6c1eec2e..a774d8fa 100644 --- a/core/src/main/java/org/geysermc/floodgate/util/AutoBind.java +++ b/core/src/main/java/org/geysermc/floodgate/core/util/AutoBind.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.core.util; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/core/src/main/java/org/geysermc/floodgate/util/HttpClient.java b/core/src/main/java/org/geysermc/floodgate/core/util/HttpClient.java similarity index 98% rename from core/src/main/java/org/geysermc/floodgate/util/HttpClient.java rename to core/src/main/java/org/geysermc/floodgate/core/util/HttpClient.java index 65d2280b..b19d4ef9 100644 --- a/core/src/main/java/org/geysermc/floodgate/util/HttpClient.java +++ b/core/src/main/java/org/geysermc/floodgate/core/util/HttpClient.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.core.util; import com.google.gson.Gson; import com.google.gson.JsonObject; diff --git a/core/src/main/java/org/geysermc/floodgate/util/LanguageManager.java b/core/src/main/java/org/geysermc/floodgate/core/util/LanguageManager.java similarity index 97% rename from core/src/main/java/org/geysermc/floodgate/util/LanguageManager.java rename to core/src/main/java/org/geysermc/floodgate/core/util/LanguageManager.java index d93b1c58..c7363b96 100644 --- a/core/src/main/java/org/geysermc/floodgate/util/LanguageManager.java +++ b/core/src/main/java/org/geysermc/floodgate/core/util/LanguageManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.core.util; import com.google.common.base.Joiner; import jakarta.inject.Inject; @@ -36,7 +36,7 @@ import java.util.Map; import java.util.Properties; import lombok.Getter; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.config.FloodgateConfig; +import org.geysermc.floodgate.core.config.FloodgateConfig; /** * Manages translations for strings in Floodgate @@ -72,7 +72,7 @@ public final class LanguageManager { * Tries to load the log's locale file once a string has been requested */ @Inject - private void init() { + public void init() { if (!loadLocale("en_US")) {// Fallback logger.error("Failed to load the fallback language. This will likely cause errors!"); } diff --git a/core/src/main/java/org/geysermc/floodgate/util/MessageFormatter.java b/core/src/main/java/org/geysermc/floodgate/core/util/MessageFormatter.java similarity index 97% rename from core/src/main/java/org/geysermc/floodgate/util/MessageFormatter.java rename to core/src/main/java/org/geysermc/floodgate/core/util/MessageFormatter.java index c3bad6a4..d45213bb 100644 --- a/core/src/main/java/org/geysermc/floodgate/util/MessageFormatter.java +++ b/core/src/main/java/org/geysermc/floodgate/core/util/MessageFormatter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.core.util; public final class MessageFormatter { private static final String DELIM_STR = "{}"; diff --git a/core/src/main/java/org/geysermc/floodgate/util/Metrics.java b/core/src/main/java/org/geysermc/floodgate/core/util/Metrics.java similarity index 95% rename from core/src/main/java/org/geysermc/floodgate/util/Metrics.java rename to core/src/main/java/org/geysermc/floodgate/core/util/Metrics.java index 385d772b..a37b18f6 100644 --- a/core/src/main/java/org/geysermc/floodgate/util/Metrics.java +++ b/core/src/main/java/org/geysermc/floodgate/core/util/Metrics.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.core.util; import jakarta.inject.Inject; import jakarta.inject.Named; @@ -41,9 +41,9 @@ import org.bstats.charts.SingleLineChart; import org.bstats.json.JsonObjectBuilder; import org.geysermc.floodgate.api.FloodgateApi; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.config.FloodgateConfig; -import org.geysermc.floodgate.config.FloodgateConfig.MetricsConfig; -import org.geysermc.floodgate.platform.util.PlatformUtils; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.config.FloodgateConfig.MetricsConfig; +import org.geysermc.floodgate.core.platform.util.PlatformUtils; @Singleton public final class Metrics { diff --git a/core/src/main/java/org/geysermc/floodgate/util/PostEnableMessages.java b/core/src/main/java/org/geysermc/floodgate/core/util/PostEnableMessages.java similarity index 94% rename from core/src/main/java/org/geysermc/floodgate/util/PostEnableMessages.java rename to core/src/main/java/org/geysermc/floodgate/core/util/PostEnableMessages.java index 96046ee5..aa150418 100644 --- a/core/src/main/java/org/geysermc/floodgate/util/PostEnableMessages.java +++ b/core/src/main/java/org/geysermc/floodgate/core/util/PostEnableMessages.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,11 +23,12 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.core.util; import io.avaje.inject.PostConstruct; import jakarta.inject.Inject; import jakarta.inject.Named; +import jakarta.inject.Singleton; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ScheduledExecutorService; @@ -35,11 +36,11 @@ import java.util.concurrent.TimeUnit; import org.geysermc.event.Listener; import org.geysermc.event.subscribe.Subscribe; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.config.FloodgateConfig; -import org.geysermc.floodgate.event.lifecycle.PostEnableEvent; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.event.lifecycle.PostEnableEvent; -@AutoBind @Listener +@Singleton public final class PostEnableMessages { private final List messages = new ArrayList<>(); diff --git a/core/src/main/java/org/geysermc/floodgate/util/ReflectionUtils.java b/core/src/main/java/org/geysermc/floodgate/core/util/ReflectionUtils.java similarity index 99% rename from core/src/main/java/org/geysermc/floodgate/util/ReflectionUtils.java rename to core/src/main/java/org/geysermc/floodgate/core/util/ReflectionUtils.java index 709dfd43..ac64dc92 100644 --- a/core/src/main/java/org/geysermc/floodgate/util/ReflectionUtils.java +++ b/core/src/main/java/org/geysermc/floodgate/core/util/ReflectionUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.core.util; import java.lang.reflect.AccessibleObject; import java.lang.reflect.Constructor; diff --git a/core/src/main/java/org/geysermc/floodgate/util/Utils.java b/core/src/main/java/org/geysermc/floodgate/core/util/Utils.java similarity index 94% rename from core/src/main/java/org/geysermc/floodgate/util/Utils.java rename to core/src/main/java/org/geysermc/floodgate/core/util/Utils.java index 19ef78de..38300b7c 100644 --- a/core/src/main/java/org/geysermc/floodgate/util/Utils.java +++ b/core/src/main/java/org/geysermc/floodgate/core/util/Utils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,8 +23,9 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.core.util; +import io.avaje.inject.spi.Module; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelPipeline; @@ -175,4 +176,12 @@ public class Utils { throw new RuntimeException(e); } } + + public static Module makeModule(String moduleClassName) { + try { + return (Module) Class.forName(moduleClassName).getDeclaredConstructor().newInstance(); + } catch (Throwable throwable) { + throw new RuntimeException(throwable); + } + } } diff --git a/core/src/main/java/org/geysermc/floodgate/module/AutoBindModule.java b/core/src/main/java/org/geysermc/floodgate/module/AutoBindModule.java deleted file mode 100644 index 1c2933de..00000000 --- a/core/src/main/java/org/geysermc/floodgate/module/AutoBindModule.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - * @author GeyserMC - * @link https://github.com/GeyserMC/Floodgate - */ - -package org.geysermc.floodgate.module; - -import com.google.inject.AbstractModule; -import org.geysermc.floodgate.util.AutoBind; -import org.geysermc.floodgate.util.Utils; - -public class AutoBindModule extends AbstractModule { - @Override - protected void configure() { - for (Class clazz : Utils.getGeneratedClassesForAnnotation(AutoBind.class)) { - bind(clazz).asEagerSingleton(); - } - } -} diff --git a/core/src/main/java/org/geysermc/floodgate/module/CommonModule.java b/core/src/main/java/org/geysermc/floodgate/module/CommonModule.java deleted file mode 100644 index 68affbb3..00000000 --- a/core/src/main/java/org/geysermc/floodgate/module/CommonModule.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - * @author GeyserMC - * @link https://github.com/GeyserMC/Floodgate - */ - -package org.geysermc.floodgate.module; - -import com.google.inject.AbstractModule; -import com.google.inject.Provides; -import com.google.inject.TypeLiteral; -import com.google.inject.name.Names; -import com.google.inject.spi.InjectionListener; -import com.google.inject.spi.TypeEncounter; -import com.google.inject.spi.TypeListener; -import io.netty.util.AttributeKey; -import jakarta.inject.Named; -import jakarta.inject.Singleton; -import java.nio.file.Path; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import lombok.RequiredArgsConstructor; -import org.geysermc.event.PostOrder; -import org.geysermc.floodgate.addon.data.HandshakeHandlersImpl; -import org.geysermc.floodgate.api.SimpleFloodgateApi; -import org.geysermc.floodgate.api.link.PlayerLink; -import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.api.player.FloodgatePlayer; -import org.geysermc.floodgate.config.ConfigLoader; -import org.geysermc.floodgate.config.FloodgateConfig; -import org.geysermc.floodgate.crypto.AesCipher; -import org.geysermc.floodgate.crypto.AesKeyProducer; -import org.geysermc.floodgate.crypto.Base64Topping; -import org.geysermc.floodgate.crypto.FloodgateCipher; -import org.geysermc.floodgate.crypto.KeyProducer; -import org.geysermc.floodgate.event.EventBus; -import org.geysermc.floodgate.event.lifecycle.ShutdownEvent; -import org.geysermc.floodgate.event.util.ListenerAnnotationMatcher; -import org.geysermc.floodgate.link.PlayerLinkHolder; -import org.geysermc.floodgate.player.FloodgateHandshakeHandler; -import org.geysermc.floodgate.pluginmessage.PluginMessageManager; -import org.geysermc.floodgate.skin.SkinUploadManager; -import org.geysermc.floodgate.util.Constants; -import org.geysermc.floodgate.util.LanguageManager; - -@RequiredArgsConstructor -public class CommonModule extends AbstractModule { - private final EventBus eventBus = new EventBus(); - private final Path dataDirectory; - - @Override - protected void configure() { - // register every class that has the Listener annotation - bindListener(new ListenerAnnotationMatcher(), new TypeListener() { - @Override - public void hear(TypeLiteral type, TypeEncounter encounter) { - encounter.register((InjectionListener) eventBus::register); - } - }); - - ExecutorService commonPool = Executors.newCachedThreadPool(); - ScheduledExecutorService commonScheduledPool = Executors.newSingleThreadScheduledExecutor(); - - eventBus.subscribe(ShutdownEvent.class, ignored -> { - commonPool.shutdown(); - commonScheduledPool.shutdown(); - }, PostOrder.LAST); - - bind(ExecutorService.class) - .annotatedWith(Names.named("commonPool")) - .toInstance(commonPool); - bind(ScheduledExecutorService.class) - .annotatedWith(Names.named("commonScheduledPool")) - .toInstance(commonScheduledPool); - - install(new AutoBindModule()); - } - - @Provides - @Singleton - public FloodgateConfig floodgateConfig(ConfigLoader configLoader) { - return configLoader.load(); - } - - @Provides - @Singleton - public PlayerLink playerLink(PlayerLinkHolder linkLoader) { - return linkLoader.load(); - } - - @Provides - @Singleton - public KeyProducer keyProducer() { - return new AesKeyProducer(); - } - - @Provides - @Singleton - public FloodgateCipher cipher() { - return new AesCipher(new Base64Topping()); - } - - @Provides - @Singleton - @Named("dataDirectory") - public Path dataDirectory() { - return dataDirectory; - } - - @Provides - @Singleton - public ConfigLoader configLoader( - @Named("configClass") Class configClass, - KeyProducer producer, - FloodgateCipher cipher) { - return new ConfigLoader(dataDirectory, configClass, producer, cipher); - } - - @Provides - @Singleton - public FloodgateHandshakeHandler handshakeHandler( - HandshakeHandlersImpl handshakeHandlers, - SimpleFloodgateApi api, - FloodgateCipher cipher, - FloodgateConfig config, - SkinUploadManager skinUploadManager, - @Named("playerAttribute") AttributeKey playerAttribute, - FloodgateLogger logger, - LanguageManager languageManager) { - - return new FloodgateHandshakeHandler(handshakeHandlers, api, cipher, config, - skinUploadManager, playerAttribute, logger, languageManager); - } - - @Provides - @Singleton - public PluginMessageManager pluginMessageManager() { - return new PluginMessageManager(); - } - - @Provides - @Singleton - @Named("gitBranch") - public String gitBranch() { - return Constants.GIT_BRANCH; - } - - @Provides - @Singleton - @Named("buildNumber") - public int buildNumber() { - return Constants.BUILD_NUMBER; - } - - @Provides - @Singleton - @Named("kickMessageAttribute") - public AttributeKey kickMessageAttribute() { - return AttributeKey.valueOf("floodgate-kick-message"); - } - - @Provides - @Singleton - @Named("playerAttribute") - public AttributeKey playerAttribute() { - return AttributeKey.valueOf("floodgate-player"); - } -} diff --git a/core/src/main/java/org/geysermc/floodgate/module/ConfigLoadedModule.java b/core/src/main/java/org/geysermc/floodgate/module/ConfigLoadedModule.java deleted file mode 100644 index 75ac24df..00000000 --- a/core/src/main/java/org/geysermc/floodgate/module/ConfigLoadedModule.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - * @author GeyserMC - * @link https://github.com/GeyserMC/Floodgate - */ - -package org.geysermc.floodgate.module; - -import com.google.inject.AbstractModule; -import com.google.inject.Provides; -import jakarta.inject.Singleton; -import lombok.RequiredArgsConstructor; -import org.geysermc.floodgate.config.FloodgateConfig; -import org.geysermc.floodgate.config.ProxyFloodgateConfig; - -@RequiredArgsConstructor -public final class ConfigLoadedModule extends AbstractModule { - private final FloodgateConfig config; - - @Override - protected void configure() { - if (config instanceof ProxyFloodgateConfig) { - bind(ProxyFloodgateConfig.class).toInstance((ProxyFloodgateConfig) config); - } - } - - @Provides - @Singleton - public FloodgateConfig floodgateConfig() { - return config; - } -} diff --git a/core/src/main/templates/org/geysermc/floodgate/util/Constants.java b/core/src/main/templates/org/geysermc/floodgate/core/util/Constants.java similarity index 98% rename from core/src/main/templates/org/geysermc/floodgate/util/Constants.java rename to core/src/main/templates/org/geysermc/floodgate/core/util/Constants.java index b79a610f..b0fdf69b 100644 --- a/core/src/main/templates/org/geysermc/floodgate/util/Constants.java +++ b/core/src/main/templates/org/geysermc/floodgate/core/util/Constants.java @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.core.util; public final class Constants { public static final String VERSION = "@floodgateVersion@"; diff --git a/database/mongo/src/main/java/org/geysermc/floodgate/database/MongoDbDatabase.java b/database/mongo/src/main/java/org/geysermc/floodgate/database/MongoDbDatabase.java index 19f9058b..dcd8164b 100644 --- a/database/mongo/src/main/java/org/geysermc/floodgate/database/MongoDbDatabase.java +++ b/database/mongo/src/main/java/org/geysermc/floodgate/database/MongoDbDatabase.java @@ -50,9 +50,9 @@ import org.bson.internal.Base64; import org.checkerframework.checker.nullness.qual.NonNull; import org.geysermc.floodgate.api.link.LinkRequest; import org.geysermc.floodgate.api.link.LinkRequestResult; +import org.geysermc.floodgate.core.link.CommonPlayerLink; +import org.geysermc.floodgate.core.link.LinkRequestImpl; import org.geysermc.floodgate.database.config.MongoConfig; -import org.geysermc.floodgate.link.CommonPlayerLink; -import org.geysermc.floodgate.link.LinkRequestImpl; import org.geysermc.floodgate.util.LinkedPlayer; public class MongoDbDatabase extends CommonPlayerLink { diff --git a/database/mongo/src/main/java/org/geysermc/floodgate/database/config/MongoConfig.java b/database/mongo/src/main/java/org/geysermc/floodgate/database/config/MongoConfig.java index e7cfae8e..cec6a324 100644 --- a/database/mongo/src/main/java/org/geysermc/floodgate/database/config/MongoConfig.java +++ b/database/mongo/src/main/java/org/geysermc/floodgate/database/config/MongoConfig.java @@ -26,6 +26,7 @@ package org.geysermc.floodgate.database.config; import lombok.Getter; +import org.geysermc.floodgate.core.database.config.DatabaseConfig; @Getter public class MongoConfig implements DatabaseConfig { diff --git a/database/mysql/src/main/java/org/geysermc/floodgate/database/MysqlDatabase.java b/database/mysql/src/main/java/org/geysermc/floodgate/database/MysqlDatabase.java index 60c19716..66a8499e 100644 --- a/database/mysql/src/main/java/org/geysermc/floodgate/database/MysqlDatabase.java +++ b/database/mysql/src/main/java/org/geysermc/floodgate/database/MysqlDatabase.java @@ -41,9 +41,9 @@ import java.util.concurrent.CompletionException; import org.checkerframework.checker.nullness.qual.NonNull; import org.geysermc.floodgate.api.link.LinkRequest; import org.geysermc.floodgate.api.link.LinkRequestResult; +import org.geysermc.floodgate.core.link.CommonPlayerLink; +import org.geysermc.floodgate.core.link.LinkRequestImpl; import org.geysermc.floodgate.database.config.MysqlConfig; -import org.geysermc.floodgate.link.CommonPlayerLink; -import org.geysermc.floodgate.link.LinkRequestImpl; import org.geysermc.floodgate.util.LinkedPlayer; public class MysqlDatabase extends CommonPlayerLink { diff --git a/database/mysql/src/main/java/org/geysermc/floodgate/database/config/MysqlConfig.java b/database/mysql/src/main/java/org/geysermc/floodgate/database/config/MysqlConfig.java index b85748e7..0af667ac 100644 --- a/database/mysql/src/main/java/org/geysermc/floodgate/database/config/MysqlConfig.java +++ b/database/mysql/src/main/java/org/geysermc/floodgate/database/config/MysqlConfig.java @@ -26,6 +26,7 @@ package org.geysermc.floodgate.database.config; import lombok.Getter; +import org.geysermc.floodgate.core.database.config.DatabaseConfig; @Getter public class MysqlConfig implements DatabaseConfig { diff --git a/database/sqlite/src/main/java/org/geysermc/floodgate/database/SqliteDatabase.java b/database/sqlite/src/main/java/org/geysermc/floodgate/database/SqliteDatabase.java index 78a54952..505b1204 100644 --- a/database/sqlite/src/main/java/org/geysermc/floodgate/database/SqliteDatabase.java +++ b/database/sqlite/src/main/java/org/geysermc/floodgate/database/SqliteDatabase.java @@ -42,8 +42,8 @@ import javax.inject.Named; import org.checkerframework.checker.nullness.qual.NonNull; import org.geysermc.floodgate.api.link.LinkRequest; import org.geysermc.floodgate.api.link.LinkRequestResult; -import org.geysermc.floodgate.link.CommonPlayerLink; -import org.geysermc.floodgate.link.LinkRequestImpl; +import org.geysermc.floodgate.core.link.CommonPlayerLink; +import org.geysermc.floodgate.core.link.LinkRequestImpl; import org.geysermc.floodgate.util.LinkedPlayer; public class SqliteDatabase extends CommonPlayerLink { diff --git a/spigot/src/main/java/org/geysermc/floodgate/SpigotPlatform.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/SpigotPlatform.java similarity index 84% rename from spigot/src/main/java/org/geysermc/floodgate/SpigotPlatform.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/SpigotPlatform.java index 6f63fc72..644750d9 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/SpigotPlatform.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/SpigotPlatform.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,21 +23,22 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate; +package org.geysermc.floodgate.spigot; import com.google.inject.Module; import org.bukkit.plugin.java.JavaPlugin; import org.geysermc.floodgate.api.handshake.HandshakeHandlers; +import org.geysermc.floodgate.core.FloodgatePlatform; +import org.geysermc.floodgate.core.util.ReflectionUtils; import org.geysermc.floodgate.module.PaperListenerModule; import org.geysermc.floodgate.module.PluginMessageModule; import org.geysermc.floodgate.module.SpigotAddonModule; -import org.geysermc.floodgate.module.SpigotCommandModule; import org.geysermc.floodgate.module.SpigotListenerModule; -import org.geysermc.floodgate.module.SpigotPlatformModule; -import org.geysermc.floodgate.util.ReflectionUtils; -import org.geysermc.floodgate.util.SpigotHandshakeHandler; -import org.geysermc.floodgate.util.SpigotProtocolSupportHandler; -import org.geysermc.floodgate.util.SpigotProtocolSupportListener; +import org.geysermc.floodgate.spigot.module.SpigotCommandModule; +import org.geysermc.floodgate.spigot.module.SpigotPlatformModule; +import org.geysermc.floodgate.spigot.util.SpigotHandshakeHandler; +import org.geysermc.floodgate.spigot.util.SpigotProtocolSupportHandler; +import org.geysermc.floodgate.spigot.util.SpigotProtocolSupportListener; public class SpigotPlatform extends FloodgatePlatform { private final JavaPlugin plugin; diff --git a/spigot/src/main/java/org/geysermc/floodgate/SpigotPlugin.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/SpigotPlugin.java similarity index 92% rename from spigot/src/main/java/org/geysermc/floodgate/SpigotPlugin.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/SpigotPlugin.java index 4e4f2c8b..3f7329a0 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/SpigotPlugin.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/SpigotPlugin.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,10 +23,11 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate; +package org.geysermc.floodgate.spigot; import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; +import org.geysermc.floodgate.core.FloodgatePlatform; public final class SpigotPlugin extends JavaPlugin { private FloodgatePlatform platform; diff --git a/spigot/src/main/java/org/geysermc/floodgate/addon/data/SpigotDataAddon.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/addon/data/SpigotDataAddon.java similarity index 90% rename from spigot/src/main/java/org/geysermc/floodgate/addon/data/SpigotDataAddon.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/addon/data/SpigotDataAddon.java index 0f7beedb..d500f43c 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/addon/data/SpigotDataAddon.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/addon/data/SpigotDataAddon.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,19 +23,19 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon.data; +package org.geysermc.floodgate.spigot.addon.data; import io.netty.channel.Channel; import io.netty.util.AttributeKey; import jakarta.inject.Inject; import jakarta.inject.Named; import jakarta.inject.Singleton; -import org.geysermc.floodgate.api.SimpleFloodgateApi; import org.geysermc.floodgate.api.inject.InjectorAddon; import org.geysermc.floodgate.api.logger.FloodgateLogger; import org.geysermc.floodgate.api.player.FloodgatePlayer; -import org.geysermc.floodgate.config.FloodgateConfig; -import org.geysermc.floodgate.player.FloodgateHandshakeHandler; +import org.geysermc.floodgate.core.api.SimpleFloodgateApi; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.player.FloodgateHandshakeHandler; @Singleton public final class SpigotDataAddon implements InjectorAddon { diff --git a/spigot/src/main/java/org/geysermc/floodgate/addon/data/SpigotDataHandler.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/addon/data/SpigotDataHandler.java similarity index 90% rename from spigot/src/main/java/org/geysermc/floodgate/addon/data/SpigotDataHandler.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/addon/data/SpigotDataHandler.java index bc5742db..102d2a4a 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/addon/data/SpigotDataHandler.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/addon/data/SpigotDataHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,21 +23,23 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon.data; +package org.geysermc.floodgate.spigot.addon.data; -import static org.geysermc.floodgate.util.ReflectionUtils.getCastedValue; -import static org.geysermc.floodgate.util.ReflectionUtils.setValue; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getCastedValue; +import static org.geysermc.floodgate.core.util.ReflectionUtils.setValue; import com.mojang.authlib.GameProfile; import io.netty.channel.Channel; import io.netty.util.AttributeKey; import java.net.InetSocketAddress; import org.geysermc.floodgate.api.player.FloodgatePlayer; -import org.geysermc.floodgate.config.FloodgateConfig; -import org.geysermc.floodgate.player.FloodgateHandshakeHandler; -import org.geysermc.floodgate.player.FloodgateHandshakeHandler.HandshakeResult; -import org.geysermc.floodgate.util.ClassNames; -import org.geysermc.floodgate.util.ProxyUtils; +import org.geysermc.floodgate.core.addon.data.CommonDataHandler; +import org.geysermc.floodgate.core.addon.data.PacketBlocker; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.player.FloodgateHandshakeHandler; +import org.geysermc.floodgate.core.player.FloodgateHandshakeHandler.HandshakeResult; +import org.geysermc.floodgate.spigot.util.ClassNames; +import org.geysermc.floodgate.spigot.util.ProxyUtils; public final class SpigotDataHandler extends CommonDataHandler { private Object networkManager; diff --git a/spigot/src/main/java/org/geysermc/floodgate/inject/spigot/CustomList.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/inject/CustomList.java similarity index 97% rename from spigot/src/main/java/org/geysermc/floodgate/inject/spigot/CustomList.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/inject/CustomList.java index 93e4acd6..dba0da88 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/inject/spigot/CustomList.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/inject/CustomList.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.inject.spigot; +package org.geysermc.floodgate.spigot.inject; import java.util.Collection; import java.util.Iterator; diff --git a/spigot/src/main/java/org/geysermc/floodgate/inject/spigot/SpigotInjector.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/inject/SpigotInjector.java similarity index 96% rename from spigot/src/main/java/org/geysermc/floodgate/inject/spigot/SpigotInjector.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/inject/SpigotInjector.java index 38b3a569..de6bb166 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/inject/spigot/SpigotInjector.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/inject/SpigotInjector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.inject.spigot; +package org.geysermc.floodgate.spigot.inject; import io.netty.channel.Channel; import io.netty.channel.ChannelFuture; @@ -39,9 +39,9 @@ import java.lang.reflect.Type; import java.util.List; import lombok.Getter; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.inject.CommonPlatformInjector; -import org.geysermc.floodgate.util.ClassNames; -import org.geysermc.floodgate.util.ReflectionUtils; +import org.geysermc.floodgate.core.inject.CommonPlatformInjector; +import org.geysermc.floodgate.core.util.ReflectionUtils; +import org.geysermc.floodgate.spigot.util.ClassNames; @Singleton public final class SpigotInjector extends CommonPlatformInjector { diff --git a/spigot/src/main/java/org/geysermc/floodgate/listener/ConditionalListenerGlue.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/listener/ConditionalListenerGlue.java similarity index 91% rename from spigot/src/main/java/org/geysermc/floodgate/listener/ConditionalListenerGlue.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/listener/ConditionalListenerGlue.java index 6cbdf5b8..3b4534c8 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/listener/ConditionalListenerGlue.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/listener/ConditionalListenerGlue.java @@ -23,14 +23,14 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.listener; +package org.geysermc.floodgate.spigot.listener; import io.avaje.inject.BeanScope; import jakarta.inject.Inject; import jakarta.inject.Singleton; import org.bukkit.event.Listener; -import org.geysermc.floodgate.platform.listener.ListenerRegistration; -import org.geysermc.floodgate.util.ReflectionUtils; +import org.geysermc.floodgate.core.platform.listener.ListenerRegistration; +import org.geysermc.floodgate.core.util.ReflectionUtils; @Singleton @SuppressWarnings({"rawtypes", "unchecked"}) diff --git a/spigot/src/main/java/org/geysermc/floodgate/listener/PaperProfileListener.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/listener/PaperProfileListener.java similarity index 93% rename from spigot/src/main/java/org/geysermc/floodgate/listener/PaperProfileListener.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/listener/PaperProfileListener.java index ecdf0e91..7d10dad9 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/listener/PaperProfileListener.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/listener/PaperProfileListener.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.listener; +package org.geysermc.floodgate.spigot.listener; import com.destroystokyo.paper.event.profile.PreFillProfileEvent; import com.destroystokyo.paper.profile.ProfileProperty; @@ -34,8 +34,8 @@ import java.util.Set; import java.util.UUID; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; -import org.geysermc.floodgate.api.SimpleFloodgateApi; import org.geysermc.floodgate.api.player.FloodgatePlayer; +import org.geysermc.floodgate.core.api.SimpleFloodgateApi; @Singleton public final class PaperProfileListener implements Listener { diff --git a/spigot/src/main/java/org/geysermc/floodgate/listener/SpigotListener.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/listener/SpigotListener.java similarity index 92% rename from spigot/src/main/java/org/geysermc/floodgate/listener/SpigotListener.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/listener/SpigotListener.java index 96a20e1a..1486b111 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/listener/SpigotListener.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/listener/SpigotListener.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.listener; +package org.geysermc.floodgate.spigot.listener; import jakarta.inject.Inject; import jakarta.inject.Singleton; @@ -33,10 +33,10 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; -import org.geysermc.floodgate.api.SimpleFloodgateApi; import org.geysermc.floodgate.api.logger.FloodgateLogger; import org.geysermc.floodgate.api.player.FloodgatePlayer; -import org.geysermc.floodgate.util.LanguageManager; +import org.geysermc.floodgate.core.api.SimpleFloodgateApi; +import org.geysermc.floodgate.core.util.LanguageManager; @Singleton public final class SpigotListener implements Listener { diff --git a/spigot/src/main/java/org/geysermc/floodgate/listener/SpigotListenerRegistration.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/listener/SpigotListenerRegistration.java similarity index 90% rename from spigot/src/main/java/org/geysermc/floodgate/listener/SpigotListenerRegistration.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/listener/SpigotListenerRegistration.java index cd4b4bf2..2788077d 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/listener/SpigotListenerRegistration.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/listener/SpigotListenerRegistration.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,14 +23,14 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.listener; +package org.geysermc.floodgate.spigot.listener; import jakarta.inject.Inject; import lombok.RequiredArgsConstructor; import org.bukkit.Bukkit; import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; -import org.geysermc.floodgate.platform.listener.ListenerRegistration; +import org.geysermc.floodgate.core.platform.listener.ListenerRegistration; @RequiredArgsConstructor(onConstructor = @__(@Inject)) public final class SpigotListenerRegistration implements ListenerRegistration { diff --git a/spigot/src/main/java/org/geysermc/floodgate/module/SpigotCommandModule.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/module/SpigotCommandModule.java similarity index 88% rename from spigot/src/main/java/org/geysermc/floodgate/module/SpigotCommandModule.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/module/SpigotCommandModule.java index 05ad4f1a..9cc430ca 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/module/SpigotCommandModule.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/module/SpigotCommandModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.module; +package org.geysermc.floodgate.spigot.module; import cloud.commandframework.CommandManager; import cloud.commandframework.bukkit.BukkitCommandManager; @@ -37,10 +37,10 @@ import org.bukkit.command.CommandSender; import org.bukkit.permissions.PermissionDefault; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; -import org.geysermc.floodgate.command.util.Permission; -import org.geysermc.floodgate.platform.command.CommandUtil; -import org.geysermc.floodgate.player.FloodgateCommandPreprocessor; -import org.geysermc.floodgate.player.UserAudience; +import org.geysermc.floodgate.core.command.util.Permission; +import org.geysermc.floodgate.core.platform.command.CommandUtil; +import org.geysermc.floodgate.core.player.FloodgateCommandPreprocessor; +import org.geysermc.floodgate.core.player.UserAudience; @Factory public final class SpigotCommandModule { diff --git a/spigot/src/main/java/org/geysermc/floodgate/module/SpigotPlatformModule.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/module/SpigotPlatformModule.java similarity index 75% rename from spigot/src/main/java/org/geysermc/floodgate/module/SpigotPlatformModule.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/module/SpigotPlatformModule.java index 0f8f5ad2..88e0a917 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/module/SpigotPlatformModule.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/module/SpigotPlatformModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.module; +package org.geysermc.floodgate.spigot.module; import com.google.inject.AbstractModule; import com.google.inject.Provides; @@ -36,23 +36,23 @@ import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; import org.geysermc.floodgate.api.FloodgateApi; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.inject.CommonPlatformInjector; -import org.geysermc.floodgate.inject.spigot.SpigotInjector; -import org.geysermc.floodgate.listener.SpigotListenerRegistration; -import org.geysermc.floodgate.logger.JavaUtilFloodgateLogger; -import org.geysermc.floodgate.platform.command.CommandUtil; -import org.geysermc.floodgate.platform.listener.ListenerRegistration; -import org.geysermc.floodgate.platform.pluginmessage.PluginMessageUtils; -import org.geysermc.floodgate.platform.util.PlatformUtils; -import org.geysermc.floodgate.pluginmessage.PluginMessageRegistration; -import org.geysermc.floodgate.pluginmessage.SpigotPluginMessageRegistration; -import org.geysermc.floodgate.pluginmessage.SpigotPluginMessageUtils; -import org.geysermc.floodgate.pluginmessage.SpigotSkinApplier; -import org.geysermc.floodgate.skin.SkinApplier; -import org.geysermc.floodgate.util.LanguageManager; -import org.geysermc.floodgate.util.SpigotCommandUtil; -import org.geysermc.floodgate.util.SpigotPlatformUtils; -import org.geysermc.floodgate.util.SpigotVersionSpecificMethods; +import org.geysermc.floodgate.core.inject.CommonPlatformInjector; +import org.geysermc.floodgate.core.logger.JavaUtilFloodgateLogger; +import org.geysermc.floodgate.core.platform.command.CommandUtil; +import org.geysermc.floodgate.core.platform.listener.ListenerRegistration; +import org.geysermc.floodgate.core.platform.pluginmessage.PluginMessageUtils; +import org.geysermc.floodgate.core.platform.util.PlatformUtils; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageRegistration; +import org.geysermc.floodgate.core.skin.SkinApplier; +import org.geysermc.floodgate.core.util.LanguageManager; +import org.geysermc.floodgate.spigot.inject.SpigotInjector; +import org.geysermc.floodgate.spigot.listener.SpigotListenerRegistration; +import org.geysermc.floodgate.spigot.pluginmessage.SpigotPluginMessageRegistration; +import org.geysermc.floodgate.spigot.pluginmessage.SpigotPluginMessageUtils; +import org.geysermc.floodgate.spigot.pluginmessage.SpigotSkinApplier; +import org.geysermc.floodgate.spigot.util.SpigotCommandUtil; +import org.geysermc.floodgate.spigot.util.SpigotPlatformUtils; +import org.geysermc.floodgate.spigot.util.SpigotVersionSpecificMethods; @RequiredArgsConstructor public final class SpigotPlatformModule extends AbstractModule { diff --git a/spigot/src/main/java/org/geysermc/floodgate/pluginmessage/SpigotPluginMessageRegistration.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/pluginmessage/SpigotPluginMessageRegistration.java similarity index 88% rename from spigot/src/main/java/org/geysermc/floodgate/pluginmessage/SpigotPluginMessageRegistration.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/pluginmessage/SpigotPluginMessageRegistration.java index a73b5092..45e90759 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/pluginmessage/SpigotPluginMessageRegistration.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/pluginmessage/SpigotPluginMessageRegistration.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,11 +23,13 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.pluginmessage; +package org.geysermc.floodgate.spigot.pluginmessage; import lombok.RequiredArgsConstructor; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.messaging.Messenger; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageChannel; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageRegistration; @RequiredArgsConstructor public class SpigotPluginMessageRegistration implements PluginMessageRegistration { diff --git a/spigot/src/main/java/org/geysermc/floodgate/pluginmessage/SpigotPluginMessageUtils.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/pluginmessage/SpigotPluginMessageUtils.java similarity index 90% rename from spigot/src/main/java/org/geysermc/floodgate/pluginmessage/SpigotPluginMessageUtils.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/pluginmessage/SpigotPluginMessageUtils.java index 3261f71b..48a41377 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/pluginmessage/SpigotPluginMessageUtils.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/pluginmessage/SpigotPluginMessageUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,13 +23,13 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.pluginmessage; +package org.geysermc.floodgate.spigot.pluginmessage; import java.util.UUID; import lombok.RequiredArgsConstructor; import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; -import org.geysermc.floodgate.platform.pluginmessage.PluginMessageUtils; +import org.geysermc.floodgate.core.platform.pluginmessage.PluginMessageUtils; @RequiredArgsConstructor public class SpigotPluginMessageUtils extends PluginMessageUtils { diff --git a/spigot/src/main/java/org/geysermc/floodgate/pluginmessage/SpigotSkinApplier.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/pluginmessage/SpigotSkinApplier.java similarity index 89% rename from spigot/src/main/java/org/geysermc/floodgate/pluginmessage/SpigotSkinApplier.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/pluginmessage/SpigotSkinApplier.java index 7da8a576..2185f932 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/pluginmessage/SpigotSkinApplier.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/pluginmessage/SpigotSkinApplier.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.pluginmessage; +package org.geysermc.floodgate.spigot.pluginmessage; import com.mojang.authlib.GameProfile; import com.mojang.authlib.properties.Property; @@ -37,13 +37,13 @@ import org.checkerframework.checker.nullness.qual.NonNull; import org.geysermc.floodgate.api.event.skin.SkinApplyEvent; import org.geysermc.floodgate.api.event.skin.SkinApplyEvent.SkinData; import org.geysermc.floodgate.api.player.FloodgatePlayer; -import org.geysermc.floodgate.event.EventBus; -import org.geysermc.floodgate.event.skin.SkinApplyEventImpl; -import org.geysermc.floodgate.skin.SkinApplier; -import org.geysermc.floodgate.skin.SkinDataImpl; -import org.geysermc.floodgate.util.ClassNames; -import org.geysermc.floodgate.util.ReflectionUtils; -import org.geysermc.floodgate.util.SpigotVersionSpecificMethods; +import org.geysermc.floodgate.core.event.EventBus; +import org.geysermc.floodgate.core.event.skin.SkinApplyEventImpl; +import org.geysermc.floodgate.core.skin.SkinApplier; +import org.geysermc.floodgate.core.skin.SkinDataImpl; +import org.geysermc.floodgate.core.util.ReflectionUtils; +import org.geysermc.floodgate.spigot.util.ClassNames; +import org.geysermc.floodgate.spigot.util.SpigotVersionSpecificMethods; @Singleton public final class SpigotSkinApplier implements SkinApplier { diff --git a/spigot/src/main/java/org/geysermc/floodgate/util/ClassNames.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/util/ClassNames.java similarity index 91% rename from spigot/src/main/java/org/geysermc/floodgate/util/ClassNames.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/util/ClassNames.java index 1ca5105a..0e7e981a 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/util/ClassNames.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/util/ClassNames.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,17 +23,17 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.spigot.util; -import static org.geysermc.floodgate.util.ReflectionUtils.castedStaticBooleanValue; -import static org.geysermc.floodgate.util.ReflectionUtils.getBooleanValue; -import static org.geysermc.floodgate.util.ReflectionUtils.getClassOrFallback; -import static org.geysermc.floodgate.util.ReflectionUtils.getClassSilently; -import static org.geysermc.floodgate.util.ReflectionUtils.getField; -import static org.geysermc.floodgate.util.ReflectionUtils.getFieldOfType; -import static org.geysermc.floodgate.util.ReflectionUtils.getMethod; -import static org.geysermc.floodgate.util.ReflectionUtils.getValue; -import static org.geysermc.floodgate.util.ReflectionUtils.invoke; +import static org.geysermc.floodgate.core.util.ReflectionUtils.castedStaticBooleanValue; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getBooleanValue; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getClassOrFallback; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getClassSilently; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getField; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getFieldOfType; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getMethod; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getValue; +import static org.geysermc.floodgate.core.util.ReflectionUtils.invoke; import com.google.common.base.Preconditions; import com.mojang.authlib.GameProfile; @@ -47,6 +47,7 @@ import javax.annotation.CheckForNull; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.checkerframework.checker.nullness.qual.Nullable; +import org.geysermc.floodgate.core.util.ReflectionUtils; @SuppressWarnings("PMD.SystemPrintln") public class ClassNames { diff --git a/spigot/src/main/java/org/geysermc/floodgate/util/ProxyUtils.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/util/ProxyUtils.java similarity index 91% rename from spigot/src/main/java/org/geysermc/floodgate/util/ProxyUtils.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/util/ProxyUtils.java index d9d7791d..fa550512 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/util/ProxyUtils.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/util/ProxyUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,9 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.spigot.util; + +import org.geysermc.floodgate.core.util.ReflectionUtils; public final class ProxyUtils { diff --git a/spigot/src/main/java/org/geysermc/floodgate/util/SpigotCommandUtil.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/util/SpigotCommandUtil.java similarity index 91% rename from spigot/src/main/java/org/geysermc/floodgate/util/SpigotCommandUtil.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/util/SpigotCommandUtil.java index da3d65bc..d8483494 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/util/SpigotCommandUtil.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/util/SpigotCommandUtil.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.spigot.util; import java.util.Collection; import java.util.UUID; @@ -34,10 +34,11 @@ import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import org.checkerframework.checker.nullness.qual.NonNull; import org.geysermc.floodgate.api.FloodgateApi; -import org.geysermc.floodgate.platform.command.CommandUtil; -import org.geysermc.floodgate.player.UserAudience; -import org.geysermc.floodgate.player.UserAudience.ConsoleAudience; -import org.geysermc.floodgate.player.UserAudience.PlayerAudience; +import org.geysermc.floodgate.core.platform.command.CommandUtil; +import org.geysermc.floodgate.core.player.UserAudience; +import org.geysermc.floodgate.core.player.UserAudience.ConsoleAudience; +import org.geysermc.floodgate.core.player.UserAudience.PlayerAudience; +import org.geysermc.floodgate.core.util.LanguageManager; public final class SpigotCommandUtil extends CommandUtil { private final Server server; diff --git a/spigot/src/main/java/org/geysermc/floodgate/util/SpigotHandshakeHandler.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/util/SpigotHandshakeHandler.java similarity index 94% rename from spigot/src/main/java/org/geysermc/floodgate/util/SpigotHandshakeHandler.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/util/SpigotHandshakeHandler.java index 72e97fa8..9a150e9e 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/util/SpigotHandshakeHandler.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/util/SpigotHandshakeHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,13 +23,14 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.spigot.util; import jakarta.inject.Inject; import java.util.UUID; import org.geysermc.floodgate.api.handshake.HandshakeData; import org.geysermc.floodgate.api.handshake.HandshakeHandler; import org.geysermc.floodgate.api.logger.FloodgateLogger; +import org.geysermc.floodgate.util.BedrockData; public class SpigotHandshakeHandler implements HandshakeHandler { @Inject FloodgateLogger logger; diff --git a/spigot/src/main/java/org/geysermc/floodgate/util/SpigotPlatformUtils.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/util/SpigotPlatformUtils.java similarity index 91% rename from spigot/src/main/java/org/geysermc/floodgate/util/SpigotPlatformUtils.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/util/SpigotPlatformUtils.java index 538c8ce6..b0a579e6 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/util/SpigotPlatformUtils.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/util/SpigotPlatformUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,10 +23,10 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.spigot.util; import org.bukkit.Bukkit; -import org.geysermc.floodgate.platform.util.PlatformUtils; +import org.geysermc.floodgate.core.platform.util.PlatformUtils; public class SpigotPlatformUtils extends PlatformUtils { @Override diff --git a/spigot/src/main/java/org/geysermc/floodgate/util/SpigotProtocolSupportHandler.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/util/SpigotProtocolSupportHandler.java similarity index 96% rename from spigot/src/main/java/org/geysermc/floodgate/util/SpigotProtocolSupportHandler.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/util/SpigotProtocolSupportHandler.java index a8af904d..cd972e21 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/util/SpigotProtocolSupportHandler.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/util/SpigotProtocolSupportHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.spigot.util; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; @@ -35,6 +35,7 @@ import java.util.UUID; import org.geysermc.floodgate.api.packet.PacketHandler; import org.geysermc.floodgate.api.packet.PacketHandlers; import org.geysermc.floodgate.api.player.FloodgatePlayer; +import org.geysermc.floodgate.core.util.ReflectionUtils; public class SpigotProtocolSupportHandler implements PacketHandler { private static final Method getFromChannel; diff --git a/spigot/src/main/java/org/geysermc/floodgate/util/SpigotProtocolSupportListener.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/util/SpigotProtocolSupportListener.java similarity index 91% rename from spigot/src/main/java/org/geysermc/floodgate/util/SpigotProtocolSupportListener.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/util/SpigotProtocolSupportListener.java index b5224b34..82a0d9ad 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/util/SpigotProtocolSupportListener.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/util/SpigotProtocolSupportListener.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,10 +23,10 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.spigot.util; -import static org.geysermc.floodgate.util.ReflectionUtils.getMethod; -import static org.geysermc.floodgate.util.ReflectionUtils.getPrefixedClass; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getMethod; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getPrefixedClass; import java.lang.reflect.Method; import java.util.UUID; @@ -35,6 +35,7 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.plugin.Plugin; import org.geysermc.floodgate.api.FloodgateApi; +import org.geysermc.floodgate.core.util.ReflectionUtils; @SuppressWarnings("unchecked") public final class SpigotProtocolSupportListener { diff --git a/spigot/src/main/java/org/geysermc/floodgate/util/SpigotVersionSpecificMethods.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/util/SpigotVersionSpecificMethods.java similarity index 94% rename from spigot/src/main/java/org/geysermc/floodgate/util/SpigotVersionSpecificMethods.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/util/SpigotVersionSpecificMethods.java index a3381b01..f341b09c 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/util/SpigotVersionSpecificMethods.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/util/SpigotVersionSpecificMethods.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,11 +23,12 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.spigot.util; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; +import org.geysermc.floodgate.core.util.ReflectionUtils; public final class SpigotVersionSpecificMethods { private static final boolean NEW_GET_LOCALE; diff --git a/spigot/src/main/java/org/geysermc/floodgate/util/WhitelistUtils.java b/spigot/src/main/java/org/geysermc/floodgate/spigot/util/WhitelistUtils.java similarity index 94% rename from spigot/src/main/java/org/geysermc/floodgate/util/WhitelistUtils.java rename to spigot/src/main/java/org/geysermc/floodgate/spigot/util/WhitelistUtils.java index 6747c28c..0092943e 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/util/WhitelistUtils.java +++ b/spigot/src/main/java/org/geysermc/floodgate/spigot/util/WhitelistUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,12 +23,13 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.spigot.util; import com.mojang.authlib.GameProfile; import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.geysermc.floodgate.core.util.ReflectionUtils; @SuppressWarnings("ConstantConditions") public final class WhitelistUtils { diff --git a/spigot/src/main/resources/plugin.yml b/spigot/src/main/resources/plugin.yml index c9a5d232..41b612e8 100644 --- a/spigot/src/main/resources/plugin.yml +++ b/spigot/src/main/resources/plugin.yml @@ -3,5 +3,5 @@ description: ${description} version: ${version} author: ${author} website: ${url} -main: org.geysermc.floodgate.SpigotPlugin +main: org.geysermc.floodgate.spigot.SpigotPlugin api-version: 1.13 \ No newline at end of file diff --git a/velocity/build.gradle.kts b/velocity/build.gradle.kts index 8281494c..b0e2be50 100644 --- a/velocity/build.gradle.kts +++ b/velocity/build.gradle.kts @@ -5,6 +5,11 @@ var guavaVersion = "25.1-jre" dependencies { api(projects.core) implementation("cloud.commandframework", "cloud-velocity", Versions.cloudVersion) + + annotationProcessor("io.avaje:avaje-inject-generator:8.13") + + testImplementation("io.avaje:avaje-inject-test:8.13") + testAnnotationProcessor("io.avaje:avaje-inject-generator:8.13") } relocate("cloud.commandframework") diff --git a/velocity/src/main/java/org/geysermc/floodgate/VelocityPlatform.java b/velocity/src/main/java/org/geysermc/floodgate/velocity/VelocityPlatform.java similarity index 67% rename from velocity/src/main/java/org/geysermc/floodgate/VelocityPlatform.java rename to velocity/src/main/java/org/geysermc/floodgate/velocity/VelocityPlatform.java index b1bca13b..23ae4264 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/VelocityPlatform.java +++ b/velocity/src/main/java/org/geysermc/floodgate/velocity/VelocityPlatform.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,23 +23,39 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate; +package org.geysermc.floodgate.velocity; import com.google.inject.Inject; import com.velocitypowered.api.plugin.annotation.DataDirectory; +import com.velocitypowered.api.proxy.ProxyServer; +import io.avaje.inject.BeanScopeBuilder; import java.nio.file.Path; -import org.geysermc.floodgate.util.ReflectionUtils; +import org.geysermc.floodgate.core.FloodgatePlatform; +import org.geysermc.floodgate.core.util.ReflectionUtils; +import org.slf4j.Logger; public class VelocityPlatform extends FloodgatePlatform { @Inject private @DataDirectory Path dataDirectory; + @Inject + private ProxyServer proxyServer; + @Inject + private Logger logger; public VelocityPlatform() { ReflectionUtils.setPrefix("com.velocitypowered.proxy"); } @Override - boolean isProxy() { + protected void onBuildBeanScope(BeanScopeBuilder builder) { + builder.bean(ProxyServer.class, proxyServer) + .bean("dataDirectory", Path.class, dataDirectory) + .bean(Logger.class, logger) + .modules(new VelocityModule()); + } + + @Override + protected boolean isProxy() { return true; } } diff --git a/velocity/src/main/java/org/geysermc/floodgate/VelocityPlugin.java b/velocity/src/main/java/org/geysermc/floodgate/velocity/VelocityPlugin.java similarity index 94% rename from velocity/src/main/java/org/geysermc/floodgate/VelocityPlugin.java rename to velocity/src/main/java/org/geysermc/floodgate/velocity/VelocityPlugin.java index f153b526..1ed861d5 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/VelocityPlugin.java +++ b/velocity/src/main/java/org/geysermc/floodgate/velocity/VelocityPlugin.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate; +package org.geysermc.floodgate.velocity; import com.google.inject.Inject; import com.google.inject.Injector; diff --git a/velocity/src/main/java/org/geysermc/floodgate/addon/data/VelocityDataAddon.java b/velocity/src/main/java/org/geysermc/floodgate/velocity/addon/data/VelocityDataAddon.java similarity index 90% rename from velocity/src/main/java/org/geysermc/floodgate/addon/data/VelocityDataAddon.java rename to velocity/src/main/java/org/geysermc/floodgate/velocity/addon/data/VelocityDataAddon.java index 82aac508..6e7cb44a 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/addon/data/VelocityDataAddon.java +++ b/velocity/src/main/java/org/geysermc/floodgate/velocity/addon/data/VelocityDataAddon.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon.data; +package org.geysermc.floodgate.velocity.addon.data; import com.velocitypowered.api.proxy.ProxyServer; import io.netty.channel.Channel; @@ -31,12 +31,13 @@ import io.netty.util.AttributeKey; import jakarta.inject.Inject; import jakarta.inject.Named; import jakarta.inject.Singleton; -import org.geysermc.floodgate.api.ProxyFloodgateApi; import org.geysermc.floodgate.api.inject.InjectorAddon; import org.geysermc.floodgate.api.logger.FloodgateLogger; import org.geysermc.floodgate.api.player.FloodgatePlayer; -import org.geysermc.floodgate.config.ProxyFloodgateConfig; -import org.geysermc.floodgate.player.FloodgateHandshakeHandler; +import org.geysermc.floodgate.core.addon.data.PacketBlocker; +import org.geysermc.floodgate.core.api.ProxyFloodgateApi; +import org.geysermc.floodgate.core.config.ProxyFloodgateConfig; +import org.geysermc.floodgate.core.player.FloodgateHandshakeHandler; @Singleton public final class VelocityDataAddon implements InjectorAddon { diff --git a/velocity/src/main/java/org/geysermc/floodgate/addon/data/VelocityProxyDataHandler.java b/velocity/src/main/java/org/geysermc/floodgate/velocity/addon/data/VelocityProxyDataHandler.java similarity index 86% rename from velocity/src/main/java/org/geysermc/floodgate/addon/data/VelocityProxyDataHandler.java rename to velocity/src/main/java/org/geysermc/floodgate/velocity/addon/data/VelocityProxyDataHandler.java index a623fdaf..4f9bead0 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/addon/data/VelocityProxyDataHandler.java +++ b/velocity/src/main/java/org/geysermc/floodgate/velocity/addon/data/VelocityProxyDataHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,15 +23,15 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon.data; +package org.geysermc.floodgate.velocity.addon.data; import static com.google.common.base.Preconditions.checkNotNull; -import static org.geysermc.floodgate.util.ReflectionUtils.getCastedValue; -import static org.geysermc.floodgate.util.ReflectionUtils.getField; -import static org.geysermc.floodgate.util.ReflectionUtils.getMethodByName; -import static org.geysermc.floodgate.util.ReflectionUtils.getPrefixedClass; -import static org.geysermc.floodgate.util.ReflectionUtils.invoke; -import static org.geysermc.floodgate.util.ReflectionUtils.setValue; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getCastedValue; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getField; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getMethodByName; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getPrefixedClass; +import static org.geysermc.floodgate.core.util.ReflectionUtils.invoke; +import static org.geysermc.floodgate.core.util.ReflectionUtils.setValue; import io.netty.channel.Channel; import io.netty.util.AttributeKey; @@ -40,10 +40,12 @@ import java.lang.reflect.Method; import java.net.InetSocketAddress; import org.geysermc.floodgate.api.logger.FloodgateLogger; import org.geysermc.floodgate.api.player.FloodgatePlayer; -import org.geysermc.floodgate.config.FloodgateConfig; -import org.geysermc.floodgate.player.FloodgateHandshakeHandler; -import org.geysermc.floodgate.player.FloodgateHandshakeHandler.HandshakeResult; -import org.geysermc.floodgate.player.FloodgateHandshakeHandler.ResultType; +import org.geysermc.floodgate.core.addon.data.CommonDataHandler; +import org.geysermc.floodgate.core.addon.data.PacketBlocker; +import org.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.player.FloodgateHandshakeHandler; +import org.geysermc.floodgate.core.player.FloodgateHandshakeHandler.HandshakeResult; +import org.geysermc.floodgate.core.player.FloodgateHandshakeHandler.ResultType; public final class VelocityProxyDataHandler extends CommonDataHandler { private static final Field HANDSHAKE; diff --git a/velocity/src/main/java/org/geysermc/floodgate/addon/data/VelocityServerDataHandler.java b/velocity/src/main/java/org/geysermc/floodgate/velocity/addon/data/VelocityServerDataHandler.java similarity index 88% rename from velocity/src/main/java/org/geysermc/floodgate/addon/data/VelocityServerDataHandler.java rename to velocity/src/main/java/org/geysermc/floodgate/velocity/addon/data/VelocityServerDataHandler.java index fb61f143..69ea7ec3 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/addon/data/VelocityServerDataHandler.java +++ b/velocity/src/main/java/org/geysermc/floodgate/velocity/addon/data/VelocityServerDataHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,16 +23,16 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.addon.data; +package org.geysermc.floodgate.velocity.addon.data; import static com.google.common.base.Preconditions.checkNotNull; -import static org.geysermc.floodgate.util.ReflectionUtils.castedInvoke; -import static org.geysermc.floodgate.util.ReflectionUtils.getCastedValue; -import static org.geysermc.floodgate.util.ReflectionUtils.getField; -import static org.geysermc.floodgate.util.ReflectionUtils.getMethod; -import static org.geysermc.floodgate.util.ReflectionUtils.getPrefixedClass; -import static org.geysermc.floodgate.util.ReflectionUtils.invoke; -import static org.geysermc.floodgate.util.ReflectionUtils.setValue; +import static org.geysermc.floodgate.core.util.ReflectionUtils.castedInvoke; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getCastedValue; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getField; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getMethod; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getPrefixedClass; +import static org.geysermc.floodgate.core.util.ReflectionUtils.invoke; +import static org.geysermc.floodgate.core.util.ReflectionUtils.setValue; import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.ProxyServer; @@ -41,9 +41,9 @@ import io.netty.channel.ChannelOutboundHandlerAdapter; import io.netty.channel.ChannelPromise; import java.lang.reflect.Field; import java.lang.reflect.Method; -import org.geysermc.floodgate.api.ProxyFloodgateApi; import org.geysermc.floodgate.api.player.FloodgatePlayer; -import org.geysermc.floodgate.player.FloodgatePlayerImpl; +import org.geysermc.floodgate.core.api.ProxyFloodgateApi; +import org.geysermc.floodgate.core.player.FloodgatePlayerImpl; import org.geysermc.floodgate.util.BedrockData; @SuppressWarnings("ConstantConditions") diff --git a/velocity/src/main/java/org/geysermc/floodgate/inject/velocity/VelocityInjector.java b/velocity/src/main/java/org/geysermc/floodgate/velocity/inject/VelocityInjector.java similarity index 87% rename from velocity/src/main/java/org/geysermc/floodgate/inject/velocity/VelocityInjector.java rename to velocity/src/main/java/org/geysermc/floodgate/velocity/inject/VelocityInjector.java index 90d8f5d4..2f0eb800 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/inject/velocity/VelocityInjector.java +++ b/velocity/src/main/java/org/geysermc/floodgate/velocity/inject/VelocityInjector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,27 +23,26 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.inject.velocity; +package org.geysermc.floodgate.velocity.inject; -import static org.geysermc.floodgate.util.ReflectionUtils.castedInvoke; -import static org.geysermc.floodgate.util.ReflectionUtils.getMethod; -import static org.geysermc.floodgate.util.ReflectionUtils.getValue; -import static org.geysermc.floodgate.util.ReflectionUtils.invoke; +import static org.geysermc.floodgate.core.util.ReflectionUtils.castedInvoke; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getMethod; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getValue; +import static org.geysermc.floodgate.core.util.ReflectionUtils.invoke; import com.velocitypowered.api.proxy.ProxyServer; import io.netty.channel.Channel; import io.netty.channel.ChannelInitializer; +import jakarta.inject.Inject; import jakarta.inject.Singleton; import java.lang.reflect.Method; import lombok.Getter; import lombok.RequiredArgsConstructor; -import org.geysermc.floodgate.inject.CommonPlatformInjector; +import org.geysermc.floodgate.core.inject.CommonPlatformInjector; -@RequiredArgsConstructor @Singleton public final class VelocityInjector extends CommonPlatformInjector { - private final ProxyServer server; - + @Inject ProxyServer server; @Getter private boolean injected; @Override diff --git a/velocity/src/main/java/org/geysermc/floodgate/listener/VelocityListener.java b/velocity/src/main/java/org/geysermc/floodgate/velocity/listener/VelocityListener.java similarity index 89% rename from velocity/src/main/java/org/geysermc/floodgate/listener/VelocityListener.java rename to velocity/src/main/java/org/geysermc/floodgate/velocity/listener/VelocityListener.java index 2faef571..da4fcb14 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/listener/VelocityListener.java +++ b/velocity/src/main/java/org/geysermc/floodgate/velocity/listener/VelocityListener.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,14 +23,14 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.listener; +package org.geysermc.floodgate.velocity.listener; -import static org.geysermc.floodgate.util.ReflectionUtils.getCastedValue; -import static org.geysermc.floodgate.util.ReflectionUtils.getField; -import static org.geysermc.floodgate.util.ReflectionUtils.getFieldOfType; -import static org.geysermc.floodgate.util.ReflectionUtils.getPrefixedClass; -import static org.geysermc.floodgate.util.ReflectionUtils.getPrefixedClassSilently; -import static org.geysermc.floodgate.util.ReflectionUtils.getValue; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getCastedValue; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getField; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getFieldOfType; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getPrefixedClass; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getPrefixedClassSilently; +import static org.geysermc.floodgate.core.util.ReflectionUtils.getValue; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; @@ -53,12 +53,12 @@ import java.util.Collections; import java.util.Objects; import java.util.concurrent.TimeUnit; import net.kyori.adventure.text.Component; -import org.geysermc.floodgate.api.ProxyFloodgateApi; import org.geysermc.floodgate.api.logger.FloodgateLogger; import org.geysermc.floodgate.api.player.FloodgatePlayer; -import org.geysermc.floodgate.config.ProxyFloodgateConfig; -import org.geysermc.floodgate.register.ListenerRegister; -import org.geysermc.floodgate.util.LanguageManager; +import org.geysermc.floodgate.core.api.ProxyFloodgateApi; +import org.geysermc.floodgate.core.config.ProxyFloodgateConfig; +import org.geysermc.floodgate.core.register.ListenerRegister; +import org.geysermc.floodgate.core.util.LanguageManager; @ListenerRegister.Listener @Singleton diff --git a/velocity/src/main/java/org/geysermc/floodgate/listener/VelocityListenerRegistration.java b/velocity/src/main/java/org/geysermc/floodgate/velocity/listener/VelocityListenerRegistration.java similarity index 78% rename from velocity/src/main/java/org/geysermc/floodgate/listener/VelocityListenerRegistration.java rename to velocity/src/main/java/org/geysermc/floodgate/velocity/listener/VelocityListenerRegistration.java index 024a0714..0cce2bed 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/listener/VelocityListenerRegistration.java +++ b/velocity/src/main/java/org/geysermc/floodgate/velocity/listener/VelocityListenerRegistration.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,17 +23,18 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.listener; +package org.geysermc.floodgate.velocity.listener; import com.velocitypowered.api.event.EventManager; -import lombok.RequiredArgsConstructor; -import org.geysermc.floodgate.VelocityPlugin; -import org.geysermc.floodgate.platform.listener.ListenerRegistration; +import jakarta.inject.Inject; +import jakarta.inject.Singleton; +import org.geysermc.floodgate.core.platform.listener.ListenerRegistration; +import org.geysermc.floodgate.velocity.VelocityPlugin; -@RequiredArgsConstructor +@Singleton public final class VelocityListenerRegistration implements ListenerRegistration { - private final EventManager eventManager; - private final VelocityPlugin plugin; + @Inject EventManager eventManager; + @Inject VelocityPlugin plugin; @Override public void register(Object listener) { diff --git a/velocity/src/main/java/org/geysermc/floodgate/logger/Slf4jFloodgateLogger.java b/velocity/src/main/java/org/geysermc/floodgate/velocity/logger/Slf4jFloodgateLogger.java similarity index 90% rename from velocity/src/main/java/org/geysermc/floodgate/logger/Slf4jFloodgateLogger.java rename to velocity/src/main/java/org/geysermc/floodgate/velocity/logger/Slf4jFloodgateLogger.java index 1b0a7d49..219f425c 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/logger/Slf4jFloodgateLogger.java +++ b/velocity/src/main/java/org/geysermc/floodgate/velocity/logger/Slf4jFloodgateLogger.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,23 +23,23 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.logger; +package org.geysermc.floodgate.velocity.logger; -import static org.geysermc.floodgate.util.MessageFormatter.format; +import static org.geysermc.floodgate.core.util.MessageFormatter.format; import jakarta.inject.Inject; import jakarta.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.geysermc.floodgate.core.config.FloodgateConfig; +import org.geysermc.floodgate.core.util.LanguageManager; import org.slf4j.Logger; @Singleton public final class Slf4jFloodgateLogger implements FloodgateLogger { - @Inject Logger logger; private LanguageManager languageManager; + @Inject Logger logger; @Inject void init(LanguageManager languageManager, FloodgateConfig config) { diff --git a/velocity/src/main/java/org/geysermc/floodgate/module/VelocityPlatformModule.java b/velocity/src/main/java/org/geysermc/floodgate/velocity/module/VelocityPlatformModule.java similarity index 57% rename from velocity/src/main/java/org/geysermc/floodgate/module/VelocityPlatformModule.java rename to velocity/src/main/java/org/geysermc/floodgate/velocity/module/VelocityPlatformModule.java index 079b8d29..50d55293 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/module/VelocityPlatformModule.java +++ b/velocity/src/main/java/org/geysermc/floodgate/velocity/module/VelocityPlatformModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,32 +23,20 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.module; +package org.geysermc.floodgate.velocity.module; import cloud.commandframework.CommandManager; import cloud.commandframework.execution.CommandExecutionCoordinator; import cloud.commandframework.velocity.VelocityCommandManager; -import com.google.inject.Provides; import com.velocitypowered.api.command.CommandSource; -import com.velocitypowered.api.event.EventManager; import com.velocitypowered.api.proxy.ProxyServer; import io.avaje.inject.Bean; import io.avaje.inject.Factory; import jakarta.inject.Named; import jakarta.inject.Singleton; -import org.geysermc.floodgate.VelocityPlugin; -import org.geysermc.floodgate.inject.CommonPlatformInjector; -import org.geysermc.floodgate.inject.velocity.VelocityInjector; -import org.geysermc.floodgate.listener.VelocityListenerRegistration; -import org.geysermc.floodgate.platform.command.CommandUtil; -import org.geysermc.floodgate.platform.listener.ListenerRegistration; -import org.geysermc.floodgate.platform.pluginmessage.PluginMessageUtils; -import org.geysermc.floodgate.player.FloodgateCommandPreprocessor; -import org.geysermc.floodgate.player.UserAudience; -import org.geysermc.floodgate.pluginmessage.PluginMessageManager; -import org.geysermc.floodgate.pluginmessage.PluginMessageRegistration; -import org.geysermc.floodgate.pluginmessage.VelocityPluginMessageRegistration; -import org.geysermc.floodgate.pluginmessage.VelocityPluginMessageUtils; +import org.geysermc.floodgate.core.platform.command.CommandUtil; +import org.geysermc.floodgate.core.player.FloodgateCommandPreprocessor; +import org.geysermc.floodgate.core.player.UserAudience; @Factory public final class VelocityPlatformModule { @@ -66,59 +54,25 @@ public final class VelocityPlatformModule { return commandManager; } - /* - Commands / Listeners - */ - - @Provides - @Singleton - public ListenerRegistration listenerRegistration( - EventManager eventManager, - VelocityPlugin plugin) { - return new VelocityListenerRegistration(eventManager, plugin); - } - - @Provides - @Singleton - public PluginMessageUtils pluginMessageUtils(PluginMessageManager pluginMessageManager) { - return new VelocityPluginMessageUtils(pluginMessageManager); - } - - @Provides - @Singleton - public PluginMessageRegistration pluginMessageRegistration(ProxyServer proxy) { - return new VelocityPluginMessageRegistration(proxy); - } - - /* - DebugAddon / PlatformInjector - */ - - @Provides - @Singleton - public CommonPlatformInjector platformInjector(ProxyServer server) { - return new VelocityInjector(server); - } - - @Provides + @Bean @Named("packetEncoder") public String packetEncoder() { return "minecraft-encoder"; } - @Provides + @Bean @Named("packetDecoder") public String packetDecoder() { return "minecraft-decoder"; } - @Provides + @Bean @Named("packetHandler") public String packetHandler() { return "handler"; } - @Provides + @Bean @Named("implementationName") public String implementationName() { return "Velocity"; diff --git a/core/src/main/java/org/geysermc/floodgate/module/PostEnableModules.java b/velocity/src/main/java/org/geysermc/floodgate/velocity/package-info.java similarity index 64% rename from core/src/main/java/org/geysermc/floodgate/module/PostEnableModules.java rename to velocity/src/main/java/org/geysermc/floodgate/velocity/package-info.java index 90b1a832..86d6940c 100644 --- a/core/src/main/java/org/geysermc/floodgate/module/PostEnableModules.java +++ b/velocity/src/main/java/org/geysermc/floodgate/velocity/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,20 +23,17 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.module; +@InjectModule( + requiresPackages = {FloodgatePlatform.class, FloodgateApi.class, ProxyModule.class}, + requires = {ProxyServer.class, LanguageManager.class}, + provides = Path.class +) +package org.geysermc.floodgate.velocity; -import com.google.inject.AbstractModule; -import com.google.inject.Module; -import lombok.RequiredArgsConstructor; - -@RequiredArgsConstructor -public final class PostEnableModules extends AbstractModule { - private final Module[] postInitializeModules; - - @Override - protected void configure() { - for (Module module : postInitializeModules) { - install(module); - } - } -} +import com.velocitypowered.api.proxy.ProxyServer; +import io.avaje.inject.InjectModule; +import java.nio.file.Path; +import org.geysermc.floodgate.api.FloodgateApi; +import org.geysermc.floodgate.core.FloodgatePlatform; +import org.geysermc.floodgate.core.api.ProxyModule; +import org.geysermc.floodgate.core.util.LanguageManager; \ No newline at end of file diff --git a/velocity/src/main/java/org/geysermc/floodgate/pluginmessage/VelocityPluginMessageRegistration.java b/velocity/src/main/java/org/geysermc/floodgate/velocity/pluginmessage/VelocityPluginMessageRegistration.java similarity index 82% rename from velocity/src/main/java/org/geysermc/floodgate/pluginmessage/VelocityPluginMessageRegistration.java rename to velocity/src/main/java/org/geysermc/floodgate/velocity/pluginmessage/VelocityPluginMessageRegistration.java index 7023c207..7661ab58 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/pluginmessage/VelocityPluginMessageRegistration.java +++ b/velocity/src/main/java/org/geysermc/floodgate/velocity/pluginmessage/VelocityPluginMessageRegistration.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,16 +23,19 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.pluginmessage; +package org.geysermc.floodgate.velocity.pluginmessage; import com.velocitypowered.api.proxy.ProxyServer; import com.velocitypowered.api.proxy.messages.ChannelIdentifier; import com.velocitypowered.api.proxy.messages.MinecraftChannelIdentifier; -import lombok.RequiredArgsConstructor; +import jakarta.inject.Inject; +import jakarta.inject.Singleton; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageChannel; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageRegistration; -@RequiredArgsConstructor +@Singleton public class VelocityPluginMessageRegistration implements PluginMessageRegistration { - private final ProxyServer proxy; + @Inject ProxyServer proxy; @Override public void register(PluginMessageChannel channel) { diff --git a/velocity/src/main/java/org/geysermc/floodgate/pluginmessage/VelocityPluginMessageUtils.java b/velocity/src/main/java/org/geysermc/floodgate/velocity/pluginmessage/VelocityPluginMessageUtils.java similarity index 84% rename from velocity/src/main/java/org/geysermc/floodgate/pluginmessage/VelocityPluginMessageUtils.java rename to velocity/src/main/java/org/geysermc/floodgate/velocity/pluginmessage/VelocityPluginMessageUtils.java index fc67455f..28864a51 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/pluginmessage/VelocityPluginMessageUtils.java +++ b/velocity/src/main/java/org/geysermc/floodgate/velocity/pluginmessage/VelocityPluginMessageUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.pluginmessage; +package org.geysermc.floodgate.velocity.pluginmessage; import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.event.connection.PluginMessageEvent; @@ -35,25 +35,23 @@ import com.velocitypowered.api.proxy.messages.ChannelIdentifier; import com.velocitypowered.api.proxy.messages.ChannelMessageSource; import com.velocitypowered.api.proxy.messages.MinecraftChannelIdentifier; import jakarta.inject.Inject; +import jakarta.inject.Singleton; import java.util.UUID; -import lombok.RequiredArgsConstructor; import net.kyori.adventure.text.Component; import org.geysermc.floodgate.api.logger.FloodgateLogger; -import org.geysermc.floodgate.platform.pluginmessage.PluginMessageUtils; -import org.geysermc.floodgate.pluginmessage.PluginMessageChannel.Identity; -import org.geysermc.floodgate.pluginmessage.PluginMessageChannel.Result; +import org.geysermc.floodgate.core.platform.pluginmessage.PluginMessageUtils; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageChannel; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageChannel.Identity; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageChannel.Result; +import org.geysermc.floodgate.core.pluginmessage.PluginMessageManager; +import org.geysermc.floodgate.core.register.ListenerRegister; -@RequiredArgsConstructor +@ListenerRegister.Listener +@Singleton public class VelocityPluginMessageUtils extends PluginMessageUtils { - private final PluginMessageManager pluginMessageManager; - private ProxyServer proxy; - private FloodgateLogger logger; - - @Inject // called because this is a listener as well - public void init(ProxyServer proxy, FloodgateLogger logger) { - this.proxy = proxy; - this.logger = logger; - } + @Inject PluginMessageManager pluginMessageManager; + @Inject ProxyServer proxy; + @Inject FloodgateLogger logger; @Subscribe public void onPluginMessage(PluginMessageEvent event) { diff --git a/velocity/src/main/java/org/geysermc/floodgate/util/VelocityCommandUtil.java b/velocity/src/main/java/org/geysermc/floodgate/velocity/util/VelocityCommandUtil.java similarity index 88% rename from velocity/src/main/java/org/geysermc/floodgate/util/VelocityCommandUtil.java rename to velocity/src/main/java/org/geysermc/floodgate/velocity/util/VelocityCommandUtil.java index cebce965..6b72e7f4 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/util/VelocityCommandUtil.java +++ b/velocity/src/main/java/org/geysermc/floodgate/velocity/util/VelocityCommandUtil.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.velocity.util; import com.velocitypowered.api.command.CommandSource; import com.velocitypowered.api.proxy.Player; @@ -36,11 +36,13 @@ import java.util.UUID; import net.kyori.adventure.text.Component; import org.checkerframework.checker.nullness.qual.NonNull; import org.geysermc.floodgate.api.FloodgateApi; -import org.geysermc.floodgate.platform.command.CommandUtil; -import org.geysermc.floodgate.player.UserAudience; -import org.geysermc.floodgate.player.UserAudience.ConsoleAudience; -import org.geysermc.floodgate.player.UserAudience.PlayerAudience; -import org.geysermc.floodgate.register.ListenerRegister; +import org.geysermc.floodgate.core.platform.command.CommandUtil; +import org.geysermc.floodgate.core.player.UserAudience; +import org.geysermc.floodgate.core.player.UserAudience.ConsoleAudience; +import org.geysermc.floodgate.core.player.UserAudience.PlayerAudience; +import org.geysermc.floodgate.core.register.ListenerRegister; +import org.geysermc.floodgate.core.util.LanguageManager; +import org.geysermc.floodgate.core.util.Utils; @ListenerRegister.Listener @Singleton diff --git a/velocity/src/main/java/org/geysermc/floodgate/util/VelocityPlatformUtils.java b/velocity/src/main/java/org/geysermc/floodgate/velocity/util/VelocityPlatformUtils.java similarity index 89% rename from velocity/src/main/java/org/geysermc/floodgate/util/VelocityPlatformUtils.java rename to velocity/src/main/java/org/geysermc/floodgate/velocity/util/VelocityPlatformUtils.java index 254e8b9f..d230b7c3 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/util/VelocityPlatformUtils.java +++ b/velocity/src/main/java/org/geysermc/floodgate/velocity/util/VelocityPlatformUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,13 +23,15 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.velocity.util; import com.velocitypowered.api.network.ProtocolVersion; import com.velocitypowered.api.proxy.ProxyServer; import jakarta.inject.Inject; -import org.geysermc.floodgate.platform.util.PlatformUtils; +import jakarta.inject.Singleton; +import org.geysermc.floodgate.core.platform.util.PlatformUtils; +@Singleton public final class VelocityPlatformUtils extends PlatformUtils { @Inject ProxyServer server; diff --git a/velocity/src/main/java/org/geysermc/floodgate/util/VelocitySkinApplier.java b/velocity/src/main/java/org/geysermc/floodgate/velocity/util/VelocitySkinApplier.java similarity index 90% rename from velocity/src/main/java/org/geysermc/floodgate/util/VelocitySkinApplier.java rename to velocity/src/main/java/org/geysermc/floodgate/velocity/util/VelocitySkinApplier.java index 067595c9..654feebc 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/util/VelocitySkinApplier.java +++ b/velocity/src/main/java/org/geysermc/floodgate/velocity/util/VelocitySkinApplier.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ * @link https://github.com/GeyserMC/Floodgate */ -package org.geysermc.floodgate.util; +package org.geysermc.floodgate.velocity.util; import com.velocitypowered.api.proxy.ProxyServer; import com.velocitypowered.api.util.GameProfile.Property; @@ -35,10 +35,10 @@ import org.checkerframework.checker.nullness.qual.NonNull; import org.geysermc.floodgate.api.event.skin.SkinApplyEvent; import org.geysermc.floodgate.api.event.skin.SkinApplyEvent.SkinData; import org.geysermc.floodgate.api.player.FloodgatePlayer; -import org.geysermc.floodgate.event.EventBus; -import org.geysermc.floodgate.event.skin.SkinApplyEventImpl; -import org.geysermc.floodgate.skin.SkinApplier; -import org.geysermc.floodgate.skin.SkinDataImpl; +import org.geysermc.floodgate.core.event.EventBus; +import org.geysermc.floodgate.core.event.skin.SkinApplyEventImpl; +import org.geysermc.floodgate.core.skin.SkinApplier; +import org.geysermc.floodgate.core.skin.SkinDataImpl; @Singleton public class VelocitySkinApplier implements SkinApplier { diff --git a/velocity/src/main/resources/velocity-plugin.json b/velocity/src/main/resources/velocity-plugin.json index a4df39d2..8f4d70b0 100644 --- a/velocity/src/main/resources/velocity-plugin.json +++ b/velocity/src/main/resources/velocity-plugin.json @@ -1 +1 @@ -{"id": "${id}", "name": "${name}", "version": "${version}", "description": "${description}", "url": "$url}", "authors": ["${author}"], "main": "org.geysermc.floodgate.VelocityPlugin"} \ No newline at end of file +{"id": "${id}", "name": "${name}", "version": "${version}", "description": "${description}", "url": "$url}", "authors": ["${author}"], "main": "org.geysermc.floodgate.velocity.VelocityPlugin"} \ No newline at end of file