Posted November 8, 20168 yr I created a tile entity with inventory and a GUI. It was challenging to my amateur programming skills. Now I want to create several more containers of different sizes. I made my tile entity into an abstract class and create two subclasses to override the getSizeInventory and getName methods. That has worked fine so far—at least my original container now works by using one of the subclasses I created. I still haven't built the additional GUI to handle the different number of slots of the other subclass, or registered the block or created the texture, etc. What I'm wondering is if I can instead create a variable to represent the number of inventory slots, set it in the tile entity's constructor, and use it in getSizeInventory rather than using a hard-set int value. I started along that path but didn't get very far, so I'm not sure if I was just dumb to try or if I'm missing something. It would be cool if I didn't have to subclass my tile entity a dozen times for all the different containers I want to make.
November 8, 20168 yr Well obviously that is a yes but your constructor can't have any parameters, so a setter would work. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
November 8, 20168 yr Author but your constructor can't have any parameters That's actually the first thing I tried. I assumed I could add a new field to my tile entity and pass the parameter into the constructor when returning a new tile entity in createNewTileEntity (in my container's block class). Why can't the constructor have any parameters? If I used a setter, when and where would I invoke it?
November 8, 20168 yr but your constructor can't have any parameters That's actually the first thing I tried. I assumed I could add a new field to my tile entity and pass the parameter into the constructor when returning a new tile entity in createNewTileEntity (in my container's block class). Why can't the constructor have any parameters? If I used a setter, when and where would I invoke it? It can have a constructor with parameters, but it must have one with none because when the game is loaded it must instantiate them from world data. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
November 8, 20168 yr Hi You can store information like that in the Tile Entity NBT A working example is here https://github.com/TheGreyGhost/MinecraftByExample see mbe30 NUMBER_OF_SLOTS is a final int in this example, but you can load it from NBT like any other setting (see also mbe20 - TileEntityData for more examples of how to use NBT properly). From memory, Vanilla does something similar when two side-by-side chests are combined together. -TGG
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.