Jump to content

Recommended Posts

Posted

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!

Posted

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.

Posted

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.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Posted

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.

Posted

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.

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • When I first heard about Bitcoin back in 2018, I was skeptical. The idea of a decentralized, digital currency seemed too good to be true. But I was intrigued as I learned more about the technology behind it and its potential. I started small, investing just a few hundred dollars, dipping my toes into the cryptocurrency waters. At first, it was exhilarating to watch the value of my investment grow exponentially. I felt like I was part of the future, an early adopter of this revolutionary new asset. But that euphoria was short-lived. One day, I logged into my digital wallet only to find it empty - my Bitcoin had vanished without a trace. It turned out that the online exchange I had trusted had been hacked, and my funds were stolen. I was devastated, both financially and emotionally. All the potential I had seen in Bitcoin was tainted by the harsh reality that with decentralization came a lack of regulation and oversight. My hard-earned money was gone, lost to the ether of the digital world. This experience taught me a painful lesson about the price of trust in the uncharted territory of cryptocurrency. While the technology holds incredible promise, the risks can be catastrophic if you don't approach it with extreme caution. My Bitcoin investment gamble had failed, and I was left to pick up the pieces, wiser but poorer for having placed my faith in the wrong hands. My sincere appreciation goes to MUYERN TRUST HACKER. You are my hero in recovering my lost funds. Send a direct m a i l ( muyerntrusted ( @ ) mail-me ( . )c o m ) or message on whats app : + 1 ( 4-4-0 ) ( 3 -3 -5 ) ( 0-2-0-5 )
    • You could try posting a log (if there is no log at all, it may be the launcher you are using, the FAQ may have info on how to enable the log) as described in the FAQ, however this will probably need to be reported to/remedied by the mod author.
    • So me and a couple of friends are playing with a shitpost mod pack and one of the mods in the pack is corail tombstone and for some reason there is a problem with it, where on death to fire the player will get kicked out of the server and the tombstone will not spawn basically deleting an entire inventory, it doesn't matter what type of fire it is, whether it's from vanilla fire/lava, or from modded fire like ice&fire/lycanites and it's common enough to where everyone on the server has experienced at least once or twice and it doesn't give any crash log. a solution to this would be much appreciated thank you!
    • It is 1.12.2 - I have no idea if there is a 1.12 pack
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.