Posted February 19, 20178 yr (I hope there's no daily post limit on this forum...) I'm working on an ItemStack capability which is given to stackable (max stack size > 1) items. Stacks with the capability can be in one of several defined states. I want stacks of the same item to be able to be combined if they are in the same state, but not if they are different. The trouble is that Forge's areCapsCompatible is called in most places, but not quite everywhere. One obvious spot where it's missing is in Container#slotClick, which refers to Container.canAddItemToSlot. And that method checks that the items and stackTagCompounds are equal, but ignores capability tags. But it's static, so I can't override it to add my own functionality. I could try to override slotClick (I'm already overriding the player container anyway), but it's a huge method and it also refers to a bunch of private fields, and seems like it would be generally a bad idea. I could try to add my capability's tags to the stackTagCompound, but that's not the intended use so I'm guessing it would have other messy effects or wouldn't work (the doc comment says that Minecraft validates only non-stackable items can use it, although I haven't found where that happens in the code). Does anyone have any suggestions? Is there any way for me to edit a static method (if I could just add one areCapsCompatible check to Container.canAddItemToSlot...!)? Is there some other workaround I can use to force Minecraft to check capabilities when attempting to combine stacks? Forge is great, but times like this make me wish I could just edit the vanilla classes myself! Edited February 19, 20178 yr by Jay Avery
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.