In a resource pack, we can already create custom textures, models, blockstates, and sounds. One thing that I would really like to see is the addition of custom hitboxes in resource packs or data packs instead of being hard coded in the game.
Right now, as it is, if you make a custom block model that is a completely different block, for ex. 2 blocks tall instead of 1, or if you used a block that normally has the model as cross.json in an adventure map, for example, you will still have the old hitbox, and the player could just walk right through the rest of the model. It also looks a little tacky when a different shaped block is used.
A format similar to block models could be used to specify the cordinates of where the bounding box should start and end, rot. and etc. which can support multiple "elements" for complex shapes.
Block functions, would be a tough one, but it would be cool, nonetheless. Perhaps it could be a json file defining what the block actually does, from an array of builtin block functionality. For example, if you wanted a diorite or brick furnace, you could specify for the block to be a furnace, It would be cool if you could also specify how it reacts with redstone and other blocks.
This would go with the block definition where you can specify the internal name and id and etc.
for ex:
{ "id":5023, "internal_name":"brick_furnace", "creative_menu":"true", "category":"decoration", "rendering":{ "translucent":"false", "cull_other_blocks":"true", "hitbox":"hitboxes/brick_furnace" }, "crafting":{ "recipe":"recipes/brick_furnace", "craftable":"true" //the recipes argument will be optional" }, "blockstates":[{ "facing":{ "east","west","north","south"} //specified the possible values for blockstate key of "facing"" },{ "lit":{ "true","false"} //specified the possible values for blockstate key of "lit" },{ "variant":{ "normal","half","vertical"} }, "blockstates":"blockstates/brick_furnace" //links to the rescource pack blockstate json (which then links to the model and texture) ], "mining":{ "toolrequired":"stone_pickaxe", "hardness":2, //and etc. }, "sound":{ "walkon":"sounds_stone_step", "break":"sounds_stone_break" //links to either resource pack sound events, or built in sound events }, "functionality":[{ //advanced functionality properties would go here, but I don't know how those could go. }] }
This is exactly how I envision this working! This would create the ability to create totally new blocks that one could simply add with a resource and data pack.
the block definition json could go in datapacks/yourpack/data/namespace/blocks and the brick furnace would be referenced to as
namespace:brick_furnace
so for example:
/give @s namespace:brick_furnace
and
/setblock ~ ~ ~ namespace:brick_furnace[facing=south,variant=half]
would set a half brick furnace facing south.
This would go great with the current removal of the block id limit in 1.13, and would make great use of the datapacks and allow the use of custom blocks for adventure maps without loosing other blocks that you may need in your map without having to modify the jar or install forge just to play the map.
4