MC2MT - C++ tool to convert Minecraft 1.12 worlds into Mineclonia

Post Reply
User avatar
ROllerozxa
Member
Posts: 174
Joined: Sun Apr 25, 2021 12:25
GitHub: ROllerozxa
IRC: ROllerozxa
In-game: ROllerozxa
Location: Sweden
Contact:

MC2MT - C++ tool to convert Minecraft 1.12 worlds into Mineclonia

by ROllerozxa » Post

MC2MT is a tool written in C++ that can convert a Minecraft 1.12 world (Anvil worlds in any version before The Flattening should also work) for use with Minetest. More specifically it maps the Minecraft block IDs and their datavalues into their corresponding itemstring and param2 value in Mineclonia.

I've forked it from the original MC2MT project by ShadowNinja. Compared to the original project whose mappings map to a Minetest Game mod soup, converting to a MineClone based game such as Mineclonia allows all blocks in the world to be converted as close to 1:1 to their Minecraft counterpart as the current state of Mineclonia allows. My fork also flips the world on the Z axis, something mcimport does to preserve the direction of north in the world (i.e. if you generate a preview of the world with minetestmapper, north will be in the same direction as in Minecraft). There are also some general improvements done to it such as fixing Windows builds, having it write an accompanying world.mt file as well as a worldmod to set the mapgen to singlenode.

Compared to the mcimport tool written in Python, MC2MT is extremely fast, both due to being written in C++ and due to the conversion process being multithreaded. I've converted large Minecraft worlds using this tool (>1GB) that finishes in about a minute or two, that would take several hours with the Python script. The mappings used are partially based off of MysticTempest's MineClone2 mappings for mcimport so MC2MT should convert similarly to those.

The tool works best at converting basic building blocks. More complex blocks with inventories currently don't fully convert over (there is code to convert e.g. chests into their MTG counterpart, but this hasn't been adjusted for MineClone) and will be mostly decorative. Any redstone more complex than a pressure plate is most likely not going to work. Nontheless, if you want to convert an old personal Minecraft world or some Minecraft map download from somewhere, it works fine for exploring it inside of Minetest. Below is how my old Minecraft survival world looks when converted:

Image

For instructions on how to use, see the README. Binary builds are provided for Windows and Linux, otherwise you can compile from source.

User avatar
Sharpik
Member
Posts: 30
Joined: Tue Feb 04, 2020 21:27
GitHub: Sharpik
Location: Prague, Czech Republic

Re: MC2MT - C++ tool to convert Minecraft 1.12 worlds into Mineclonia

by Sharpik » Post

OH my :))))))
That's awesome :)

Could you please make it usable by config to convert even to normal Minetest and add moded blocks?

THX

User avatar
abo45
New member
Posts: 1
Joined: Sun Jun 23, 2024 16:30

Re: MC2MT - C++ tool to convert Minecraft 1.12 worlds into Mineclonia

by abo45 » Post

Hi,

Your tool is exactly what I need, thanks. Sadly, I get an error when converting a 1.12 world (previously converted with Amulet) on two different platforms (Windows & Android) :
std::runtime_error: invalid tag type 12 at 59
Do you have an idea of what can cause this ? Thanks in advance.
(PS: sorry if that's not the right place to post that but I don't really know where I could)

Kazooo
Member
Posts: 34
Joined: Sat Apr 13, 2024 23:06
GitHub: Kazooo100
In-game: Kazooo

Re: MC2MT - C++ tool to convert Minecraft 1.12 worlds into Mineclonia

by Kazooo » Post

abo45 wrote:
Sun Jun 23, 2024 16:40
Hi,

Your tool is exactly what I need, thanks. Sadly, I get an error when converting a 1.12 world (previously converted with Amulet) on two different platforms (Windows & Android) :
std::runtime_error: invalid tag type 12 at 59
Do you have an idea of what can cause this ? Thanks in advance.
(PS: sorry if that's not the right place to post that but I don't really know where I could)
There's an issues area here: https://github.com/rollerozxa/MC2MT/issues
But I don't know how often its checked.

User avatar
ROllerozxa
Member
Posts: 174
Joined: Sun Apr 25, 2021 12:25
GitHub: ROllerozxa
IRC: ROllerozxa
In-game: ROllerozxa
Location: Sweden
Contact:

Re: MC2MT - C++ tool to convert Minecraft 1.12 worlds into Mineclonia

by ROllerozxa » Post

abo45 wrote:
Sun Jun 23, 2024 16:40
Hi,

Your tool is exactly what I need, thanks. Sadly, I get an error when converting a 1.12 world (previously converted with Amulet) on two different platforms (Windows & Android) :
std::runtime_error: invalid tag type 12 at 59
Do you have an idea of what can cause this ? Thanks in advance.
(PS: sorry if that's not the right place to post that but I don't really know where I could)
Looks like that's the NBT data type TAG_Long_Array which was added in 1.12 and the NBT reader in MC2MT doesn't support. I opened an issue for it, should be simple enough to ignore the type since the converter doesn't need it but don't have time to work on this at the moment.

InterPotato
Member
Posts: 62
Joined: Fri Jun 07, 2024 15:38
Location: Poland

Re: MC2MT - C++ tool to convert Minecraft 1.12 worlds into Mineclonia

by InterPotato » Post

Will it eventually support 1.13+ worlds, and make functional blocks still usable in Mineclonia? Maybe a command block converter would've been useful too.
I'm only human, after all...

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest