The chance of anybody having found a full portal is extremely low but not nonexistent; there is a one-in-trillion chance of all 12 eyes being placed and if every one of the 600 million registered players found 10 portals (6 billion total) there is a one-in-167 chance of finding at least one full portal, assuming that every player created worlds with unique seeds and/or in different versions (for example, the demo version uses a fixed seed. Otherwise, the chance of randomly getting the same seed is quite low on Java (2^48 randomly generated seeds distributed across the full 64 bit seed space, plus 2^32 seeds hashed from strings (about 65536 of these will match a randomly generated seed); I doubt many players use seeds that do not fall within the ranges of these (all possible numerical seeds amount to about 65536 times more seeds). Bedrock only uses 32 bit seeds and is much more popular so collisions are more likely here). Either way, it is still possible for even several full portals to have been found by random chance (of course, verification would require this happening while somebody was recording).
I was interested in the code of how it works so I dug through the 1.16.4 code. As you can see, each eye has a 10% chance and if by chance all eyes are set, the flag is set and the end portal is naturally generated (making end portals one of the rarest naturally generated blocks?)
I'm interested in how you would predict the RNG: maybe a tool like https://github.com/toolbox4minecraft/amidst can fully simulate world gen and simulate through all the RNG calls?
AFAIK the RNG p_230383_4_ is used only for world gen? I didn't trace the actual very first initialization of the object.
I'm interested in how you would predict the RNG: maybe a tool like https://github.com/toolbox4minecraft/amidst can fully simulate world gen and simulate through all the RNG calls?
AFAIK the RNG p_230383_4_ is used only for world gen? I didn't trace the actual very first initialization of the object.
I don't know about 1.16.4 but in 1.6.4 the RNG is seeded according to the coordinates of the chunk currently being decorated:
However, at least in 1.6.4, you also need to consider whether mineshafts or villages have generated in the same chunk, as well as other parts of the stronghold itself (whose structure is determined by a different RNG which creates a map of the entire structure and is seeded based on the starting chunk, which is in turn determined by an algorithm which places strongholds in predetermined locations within rings). All of this code can be extracted from the game, as I've done myself when making my own underground mapping tool which maps caves, mineshafts, and strongholds (though it can't accurately simulate whether portal blocks are filled. You also don't need to create a map, only keep track of the number of filled portal frames):
Seed is TMCWv4 (numeric value is -1816924181)
Center is 1136, -624 and radius is 128 blocks (from 1008, -752 to 1263, -497)
Showing up to 10 results for each category. Locations are the center unless noted.
Locations of ravine cave systems:
1: 1080 -536
Locations of abandoned mineshafts by size (center of central room):
1: 1192 -696 (size: 152)
Locations of nearest strongholds (center of starting staircase):
1: 1140 -620 (size: 180)
Generating map...
Generating caves... 6% 12% 18% 25% 31% 37% 43% 50% 56% 62% 68% 75% 81% 87% 93% 100%
Rendering map... 6% 12% 18% 25% 31% 37% 43% 50% 56% 62% 68% 75% 81% 87% 93% 100%
Total air volume is 280982 blocks (7.266856%)
Saving map...
Also, the seed for the portal can be from up to 4 different chunks so you need to simulate a 2x2 chunk area centered on the portal (only one chunk may be needed if you know the exact location of the portal, which is placed with offsets ranging from 3-7, 8-12, which are relative to the northwest corner of the room prior to rotation). In any case, while I don't know the exact details of their implementations people have made tools that can mass-search seeds for full portals (one is mentioned in post #9 in this thread; the archived page linked to includes a video titled "[Minecraft] "Seed Finder" explanation for the eyed portals" that explains how it was done; to make things easier they simply modified the game itself, rather than making a standalone tool).
Also the chances are higher than 1/1 trillion since a portal can generate over multiple chunks, and if the chunk generates 12 eyes, then the portal block still appears, like in the recent SSG seed 2483313382402348964. Probably.
Also the chances are higher than 1/1 trillion since a portal can generate over multiple chunks, and if the chunk generates 12 eyes, then the portal block still appears, like in the recent SSG seed 2483313382402348964. Probably.
You mean if the chunks generate 12 eyes between them.
Interesting find
I believe they mean that if any single chunk that contains part of the portal happens to roll 12 eyes then the portal is automatically filled even if the other 1-3 chunks would not generate a full portal, so in the case of a portal spanning 4 chunks the chance is 1 in 250 billion instead of 1 in 1 trillion. I noticed that the screenshot in the link shows that only one of the 9 portal blocks was actually placed with the two adjacent portal frames filled, which is consistent with this (large structures like strongholds generate in such a way that only blocks within the chunk currently being decorated are placed).
IMO, this should be considered to be a bug - my own fix for filled portals not activating (this was not fixed in vanilla until 1.9) uses the block in the center of the portal to determine the seed for the entire frame, independent of the decorator RNG:
// Calculates whether eyes are present in portal frame, also counts number of eyes present
// Seed is based on the block in the middle of the portal
long lcg = par1World.getSeed() + (long)this.getYWithOffset(3);
lcg *= lcg * 6364136223846793005L + 1442695040888963407L;
lcg += (long)this.getXWithOffset(5, 10);
lcg *= lcg * 6364136223846793005L + 1442695040888963407L;
lcg += (long)this.getZWithOffset(5, 10);
lcg *= lcg * 6364136223846793005L + 1442695040888963407L;
byte[] eyes = new byte[12];
int eyeCount = 0;
for (int i = 0; i < 12; ++i)
{
lcg = lcg * 2862933555777941757L + 3037000493L;
// Equivalent to nextInt(10)
if ((10 * (int)(lcg >>> 40)) >>> 24 == 0)
{
eyes[i] = 4;
++eyeCount;
}
}
this.placeBlockAtCurrentPosition(par1World, BlockStates.endPortalFrame, var14 + eyes[0], 4, 3, 8, par3StructureBoundingBox);
this.placeBlockAtCurrentPosition(par1World, BlockStates.endPortalFrame, var14 + eyes[1], 5, 3, 8, par3StructureBoundingBox);
this.placeBlockAtCurrentPosition(par1World, BlockStates.endPortalFrame, var14 + eyes[2], 6, 3, 8, par3StructureBoundingBox);
this.placeBlockAtCurrentPosition(par1World, BlockStates.endPortalFrame, var7 + eyes[3], 4, 3, 12, par3StructureBoundingBox);
this.placeBlockAtCurrentPosition(par1World, BlockStates.endPortalFrame, var7 + eyes[4], 5, 3, 12, par3StructureBoundingBox);
this.placeBlockAtCurrentPosition(par1World, BlockStates.endPortalFrame, var7 + eyes[5], 6, 3, 12, par3StructureBoundingBox);
this.placeBlockAtCurrentPosition(par1World, BlockStates.endPortalFrame, var8 + eyes[6], 3, 3, 9, par3StructureBoundingBox);
this.placeBlockAtCurrentPosition(par1World, BlockStates.endPortalFrame, var8 + eyes[7], 3, 3, 10, par3StructureBoundingBox);
this.placeBlockAtCurrentPosition(par1World, BlockStates.endPortalFrame, var8 + eyes[8], 3, 3, 11, par3StructureBoundingBox);
this.placeBlockAtCurrentPosition(par1World, BlockStates.endPortalFrame, var9 + eyes[9], 7, 3, 9, par3StructureBoundingBox);
this.placeBlockAtCurrentPosition(par1World, BlockStates.endPortalFrame, var9 + eyes[10], 7, 3, 10, par3StructureBoundingBox);
this.placeBlockAtCurrentPosition(par1World, BlockStates.endPortalFrame, var9 + eyes[11], 7, 3, 11, par3StructureBoundingBox);
// Places end portal blocks if all 12 eyes are present
if (eyeCount == 12)
{
int var13 = this.getYWithOffset(3);
for (int x = 4; x <= 6; ++x)
{
for (int z = 9; z <= 11; ++z)
{
int var10 = this.getXWithOffset(x, z);
int var11 = this.getZWithOffset(x, z);
if (par3StructureBoundingBox.isVecInside(var10, var13, var11))
{
par1World.setTileEntity(var10, var13, var11, BlockStates.endPortal, 0);
}
}
}
}
I imagine that vanilla 1.9+ has a similar method of checking whether 12 eyes are present but the state of the decorator RNG will be different for each chunk so it will only be valid for a single chunk and may also change depending on the order chunks are generated in (at least in vanilla 1.6.4 mineshafts and villages generate before strongholds and both call the RNG some number of times; as demonstrated here, they can generate differently and affect all decorations down the line, including end portals, but not the overall layout of the structure, which is seeded with a separate RNG).
I also found a bug report about this, along with a clearer example of what is going on (in this case the portal is within 2 chunks with 1/3 of the frame/portal filled):
I believe they mean that if any single chunk that contains part of the portal happens to roll 12 eyes then the portal is automatically filled even if the other 1-3 chunks would not generate a full portal, so in the case of a portal spanning 4 chunks the chance is 1 in 250 billion instead of 1 in 1 trillion. I noticed that the screenshot in the link shows that only one of the 9 portal blocks was actually placed with the two adjacent portal frames filled, which is consistent with this (large structures like strongholds generate in such a way that only blocks within the chunk currently being decorated are placed).
So far there is no verified case of someone finding a 12 eye portal WITHOUT a seed bot
How would you verify that?
Just testing.
Generate the world on a stream or something? I have no idea
The chance of anybody having found a full portal is extremely low but not nonexistent; there is a one-in-trillion chance of all 12 eyes being placed and if every one of the 600 million registered players found 10 portals (6 billion total) there is a one-in-167 chance of finding at least one full portal, assuming that every player created worlds with unique seeds and/or in different versions (for example, the demo version uses a fixed seed. Otherwise, the chance of randomly getting the same seed is quite low on Java (2^48 randomly generated seeds distributed across the full 64 bit seed space, plus 2^32 seeds hashed from strings (about 65536 of these will match a randomly generated seed); I doubt many players use seeds that do not fall within the ranges of these (all possible numerical seeds amount to about 65536 times more seeds). Bedrock only uses 32 bit seeds and is much more popular so collisions are more likely here). Either way, it is still possible for even several full portals to have been found by random chance (of course, verification would require this happening while somebody was recording).
TheMasterCaver's First World - possibly the most caved-out world in Minecraft history - includes world download.
TheMasterCaver's World - my own version of Minecraft largely based on my views of how the game should have evolved since 1.6.4.
Why do I still play in 1.6.4?
I was interested in the code of how it works so I dug through the 1.16.4 code. As you can see, each eye has a 10% chance and if by chance all eyes are set, the flag is set and the end portal is naturally generated (making end portals one of the rarest naturally generated blocks?)
I'm interested in how you would predict the RNG: maybe a tool like https://github.com/toolbox4minecraft/amidst can fully simulate world gen and simulate through all the RNG calls?
AFAIK the RNG p_230383_4_ is used only for world gen? I didn't trace the actual very first initialization of the object.
Interested in pro redstone? Check out ORE at openredstone.org
I don't know about 1.16.4 but in 1.6.4 the RNG is seeded according to the coordinates of the chunk currently being decorated:
However, at least in 1.6.4, you also need to consider whether mineshafts or villages have generated in the same chunk, as well as other parts of the stronghold itself (whose structure is determined by a different RNG which creates a map of the entire structure and is seeded based on the starting chunk, which is in turn determined by an algorithm which places strongholds in predetermined locations within rings). All of this code can be extracted from the game, as I've done myself when making my own underground mapping tool which maps caves, mineshafts, and strongholds (though it can't accurately simulate whether portal blocks are filled. You also don't need to create a map, only keep track of the number of filled portal frames):
Also, the seed for the portal can be from up to 4 different chunks so you need to simulate a 2x2 chunk area centered on the portal (only one chunk may be needed if you know the exact location of the portal, which is placed with offsets ranging from 3-7, 8-12, which are relative to the northwest corner of the room prior to rotation). In any case, while I don't know the exact details of their implementations people have made tools that can mass-search seeds for full portals (one is mentioned in post #9 in this thread; the archived page linked to includes a video titled "[Minecraft] "Seed Finder" explanation for the eyed portals" that explains how it was done; to make things easier they simply modified the game itself, rather than making a standalone tool).
TheMasterCaver's First World - possibly the most caved-out world in Minecraft history - includes world download.
TheMasterCaver's World - my own version of Minecraft largely based on my views of how the game should have evolved since 1.6.4.
Why do I still play in 1.6.4?
Also the chances are higher than 1/1 trillion since a portal can generate over multiple chunks, and if the chunk generates 12 eyes, then the portal block still appears, like in the recent SSG seed 2483313382402348964. Probably.
https://www.reddit.com/r/MinecraftSpeedrun/comments/ll5s30/opened_end_portal_without_12_ender_eyes_on_it/gnnj8e2/
Interested in pro redstone? Check out ORE at openredstone.org
You mean if the chunks generate 12 eyes between them.
Interesting find
I believe they mean that if any single chunk that contains part of the portal happens to roll 12 eyes then the portal is automatically filled even if the other 1-3 chunks would not generate a full portal, so in the case of a portal spanning 4 chunks the chance is 1 in 250 billion instead of 1 in 1 trillion. I noticed that the screenshot in the link shows that only one of the 9 portal blocks was actually placed with the two adjacent portal frames filled, which is consistent with this (large structures like strongholds generate in such a way that only blocks within the chunk currently being decorated are placed).
IMO, this should be considered to be a bug - my own fix for filled portals not activating (this was not fixed in vanilla until 1.9) uses the block in the center of the portal to determine the seed for the entire frame, independent of the decorator RNG:
I imagine that vanilla 1.9+ has a similar method of checking whether 12 eyes are present but the state of the decorator RNG will be different for each chunk so it will only be valid for a single chunk and may also change depending on the order chunks are generated in (at least in vanilla 1.6.4 mineshafts and villages generate before strongholds and both call the RNG some number of times; as demonstrated here, they can generate differently and affect all decorations down the line, including end portals, but not the overall layout of the structure, which is seeded with a separate RNG).
I also found a bug report about this, along with a clearer example of what is going on (in this case the portal is within 2 chunks with 1/3 of the frame/portal filled):
MC-213678 End portal generates incomplete
TheMasterCaver's First World - possibly the most caved-out world in Minecraft history - includes world download.
TheMasterCaver's World - my own version of Minecraft largely based on my views of how the game should have evolved since 1.6.4.
Why do I still play in 1.6.4?
There is a seed that has all 12 ender eyes filled in for 1.12, it's 95148563599334434.
did i necropost
NOOB1234 SUCKS
nope, I mean this
the chances are 1.266 / 1 trillion instead of 1 / 1 trillion if this assumption and the assumption that portals are generated uniformly hold. See https://gaming.stackexchange.com/questions/382000/how-likely-is-it-for-an-end-portal-to-already-be-complete/384002#384002 for math
Interested in pro redstone? Check out ORE at openredstone.org