Amulet-Team / Amulet-Map-Editor

A new Minecraft world editor and converter that supports all versions since Java 1.12 and Bedrock 1.7.
https://www.amuletmc.com/
1.73k stars 122 forks source link

Ability to tag selected chunks as "old" for blending #476

Open I-Johnny5-I opened 2 years ago

I-Johnny5-I commented 2 years ago

I looked into the region files of the worlds upgraded to 1.18. The only thing that is different between new and old chunks is "blending_data" - a compound tag that only converted chunks have. That tag is exactly what tells the game if the chunks nearby should be blended with it or not, but it seems like it doesn't matter which version of the game the chunk was generated with. I've managed to add this tag to some chunks on the edge of a region in a brand new world, then changed the seed with NBTStudio, removed surrounding regions and the new chunks have blended with the existing ones, despite the fact that they all were generated in 1.18. Adding that tag to many chunks through NBTStudio is very tideous so it would be nice to have the ability to do that using Amulet.

This would make possible a lot of cool things. For example, when 1.19 releases, instead of creating a new world or travelling far away to where chunks haven't generated yet just to find new biomes and structures, you would be able to just remove all the chunks except the ones with your builds, change the seed to make it generate different terrain, add that tag to remaining chunks and then the game will blend the new terrain with them.

Another example. You would be able to take chunks from multiple worlds and place them in one world so that the game will blend the terrain around them. It's actually already possible with chunks from older worlds, because they are tagged as old by the game itself, but in the future with chunks from 1.18+ it will be impossible, because non of them will be tagged and the terrain won't be blended. But, it will be possible, if we will have ability to tag chunks with the editor.

Such feature would also allow older Bedrock Edition worlds to be converted to Java Edition and to be blended in.

The tag: tag

Apparently, Minecraft adds some "heights" data to "blending_data" tag during blending. These "heights" should not be there if you want to repeat the blending process with other chunks. Безымянный

Some pictures for better understanding. This is what happens when game generates new terrain next to chunks from 1.17 and below: g240436

And this is what it does if the existing chunks are from 1.18: g207331

mikezimm commented 2 years ago

@I-Johnny5-I , That is a really cool find. I was playing around with blending in Java and was able to do some really interesting things. If you can do what you were suggesting, you might be able to do things like this:

Jungle - Badlands mineshaft

This was a single jungle chunk put in position near a badlands mineshaft. You can't see it but in the Java screenshot but the blending was so smooth it planted some trees in the mineshaft.

I think Java blending is not the same as bedrock. Java blends over more chunks where bedrock seems to blend over 1 chunk. image

Desert Oasis

This more like about 10 total chunks of jungle I brought into a normal desert. Makes it look like an oasis :)

image

Closeup of Badlands mineshaft

Blended in Java 1.18 Release Yellow arrows show the mineshaft rails image

UsualNote1 commented 2 years ago

Just want to put in a vote for this feature. This would create all kinds of opportunities for effectively blending different worlds. Plus, it would allow blending from worlds created on the C&C Datapack, which isn't currently possible.

Jason-Silla commented 2 years ago

I really hope this gets added soon as it would be able to fix the #490 bug as @mikezimm mentioned. While it won't fix it when you load in the world for the first time, it will make it so that the chunks that have the void area underneath be able to generate the new caves, which happened to my world.

cole00cole00 commented 2 years ago

I'd like to vote for this too - unless mojang lets us set junks to blend some otherway or in any version.

nny1001 commented 2 years ago

Would be super handy. As one might expect, many older worlds were vastly changed since 1.18. If I reset chunks as it stands now, there are hard lines cut everywhere where it was reset and it is really noticeable. I don't want to take the time to attempt to manually smooth this stuff out nor do I want to attempt to edit the chunks one by one using the prescribed method.. since it would be hundreds upon hundreds of them. It's worth noting that I am playing off an iPad on Bedrock.

PREMIEREHELL commented 2 years ago

Nice, if this works my blending plugin tool will work with both.

PREMIEREHELL commented 2 years ago

Looks like you need to change the data version back to 2860 for it to work

PREMIEREHELL commented 2 years ago

Its released, #plugin showcase Amulet discord. On my github.

nny1001 commented 2 years ago

Its released, #plugin showcase Amulet discord. On my github.

Color me dumb as hell, but how does one go about attempting to use your plugin?

PREMIEREHELL commented 2 years ago

Its released, #plugin showcase Amulet discord. On my github.

Color me dumb as hell, but how does one go about attempting to use your plugin?

Save the raw .py file to Amulet/plugins/operations and hit the reload button on the list of operations.

nny1001 commented 2 years ago

Its released, #plugin showcase Amulet discord. On my github.

Color me dumb as hell, but how does one go about attempting to use your plugin?

Save the raw .py file to Amulet/plugins/operations and hit the reload button on the list of operations.

Any chance you know the file path for Mac? It's being run through terminal and python, so I am at a loss. I have tried digging for a plugins folder but have come up empty.

PREMIEREHELL commented 2 years ago

its location is like /home/peter/.local/lib/python3.4/site-packages try in the terminal cd home ls "find your NAME" TAB should work cd NAME cd .local/lib/ HIT TAB TAB till you see .local/lib/site-packages then cd TAB till you see amulet_map_editor make your way to plugins operations

alexiscoutinho commented 1 year ago

By the way, MCA Selector already has this feature. Just beware of Querz/mcaselector#377 though.