In this context I mean the item the player has selected on their bar of 9 items at the bottom of their screen.
Normally to change the player's item I do something super basic like:
EntityPlayerSP p = Minecraft.getMinecraft().thePlayer;
p.inventory.currentItem = newCurrentItem;
Unfortunately recently this has only worked sometimes. When the player isn't moving at all, and I try to change the player's selected item, it doesn't work.
Basically during an onTick event, I'd use the above code to change it to 5 (as an example) and then next tick, it would be back at the previous value. And this happens every single tick.
Using a watchpoint on field modification I tracked down the culprit code reverting the value I set:
FMLEvents.playerTick(TickEvent$PlayerTickEvent) line: 99
ASMEventHandler_14_FMLEvents_playerTick_PlayerTickEvent.invoke(Event) line: not available
ASMEventHandler.invoke(Event) line: 55
EventBus.post(Event) line: 140
FMLCommonHandler.onPlayerPostTick(EntityPlayer) line: 355
EntityOtherPlayerMP(EntityPlayer).func_70071_h_() line:362
EntityOtherPlayerMP.func_70071_h_() line:52
...
The problem is none of the forge code I can find has a class called "FMLEvents" and I have no idea why a playerTick function would be modifying part of the player at all. Anyone know what's going on here?