Jump to content

[1.7.10] need help w/ oscillating redstone from network packet


infchem

Recommended Posts

Hi all!

 

I've a "programming interface" gui to control real hardware (an "IDE for young children", primary school).

For extending the possibilities I added two command items for enabling and disabling redstone.

The code is triggered itself with redstone.

If I only use "enable redstone" items, it works fine. The same with "disable redstone".

If I mix both commands, for example enable rs, wait 1 sec. (another item), disable rs, the world crashes.

I have to use Runnable and packets on client and server side, because the other commands control the hardware on client side.

 

All ItemSlots for the code are sent to the client in a packet and checked in a Thread. If the item type is sendredstone

RealRobots.network.sendToServer(new WeDoRedstoneMessage(true,x,y,z));

is called in a Runnable.

The Handler:

public static class Handler implements IMessageHandler<WeDoRedstoneMessage, IMessage> {
        
        @Override
        public IMessage onMessage(WeDoRedstoneMessage message, MessageContext ctx) { 
        	EntityPlayer player = ctx.getServerHandler().playerEntity;
        	TileEntity te =  player.worldObj.getTileEntity(message.x,message.y,message.z);
        	if (te instanceof TileEntityWeDo) {
        		TileEntityWeDo tewd = (TileEntityWeDo) te;
        	tewd.setRedstoneStatus(message.redstoneStatus);
        	}
        	else if (te instanceof TileEntityLeonardo) {
        		TileEntityLeonardo tel = (TileEntityLeonardo) te;
        	tel.setRedstoneStatus(message.redstoneStatus);
        	}

        	player.worldObj.notifyBlocksOfNeighborChange(message.x,message.y,message.z, player.worldObj.getBlock(message.x,message.y,message.z));
        	
        	return null; // no response in this case
        }
    }

 

The result (with redstone actived AND deactived) is that onNeighborBlockChange in the block is called again.

 

Maybe someone has a hint? The kids want to check a tilt sensor and trigger a logic circuit with redstone in Minecraft :)

Link to comment
Share on other sites

Upon a first read I don't see anything wrong with the code, so a crash log could probably help us out.

 

I do have to ask why you are casting the tile entity when both classes possess the same method that you are giving identical calls? Or will these sections be differentiated more later?

If anyone has a comprehensive, visual guide to GUIs - don't hesitate to message me. They make my head spin.

Link to comment
Share on other sites

@diesieben07:

 

If I have rs off, 1 sec wait, rs on, it looks like this: http://www.hancl.de/cis/wp-content/uploads/2015/09/rr_redstone_oscillating.gif

 

If I have only rs off and rs on, without 1 sec. wait, a client lost connection message appears. (That's the crash I meant).

 

I change the TE attribute "redstoneStatus" from the new Thread and call player.worldObj.notifyBlocksOfNeighborChange in WeDoRedstone.java.

I think that causes the conflict with the server thread.

 

Here's the log:

 

[21:26:14] [Client thread/ERROR] [FML/]: SimpleChannelHandlerWrapper exception
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method) ~[?:1.8.0_51]
at java.lang.Thread.start(Thread.java:714) ~[?:1.8.0_51]
at infchem.realrobots.wedo.WeDoVPLMessage$Handler.onMessage(WeDoVPLMessage.java:86) ~[WeDoVPLMessage$Handler.class:?]
at infchem.realrobots.wedo.WeDoVPLMessage$Handler.onMessage(WeDoVPLMessage.java:1) ~[WeDoVPLMessage$Handler.class:?]
at cpw.mods.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:37) ~[simpleChannelHandlerWrapper.class:?]
at cpw.mods.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:17) ~[simpleChannelHandlerWrapper.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) ~[simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:101) [simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:101) [simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:101) [simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:101) [simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:101) [simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:?]
at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [MessageToMessageCodec.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?]
at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:?]
at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?]
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?]
at net.minecraft.client.multiplayer.PlayerControllerMP.updateController(PlayerControllerMP.java:317) [PlayerControllerMP.class:?]
at net.minecraft.client.Minecraft.runTick(Minecraft.java:1682) [Minecraft.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1028) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:951) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?]
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
at GradleStart.main(Unknown Source) [start/:?]
[21:26:14] [Client thread/ERROR] [FML/]: There was a critical exception handling a packet on channel RealRobotsChannel
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method) ~[?:1.8.0_51]
at java.lang.Thread.start(Thread.java:714) ~[?:1.8.0_51]
at infchem.realrobots.wedo.WeDoVPLMessage$Handler.onMessage(WeDoVPLMessage.java:86) ~[WeDoVPLMessage$Handler.class:?]
at infchem.realrobots.wedo.WeDoVPLMessage$Handler.onMessage(WeDoVPLMessage.java:1) ~[WeDoVPLMessage$Handler.class:?]
at cpw.mods.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:37) ~[simpleChannelHandlerWrapper.class:?]
at cpw.mods.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:17) ~[simpleChannelHandlerWrapper.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) ~[simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:101) ~[simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:101) ~[simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:101) ~[simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:101) ~[simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:101) ~[simpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[MessageToMessageDecoder.class:?]
at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) ~[DefaultChannelPipeline.class:?]
at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) ~[EmbeddedChannel.class:?]
at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?]
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?]
at net.minecraft.client.multiplayer.PlayerControllerMP.updateController(PlayerControllerMP.java:317) [PlayerControllerMP.class:?]
at net.minecraft.client.Minecraft.runTick(Minecraft.java:1682) [Minecraft.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1028) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:951) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?]
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
at GradleStart.main(Unknown Source) [start/:?]
[21:26:16] [server thread/TRACE] [mcp/mcp]: Sending event FMLServerStoppingEvent to mod mcp
[21:26:20] [server thread/TRACE] [mcp/mcp]: Sent event FMLServerStoppingEvent to mod mcp
[21:26:20] [server thread/TRACE] [FML/FML]: Sending event FMLServerStoppingEvent to mod FML
[21:26:20] [server thread/TRACE] [FML/FML]: Sent event FMLServerStoppingEvent to mod FML
[21:26:20] [server thread/TRACE] [Forge/Forge]: Sending event FMLServerStoppingEvent to mod Forge
[21:26:20] [server thread/TRACE] [Forge/Forge]: Sent event FMLServerStoppingEvent to mod Forge
[21:26:20] [server thread/TRACE] [realrobots/realrobots]: Sending event FMLServerStoppingEvent to mod realrobots
[21:26:20] [server thread/TRACE] [realrobots/realrobots]: Sent event FMLServerStoppingEvent to mod realrobots
[21:26:20] [server thread/DEBUG] [FML/]: Gathering id map for writing to world save RealRobots
[21:26:20] [server thread/INFO] [FML/]: Unloading dimension 0
[21:26:20] [server thread/INFO] [FML/]: Unloading dimension -1
[21:26:20] [server thread/INFO] [FML/]: Unloading dimension 1
[21:26:20] [server thread/DEBUG] [FML/]: Reverting to frozen data state.
[21:26:20] [server thread/INFO] [FML/]: Applying holder lookups
[21:26:20] [server thread/INFO] [FML/]: Holder lookups applied
[21:26:20] [server thread/TRACE] [mcp/mcp]: Sending event FMLServerStoppedEvent to mod mcp
[21:26:20] [server thread/TRACE] [mcp/mcp]: Sent event FMLServerStoppedEvent to mod mcp
[21:26:20] [server thread/TRACE] [FML/FML]: Sending event FMLServerStoppedEvent to mod FML
[21:26:20] [server thread/TRACE] [FML/FML]: Sent event FMLServerStoppedEvent to mod FML
[21:26:20] [server thread/TRACE] [Forge/Forge]: Sending event FMLServerStoppedEvent to mod Forge
[21:26:20] [server thread/TRACE] [Forge/Forge]: Sent event FMLServerStoppedEvent to mod Forge
[21:26:20] [server thread/TRACE] [realrobots/realrobots]: Sending event FMLServerStoppedEvent to mod realrobots
[21:26:20] [server thread/TRACE] [realrobots/realrobots]: Sent event FMLServerStoppedEvent to mod realrobots

 

The repo is here: https://github.com/infchem/RealRobots

 

Thanks for helping!

infchem

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.