Making a Perfect Minecraft Hexadecagon

minecraftA hexadecagon is the closest you can get to a circle when block modelling in Minecraft, although it seems like a lot of patience, a perfect regular hexadecagon can be made in Minecraft very easily
with the use of block modelling programs.

I will talk through the maths that I did in order to work out the measurements for the hexadecagon, and will discuss how to use them for creating hexadecagons in your own models.1

Making this shape in Minecraft will require 8 elements (pictured on the right). I made the size of the sides of the hexadecagon 1. From here I can work out the other size for the elements.

2I have cut down what we’re looking at to explain what is going on better. To work out the interior angles of any regular polygon you can draw lines from corners to the centre of the shape to form isosceles triangles. This will give you n triangles, to work out the angle x which will be the same for all triangles formed in this way is to divide 360 by n, where is the number of sides of the polygon. x = 360/16  x = 22.5

As the triangles we have formed are isosceles the other 2 angles are the same. = (180 – 22.5)/2  y = 78.75

3

From here I used an online triangle calculator to calculate the length of the other 2 sides in the triangle. The length is 2.563. I then created a larger triangle which consisited of the length of the element, (which I was trying to find) and one side of two isosceles triangles which were opposite each other in the hexadecagon p.

p is double the length of an isosceles triangle p = 2.563 x 2  p = 5.126 I again used the triangle calculator to find the length of the element, which worked out at 5.028.
4

This means you can create a perfect hexadecagon in Minecraft by using 5.028 x 1 elements, but this is actually a ratio, meaning you can use elements that are 10.056 x 2 or 15.084 x 3  (this is the size I used for the cauldron). You can use any size element as long as both measurements are multiplied by the same value.

If you wish to make a hexadecagon, akkechi has made some tutorial videos about constructing this shape in cubik studio over on the cubik studio forum simply change the values to be a ratio of 5.028:1.

Making a Perfect Minecraft Hexadecagon

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?