diff --git a/bungee/src/main/java/org/geysermc/floodgate/handler/BungeeDataHandler.java b/bungee/src/main/java/org/geysermc/floodgate/handler/BungeeDataHandler.java index 6c3f9a3f..42b133fe 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/handler/BungeeDataHandler.java +++ b/bungee/src/main/java/org/geysermc/floodgate/handler/BungeeDataHandler.java @@ -149,8 +149,6 @@ public final class BungeeDataHandler { InetSocketAddress correctAddress = player.getProperty(PropertyKey.SOCKET_ADDRESS); ReflectionUtils.setValue(channelWrapper, PLAYER_REMOTE_ADDRESS, correctAddress); - channel.attr(playerAttribute).set(player); - event.completeIntent(plugin); }); } diff --git a/bungee/src/main/java/org/geysermc/floodgate/inject/bungee/BungeeInjector.java b/bungee/src/main/java/org/geysermc/floodgate/inject/bungee/BungeeInjector.java index 2b53ace9..072a339f 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/inject/bungee/BungeeInjector.java +++ b/bungee/src/main/java/org/geysermc/floodgate/inject/bungee/BungeeInjector.java @@ -32,7 +32,6 @@ import javassist.CtClass; import javassist.CtField; import javassist.CtMethod; import javassist.Modifier; -import javax.naming.OperationNotSupportedException; import lombok.Getter; import lombok.RequiredArgsConstructor; import org.geysermc.floodgate.api.logger.FloodgateLogger; @@ -89,10 +88,9 @@ public final class BungeeInjector extends CommonPlatformInjector { } @Override - public boolean removeInjection() throws Exception { - //todo implement injection removal support - throw new OperationNotSupportedException( - "Floodgate cannot remove the Bungee injection at the moment"); + public boolean removeInjection() { + logger.error("Floodgate cannot remove itself from Bungee without a reboot"); + return false; } public void injectClient(Channel channel, boolean clientToProxy) { diff --git a/bungee/src/main/java/org/geysermc/floodgate/listener/BungeeListener.java b/bungee/src/main/java/org/geysermc/floodgate/listener/BungeeListener.java index 03bde326..9b107c52 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/listener/BungeeListener.java +++ b/bungee/src/main/java/org/geysermc/floodgate/listener/BungeeListener.java @@ -84,7 +84,6 @@ public final class BungeeListener implements Listener { if (config.isSendFloodgateData()) { pluginMessageHandler.sendSkinRequest(event.getServer(), player.getRawSkin()); } else { - //todo also a Proxy SkinHandler to keep stuff clean? skinHandler.handleSkinUploadFor(player, null); } } diff --git a/common/pom.xml b/common/pom.xml index c29d50d6..0dcdb1b9 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -45,11 +45,6 @@ cumulus ${cumulus.version} - - - - - org.yaml snakeyaml diff --git a/common/src/main/java/org/geysermc/floodgate/HandshakeHandler.java b/common/src/main/java/org/geysermc/floodgate/HandshakeHandler.java index f727d7aa..e66cc5d8 100644 --- a/common/src/main/java/org/geysermc/floodgate/HandshakeHandler.java +++ b/common/src/main/java/org/geysermc/floodgate/HandshakeHandler.java @@ -29,6 +29,7 @@ import static org.geysermc.floodgate.util.BedrockData.EXPECTED_LENGTH; import com.google.common.base.Charsets; import io.netty.channel.Channel; +import io.netty.util.AttributeKey; import java.net.InetSocketAddress; import lombok.AccessLevel; import lombok.AllArgsConstructor; @@ -51,6 +52,7 @@ public final class HandshakeHandler { private final SimpleFloodgateApi api; private final FloodgateCipher cipher; private final FloodgateConfigHolder configHolder; + private final AttributeKey playerAttribute; public HandshakeResult handle(Channel channel, @NonNull String handshakeData) { try { @@ -103,6 +105,8 @@ public final class HandshakeHandler { FloodgatePlayer player = FloodgatePlayerImpl.from(bedrockData, rawSkin, configHolder); api.addPlayer(player.getJavaUniqueId(), player); + channel.attr(playerAttribute).set(player); + int port = ((InetSocketAddress) channel.remoteAddress()).getPort(); InetSocketAddress socketAddress = new InetSocketAddress(bedrockData.getIp(), port); player.addProperty(PropertyKey.SOCKET_ADDRESS, socketAddress); diff --git a/common/src/main/java/org/geysermc/floodgate/command/LinkAccountCommand.java b/common/src/main/java/org/geysermc/floodgate/command/LinkAccountCommand.java index 98e43c91..4a2132da 100644 --- a/common/src/main/java/org/geysermc/floodgate/command/LinkAccountCommand.java +++ b/common/src/main/java/org/geysermc/floodgate/command/LinkAccountCommand.java @@ -49,17 +49,6 @@ public final class LinkAccountCommand implements Command { @Inject private FloodgateApi api; @Inject private CommandUtil commandUtil; -// @Override todo impl this -// public LiteralCommandNode commandNode(T source, CommandUtil commandUtil) { -// return literal(getName()) -// .then( -// argument("gamertag", word()) -// .executes(cmd -> { -// return 0; -// }) -// ).build(); -// } - @Override public void execute(Object player, UUID uuid, String username, String locale, String[] args) { PlayerLink link = api.getPlayerLink(); diff --git a/common/src/main/java/org/geysermc/floodgate/module/CommonModule.java b/common/src/main/java/org/geysermc/floodgate/module/CommonModule.java index e9171b9c..370c31be 100644 --- a/common/src/main/java/org/geysermc/floodgate/module/CommonModule.java +++ b/common/src/main/java/org/geysermc/floodgate/module/CommonModule.java @@ -123,8 +123,9 @@ public class CommonModule extends AbstractModule { @Provides @Singleton public HandshakeHandler handshakeHandler(SimpleFloodgateApi api, FloodgateCipher cipher, - FloodgateConfigHolder configHolder) { - return new HandshakeHandler(api, cipher, configHolder); + FloodgateConfigHolder configHolder, + AttributeKey playerAttribute) { + return new HandshakeHandler(api, cipher, configHolder, playerAttribute); } @Provides diff --git a/spigot/src/main/java/org/geysermc/floodgate/addon/data/SpigotDataHandler.java b/spigot/src/main/java/org/geysermc/floodgate/addon/data/SpigotDataHandler.java index b0941314..fbace202 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/addon/data/SpigotDataHandler.java +++ b/spigot/src/main/java/org/geysermc/floodgate/addon/data/SpigotDataHandler.java @@ -36,7 +36,6 @@ import static org.geysermc.floodgate.util.ReflectionUtils.setValue; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; -import io.netty.util.AttributeKey; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -158,7 +157,6 @@ public final class SpigotDataHandler extends SimpleChannelInboundHandler /* per player stuff */ private final FloodgateConfig config; private final HandshakeHandler handshakeHandler; - private final AttributeKey playerAttribute; private final FloodgateLogger logger; private Object networkManager; private FloodgatePlayer fPlayer; @@ -197,9 +195,6 @@ public final class SpigotDataHandler extends SimpleChannelInboundHandler return; } - // todo move this to HandshakeHandler? - ctx.channel().attr(playerAttribute).set(result.getFloodgatePlayer()); - fPlayer = result.getFloodgatePlayer(); BedrockData bedrockData = result.getBedrockData(); diff --git a/velocity/src/main/java/org/geysermc/floodgate/addon/data/VelocityProxyDataHandler.java b/velocity/src/main/java/org/geysermc/floodgate/addon/data/VelocityProxyDataHandler.java index b97e37d3..e64dd6ab 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/addon/data/VelocityProxyDataHandler.java +++ b/velocity/src/main/java/org/geysermc/floodgate/addon/data/VelocityProxyDataHandler.java @@ -105,11 +105,6 @@ public final class VelocityProxyDataHandler extends SimpleChannelInboundHandler< FloodgatePlayer player = result.getFloodgatePlayer(); - // we can't rely on Velocity when it comes to kicking the old players, so with this - // system we only have to check if the connection (which is already closed at that time) - // has the FloodgatePlayer attribute - ctx.channel().attr(playerAttribute).set(player); - logger.info("Floodgate player who is logged in as {} {} joined", player.getCorrectUsername(), player.getCorrectUniqueId()); } diff --git a/velocity/src/main/java/org/geysermc/floodgate/inject/velocity/VelocityInjector.java b/velocity/src/main/java/org/geysermc/floodgate/inject/velocity/VelocityInjector.java index ebc85394..03530c3a 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/inject/velocity/VelocityInjector.java +++ b/velocity/src/main/java/org/geysermc/floodgate/inject/velocity/VelocityInjector.java @@ -34,14 +34,15 @@ import com.velocitypowered.api.proxy.ProxyServer; import io.netty.channel.Channel; import io.netty.channel.ChannelInitializer; import java.lang.reflect.Method; -import javax.naming.OperationNotSupportedException; import lombok.Getter; import lombok.RequiredArgsConstructor; +import org.geysermc.floodgate.api.logger.FloodgateLogger; import org.geysermc.floodgate.inject.CommonPlatformInjector; @RequiredArgsConstructor public final class VelocityInjector extends CommonPlatformInjector { private final ProxyServer server; + private final FloodgateLogger logger; @Getter private boolean injected = false; @@ -74,10 +75,9 @@ public final class VelocityInjector extends CommonPlatformInjector { } @Override - public boolean removeInjection() throws Exception { - //todo implement injection removal support - throw new OperationNotSupportedException( - "Floodgate cannot remove the Velocity injection at the moment"); + public boolean removeInjection() { + logger.error("Floodgate cannot remove itself from Bungee without a reboot"); + return false; } @RequiredArgsConstructor diff --git a/velocity/src/main/java/org/geysermc/floodgate/listener/VelocityListener.java b/velocity/src/main/java/org/geysermc/floodgate/listener/VelocityListener.java index 9e5165dd..22fcde25 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/listener/VelocityListener.java +++ b/velocity/src/main/java/org/geysermc/floodgate/listener/VelocityListener.java @@ -160,7 +160,6 @@ public final class VelocityListener { if (config.isSendFloodgateData()) { pluginMessageHandler.sendSkinRequest(player.getCorrectUniqueId(), player.getRawSkin()); } else { - //todo also a Proxy SkinHandler to keep stuff clean? skinHandler.handleSkinUploadFor(player, null); } } diff --git a/velocity/src/main/java/org/geysermc/floodgate/module/VelocityPlatformModule.java b/velocity/src/main/java/org/geysermc/floodgate/module/VelocityPlatformModule.java index 259dfd16..7e136197 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/module/VelocityPlatformModule.java +++ b/velocity/src/main/java/org/geysermc/floodgate/module/VelocityPlatformModule.java @@ -108,8 +108,8 @@ public final class VelocityPlatformModule extends AbstractModule { @Provides @Singleton - public CommonPlatformInjector platformInjector(ProxyServer server) { - return new VelocityInjector(server); + public CommonPlatformInjector platformInjector(ProxyServer server, FloodgateLogger logger) { + return new VelocityInjector(server, logger); } @Provides