mojira.dev
MC-97813

Old strongholds "change position" and distance to origin is too high

Strongholds that generated in 1.8 won't generate in the same position in 1.9pre2.
Also they generate at least 1408 blocks away from origin (in 1.8 it was 640 blocks).
This was a side effect of the fix for MC-92289 which changed the distance calculation of strongholds.

How it was

*Strongholds plotted for 1.8 (just the inner circle/triangle) and 16w05b (just adds extra circles)*¹

[media][media]

Distance calculation for 1.8 and 16w05b:

MapGenStronghold.java

double distance = (1.25D * (double) circle + rand.nextDouble()) * this.const32 * (double) circle;

How it currently is

*Strongholds plotted for 1.8 and 1.9pre2 (notice how it loses the old inner circle)*¹

[media][media]

1.9pre2:

MapGenStronghold.java

double distance = 4.0D * this.const32 + this.const32 * (double)circle * 6.0D + (rand.nextDouble() - 0.5D) * this.const32 * 2.5D;

Adjusted

*Stronghold plotted for 1.8 and an adjusted version to keep the inner circle the same*¹

[media][media]

MapGenStronghold.java

double distance = 1.75D * this.const32 + this.const32 * (double)circle * 6.0D + (rand.nextDouble() - 0.5D) * this.const32 * (circle == 0 ? 1.0D : 2.5D);

It would be preferable if the old stronghold positions would remain the same.
Also the increased distance to origin and therefore also to spawn has the disadvantage of longer walkways when cycling between the end and the over world.
In 1.8 the inner circle was between 640 and 1152 blocks from origin.
In 1.9pre2 the inner circle lies between 1408 and 2048 blocks from origin.
With the random placement of the spawn point it wouldn't be uncommon to have distances of several thousand blocks to the first accessible end portal.
As the end is a major component of the game (especially in 1.9) it shouldn't be that far away from the world center.

@edit It turns out eye of enders also behave weird when it comes to the strongholds that were generated in 1.8 (when you upgrade a world to 1.9pre2).
It still is affected by the old stronghold but misses the portal room by some chunks.

Other alternatives:

Increasing spread and increasing interval (Pretty much 16w05b with the fix of MC-92289)

[media]

MapGenStronghold.java

double distance = (1.25D * ((double) circle + 1.0) + rand.nextDouble()) * this.const32 * (double) (circle / 1.9 + 1.0);

Constant spread and constant interval

[media]

MapGenStronghold.java

double distance = 1.75D * this.const32 + this.const32 * (double)circle * 6.0D + (rand.nextDouble() - 0.5D) * this.const32;

Increasing spread and constant interval

[media]

MapGenStronghold.java

double distance = 1.75D * this.const32 + this.const32 * (double)circle * 6.0D + (rand.nextDouble() - 0.5D) * this.const32 * (1.0 + circle / 1.75D);

Evenly distributed (has a rare chance of double strongholds though)

[media]

MapGenStronghold.java

double distance = 1.75D * this.const32 + this.const32 * (double)circle * 6.0D + (rand.nextDouble() - 0.5D) * this.const32 * (circle == 0 ? 1.0D : 6.0D);

1. The plots are the strongholds for 1000 seeds each.

Attachments

Comments

migrated

Confirmed, I tested with pre-2.
Attaching screenshots of a fresh world, same seed (12345), one time generated in 1.9 pre-2, one time generated in 1.8.9.

Teleported myself to the Stronghold-positions provided via AMIDST.

In 1.8.9 they generated as calculated with AMIDST, in 1.9 they don't.

Strongholds generating not before 1.400 and 2.000 blocks from origin is too far.

migrated

I made a world in one of the latest snapshots, will this effect me?

migrated

@unknown Depends in which snapshot you started the world.
It changed with snapshot 16w06.
If you started your world in a snapshot before, then it should still generate the initial 3 Strongholds where they would also be generated in 1.8, and of course also the other 125 Strongholds.

If you started your world at least with 16w06 then, yes, it does affect you.

Panda4994

@unknown If it was in 15w06a or later they will spawn like on the red circle. So further away from spawn.

migrated

Can confirm, 16w05b was the last snapshot the Strongholds generated in those positions like they would in 1.8.x.

Screenshot as proof attached.

Irbis

This is what in my opinion should look like:
https://bugs.mojang.com/secure/attachment/111865/PortalPositions_improved.png
Increasing spread and increasing interval

double distance = (1.25D * ((double) circle + 1.0) + rand.nextDouble()) * this.const32 * (double) (circle / 1.9 + 1.0);

will be good for all sizes of maps, from small 3k x 3k to big ones.

migrated

Accessibility in continuously used survival world VS challenge in 'roguelike' playing. Changeable property in custom world?

michael

The stronghold generation was tweaked to have a better distribution of strongholds in the world. Today I fixed another bug related to strongholds, so it will be possible again to find older, already generated strongholds with ender eyes again, so existing strongholds in worlds are not "broken".

Irbis

What about small worlds? Low performence serwers have world border quite close to center of map, since there can't be any stronghold within 1500m from center, they will not be able to enter End dimension. Reopen please.

migrated

They can also just move the center of the world border

Irbis

If they will remember/know about this change.

migrated

And if they don't you can remind them, it's their job to keep their server up-to-date

migrated

@unknown That means they won't get the full "inner circle" (triangle) of the first 3 Strongholds, at maximum 2 of them.. plus, of course, the other share of those 125 SH which happen to be within those narrow worldborders (or also not).

@unknown Good that the ender eyes problem is solved }=)
Just wondering why the adjusted version (which contains better distribution of SH) is not possible which contain the old 3 inner circle Stronghold positionings?

double distance = 1.75D * this.const32 + this.const32 * (double)circle * 6.0D + (rand.nextDouble() - 0.5D) * this.const32 * (circle == 0 ? 1.0D : 2.5D);

I don't get why this is not possible, considering the old (in 1.8 generated) Strongholds wouldn't get overwritten when taking this code?

Panda4994

@unknown Thanks for looking into it and fixing the eye of ender issue.
I was hoping the better distribution could be used while keeping the inner circle at the same size as it used to be as the increased distance to the first strongholds feels quite far to me as a survival player.

Thanks anyway 🙂

migrated

Noooooooo ! While fixing MC-89399 made 1.9 a viable speedrunning version, this bug may force the speedrunning community to stay in 1.8. That's sad.

migrated

@unknown you're quite late to the party };]
I tried my best to convince them, Panda as well.
The fix would have been easy and not touched pre-1.9 generated Strongholds, but oh well, can't be helped now.
Aside from the Speedrunners, it's a hard slap for technical Survivalplayers in general.

This is not a discussion forum, etc., go to Mojira Reddit and so on

migrated

With the random placement of the spawn point it wouldn't be uncommon to have distances of several thousand blocks to the first accessible end portal.
As the end is a major component of the game (especially in 1.9) it shouldn't be that far away from the world center. In Minecraft circle generator you can perfectly create one.

Panda4994

michael

Unconfirmed

Minecraft 1.9 Pre-Release 1, Minecraft 1.9 Pre-Release 2

Minecraft 1.9 Pre-Release 3

Retrieved