gmitch215 / SocketMC

🖥️ Communicate directly with Minecraft Clients from the Server
http://socketmc.gmitch215.xyz/
GNU General Public License v3.0
11 stars 0 forks source link

Retriever seems to fail #48

Open ShaneBeee opened 4 days ago

ShaneBeee commented 4 days ago

Bug Type

Other Unexpected Behavior

Minecraft Version

1.21.1

SocketMC Version

1.21-0.3.0

Description

When trying to retrieve a window from a player, an error is thrown on the client, and the server doesn't receive anything.

Steps to Reproduce

code to run:

SocketPlayer socketPlayer = new SocketPlayer(player);
socketPlayer.getRetriever().retrieve(RetrieverType.CURRENT_WINDOW, window -> {
    windowsMap.put(player.getUniqueId(), window);
}, plugin);

I used this in a join event.

Expected Behavior

No error, and the data to come back to the server.

Actual Behavior

Error on the client:

[09:17:48] [Netty Client IO #6/ERROR]: [SocketMC] IllegalStateException
[09:17:48] [Netty Client IO #6/ERROR]: -----------
[09:17:48] [Netty Client IO #6/ERROR]: Rendersystem called from wrong thread
[09:17:48] [Netty Client IO #6/ERROR]:   com.mojang.blaze3d.systems.RenderSystem.constructThreadException(RenderSystem.java:140)
[09:17:48] [Netty Client IO #6/ERROR]:   com.mojang.blaze3d.systems.RenderSystem.assertOnRenderThread(RenderSystem.java:135)
[09:17:48] [Netty Client IO #6/ERROR]:   net.minecraft.class_1041.method_22092(class_1041.java:144)
[09:17:48] [Netty Client IO #6/ERROR]:   xyz.gmitch215.socketmc.fabric.FabricRetriever.lambda$static$0(FabricRetriever.java:47)
[09:17:48] [Netty Client IO #6/ERROR]:   xyz.gmitch215.socketmc.retriever.Retriever.value(Retriever.java:54)
[09:17:48] [Netty Client IO #6/ERROR]:   net.minecraft.class_2543.handler$bee000$socketmc$decode(class_2543.java:582)
[09:17:48] [Netty Client IO #6/ERROR]:   net.minecraft.class_2543.decode(class_2543.java)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.handler.flow.FlowControlHandler.dequeue(FlowControlHandler.java:202)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.handler.flow.FlowControlHandler.channelRead(FlowControlHandler.java:164)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
[09:17:48] [Netty Client IO #6/ERROR]:   io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
[09:17:48] [Netty Client IO #6/ERROR]:   java.base/java.lang.Thread.run(Thread.java:1570)

Additional Info

No response

gmitch215 commented 4 days ago

I think newer additions to the Window interface require things to be called on the rendering thread, not the main client thread. I'll find a workaround for v0.3.1.

ShaneBeee commented 4 days ago

doing a look into vanilla MC code, it appears its only checking the thread for Window#getRefreshRate All the other getters seem to be fine.

gmitch215 commented 4 days ago

That seems to be the primary issue then.