Placement and Reinforcement
In the real world, structures require that the ground beneath them support the weight of the structure above. However since physics calculations are expensive and non-existent in Minecraft, we have to make due with a system that approximates the real world.
Floating structures give strategic advantages in War and in general look very ugly. To combat this issue, we designed the following system to prevent structures from floating.
Reinforcement Per Layer
Starting from the bottom layer of the structure, we look at each block that lies beneath all the way to bedrock. We then divide them into layers, based on the Y coordinate of the structure. Each layer is then checked for a percentage of "valid" blocks. If the percentage of "valid" blocks drops below 80%, that layer is deemed invalid and blocks can no longer be broken there.
Invalid Blocks are:
- Water (source and running)
- Lava (source and running)
Valid Blocks are:
- Everything Else.
For example, lets say that the bottom layer(aka the floor) of the bank structure contains 300 blocks and rests at Y = 65. We will then count all of the "valid" blocks on Y = 64. For this example, lets say that the number of valid blocks found on Y = 64 is 265. The percentage of "valid" blocks is therefor 265/300 or about 88%. This layer would be considered valid, and we would move on to the Y=63 layer.
When a valid block is removed, we would then subtract one from 265, and recalculate the percentage. If the percentage falls below 80%, blocks will no longer be able to be broken.
Reinforcement Values of Blocks
Each block type is given a "reinforcement value" which is added up and compared to the total number of blocks on the bottom layer of the structure. By placing blocks underneath your structure that have higher reinforcement values, you'll be able to dig larger basements underneath your structures. The following table lists the reinforcement values for each block type.
|Air, Torch, Water, Lava, Wood||0|
When a structure preview is placed, it will check to determine if the ground beneath it contains enough reinforcement value to allow the structure to be built. If not, it will display at which levels the structure is invalid and by how much.