udoprog / c10t

A minecraft cartography tool
Other
225 stars 50 forks source link

Supporting palettes for blocks outside of normal range #151

Closed blooest closed 12 years ago

blooest commented 13 years ago

So, currently, if you have any block IDs that don't exist normally, and you use the default palette, they all render as 0,0,0,255, that is, full black, but otherwise, they seem to render fine (c10t doesn't explode upon encountering them, at any rate). Defining a custom palette for blocks that fall within the normal range of 0-128 works fine. However, things start to break down as you progress further down. Specifically, the palette-reader seems to break down completely at block ID 238, preventing rendering entirely. I don't know much about how that system is written, but would extending rudimentary support up to block ID 255 be feasible?

blooest commented 13 years ago

Addendum: After doing some more testing, blocks over 237 don't render at all. I would imagine it has something to do with your implementation of the pine leaves, because 237 is where they seem to be located in your palette.

udoprog commented 13 years ago

This should just be a matter of incrementing MaterialCount to whatever value you feel like in src/mc/block.hpp - which could easily be made supported as a command line switch. Until I get the time, I'll leave this as an exercise for someone else:

Change MaterialCount to be a global variable (extern) instead of an enum value. Add the switch to modify it from the default, but checking that it satisfies 0 < MaterialCount < BlockTypeMax

BlockTypeMax is not defined yet, but depends on the size that can be stored in the level chunk.