Changes to cobblestone walls

Why change cobblestone walls?
Currently cobblestone walls have a multi-part blockstate file for 5 blockstates: north, east, south, west, and up. Up is the blockstate that I will be talking about.

It is hardcoded into Minecraft for the up blockstate to be set to true under certain conditions: When a wall has no connections, one connection, two connections if they are 90° (ie north and east), three connections, four connections, and finally when a block is above the wall. This means that the blockstate for walls currently contains:

{ “when”: { “up”: “true” },
“apply”: { “model”: “cobblestone_wall_post” }

This means that the cobblestone post is applied when any of the above conditions are met.
This also means the only time a wall can actually detect when there is a block above it is when a wall has 2 connections at 180° (ie north and south) this is the only situation in which cobblestone walls won’t have the up blockstate as true. All these situations are shown below note the blockstates on the right of the pictures.

This currently means that you can’t use walls as a multi-part model for when a block is above it unless in very specific situations.
Walls are the only block in Minecraft which have an up blockstate but they can’t be utilised in maps or resourcepacks to create any block model which can change when another block is above it.

How could this be different?
As this is hardcoded into Minecraft we would have to change this, the up blockstate would need to only return true only when there is a block above a wall. The blockstate file would then need to be different:

{ “when”: { “OR”: [
{“north”: “false”, “east”: “false”, “south”: “false”, “west”: “false”},
{“north”: “true”, “east”: “true”, “south”: “true”, “west”: “true”},
{“north”: “true”, “south”: “false” },
{“south”: “true”, “north”: “false” },
{“east”: “true”, “west”: “false”},
{“west”: “true”, “east”: “false”},
{“up”: “true”}
“apply”: { “model”: “cobblestone_wall_post” }

This rather long “when” statement should allow for the cobblestone post model to be applied to a cobblestone wall when any of the before mentioned situations occur.
The other “when” statements would need to be added to allow for cobblestone walls to seemingly connect to one another and this blockstate would allow for cobblestone walls to act exactly the same as they do now.

Cobblestone walls would look exactly the same they would also work the same, but they could be changed to the will of a map maker or resourcepack creator to create some rather more technical block models which could be affected by blocks above them.

Changes to cobblestone walls

Entity Modelling Workarounds

A few ideas have been floating around my head recently. With the current lack of entity modelling in the java version of Minecraft, I have been thinking about basic workarounds for this problem.

Mobs – certain mobs will be easier than others, but the general gist is to texture parts of the mob invisible (head and arms will be easiest to replace) and giving the mob models in it’s hands or on it’s head which are then rendered as the mobs arms or head.

Chests – trapped chest will work best as you can detect whether it is open based on the redstone signal output. Placing an entity on top of the chest with the model  be rendered on the entity ie placed in the entity’s head, using the redstone output to allow for a different model to be rendered when the chest is opened.

Boats – with the ability to have two passengers in a boat, one of them could be an entity with a model renedered on it, with the other being a player this would allow for such things as small airships which the player can actually fly.

Entity Modelling Workarounds

What is this?

This post mainly exists to give a little more info on my website.

Well I have finally started to post on my site, I have begun one of hopefully many topics on the more technical side of block modelling in Minecraft. I hope a few people learn something and apply what they know in the future to hopefully enhance and optimise their own block models.

What is this?