Cubitect / cubiomes

C library that mimics the Minecraft biome generation.
MIT License
572 stars 101 forks source link

Legacy Console Edition biomes and Bedrock biomes #48

Open Delvin4519 opened 3 years ago

Delvin4519 commented 3 years ago

I was looking into the biome generations for Minecraft 1.2.1-1.6.4 and Legacy Console Editions.


For Legacy Console Edition, the versions of focus described below will mainly focus on TU32-53, which is the Java equivalent of 1.8.1 through 1.10.2. Legacy Console Edition was updated until TU68, the equivalent of Java 1.12.2 which was the final update before Xbox One/Switch moved to bedrock and Xbox 360/PS3/Wii U got discontinued.

To Support Legacy Console Edition versions TU32-TU53, we can just make a copy of the Java 1.10.2 generation, and make a single change below: image

Basically, all that needs to be done is to disable 2 Zoom Layers between Biome 1:256 and Biome Edge 1:64. This only applies to the Biome generation of the layer stack. The noise stack and the river stack are exactly the same as Java edition. This basically downscales the final biome map by 4x. Everything else is exactly the same as Java edition.

The spawnpoint and locations of villages and temples are exactly the same in Java version 1.10.2 and legacy console edition TU53, as they use the same exact salts, spacing, separation as Java edition 1.10.2. The only inaccuracies are strongholds and woodland mansions. Villages are correct for Xbox One/PS4/Switch but not Xbox 360/PS3/Wii U, this is due to the older consoles only having 864x864 worlds and the newer consoles have 5120x5120 worlds (originated at 0,0, up to 2560 blocks from 0,0).

That's basically it, legacy console is basically exactly the same as Java 1.10.2 (or 1.12.2), with a single change. Aside from strongholds (and woodland mansions) not working.


For Minecraft Java 1.2.1 - 1.6.4, the first 5 layers appear to be the same in Java 1.6.4 and below as well as Java 1.7.2+.

Villages, Witch Huts (1.4.2+), and Jungle/Desert Temples (1.3.1+), keep the same salts and everything. A lot of the layer seeds for the Java 1.7.2+ appear to have been carried over from the 1.6.4 and older versions.

image

Cubitect commented 3 years ago

After some consideration I have determined that I won't add support for non-Java versions. I don't have a way to get the necessary information first hand nor can I validate the code.

I would like to support older versions of Java Edition at some point though, at least for the main releases.

Delvin4519 commented 3 years ago

Yea, thing about Java editions prior to 1.2.1 is that biome data is not stored in the world save, so the earliest version that will work is 1.2.1.

Between Minecraft Beta 1.8 (the first release of legacy console), through Minecraft 1.6.4, legacy console edition generated EXACTLY like Java edition. Biomes were exactly the same, down to the exact block, same exact mountain, spawnpoint etc. Same exact Jungle Temple, same exact witch hut, same village. (Stronghold are always broken, I don't care about strongholds since with console edition limited worlds; strongholds are guaranteed so there's no point having a stronghold finder on console) Then when the 1.7.2 new biomes update came out, biome generation did differ, and I concluded it was a smaller biome size.

I have a MCP 9.4.0 copy I used to replicate biome generation on legacy console using MC 1.12.2, which was a single line of code , which I can then view it in AMIDST. While I don't have legacy console edition at all, I verified my findings for the new biomes update through various seed videos from legacy console edition. I verified each structure and those are my exact findings. I also got the same exact mountains and lakes with identical blocks on legacy console and Java edition without changing anything else at all.

I'll leave this for you so you can verify it, the same way I verified it (the video is 4 years ago, and I only reverse engineered MCP 9.4.0 last year, and it spat out the same results). 306959825 image

Chunkbase.com used to support console edition, so I'm sure the owner of chunkbase has some more info.

Minecraft 1.6.4 will definitely be interesting, since that version has the massive oceans, and snow biomes

Delvin4519 commented 3 years ago

Edited title to mention KaptainWutex/BiomeUtils supports 1.6.4 now, apparently 1.6.4 has some river generation bugs.

reedacartwright commented 3 years ago

After some consideration I have determined that I won't add support for non-Java versions. I don't have a way to get the necessary information first hand nor can I validate the code.

I'm interested in getting library support for Bedrock biomes, and I can help with this. I've been reverse engineering Bedrock for two years now and if I understand what I'm looking at, I can figure out the differences between the versions. I can also read the biome data from existing worlds and compare it to the output to validate the results.