Posted September 20, 201510 yr 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
September 21, 201510 yr 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.
September 21, 201510 yr Author @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
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.