Dronus86 Posted August 2, 2014 Share Posted August 2, 2014 Some time ago (1.4.5?), I considered trying out modding and didn't follow through. My research gave me an understanding of metadata and item ids, and how there are a somewhat limited number of ids available, and metadata was useful in reducing the number of ids you used in addition to a variety other things. I just started to mess around with modding again in the past week, and I've been reviewing a variety of tutorials and guides as I've moved along. In addition, I've been browsing any open source mods I can, to get ideas about proper implementation (such as using metadata for items that are variations of a similar thing, like recoloring). This has got me wondering: Is there still an achievable limit on the number of items or blocks Minecraft can register? Since item IDs and block IDs no longer exist, is there any benefit to using item/block metadata to create multiple items/blocks, aside from lower line count and reduced code repetition? What if the items you want to create each interact significantly differently, even if they appear very similar? Would it be more intelligent to simple extend and expand on base class instead of trying to force these different items into one class? Thanks! Quote Link to comment Share on other sites More sharing options...
imadnsn Posted August 2, 2014 Share Posted August 2, 2014 Metadata have always been used for reduced code repetition, for example, you won't make 6 different stair blocks all the same but different orientation, metadata only reduced id usage in some cases. Actually, reduced code repetition is kind of what efficient programming is. Object-oriented programming was made to reduce the amount of code you use to make the program by having some kind of structure, i.e. class, that has all the relevant code, and use instances whenever needed. This means metadata is only another thing to use so you won't make blocks for everything, not only because you don't want to use up all the ids. Quote Link to comment Share on other sites More sharing options...
Dronus86 Posted August 2, 2014 Author Share Posted August 2, 2014 Thanks. I think I was just getting frustrated with a problem and was looking for an easy out! That does clarify some things though. Quote Link to comment Share on other sites More sharing options...
jabelar Posted August 2, 2014 Share Posted August 2, 2014 At the end of the day, it is your own code. While it is more "professional" coding style to use indexes, loops, etc. to process similar things, it isn't that bad (if you're more comfortable with it) to separate them. Especially if there are just a few variations. For example, let's say you need to cycle through four things in an array. While it is natural for experienced coders to use a loop, it is actually about the same amount of lines of code to simply process each element with its own line of code. And often that is more readable, especially if you use enumeration or constants to represent the index. Anyway, it sounds to me that you'd be more comfortable separating variations into separate classes, and I think that is fine. It may in some cases mean more lines of code, but the code may be more readable and less prone to error. I think for directional blocks, metadata is still preferred because otherwise each direction will be different -- for example in the creative tab you'd have to have all four directions, and in inventory it would be different, etc. But for things like colors, or different behavior, it doesn't matter that much. By the way, if you're feeling limited with the metadata due to small number of bits to work with you can create your own sort of extended metadata if you want. In your main class you can just make a public byte array with index being position of the block for example and just make sure to update it when blocks are placed or destroyed. Quote Check out my tutorials here: http://jabelarminecraft.blogspot.com/ Link to comment Share on other sites More sharing options...
imadnsn Posted August 2, 2014 Share Posted August 2, 2014 By the way, if you're feeling limited with the metadata due to small number of bits to work with you can create your own sort of extended metadata if you want. In your main class you can just make a public byte array with index being position of the block for example and just make sure to update it when blocks are placed or destroyed. If you mean a public array to store one block's coordinates, which I don't think you do, I don't think that's a good idea, since all what the metadata's about is the inability to have a field that applies to one block, as a field ingame is like a static field because you use one Block instance. If you mean a list with coordinates as key, then that's not good idea either, unless you're sure your block won't exist a lot in a world. It will have some instabilities too, such as if piston pushes a block. The way Minecraft handle coordinate specific things to blocks is known to everyone, tile entities. Quote Link to comment Share on other sites More sharing options...
Dronus86 Posted August 3, 2014 Author Share Posted August 3, 2014 I ended up resolving it, I was trying to over-complicate my registration. It's good to know there is still a limit - that was something I was curious about regardless. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.