diff --git a/api/pom.xml b/api/pom.xml index bf0f83e2..983ef45e 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -24,6 +24,11 @@ common ${geyser.version} + + org.geysermc.cumulus + cumulus + ${cumulus.version} + 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 f95b6992..aede3b84 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 @@ -95,12 +95,24 @@ public final class BungeeInjector extends CommonPlatformInjector { // we're getting called before the decoder and encoder are added. // we'll have to wait a while :( ctx.executor().execute(() -> { + int tries = 0; while (ctx.channel().isOpen()) { if (ctx.channel().pipeline().get(MinecraftEncoder.class) != null) { logger.debug("found packet encoder :)"); ctx.channel().pipeline().addFirst(new BungeeInjectorInitializer()); return; } + + // half a second should be more than enough + if (++tries > 25) { + logger.debug("Failed to inject " + ctx.channel().pipeline()); + return; + } + + try { + Thread.sleep(20); + } catch (InterruptedException ignored) { + } } }); }