Este post no es la versión final. Lo voy actualizando con más información según avanza todo.
Estas últimas semanas estuve sacando las seeds de los vídeos de ElRichMC de las snapshots de la 26.4, así que ya tenía filtros y buscadores preparados para esta versión. El martes salió la 26.4-snapshot-7 con panorámica nueva, una cueva de hielo al lado de un océano helado. La de ElRich (vídeo) la saqué en menos de un minuto, pero eso ya es para otro post. Luego fui a por la panorámica con muchas ganas.
Llevo unos días con su seed y todavía no la tengo. Dejo aquí todo lo que he probado para que nadie tenga que repetirlo.
Las miniaturas que hice para la de ElRich
La panorámica salió el martes 3 de noviembre. Los 2^48281.474.976.710.656 seeds los terminé el viernes 6. Desde entonces solo he estado documentando todo y preparándome para cuando salga la panorámica de la versión Bedrock, que puede dar pistas nuevas.
Resumiendo, no es una seed de 32 bits2^32 = 4.294.967.296 seeds posibles (eso incluye todas las de texto), ni uno de los cerca de 18 millones de números típicos que alguien escribiría a mano, ni una seed aleatoria de Java de 48 bits2^48 = 281.474.976.710.656 seeds posibles en ninguna snapshot con cuevas de hielo (de la snapshot 3 a la 7). Para mí es una seed de 64 bits2^64 = 18.446.744.073.709.551.616 seeds posibles o algo muy raro. Si fuera una seed aleatoria de 48 bits de la s3 a la s7 ya la tendría, así que es más grande y no se puede probar entera.

Las panorámicas anteriores
Ya se han sacado varias panorámicas. La original la sacó Minecraft@Home con computación distribuida. La de Pale Garden también (código). La de Wilderness Bound la sacaron Bachale (coordenadas con la rotación de la hierba) y Fragrant_Result_186 (la seed con los álamos). Era el texto “NewPanoramaUpdatedFeatures” (vídeo).
Una seed que sale de “Crear mundo” sin escribir nada viene de un generador de 48 bits. Eso se puede comprobar con la propia seed. Las últimas no salen de ahí (van de la más nueva a la más vieja):
| Versión | Panorámica | Seed | Seed aleatoria (48 bits) |
|---|---|---|---|
| 26.3 | Wilderness Bound | 822930755 (“NewPanoramaUpdatedFeatures”) | no, es un texto |
| 26.2 | Chaos Cubed | 3520020736007334307 | no |
| 26w14a (April Fools) | Herdcraft Update | desconocida | ? |
| 26.1 | Tiny Takeover | -1701815224735573849 | no |
| 1.21.11 | Mounts of Mayhem | -6464260789280200050 | no |
| 1.21.9 | The Copper Age | 7904846446833094596 | no |
| 1.21.6 | Chase the Skies | 8819392414030687460 | sí |
| 1.21.5 | Spring to Life | 2043584565 (“Desert”) | no, es un texto |
| 1.21.4 | The Garden Awakens | -2132177964578008911 | sí |
| 1.21 | Tricky Trials | desconocida | ? |
| 24w14potato (April Fools) | Poisonous Potato Update | -4643277814275016011 | sí |
| 1.20 | Trails & Tales | 8554477380691140270 | sí |
| 1.19 | The Wild Update | -1696067516 (“thewildupdate”) | no, es un texto |
| 1.18 | Caves & Cliffs: Part II | 2151901553968352745 | sí (con los mismos 48 bits de abajo que la original) |
| 1.17 | Caves & Cliffs: Part I | -5535916609452687941 | sí |
| 1.16 | Nether Update | 6006096527635909600 | sí |
| 1.15 | Buzzy Bees | -4404205509303106230 | sí |
| 1.14 | Village & Pillage | 2802867088795589976 | sí |
| 1.13 | Update Aquatic | 1458140401 (“18w22a”) | no, es un texto |
| Beta 1.8 a 1.12 | Original | 25357015387625 (solo los 48 bits de abajo) | no se sabe |
Seeds de la wiki. xpple ya hizo una tabla así en el Discord. La de Tricky Trials y la de Herdcraft Update todavía no tienen seed conocida.
Así que empecé sabiendo que lo más probable era una seed de 64 bits. Pero esta es la primera en mucho tiempo que sale antes en Java que en Bedrock. Y si era de 48 bits se podía comprobar entera, así que lo intenté.
Las 6 caras
La panorámica es muy oscura. Si subes la exposición se ven la piedra, las menas y el hielo.
La cámara
La posición la sacó Laggy (i_am_sheep) con la rotación de las texturas de piedra (con su CoordsFinder). También vio que caía justo en el centro de un bloque y Bachale pasó el /tp redondeado. Yo la saqué con mi propia herramienta y da lo mismo:
/tp -175049.5 110 -269602.5 -135 0
fanda857 sacó parte de la Z con las nubes (con el cloudfinder de humhue).
Después lo comprobé yo con WebCoordsFinder en la cara 2, marcando 91 caras de piedra. Ojo, que busqué solo cerca de la posición que ya sabíamos, por eso solo tarda un minuto. Sin saberla hay que buscar en una zona muchísimo más grande, como hizo Laggy. Sale un solo resultado con 0 errores, a pocos bloques de la cámara:
Config para CoordsFinder (por si alguien quiere repetirlo)
También están los proyectos de WebCoordsFinder de la cara 2 y la cara 1 con las caras marcadas, para abrirlos directamente en su web.
algorithm = Vanilla-3
scanOrder = spiral
directions = [0, 90, 180, 270]
xRange = (-180000, -160000)
yRange = (100, 120)
zRange = (-270000, -260000)
errorTolerance = 0
cpuTileSize = (1024, 1024)
gpuTileSize = (8192, 8192)
verbose = false
[filter]
-13 3 -8 | 1 side
-13 3 -7 | 1 side
-14 3 -4 | 1 side
-14 3 -3 | 1 side
-15 3 -2 | 1 side
-13 4 -10 | 1 side
-13 4 -9 | 0 side
-13 4 -8 | 1 side
-13 4 -7 | 0 side
-14 4 -6 | 1 side
-14 4 -5 | 0 side
-14 4 -4 | 0 side
-14 4 -3 | 0 side
-15 4 -2 | 0 side
-10 5 -7 | 1 side
-11 5 -6 | 0 side
-10 5 -6 | 1 side
-12 5 -5 | 1 side
-13 5 -4 | 0 side
-13 5 -3 | 1 side
-14 5 -2 | 1 side
-14 5 -1 | 0 side
-9 6 -10 | 1 side
-9 6 -9 | 1 side
-10 6 -6 | 1 side
-10 6 -5 | 1 side
-11 6 -4 | 1 side
-13 6 -3 | 0 side
-13 6 -2 | 0 side
-14 6 -1 | 1 side
-14 6 0 | 1 side
-9 7 -10 | 0 side
-9 7 -9 | 0 side
-9 7 -6 | 1 side
-10 7 -5 | 0 side
-11 7 -4 | 0 side
-12 7 -3 | 0 side
-13 7 -2 | 1 side
-13 7 -1 | 0 side
-14 7 0 | 0 side
-14 7 1 | 0 side
-7 8 -11 | 0 side
-9 8 -10 | 0 side
-9 8 -9 | 0 side
-9 8 -8 | 1 side
-9 8 -7 | 0 side
-9 8 -6 | 0 side
-10 8 -5 | 1 side
-11 8 -4 | 1 side
-10 8 -4 | 1 side
-12 8 -3 | 1 side
-13 8 -2 | 0 side
-13 8 -1 | 0 side
-13 8 0 | 1 side
-14 8 1 | 0 side
-14 8 2 | 1 side
-8 9 -11 | 1 side
-9 9 -10 | 1 side
-9 9 -9 | 1 side
-9 9 -8 | 0 side
-9 9 -7 | 0 side
-9 9 -6 | 0 side
-9 9 -5 | 0 side
-13 9 -1 | 0 side
-14 9 1 | 1 side
-14 9 2 | 1 side
-8 10 -11 | 0 side
-9 10 -10 | 1 side
-9 10 -9 | 0 side
-9 10 -8 | 1 side
-9 10 -7 | 1 side
-9 10 -6 | 1 side
-9 10 -5 | 1 side
-8 11 -11 | 1 side
-9 11 -10 | 0 side
-9 11 -9 | 0 side
-9 11 -8 | 1 side
-9 11 -7 | 0 side
-9 11 -5 | 1 side
-8 12 -11 | 1 side
-9 12 -10 | 0 side
-9 12 -9 | 1 side
-9 12 -8 | 0 side
-9 12 -7 | 1 side
-9 12 -6 | 0 side
-5 13 -11 | 1 side
-6 13 -10 | 0 side
-6 13 -9 | 1 side
-6 13 -8 | 0 side
-7 13 -7 | 0 side
-7 13 -6 | 1 sideLos 3 filtros
Para descartar seeds usé tres cosas que se ven en la imagen.
Cristales de hielo
Se ven unos cuantos y son lo que más información da. Cada uno está en un sitio que depende de la seed, así que cuantos más se leen menos seeds encajan. Leí el bloque exacto de cada uno. Estos son los de la cara 1.
Andesita
Hay una mancha de andesita cerca de la cámara. Se ve gris dentro del hielo. Esta es la que usé, con sus bloques exactos.
Biomas
Los biomas se ven por la ventana de la cueva. Cueva de hielo alrededor de la cámara y océano helado con icebergs fuera. Esto solo lo miraba al final, para descartar las seeds que pasaban los otros dos filtros.
Comprobaciones
Me daba miedo que el modelo estuviera mal y se me pasara la seed buena. Así que antes de buscar hice esto.
- Generé mundos con seeds conocidas en esa snapshot y los comparé con mi simulación. Acertó los 641 cristales y las 156 vetas de andesita que comprobé, mientras que con una seed cualquiera casi ninguno coincide.
- El orden de la decoración cambia entre snapshots. Comparé los jar y busqué con las sales de cada versión, que están en la tabla de abajo.
- Leí los cristales varias veces, a mano y con mis detectores. Corregí un par al principio. Al final hubo otra lectura independiente sin mirar las anteriores. Salieron los mismos bloques, algunos con más dudas que otros.
- También marqué la cara 1 en WebCoordsFinder. Sale el mismo sitio. Los bloques donde están los cristales coinciden con los míos.
- Miré si podía ser un mundo de Bedrock pasado a Java (con Chunker, por ejemplo). Chunker copia los bloques tal cual, así que los cristales y la andesita estarían donde los pone Bedrock. Lo comprobé y no cuadran, los generó Java.
- Antes de alquilar las GPUs metí seeds de prueba plantadas, tambien con algunos cristales mal puestos a propósito. La búsqueda las sacó todas y cada GPU alquilada repetía esa prueba antes de empezar.
Estas son las sales que usé, sacadas del orden de decoración de cada jar. La sal es el índice más 10000 por el paso, como en el código de abajo.
| Feature | s3 | s4 y s5 | s6 y s7 |
|---|---|---|---|
ice_crystals | 70001 | 70001 | 70001 |
ice_cave_ore_andesite_upper | 60027 | 60028 | 60028 |
ore_andesite_upper | 60005 | 60006 | 60006 |
La s4 y la s5 tienen las mismas sales que la s6 y la s7. Lo que cambia es que de la s3 a la s5 ore_andesite_upper también puede salir dentro de la cueva, así que en esas versiones la mancha podía venir de cualquiera de las dos y probé las dos.
Las búsquedas
- Seeds de 32 bits, que incluyen todas las de texto, por biomas. Nada (M33_Galaxy llegó a lo mismo).
- Números que alguien podría escribir a mano en el campo de la seed, como fechas, versiones o números redondos. Unos 18 millones. Esa lista la hice con ayuda de IA mientras yo programaba otras cosas. Era fácil de revisar a mano. Tampoco salió nada.
- Todas las seeds que puede dar nextLong, para la s3 y para la s4-s7. En la 26.x una seed aleatoria sale de
RandomSource.create().nextLong(), que tiene 48 bits de estado (lo miré en el código del juego). nextLong junta dos números de 32 bits sacados de ese mismo estado, así que de las 2^64 seeds posibles como mucho puede dar 2^48 distintas. Probé todos esos estados aguantando algún cristal mal leído y ninguna seed llegó al paso de los biomas.
El miércoles ya casi me había rendido con Java. En el Discord dije que estaba un 99% seguro de que era una seed de Bedrock. Las últimas panorámicas no salían de nextLong y las seeds aleatorias de Bedrock tampoco. Y según la wiki la de Wilderness Bound se hizo copiando cosas del terreno de Bedrock. Así que pensaba esperar a la de Bedrock. Había lanzado una primera búsqueda de 48 bits en mi gráfica, pero solo había recorrido un trozo pequeño sin encontrar nada, así que eso no descartaba la seed.
Al día siguiente Laggy me recordó en el Discord que esta había salido antes en Java, así que no se podía descartar una seed de 48 bits. Yo ya lo sabía, pero me hizo insistir por si me estaba equivocando. Además no había otra opción, para los 64 bits solo quedaba esperar y los 48 sí se podían probar. Fui a por ello aunque era un poco gambling.
Con los primeros filtros mi gráfica tardaría como un mes. La pobre ya estaba sufriendo y yo me estaba volviendo un poco loco. Fui metiendo filtros más rápidos y al final alquilé GPUs (4 RTX 4090). La de la s4-s7 la acabé entre mi PC y las alquiladas. Luego hice la s3 entera en las alquiladas. Me daba igual pagar un poco con tal de tenerlo ya. Así aprovechaba el tiempo para otras cosas y si me había equivocado en algo lo sabía antes. Con todo eso una pasada entera bajó a más o menos una hora. En total unos 4 dólares.
Cuando acabó con cero resultados lo primero que pensé es que había hecho algo mal, así que volví a repasar todo lo de arriba.
Código de ejemplo
Esto es lo básico. La búsqueda de verdad está hecha en GPU en mi proyecto.
Esto sirve para ver si una seed sale del generador de 48 bits. Así hice la tabla de arriba.
def nextlong(seed):
seed &= 2**64 - 1
hi, lo = seed >> 32, seed & 0xffffffff
for c in (0, 1):
s = ((hi + c) & 0xffffffff) << 16
for k in range(65536):
n = (s | k) * 0x5DEECE66D + 0xB & 2**48 - 1
if n >> 16 == lo and lo >> 31 == c:
return True
return False
print(nextlong(2802867088795589976))
print(nextlong(7904846446833094596))La primera es la de la 1.14 y da True. La segunda es la de The Copper Age y da False. Una seed de 64 bits al azar pasa esto por casualidad más o menos 1 de cada 65536 veces.
Así sale la seed de cada feature de decoración en un chunk. Es el código del juego, resumido. Desde la 1.18 esa seed pasa por Xoroshiro, que usa los 64 bits enteros. Por eso no vale buscar solo los 48 bits de abajo como en versiones viejas. Hay que recorrer lo que da nextLong, que ya son seeds de 64 bits.
long setDecorationSeed(long worldSeed, int chunkMinX, int chunkMinZ) {
setSeed(worldSeed);
long a = nextLong() | 1L;
long b = nextLong() | 1L;
long seed = (long) chunkMinX * a + (long) chunkMinZ * b ^ worldSeed;
setSeed(seed);
return seed;
}
void setFeatureSeed(long decorationSeed, int index, int step) {
setSeed(decorationSeed + index + 10000L * step);
}Otras cosas que probé
- El punto rojizo del agua, que vi el primer día. Si fuera de un portal en ruinas o de unas ruinas oceánicas frías sería una estructura. Con eso se puede sacar la structure seed (los 48 bits de abajo) muy rápido, así que habría sido un filtro buenísimo. Comprobé su colocación con el juego, pero con la geometría no cuadraba. Es underwater_magma, magma del fondo del mar. Al ser un solo píxel tan lejos no sirve de filtro.
- Las texturas del frostbite para saber la snapshot. Son iguales en la s6 y la s7. Al final busqué en todas.
- Los carámbanos (
icicle_clusterylarge_icicle). Dependen del terreno, que es lento de simular. La base de los grandes se lee mal en la imagen. - Los icebergs del fondo. Están demasiado lejos, un par de píxeles por bloque.
- Estructuras. No se ve ninguna, así que por ahí no se puede sacar la structure seed (los 48 bits de abajo).
- Las seeds de las panorámicas anteriores, por si la habían reutilizado. Ninguna tiene cueva de hielo ahí.
- Los metadatos de las imágenes del juego. Nada.
- Los túneles de la cueva. Los carvers (los túneles y cañones de toda la vida) solo usan los 48 bits de abajo de la seed, pero esta es una cueva de ruido, así que no sirven.
Lo que creo
No es de 48 bits en la s3 a la s7. Lo único que no descarto es que la captura sea de una versión interna entre dos snapshots, con otro orden de decoración. Probar las 2^6418.446.744.073.709.551.616 seeds seeds es 65536 veces la búsqueda de 48 bits, unos 7 años con las mismas 4 GPUs, así que por fuerza bruta no.
Desde la 1.18.30 Bedrock acepta seeds de 64 bits. Además creé mundos nuevos en Bedrock sin escribir nada y ninguna seed salía de nextLong. Eso encajaría con las últimas panorámicas que no salen de nextLong.
Yo creo que la seed es de 64 bits (a lo mejor sacada de Bedrock, pero eso es una suposición) y que con esa seed se generó el mundo en Java.
Ahora toca esperar a la panorámica de Bedrock, que debería salir pronto.
Actualización
Todavía no hay seed, pero la gente de Minecraft@Home está reconstruyendo la cueva a mano en un servidor. Cuando salga la de Bedrock lo pondré. Si sale la seed lo celebraré aquí con muchos emojis.
Si tienes alguna pista, pásate por el Discord de Minecraft@Home.
Herramientas y fuentes
Las herramientas del post (leer las imágenes, simular los cristales y la andesita, las búsquedas en GPU, la comprobación con mundos reales) son de mi propio proyecto, que llevo haciendo desde 2020. También me apoyé en estas herramientas y fuentes de la comunidad para comprobar resultados y sacar ideas:
- cubiomes, que uso para los biomas.
- Los jar de cada snapshot, que ahora vienen sin ofuscar. Con eso se ve directamente cómo genera el juego. También los usé para generar mundos de prueba.
- WebCoordsFinder y CoordsFinder de Laggy, con los que sacó la cámara (la comparé con la que saqué yo).
- El cloudfinder de humhue, que usó fanda857 para las nubes.
- La wiki de Minecraft (Panorama y Historical panoramas), para las seeds y posiciones de las panorámicas anteriores.
- Minecraft@Home (GitHub), por cómo sacaron otras panorámicas, por ejemplo Pale Garden.
- Chunker, el conversor de mundos entre Java y Bedrock de Hive, para probar la idea de un mundo convertido.
- bedrock-samples, el repositorio de Mojang donde salen las panorámicas de Bedrock.
- vast.ai, para alquilar las GPUs.
- El Discord de Minecraft@Home, donde salieron muchas de las pistas.
Gracias a la gente de Minecraft@Home, Laggy (i_am_sheep), Bachale, fanda857, M33_Galaxy, HARYA, ui (xnuuizh), xpple, sage (.sage007), elenaran, Tom (tomlacko), Cactooz y Philipp_DE por el servidor donde están reconstruyendo la cueva a mano.
Gracias por leer :D


