BlockState breaking the API
#1
So the BlockState PR is gonna break the API in some ways.

So how are we gonna go about it?

There is a function convering BlockState <-> BlockType, NibbleType. We can manually export all the functions manually. (I don't like this - just carrying old stuff with us)
We can just dump everything (and when at it dump all the vector 3 overrides)

and we have to think about how we interface with the new BlockState
  - Construct from String
  - Export the whole BlockState stuff to API (then autogenerate the BlockState API Docs)
Reply
Thanks given by:
#2
This might be a long shot, but can we replace all E_BLOCK_XYZ global variables to have a blockstate variable instead of the integer we have now? I'm not sure how we would handle nibbletypes with that though.

Something like this in manual bindings:
tolua_constant(tolua_S, "E_BLOCK_AIR", Block::Air::Air());
...
Reply
Thanks given by:
#3
(03-11-2021, 09:43 PM)NiLSPACE Wrote: This might be a long shot, but can we replace all E_BLOCK_XYZ global variables to have a blockstate variable instead of the integer we have now? I'm not sure how we would handle nibbletypes with that though.

Something like this in manual bindings:
tolua_constant(tolua_S, "E_BLOCK_AIR", Block::Air::Air());
...

Actually the method

Block::Air::Air()

returns a short. so that might actually work for the present blocks
Reply
Thanks given by:
#4
There might be a few problems though. As I understand it a blockstate represents what we currently use two variables for (blocktype and blockmeta/nibbletype). Methods that currently require those two variables could have problems. We could add deprecated bindings for those to automatically convert the old blocktype/meta variables into a blockstate.

To be honest, while backwards compatibility is nice, this is such a huge architectural change which we need to move forward that I'm fine with a somewhat lacking compatibility layer like deprecated bindings which translate blocktype/meta on the fly.
Reply
Thanks given by:
#5
Adapting to API changes is never a walk in the park, but it's part of the journey, I guess. I feel you on not wanting to lug around old stuff forever. Manual exporting sounds like a tedious chore, and dumping everything might feel like a drastic move. But hey, sometimes a clean slate can lead to fresh innovations, right? Oh, and speaking of third-party api integration is a whole other ballgame. It's not just about websites anymore; it's about weaving into the fabric of internal systems too. That's where the real magic happens, in my opinion. When it comes to interfacing with the new BlockState, I'm all for making things as seamless as possible.
Reply
Thanks given by:




Users browsing this thread: 1 Guest(s)