
Then, it shuffles the list through Collections.shuffle() by passing on a custom Random object. First, the game generates a list of indices, 0 through 9 for the 10 pillars. In 1.9, Mojang changed the end pillars so they would generate in a circle with random heights.

Once you have fully reversed the structure seed, you can then proceed to brute-force across the upper 2^16 with a biome search. Those lower 48 bits are referred to as "structure seed".

This means that you only need to brute-force 2^48 seeds which is much more reasonable on a GPU(a few hours worth). In fact, ALL features in the game do this mistake: structures, decorators, heightmap, slime chunks, etc. What does that mean? Well, the upper 16 bits of the seed get trimmed off when passed on to the LCG. Looking closely, one realizes that the java Random class is a 48-bit linear congruential generator. When it comes to structures(villages, temples, monuments, etc) and decorators(dungeons, emerald ore, end gateways, etc), the game creates a object which is seeded with the world seed before sending it through a layer of hashing. By approaching the problem in a smart way, you can get rid of major brute-forcing overhead. Even though there are about 2^64 possible seeds, there is a lot of bias in how structure and decorator features are placed. It is totally possible to find a Minecraft seed in a reasonable amount of time on CPU. At least, not practical until we have quantum computers. So as you can see, the idea is lovely, but in practice finding a seed from landmark coordinates is impractical enough that no-one is going to write such a program – by the time it finishes running, we'd all be dead (and Minecraft will likely have changed its world-generation again…). That adds at least a few processor cycles to every time the program needs to check a particular seed for matches.
#MINECRAFT SERVER MAP VIEWER BROWSER GENERATOR#
If we're generous and say a fake-generation takes only 3 seconds, that gives us 856 years to find a match, on average.Īnd all that is ignoring the question of how the program would handle the fact that our coordinates of landmarks are going to be guesses (which block in a village is the coordinate the world generator got from the seed?) and not exact matches for what the seed actually produced.

#MINECRAFT SERVER MAP VIEWER BROWSER CRACKER#
A GPU-based password cracker on consumer-grade hardware today, very loosely, can try about a billion numbers a second, given a target result (such as our landmarks).Minecraft's seeds have 18 quintillion possible values.In computer security terms this is called a brute-force attack, and it can take a very long time:

Thus, what such a program would have to do is try every seed until it finds one that matches the landmarks. We can't reverse-calculate the seed no matter how many landmark coordinates we have, because the type of calculation Minecraft uses for seed generation is one-way. No, there is no such program and likely never will be.Īs a programming task, it's identical to the least efficient method of password cracking.
