I am playing in a buffet beach biome world and also have a creative version I used to check out things like if I could get squid to spawn (apparently not, not even by /killing all the turtles).
So I was flying around underground in spectator mode in the creative world, looking for something or another, and after a while I started thinking I should have seen a stronghold so I used the /locate stronghold command and it came up empty. I checked in my survival world as well and nothing there either.
So, I'm just curious about why that would be, it seems sort of odd.
I've got shipwrecks all over the place, and mineshafts and dungeons so I obviously don't have structures turned off.
I know that strongholds used to try to avoid generating in water but did they avoid the ocean biomes or just check if there was water where they were trying to generate?
If they were avoiding ocean biomes (and only generating in oceans if they started inland and spread to the ocean) then maybe beaches were added to the don't generate here list and got left there when oceans were removed?
And does anybody know of any other biomes where strongholds don't generate?
They do generate in oceans (at least some variants), deserts and ice spikes biomes.
Strongholds should (or used to?) generate in any biome; what they (used to?) do is randomly choose a point within 112 blocks of the initially chosen point using the same algorithm that the game uses to find the world spawn point, where it checks a random number of points for a biome that matches one in a list of valid biomes, and if it doesn't find any matches it simply chooses the last point it checked.
Here is some code from 1.6.4 that shows what I mean:
This code determines the locations of each stronghold (in a loop which iterates 3 times, one for each stronghold in a default world):
Note the call to "getWorldChunkManager().findBiomePosition", which returns a location within 112 blocks of the initially chosen position if it found a location within one of the biomes in the provided list ("allowedBiomeGenBases"). Otherwise, it falls back to the initial location (note that the actual center of a stronghold can be up to 112 blocks away from this point, which is 640-1152 blocks away from the origin in 1.6.4; this means that strongholds can lie slightly outside of this range; for example, my first world has a stronghold that is 556 blocks away from the origin).
I have no way of knowing whether this has since changed, other than anecdotal evidence, but I'd expect that there would be a bug report for strongholds not generating in single biome worlds set to certain biomes if they now completely abort generation if they can't find a valid biome.
And this does seem to be the case, at least for single-biome Buffet worlds (they say they do generate in oceans and other such biomes in default worlds, so this seems to be a rather unusual bug, possibly related to the world type itself, though I can't picture how it could happen since the stronghold generator itself isn't dependent on the world type): MC-128762 Strongholds not generating in ocean worlds via buffet
That bug report doesn't quite match my experience, I have an ocean buffet world and a buffet ice spikes world with strongholds and they got a location with /locate and eyes of ender but no stronghold at that location, I get nothing with /locate in my beach world. (And found no stronghold in spectator mode.)
<My bad! I misremembered, the locate I did in the ocean world was for an ocean monument!>
I decided to test the eyes of ender, Minecraft won't even let me throw them, so I guess they start by doing do the equivalent of /locate.