diff --git a/sources/src/main/java/io/akarin/server/mixin/core/NonblockingServerConnection.java b/sources/src/main/java/io/akarin/server/mixin/core/NonblockingServerConnection.java index 0c46e9695..a1d384a26 100644 --- a/sources/src/main/java/io/akarin/server/mixin/core/NonblockingServerConnection.java +++ b/sources/src/main/java/io/akarin/server/mixin/core/NonblockingServerConnection.java @@ -66,11 +66,6 @@ public class NonblockingServerConnection { } } - @Inject(method = "", at = @At("RETURN")) - private void deployLists(CallbackInfo info) { - h = WrappedCollections.wrappedList(Lists.newCopyOnWriteArrayList()); - } - @Shadow @Final private MinecraftServer f; /** @@ -81,6 +76,8 @@ public class NonblockingServerConnection { registerChannels(Lists.newArrayList(LocalAddress.create(address, port))); } + private boolean needDeployList = true; + public void registerChannels(Collection data) throws IOException { Class channelClass; EventLoopGroup loopGroup; @@ -95,6 +92,12 @@ public class NonblockingServerConnection { logger.info("Using nio channel type"); } + // Since we cannot overwrite the initializer, here is the best chance to handle it + if (needDeployList) { + h = WrappedCollections.wrappedList(Lists.newCopyOnWriteArrayList()); + needDeployList = false; + } + ServerBootstrap bootstrap = new ServerBootstrap().channel(channelClass).childHandler(ChannelAdapter.create(h)).group(loopGroup); synchronized (g) { data.addAll(Lists.transform(AkarinGlobalConfig.extraAddress, s -> {