1 pointYou cannot make custom ItemStack classes. To add additional storage to item stacks, use capabilities. Same is true for block states, to store additional data at a block location use a TileEntity.
1 pointOne thing to mention, if you want to use my not-too-elegant solution, the main hand event will always fire first (since it's first in the Hand enum) so you'd only need to "cancel next" if the main hand fulfills the conditions.
1 pointOh, I see what you mean. (I'm not on my A-game today) I'm sure a more experienced developer can offer a better solution, but you might try storing a temporary "cancel next" variable that cancels the following event in the opposite hand.
Want to keep up to date with all our latest news and information?Sign Up