World border does not render below y=0 / above y=255
Since its effects still apply above y=255 and below y=0, it should render there as well.
Code analysis
Code analysis by clove can be found in this comment.
Created Issue:
World border does not render below y=0 / above y=255
Since its effects still apply above y=255 and below y=0, it should render there as well.
Removed Category: (Unassigned)
Added Mojang Priority:
Important
Added Assignee:
[Mojang] Felix Jones
Added Attachments:
Added Affects Versions: 1.16.3-rc1
Added Affects Versions: 1.16.3
Changed Description:
Since its effects still apply above y=255 and below y=0, it should render there as well.
Code analysis
Code analysis by clove can be found in this comment .
Added Labels: far-distance-testing-area
Removed Labels: high-distance-current
Added Affects Versions: 20w45a
Added Affects Versions: 20w45a
Removed Affects Versions: 20w45a
Removed Labels: far-distance-testing-area
Added Linked Issues:
relates to
Added Linked Issues:
relates to
Added Linked Issues:
is blocked by
blocks
Removed Linked Issues:
is blocked by



Not bug, coded that way, world border stops at height limit since it is technically considered a solid block.
Do you have proof?
Clearly not. Also if it were to behave like a block, this would mean it wouldn't extend beyond these heights due to blocks simply not existing there in the first place.
Worldborder is not attached to max build height (i customized the height limit in the server.properties to 208)
Code analysis, if I missed something please tell me
The following is based on Minecraft 1.16.2 decompiled using the Yarn mappings and CFR.
In net.minecraft.client.render.WorldRenderer, the worldborder is rendered using the method renderWorldBorder.
The sides are rendering using 4 calls to a method.
this.method_22978(lv, f, g, h, lv2.getBoundEast(), 256, t, m + s, m + 0.0f);
this.method_22978(lv, f, g, h, lv2.getBoundEast(), 256, t + u, m + v + s, m + 0.0f);
this.method_22978(lv, f, g, h, lv2.getBoundEast(), 0, t + u, m + v + s, m + 128.0f);
this.method_22978(lv, f, g, h, lv2.getBoundEast(), 0, t, m + s, m + 128.0f);i
As you can see, it's hardcoded to use 256 and 0 for height. This could be fixed by changing those numbers to something like camera.getBlockPos().getY() - [distance] and + [distance].
(There may be a limitation in BufferBuilder preventing it from rendering under 0 and above 256)