Game Inventory System Structure?
<p>I am working on an Inventory System for my little RPG Game. It´s meant for Multiplayer.
So far I have an working Setup, but I am pretty unsatisfied with it and want to begin from new. I am talking mainly about the Model not the View.</p>

<ul>
<li><p>It is intended that an User has several Inventories. Different Inventories are for Drinks, another for some special items, just Trash loot and etc.</p></li>
<li><p>Inventory can hold up to n Items, represented in Slots. The x,y is not fixed and can be changed by the User depending on its device.</p></li>
<li><p>An Item can be stacked or not. If it´s not stackable it could be equipped.</p></li>
<li><p>meant for different Devices (Mobile/Desktop)</p></li>
</ul>

<p>My Problem was mainly that it became too dependent on each other. I had an Item and an ItemStack class. If the Item is stackable the Item will be added to an itemstack with an amount. Both inherited from AbstractItem - although Itemstack is not an Item, but I didn´t knew how to add it then. Which led to the fact that I had to add Methods in the abstract class /interface only to be able to work with both classes properly. Like adding an currentCount() to the abstract Class, which is only needed for the ItemStack but Item also has it although it will never need it. Furthermore Inventory hold InventorySlot, which only had either one ItemStack or Item and an Variable for the Position of that Slot. 
The different Inventories would have been implemented with an easy check of the Itemtype (an enum).</p>

<p>The View would just look up for the Inventory. Checks the non - empty Slots and reads the Texture in the Item Class - or the Texture in the Item in the ItemStack ~</p>

<p><a href="https://i.stack.imgur.com/73N44.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/73N44.png" alt="currently"></a></p>

<p>That´s how I thought about it, but it seems to be shit.</p>

<p>How would you recommend to build such an simple, yet easy upgradable and maintainable System? Is it better to distinguish the Itemtypes (and with that the Inventories) per enum or even just make an own class for it, or make an interface for such stuff like Consumable, Equipable etc?</p>