Posted July 19, 201411 yr Hi, I am trying to replace diamond swords with a custom item when they are in a player's inventory, but the method ItemStack.getItem() is making the game crash. I have the following code so far: @SubscribeEvent public void onTickEvent(PlayerTickEvent evt){ for (int i = 0; i < 35; i++){ if(evt.player.inventory.getStackInSlot(i).getItem() == Items.diamond_sword){ System.out.println(i); } When I open my world, the game generates the following crash report: ---- Minecraft Crash Report ---- // Hey, that tickles! Hehehe! Time: 7/18/14 4:56 PM Description: Ticking player java.lang.NullPointerException: Ticking player at com.eternaldoom.realmsofchaos.ItemReplaceEvent.onTickEvent(ItemReplaceEvent.java:14) at cpw.mods.fml.common.eventhandler.ASMEventHandler_5_ItemReplaceEvent_onTickEvent_PlayerTickEvent.invoke(.dynamic) at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:51) at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:122) at cpw.mods.fml.common.FMLCommonHandler.onPlayerPreTick(FMLCommonHandler.java:344) at net.minecraft.entity.player.EntityPlayer.onUpdate(EntityPlayer.java:273) at net.minecraft.entity.player.EntityPlayerMP.onUpdateEntity(EntityPlayerMP.java:334) at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:329) at net.minecraft.network.play.client.C03PacketPlayer.processPacket(C03PacketPlayer.java:37) at net.minecraft.network.play.client.C03PacketPlayer$C06PacketPlayerPosLook.processPacket(C03PacketPlayer.java:271) at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:247) at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:736) at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:624) at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:495) at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:762) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Stacktrace: at com.eternaldoom.realmsofchaos.ItemReplaceEvent.onTickEvent(ItemReplaceEvent.java:14) at cpw.mods.fml.common.eventhandler.ASMEventHandler_5_ItemReplaceEvent_onTickEvent_PlayerTickEvent.invoke(.dynamic) at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:51) at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:122) at cpw.mods.fml.common.FMLCommonHandler.onPlayerPreTick(FMLCommonHandler.java:344) at net.minecraft.entity.player.EntityPlayer.onUpdate(EntityPlayer.java:273) -- Player being ticked -- Details: Entity Type: null (net.minecraft.entity.player.EntityPlayerMP) Entity ID: 330 Entity Name: Doomturd Entity's Exact location: 185.46, 80.00, 118.87 Entity's Block location: World: (185,80,118), Chunk: (at 9,5,6 in 11,7; contains blocks 176,0,112 to 191,255,127), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511) Entity's Momentum: 0.00, -0.08, 0.00 Stacktrace: at net.minecraft.entity.player.EntityPlayerMP.onUpdateEntity(EntityPlayerMP.java:334) at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:329) at net.minecraft.network.play.client.C03PacketPlayer.processPacket(C03PacketPlayer.java:37) at net.minecraft.network.play.client.C03PacketPlayer$C06PacketPlayerPosLook.processPacket(C03PacketPlayer.java:271) at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:247) -- Ticking connection -- Details: Connection: net.minecraft.network.NetworkManager@1b2a717a Stacktrace: at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:736) at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:624) at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:495) at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:762) -- System Details -- Details: Minecraft Version: 1.7.10 Operating System: Mac OS X (x86_64) version 10.9.4 Java Version: 1.8.0, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 926731496 bytes (883 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB) JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94 FML: MCP v9.05 FML v7.10.23.1186 Minecraft Forge 10.13.0.1186 4 mods loaded, 4 mods active mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available FML{7.10.23.1186} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.0.1186.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available Forge{10.13.0.1186} [Minecraft Forge] (forgeSrc-1.7.10-10.13.0.1186.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available realmsofchaos{Alpha 1.0 pre 1} [Realms of Chaos] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available Profiler Position: N/A (disabled) Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used Player Count: 1 / 8; [EntityPlayerMP['Doomturd'/330, l='ROC', x=185.46, y=80.00, z=118.87]] Type: Integrated Server (map_client.txt) Is Modded: Definitely; Client brand changed to 'fml,forge' #@!@# Game crashed! Crash report saved to: #@!@# ./crash-reports/crash-2014-07-18_16.56.13-server.txt Does anyone know what could be causing this? Thanks! Check out my mod, Realms of Chaos, here. If I helped you, be sure to press the "Thank You" button!
July 19, 201411 yr Hi The slot might be empty. If it is, the stack will be null. If you call .getItem() on a null, you will get this crash. This link might be helpful http://www.terryanderson.ca/debugging/run.html -TGG
July 19, 201411 yr Be sure to check if the slot has an item in it before trying to get the said item. Try adding: evt.player.inventory.getStackInSlot(i) != null to your if statement. Hope this helps! Potato's have skin. I have skin. Therefore, i am a potato. Follow me on Twitter! http://www.twitter.com/I_Mod_Minecraft
July 19, 201411 yr Author That worked. Thanks guys! Check out my mod, Realms of Chaos, here. If I helped you, be sure to press the "Thank You" button!
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.