From bd115af96d1feb6050c070ef330d0a5bb59306fb Mon Sep 17 00:00:00 2001 From: Dexton Anderson Date: Sun, 9 Jun 2019 13:58:33 -0500 Subject: [PATCH] minor, ensure packet_handler channel is loaded before injecting player channel --- .../java/com/ruinscraft/panilla/api/IPanillaPlatform.java | 2 ++ .../com/ruinscraft/panilla/api/io/IPlayerInjector.java | 8 ++++++-- .../java/com/ruinscraft/panilla/bukkit/PanillaPlugin.java | 5 +++++ .../java/com/ruinscraft/panilla/sponge/PanillaPlugin.java | 5 +++++ 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/com/ruinscraft/panilla/api/IPanillaPlatform.java b/api/src/main/java/com/ruinscraft/panilla/api/IPanillaPlatform.java index 1ebef287..b3e57424 100644 --- a/api/src/main/java/com/ruinscraft/panilla/api/IPanillaPlatform.java +++ b/api/src/main/java/com/ruinscraft/panilla/api/IPanillaPlatform.java @@ -15,4 +15,6 @@ public interface IPanillaPlatform { Logger getLogger(); + void runTaskLater(long delay, Runnable task); + } diff --git a/api/src/main/java/com/ruinscraft/panilla/api/io/IPlayerInjector.java b/api/src/main/java/com/ruinscraft/panilla/api/io/IPlayerInjector.java index 4f0539a0..4a16a751 100644 --- a/api/src/main/java/com/ruinscraft/panilla/api/io/IPlayerInjector.java +++ b/api/src/main/java/com/ruinscraft/panilla/api/io/IPlayerInjector.java @@ -4,6 +4,8 @@ import com.ruinscraft.panilla.api.IPanillaPlayer; import io.netty.channel.Channel; +import java.util.concurrent.TimeUnit; + public interface IPlayerInjector { String CHANNEL_HANDLER_MINECRAFT = "packet_handler"; @@ -19,8 +21,10 @@ default void register(IPanilla panilla, IPanillaPlayer player) { if (channel.pipeline().get(CHANNEL_HANDLER_MINECRAFT) != null) { channel.pipeline().addBefore(CHANNEL_HANDLER_MINECRAFT, CHANNEL_HANDLER_PANILLA, channelHandler); } else { - panilla.getPlatform().getLogger().warning( - "Could not find Minecraft Netty channel: " + CHANNEL_HANDLER_MINECRAFT + ". Please report this as a bug."); + // try again later, server was likely booting up + panilla.getPlatform().runTaskLater(TimeUnit.SECONDS.toMillis(10), () -> { + register(panilla, player); + }); } } } diff --git a/bukkit/src/main/java/com/ruinscraft/panilla/bukkit/PanillaPlugin.java b/bukkit/src/main/java/com/ruinscraft/panilla/bukkit/PanillaPlugin.java index 3d3fdc8b..9478fea2 100644 --- a/bukkit/src/main/java/com/ruinscraft/panilla/bukkit/PanillaPlugin.java +++ b/bukkit/src/main/java/com/ruinscraft/panilla/bukkit/PanillaPlugin.java @@ -100,6 +100,11 @@ public Collection getOnlinePlayers() { return panillaPlayers; } + @Override + public void runTaskLater(long delay, Runnable task) { + getServer().getScheduler().runTaskLater(this, task, delay); + } + private synchronized void loadConfig() throws IOException { PFiles.saveResource("config.yml", getDataFolder()); diff --git a/sponge/src/main/java/com/ruinscraft/panilla/sponge/PanillaPlugin.java b/sponge/src/main/java/com/ruinscraft/panilla/sponge/PanillaPlugin.java index 22e11785..c97dcc11 100644 --- a/sponge/src/main/java/com/ruinscraft/panilla/sponge/PanillaPlugin.java +++ b/sponge/src/main/java/com/ruinscraft/panilla/sponge/PanillaPlugin.java @@ -113,6 +113,11 @@ public Logger getLogger() { return logger; } + @Override + public void runTaskLater(long delay, Runnable task) { + // TODO: + } + private synchronized void loadConfig() { // TODO: }