microsoft / malmo

Project Malmo is a platform for Artificial Intelligence experimentation and research built on top of Minecraft. We aim to inspire a new generation of research into challenging new problems presented by this unique environment. --- For installation instructions, scroll down to *Getting Started* below, or visit the project page for more information:
https://www.microsoft.com/en-us/research/project/project-malmo/
MIT License
4.06k stars 601 forks source link

Craft commands with MalmoEnv work how? #918

Open Maximusprime3 opened 2 years ago

Maximusprime3 commented 2 years ago

So I am using MalmoEnv and would like to create my own crafting a stick mission in XML format I found the problem that I can not specify craft commands, any help is appreciated! There is the action_filter which when not specified otherwise will reduce commands to ["move", "turn", "use", "attack"], providing an empty action_filter=[] keeps other commands specified in the mission.xml too.

When I try to specifically allow some craft command in the XML :

<SimpleCraftCommands>
    <ModifierList type ="allow-list">
        <command> XX </command>
    </ModifierList>
</SimpleCraftCommands>

I tried XX = craft, craft stick, craft 2 stick = planks. <-- with "XX",{{{XX}}},XX I get an exception:

Traceback (most recent call last):
File "C:\Users\Max\AppData\Local\Programs\Python\Python37\lib\threading.py", line 926, in _bootstrap_inner
self.run()
File "C:\Users\Max\AppData\Local\Programs\Python\Python37\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "runmultiagent.py", line 57, in run
episode=args.episode, resync=args.resync, action_filter=[])
File "C:\Users\Max\PycharmProjects\vanillaMalmo\MalmoPlatform\MalmoEnv\malmoenv\core.py", line 142, in init
actions = command_parser.get_actions(commands)
File "C:\Users\Max\PycharmProjects\vanillaMalmo\MalmoPlatform\MalmoEnv\malmoenv\commands.py", line 132, in get_actions
raise CommandHandlerException("Invalid craft command")
commands.py
...
           elif type == 'SimpleCraft':
                if verb != 'craft':
                    raise CommandHandlerException("Invalid craft command")
                actions.append(verb)
...

when I add print(verb) in commands.py, it prints exactly the command i specified in the XML when I skip the check and just append the verb to actions, the server throws:

[19:15:28] [EnvServerSocketHandler/INFO]: [STDOUT]: JAXB exception: javax.xml.bind.UnmarshalException 
\- with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 125; columnNumber: 50; cvc-enumeration-valid: Value 'craft stick' is not facet-valid with respect to enum
eration '[craft]'. It must be a value from the enumeration.]
[19:15:28] [EnvServerSocketHandler/INFO]: [STDOUT]: REPLYING WITH: MALMOERRORcvc-enumeration-valid: Value 'craft stick' is not facet-valid with respe
ct to enumeration '[craft]'. It must be a value from the enumeration.

When I just add this to the agent section in the XML , (without any other commands):

<SimpleCraftCommands/>

and start the runmultiagent.py, the print in commands.py yields 'craft'. And the server starts the Minecraft mission, but then crashes:

[20:22:01] [Client thread/INFO]: [STDOUT]: CLIENT enter state: DORMANT
[20:22:01] [Client thread/INFO]: [STDOUT]: JETTISONING 0 COMMANDS
[20:25:45] [EnvServerSocketHandler/INFO]: [STDOUT]: Received from 127.0.0.1:<MissionInit xmlns="http://ProjectMalmo.microsoft.com" xmlns:xsi="http://
www.w3.org/2001/XMLSchema-instance" SchemaVersion="" PlatformVersion="0.37.0">
                                <Mission>
      <About>
         <Summary>Catch the Mob</Summary>
      </About>
      <ModSettings>
         <MsPerTick>5</MsPerTick>
      </ModSettings>
      <ServerSection>
         <ServerInitialConditions>
            <Time>
               <StartTime>0</StartTime>
               <AllowPassageOfTime>false</AllowPassageOfTime>
            </Time>
            <Weather>clear</Weather>
            <AllowSpawning>false</AllowSpawning>
         </ServerInitialConditions>
         <ServerHandlers>
            <FlatWorldGenerator generatorString="3;minecraft:bedrock,2*minecraft:dirt,minecraft:grass;1;village" forceReset="true"/>
            <DrawingDecorator>
               <!-- Tricks to clean the map before drawing (avoid entity duplication on the map) -->
               <!-- coordinates for cuboid are inclusive -->

[20:25:45] [EnvServerSocketHandler/INFO]: [STDOUT]: REPLYING WITH: MALMOOK
[20:25:45] [Client thread/INFO]: [STDOUT]: Mission received: Catch the Mob
[20:25:45] [Client thread/INFO]: [STDOUT]: CLIENT request state: CREATING_HANDLERS
[20:25:45] [Client thread/INFO]: [STDOUT]: CLIENT enter state: CREATING_HANDLERS
[20:25:45] [Client thread/INFO]: [STDOUT]: CLIENT request state: EVALUATING_WORLD_REQUIREMENTS
[20:25:45] [Client thread/INFO]: [STDOUT]: CLIENT enter state: EVALUATING_WORLD_REQUIREMENTS
[20:25:45] [Client thread/INFO]: [STDOUT]: CLIENT request state: CREATING_NEW_WORLD
[20:25:45] [Client thread/INFO]: [STDOUT]: CLIENT enter state: CREATING_NEW_WORLD
[20:25:46] [Server thread/INFO]: Starting integrated minecraft server version 1.11.2
[20:25:46] [Server thread/INFO]: Generating keypair
[20:25:46] [Server thread/INFO] [FML]: Injecting existing block and item data into this server instance
[20:25:46] [Server thread/INFO] [FML]: Applying holder lookups
[20:25:46] [Server thread/INFO] [FML]: Holder lookups applied
[20:25:46] [Server thread/INFO] [FML]: Loading dimension 0 (TEMP_0_5fbf5de6-f126-4d59-80cc-dbea9055cbcb) (net.minecraft.server.integrated.IntegratedS
erver@524ad505)
[20:25:47] [Server thread/INFO] [FML]: Loading dimension 1 (TEMP_0_5fbf5de6-f126-4d59-80cc-dbea9055cbcb) (net.minecraft.server.integrated.IntegratedS
erver@524ad505)
[20:25:47] [Server thread/INFO] [FML]: Loading dimension -1 (TEMP_0_5fbf5de6-f126-4d59-80cc-dbea9055cbcb) (net.minecraft.server.integrated.Integrated
Server@524ad505)
[20:25:47] [Server thread/INFO]: Preparing start region for level 0
[20:25:48] [Server thread/INFO]: Changing view distance to 6, from 10
[20:25:48] [Client thread/INFO]: Deleting level TEMP_0_a392d7df-26da-457a-94a7-7f95972e4be9
[20:25:48] [Client thread/INFO]: Attempt 1...
[20:25:48] [Netty Local Client IO #1/INFO] [FML]: Server protocol version 2
[20:25:48] [Netty Server IO #3/INFO] [FML]: Client protocol version 2
[20:25:48] [Netty Server IO #3/INFO] [FML]: Client attempting to join with 5 mods : minecraft@1.11.2,FML@8.0.99.99,malmomod@0.37.0,forge@13.20.0.2228
,mcp@9.19
[20:25:48] [Netty Local Client IO #1/INFO] [FML]: [Netty Local Client IO #1] Client side modded connection established
[20:25:48] [Server thread/INFO] [FML]: [Server thread] Server side modded connection established
[20:25:48] [Server thread/INFO]: Agent0[local:E:f4b7a13b] logged in with entity id 6 at (-404.5, 4.0, -1350.5)
[20:25:48] [Server thread/INFO]: Agent0 joined the game
[20:25:48] [Server thread/INFO]: [STDOUT]: SERVER request state: WAITING_FOR_MOD_READY
[20:25:48] [Server thread/INFO]: [STDOUT]: CLIENT request state: WAITING_FOR_SERVER_READY
[20:25:48] [Server thread/INFO]: [STDOUT]: SERVER enter state: WAITING_FOR_MOD_READY
[20:25:48] [Server thread/INFO]: [STDOUT]: SERVER request state: DORMANT
[20:25:48] [Server thread/INFO]: [STDOUT]: SERVER enter state: DORMANT
[20:25:48] [Server thread/INFO]: [STDOUT]: INCOMING MISSION: Received MissionInit directly through ServerStateMachine constructor.
[20:25:48] [Server thread/INFO]: [STDOUT]: Mission received: Catch the Mob
[20:25:48] [Server thread/INFO]: Received mission: º9Catch the Mob
[20:25:48] [Server thread/INFO]: Source: ºa127.0.0.1
[20:25:48] [Server thread/INFO]: [STDOUT]: SERVER request state: BUILDING_WORLD
[20:25:48] [Server thread/INFO]: [STDOUT]: SERVER enter state: BUILDING_WORLD
[20:25:48] [Server thread/INFO]: [STDOUT]: SERVER request state: WAITING_FOR_AGENTS_TO_ASSEMBLE
[20:25:48] [Server thread/INFO]: [STDOUT]: SERVER enter state: WAITING_FOR_AGENTS_TO_ASSEMBLE
[20:25:48] [Server thread/INFO]: [STDOUT]: Experiment requires:
[20:25:48] [Server thread/INFO]: [STDOUT]: >>>> Agent0
[20:25:50] [Server thread/INFO]: Saving and pausing game...
[20:25:51] [Server thread/INFO]: Saving chunks for level 'TEMP_0_5fbf5de6-f126-4d59-80cc-dbea9055cbcb'/Overworld
[20:25:51] [Client thread/INFO]: [CHAT] Received mission: º9Catch the Mob
[20:25:51] [Client thread/INFO]: [CHAT] Source: ºa127.0.0.1
[20:25:51] [Client thread/INFO]: [STDOUT]: CLIENT enter state: WAITING_FOR_SERVER_READY
[20:25:51] [Client thread/INFO]: [STDOUT]: ***Telling server we are ready - Agent0
[20:25:51] [Client thread/INFO]: [STDOUT]: ***Telling server we are ready - Agent0
[20:25:52] [Client thread/INFO]: [STDOUT]: ***Telling server we are ready - Agent0
[20:25:52] [Server thread/INFO]: Saving chunks for level 'TEMP_0_5fbf5de6-f126-4d59-80cc-dbea9055cbcb'/Nether
[20:25:52] [Server thread/INFO]: Saving chunks for level 'TEMP_0_5fbf5de6-f126-4d59-80cc-dbea9055cbcb'/The End
[20:25:52] [Server thread/WARN]: Can't keep up! Did the system time change, or is the server overloaded? Running 2766ms behind, skipping 55 tick(s)
[20:25:53] [Client thread/INFO]: [STDOUT]: CLIENT request state: RUNNING
[20:25:53] [Client thread/INFO]: [STDOUT]: CLIENT enter state: RUNNING
[20:25:53] [Server thread/INFO]: [STDOUT]: SERVER request state: RUNNING
[20:25:53] [Server thread/INFO]: [STDOUT]: SERVER enter state: RUNNING
[20:25:53] [Netty Server IO #3/ERROR] [FML]: SimpleChannelHandlerWrapper exception
java.lang.NullPointerException
 at net.minecraft.item.ItemStack.areItemsEqual(ItemStack.java:455) ~[ItemStack.class:?]
 at com.microsoft.Malmo.Utils.CraftingHelper.getRecipesForRequestedOutput(CraftingHelper.java:343) ~[CraftingHelper.class:?]
    at com.microsoft.Malmo.MissionHandlers.SimpleCraftCommandsImplementation$CraftMessageHandler.onMessage(SimpleCraftCommandsImplementation.java:76)
 ~[SimpleCraftCommandsImplementation$CraftMessageHandler.class:?]
     at com.microsoft.Malmo.MissionHandlers.SimpleCraftCommandsImplementation$CraftMessageHandler.onMessage(SimpleCraftCommandsImplementation.java:69
) ~[SimpleCraftCommandsImplementation$CraftMessageHandler.class:?]
     at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:56) ~[SimpleChanne
lHandlerWrapper.class:?]
       at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:36) ~[SimpleChan
nelHandlerWrapper.class:?]
       at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[SimpleChannelInboundHandler.class:4.0.23.F
inal]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:
4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:4.0.23.Final]
   at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [MessageToMessageCodec.class:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0
.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final]
        at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:4.0.23.Final]
       at net.minecraftforge.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:111) [FMLProxyPacket.class:?]
       at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:157) [NetworkManager.class:?]
 at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:51) [NetworkManager.class:?]
  at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.0.23.Final]
     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.handleServerSideCustomPacket(NetworkDispatcher.java:452) [NetworkDispatcher.c
lass:?]
      at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:274) [NetworkDispatcher.class:?]
      at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:73) [NetworkDispatcher.class:?]
       at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.0.23.Fi
nal]
     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final]
        at io.netty.channel.local.LocalChannel.finishPeerRead(LocalChannel.java:326) [LocalChannel.class:4.0.23.Final]
 at io.netty.channel.local.LocalChannel.access$400(LocalChannel.java:45) [LocalChannel.class:4.0.23.Final]
      at io.netty.channel.local.LocalChannel$5.run(LocalChannel.java:312) [LocalChannel$5.class:4.0.23.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:380) [SingleThreadEventExecutor.class:4.0.23
.Final]
   at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357) [NioEventLoop.class:4.0.23.Final]
      at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) [SingleThreadEventExecutor$2.class:4.0.23.Final
]
       at java.lang.Thread.run(Thread.java:748) [?:1.8.0_302]
[20:25:53] [Netty Server IO #3/ERROR] [FML]: SimpleChannelHandlerWrapper exception
java.lang.NullPointerException
 at net.minecraft.item.ItemStack.areItemsEqual(ItemStack.java:455) ~[ItemStack.class:?]
 at com.microsoft.Malmo.Utils.CraftingHelper.getRecipesForRequestedOutput(CraftingHelper.java:343) ~[CraftingHelper.class:?]
    at com.microsoft.Malmo.MissionHandlers.SimpleCraftCommandsImplementation$CraftMessageHandler.onMessage(SimpleCraftCommandsImplementation.java:76)
 ~[SimpleCraftCommandsImplementation$CraftMessageHandler.class:?]
     at com.microsoft.Malmo.MissionHandlers.SimpleCraftCommandsImplementation$CraftMessageHandler.onMessage(SimpleCraftCommandsImplementation.java:69
) ~[SimpleCraftCommandsImplementation$CraftMessageHandler.class:?]
     at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:56) ~[SimpleChanne
lHandlerWrapper.class:?]
       at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:36) ~[SimpleChan
nelHandlerWrapper.class:?]
       at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[SimpleChannelInboundHandler.class:4.0.23.F
inal]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:
4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:4.0.23.Final]
   at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [MessageToMessageCodec.class:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0
.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final]
        at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:4.0.23.Final]
       at net.minecraftforge.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:111) [FMLProxyPacket.class:?]
       at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:157) [NetworkManager.class:?]
 at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:51) [NetworkManager.class:?]
  at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.0.23.Final]
     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.handleServerSideCustomPacket(NetworkDispatcher.java:452) [NetworkDispatcher.c
lass:?]
      at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:274) [NetworkDispatcher.class:?]
      at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:73) [NetworkDispatcher.class:?]
       at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.0.23.Fi
nal]
     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final]
        at io.netty.channel.local.LocalChannel.finishPeerRead(LocalChannel.java:326) [LocalChannel.class:4.0.23.Final]
 at io.netty.channel.local.LocalChannel.access$400(LocalChannel.java:45) [LocalChannel.class:4.0.23.Final]
      at io.netty.channel.local.LocalChannel$5.run(LocalChannel.java:312) [LocalChannel$5.class:4.0.23.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:380) [SingleThreadEventExecutor.class:4.0.23
.Final]
   at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357) [NioEventLoop.class:4.0.23.Final]
      at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) [SingleThreadEventExecutor$2.class:4.0.23.Final
]
       at java.lang.Thread.run(Thread.java:748) [?:1.8.0_302]
[20:25:53] [Netty Server IO #3/ERROR] [FML]: SimpleChannelHandlerWrapper exception
java.lang.NullPointerException
 at net.minecraft.item.ItemStack.areItemsEqual(ItemStack.java:455) ~[ItemStack.class:?]
 at com.microsoft.Malmo.Utils.CraftingHelper.getRecipesForRequestedOutput(CraftingHelper.java:343) ~[CraftingHelper.class:?]
    at com.microsoft.Malmo.MissionHandlers.SimpleCraftCommandsImplementation$CraftMessageHandler.onMessage(SimpleCraftCommandsImplementation.java:76)
 ~[SimpleCraftCommandsImplementation$CraftMessageHandler.class:?]
     at com.microsoft.Malmo.MissionHandlers.SimpleCraftCommandsImplementation$CraftMessageHandler.onMessage(SimpleCraftCommandsImplementation.java:69
) ~[SimpleCraftCommandsImplementation$CraftMessageHandler.class:?]
     at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:56) ~[SimpleChanne
lHandlerWrapper.class:?]
       at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:36) ~[SimpleChan
nelHandlerWrapper.class:?]
       at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[SimpleChannelInboundHandler.class:4.0.23.F
inal]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:
4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]

     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:4.0.23.Final]
   at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [MessageToMessageCodec.class:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0
.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final]
        at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:4.0.23.Final]
       at net.minecraftforge.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:111) [FMLProxyPacket.class:?]
       at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:157) [NetworkManager.class:?]
 at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:51) [NetworkManager.class:?]
  at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.0.23.Final]
     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.handleServerSideCustomPacket(NetworkDispatcher.java:452) [NetworkDispatcher.c
lass:?]
      at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:274) [NetworkDispatcher.class:?]
      at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:73) [NetworkDispatcher.class:?]
       at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.0.23.Fi
nal]
     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final]
        at io.netty.channel.local.LocalChannel.finishPeerRead(LocalChannel.java:326) [LocalChannel.class:4.0.23.Final]
 at io.netty.channel.local.LocalChannel.access$400(LocalChannel.java:45) [LocalChannel.class:4.0.23.Final]
      at io.netty.channel.local.LocalChannel$5.run(LocalChannel.java:312) [LocalChannel$5.class:4.0.23.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:380) [SingleThreadEventExecutor.class:4.0.23
.Final]
   at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357) [NioEventLoop.class:4.0.23.Final]
      at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) [SingleThreadEventExecutor$2.class:4.0.23.Final
]
       at java.lang.Thread.run(Thread.java:748) [?:1.8.0_302]
[20:25:53] [Netty Server IO #3/ERROR] [FML]: There was a critical exception handling a packet on channel Malmo
java.lang.NullPointerException
 at net.minecraft.item.ItemStack.areItemsEqual(ItemStack.java:455) ~[ItemStack.class:?]
 at com.microsoft.Malmo.Utils.CraftingHelper.getRecipesForRequestedOutput(CraftingHelper.java:343) ~[CraftingHelper.class:?]
    at com.microsoft.Malmo.MissionHandlers.SimpleCraftCommandsImplementation$CraftMessageHandler.onMessage(SimpleCraftCommandsImplementation.java:76)
 ~[SimpleCraftCommandsImplementation$CraftMessageHandler.class:?]
     at com.microsoft.Malmo.MissionHandlers.SimpleCraftCommandsImplementation$CraftMessageHandler.onMessage(SimpleCraftCommandsImplementation.java:69
) ~[SimpleCraftCommandsImplementation$CraftMessageHandler.class:?]
     at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:56) ~[SimpleChanne
lHandlerWrapper.class:?]
       at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:36) ~[SimpleChan
nelHandlerWrapper.class:?]
       at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[SimpleChannelInboundHandler.class:4.0.23.F
inal]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) ~[AbstractChannelHandlerContext.class
:4.0.23.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) ~[AbstractChannelHandlerContext.cla
ss:4.0.23.Final]
  at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) ~[SimpleChannelInboundHandler.class:4.0.23.Final]

    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) ~[AbstractChannelHandlerContext.class
:4.0.23.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) ~[AbstractChannelHandlerContext.cla
ss:4.0.23.Final]
  at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) ~[SimpleChannelInboundHandler.class:4.0.23.Final]

    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) ~[AbstractChannelHandlerContext.class
:4.0.23.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) ~[AbstractChannelHandlerContext.cla
ss:4.0.23.Final]
  at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) ~[SimpleChannelInboundHandler.class:4.0.23.Final]

    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) ~[AbstractChannelHandlerContext.class
:4.0.23.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) ~[AbstractChannelHandlerContext.cla
ss:4.0.23.Final]
  at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) ~[SimpleChannelInboundHandler.class:4.0.23.Final]

    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) ~[AbstractChannelHandlerContext.class
:4.0.23.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) ~[AbstractChannelHandlerContext.cla
ss:4.0.23.Final]
  at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) ~[SimpleChannelInboundHandler.class:4.0.23.Final]

    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) ~[AbstractChannelHandlerContext.class
:4.0.23.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) ~[AbstractChannelHandlerContext.cla
ss:4.0.23.Final]
  at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) ~[SimpleChannelInboundHandler.class:4.0.23.Final]

    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) ~[AbstractChannelHandlerContext.class
:4.0.23.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) ~[AbstractChannelHandlerContext.cla
ss:4.0.23.Final]
  at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) ~[SimpleChannelInboundHandler.class:4.0.23.Final]

    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) ~[AbstractChannelHandlerContext.class
:4.0.23.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) ~[AbstractChannelHandlerContext.cla
ss:4.0.23.Final]
  at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[MessageToMessageDecoder.class:4.0.23.Final]
  at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:4.0.23.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) ~[AbstractChannelHandlerContext.c
lass:4.0.23.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) ~[AbstractChannelHandlerContext.cla
ss:4.0.23.Final]
  at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) ~[DefaultChannelPipeline.class:4.0.23.Final]
       at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) ~[EmbeddedChannel.class:4.0.23.Final]
      at net.minecraftforge.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:111) [FMLProxyPacket.class:?]
       at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:157) [NetworkManager.class:?]
 at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:51) [NetworkManager.class:?]
  at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.0.23.Final]
     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.handleServerSideCustomPacket(NetworkDispatcher.java:452) [NetworkDispatcher.c
lass:?]
      at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:274) [NetworkDispatcher.class:?]
      at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:73) [NetworkDispatcher.class:?]
       at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.0.23.Fi
nal]
     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class
:4.0.23.Final]
 at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.2
3.Final]
   at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final]
        at io.netty.channel.local.LocalChannel.finishPeerRead(LocalChannel.java:326) [LocalChannel.class:4.0.23.Final]
 at io.netty.channel.local.LocalChannel.access$400(LocalChannel.java:45) [LocalChannel.class:4.0.23.Final]
      at io.netty.channel.local.LocalChannel$5.run(LocalChannel.java:312) [LocalChannel$5.class:4.0.23.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:380) [SingleThreadEventExecutor.class:4.0.23
.Final]
   at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357) [NioEventLoop.class:4.0.23.Final]
      at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) [SingleThreadEventExecutor$2.class:4.0.23.Final
]
       at java.lang.Thread.run(Thread.java:748) [?:1.8.0_302]
[20:25:53] [Netty Server IO #3/ERROR] [FML]: Network Disconnect: A fatal error has occurred, this connection is terminated
[20:25:53] [Client thread/INFO]: [STDOUT]: CLIENT request state: ERROR_LOST_NETWORK_CONNECTION
[20:25:53] [Client thread/INFO]: [STDOUT]: CLIENT enter state: ERROR_LOST_NETWORK_CONNECTION
[20:25:53] [Client thread/INFO]: [STDOUT]: CLIENT request state: DORMANT
[20:25:53] [Server thread/INFO]: Agent0 lost connection: TextComponent{text='A fatal error has occurred, this connection is terminated', siblings=[],
 style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}
}
[20:25:53] [Server thread/INFO]: Agent0 left the game
[20:25:53] [Server thread/INFO]: Stopping singleplayer server as player logged out
[20:25:53] [Server thread/INFO]: [STDOUT]: SERVER request state: ERROR
[20:25:53] [Server thread/INFO]: [STDOUT]: SERVER enter state: ERROR
[20:25:53] [Server thread/INFO]: [STDOUT]: SERVER request state: CLEAN_UP
[20:25:53] [Server thread/INFO]: [STDOUT]: SERVER enter state: CLEAN_UP
[20:25:53] [Server thread/INFO]: [STDOUT]: SERVER request state: DORMANT
[20:25:53] [Server thread/INFO]: [STDOUT]: SERVER enter state: DORMANT
[20:25:53] [Server thread/INFO]: [STDOUT]: Warning: window too narrow for timing events - increase window, or call beat() less often.
[20:25:53] [Server thread/INFO]: [STDOUT]: Warning: window too narrow for timing events - increase window, or call beat() less often.
[20:25:53] [Server thread/INFO]: [STDOUT]: Warning: window too narrow for timing events - increase window, or call beat() less often.
[20:25:53] [Server thread/INFO]: [STDOUT]: Warning: window too narrow for timing events - increase window, or call beat() less often.
[20:25:53] [Server thread/INFO]: Stopping server
[20:25:53] [Server thread/INFO]: Saving players
[20:25:53] [Server thread/INFO]: Saving worlds
[20:25:53] [Server thread/INFO]: Saving chunks for level 'TEMP_0_5fbf5de6-f126-4d59-80cc-dbea9055cbcb'/Overworld
[20:25:54] [Server thread/INFO]: Saving chunks for level 'TEMP_0_5fbf5de6-f126-4d59-80cc-dbea9055cbcb'/Nether
[20:25:54] [Server thread/INFO]: Saving chunks for level 'TEMP_0_5fbf5de6-f126-4d59-80cc-dbea9055cbcb'/The End
[20:25:54] [Server thread/INFO] [FML]: Unloading dimension 0
[20:25:54] [Server thread/INFO] [FML]: Unloading dimension -1
[20:25:54] [Server thread/INFO] [FML]: Unloading dimension 1
[20:25:55] [Client thread/INFO]: [STDOUT]: CLIENT enter state: DORMANT
[20:25:55] [Client thread/INFO]: [STDOUT]: JETTISONING 0 COMMANDS
[20:25:55] [Server thread/INFO] [FML]: Applying holder lookups
[20:25:55] [Server thread/INFO] [FML]: Holder lookups applied
> Building 95% > :runClient

Anybody had a similar problem or sees what I'm doing wrong? or is it even possible to craft with malmoEnv? Other missions work fine and I already trained an agent in the findTheGoal mission. I really like the framework and would love to get the crafting going!

Kind regards, Max

Maximusprime3 commented 2 years ago

It works if you use <SimpleCraftCommands/> in the mission.xml now all simple craft commands should be possible, those get specified in MalmoPlatform/MalmoEnv/malmoenv/commands.py this script parses the commands and provides lists of all commands in line 52 all_simplecraft = ["craft"] --> only the command "craft" is possible --> this command crashes the server! but you can replace "craft" with the craft commands of interest. e.g. I changed it to all_simplecraft = ["craft stone_pickaxe", "craft stick"] now my agent has two crafting actions that don't crash the server and work fine, they also trigger the

            <RewardForCollectingItem>
                <Item  reward="1000" type="stick"/>
            </RewardForCollectingItem>
            <RewardForDiscardingItem>
                <Item  reward="-40" type="stick"/>
            </RewardForDiscardingItem>
            <AgentQuitFromCollectingItem>
                <Item type="stone_pickaxe" />
            </AgentQuitFromCollectingItem>

sections in the XML which is nice :D