Posted April 11, 20169 yr Hi, I need some help understanding how to use the new capabilities and IItemHandler from the old IInventory / ISidedInventory. My main source of documentation is this : https://mcforge.readthedocs.org/en/latest/datastorage/capabilities/ So, what I think I got right is: The vanilla TileEntity.class already implements ICapabilityProvider Forge provider the IItemHandler Capability, to use wherever you would use the old interfaces. Implementing it means overriding getCapability() and hasCapability(). In the TE class? Make my own implementation of IItemHandler for my inventories (don't use ItemStackHandler). But then the two methods above don't use it? What goes in my TE class and what goes in a different ad hoc one?
April 12, 20169 yr You shouldn't need a custom implementation of IItemHandler , just use ItemStackHandler . Create an IItemHandler field in your TileEntity to contain its inventory and set it to an instance of ItemStackHandler . To replicate ISidedInventory , use a separate IItemHandler for each group of slots. Override hasCapability to return true when the Capability is CapabilityItemHandler.ITEM_HANDLER_CAPABILITY and the inventory can be accessed from the specified EnumFacing (if you actually care about the facing at all). Override getCapability to check if the Capability is CapabilityItemHandler.ITEM_HANDLER_CAPABILITY . If it is, return the appropriate IItemHandler for the specified EnumFacing . In both hasCapability and getCapability , return the result of the super method when the Capability isn't CapabilityItemHandler.ITEM_HANDLER_CAPABILITY . This allows external capabilities attached from AttachCapabilitiesEvent to be used. Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
April 15, 20169 yr Author Okay, I feel more confident now...I'll try to get it working on my own, thanks for your help
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.