See attached screenshot.
Code analysis
The following is based on a decompiled version of MC 1.12 using mcp940.
Please link this in the description of the report.
In the method net.minecraft.world.gen.feature.WorldGenSpikes.generate() where it calculates the Y level of the spikes, it's set to 0. Which means they are gonna start from Y level 0.
for (BlockPos.MutableBlockPos blockpos$mutableblockpos : BlockPos.getAllInBoxMutable(new BlockPos(position.getX() - i, 0, position.getZ() - i), new BlockPos(position.getX() + i, this.spike.getHeight() + 10, position.getZ() + i)))
Code analysis by @unknown in this comment.
Linked issues
is duplicated by 11
Attachments
Comments 65
Relates to MC-83013 or even duplicates it (strangerwise this link was created by @unknown but somehow got removed)
Marcono1234: This one is "all obsidian towers spawn down to y=0", the other one is "obsidian towers spawn at the location the game determined for them, even if there is no floor for them to spawn on in that location".
A way to fix this bug is to make end pillar generation completely data-driven. Then the starting height could be set to anything other than 0.
Confirmed for 15w34a. It happens.