Sign in to follow this  
havocx42

mIDas *GOLD* - a tool for updating tekkit worlds

Recommended Posts

mIDas *GOLD* v0.1.8

2012-02-04: v0.1.8 Minor update with code cleanup and some behind the scene features.

I made the *GOLD* extension for mIDas to enable me to convert my tekkit 1.0.0 world to tekkit 1.1.4

Nolzi already posted about this tool, thanks for that, but KakerMix suggested I make my own post for it so here we are.

I make this tool available to you with no guarantees, please backup your world before using it.

Currently the nether isn't updated because bukkit stores it differently from the way the original mIDas was designed for, if someone complains about this I will take a look at fixing it.

If you encounter any problems or have any suggestions please don't hesitate to contact me here, or on the minecraft forum thread.

1.0.0 to 1.1.4 patch file:http://pastebin.com/wuzaktz5

To upgrade your tekkit 1.0.0 world to 1.1.4:

For these instructions I make the following assumptions:

a )You are updating a world called "world" from a tekkit server, other names or single player saves will work as well.

b ) You are using a windows PC, sorry haven't had a chance to test on linux yet. There will be no Mac support.

c )This world was generated in tekkit 1.0.0 and has never been run in 1.1.4, if you have run the world in 1.1.4 you have lost items which I cannot fix.

1: Backup your world by copying the world folder in the tekkit servers location to somewhere safe

2: Download the newest version of mIDas *GOLD*, extract it to a new folder.

3: Grab the latest 1.0.0 -> 1.1.4 patch file from the MC forum post, save this to the same folder and call it patch.txt

4: Run mIDas *GOLD*

5: Load the patch file by clicking "load" and selecting the patch.txt

6: Add the world you want to convert by clicking "add savegame", navigating to your tekkit server location, selecting the "world" folder and clicking open

7: Ensure that the translations box has lots of entries looking like xxx -> xxx

8: Click start, watch the progress bars...progress.

9: A dialog should pop up telling you when it is done.

10(optional):If you want to keep any buildcraft pipes you will need to copy additional pipes over to your 1.1.4 server and clients. This is not recommended due to the bad quality of the mod. It was dropped for a reason!

Should you encounter any kind of problem the best course of action is to send me the world you are trying to update and any error logs created in the mIDas*GOLD* folder.

Share this post


Link to post
Share on other sites

Thanks for all the hard work. It seems like the only thing this is missing is a sticky. Will you be including back-ports once new versions are released ? I imagine it might be useful for some people to be able to jump from 1.0 -> 1.14 -> 1.2 in one shot, especially if they haven't updated in a few weeks, the 1.1x branch is still relatively new.

Share this post


Link to post
Share on other sites

Thanks for all the hard work. It seems like the only thing this is missing is a sticky. Will you be including back-ports once new versions are released ? I imagine it might be useful for some people to be able to jump from 1.0 -> 1.14 -> 1.2 in one shot, especially if they haven't updated in a few weeks, the 1.1x branch is still relatively new.

The program uses a separate patch file which simply maps old blocks ids to new ones. Making patch files between any arbitary versions shouldn't be a problem assuming we have the block ids for both versions.

At the moment the 1.0.0 -> 1.1.4 patch file is a slightly modified version of the one Stanchez supplied who used I believe Nolzi's csv of the new and old block ids.

If the technic chaps are good about releasing the new block ids in a nice format then there shouldn't be a problem creating new patch files to go straight from 1.0.0 to 1.2. Although whether I do it or someone else will supply it I don't know.

Share this post


Link to post
Share on other sites

I just had a thought on this though, incremental patches would be great to keep on record, but I'm not entirely certain we want merged versions. imagine this scenario.

- Say ID 200 is used by mod 1.

- First update, mod 1 is deleted, so ID 200 -> 0 to delete the old blocks

- Second update, mod 2 takes over ID 200

- Last update, mod 3 isn't configurable and needs ID 200, so mod 2 gets moved to 200 -> 201

You could have merged updates for the first three (ID 200 -> 0), but if you merged all four, that's where you run into trouble.

Share this post


Link to post
Share on other sites

Thinking about it as merging lots of smaller updates is probably not the best way. Instead think of it as compiling a fresh patch file from update 0 to update 4

You would look at the block ids for blocks in update 0 and compare them to update 4.

If they have changed then you map the old to the new.

If they no longer exist you map the old to block id 0(air) to get rid of them.

If there are new blocks in update 4 you can ignore them because a world from update 0 won't contain any of them.

This way compiling any patch file is exactly the same, you can ignore intermediate updates.

Share this post


Link to post
Share on other sites

I'm definitely entering this a little late... did a little work on making the original Midas take in files and do multiple conversions... never fixed the signed byte bug until reading your MC forum post, and as you've already achieved all I had and much more. shelved what I had. Attached my patch to the original mIDas incase it's of any interest.

Anyway...

I was pondering if it'd be possible to assign unique identifiers (UUID or text string "redpower.batterybox") to each block and entity, then have a lookup table of each version, so you could automatically generate the patch required to move between any two versions which have tables made for them.

Share this post


Link to post
Share on other sites

...

I was pondering if it'd be possible to assign unique identifiers (UUID or text string "redpower.batterybox") to each block and entity, then have a lookup table of each version, so you could automatically generate the patch required to move between any two versions which have tables made for them.

Yes that's very possible, what is really needed is a program that spits out all the block ids and that unique identifier for a currently running Minecraft.

Does anyone know of such a program?

I made NEI print all of the blocks and ids in its list to a text file but it missed some, like the pipes which show up with id 40xx in NEI, but have id 17x according to the config file. I wasn't sure where in the code a good place to get those ids would be? perhaps they are registered with modloader at some point and could be harvested then?

Share this post


Link to post
Share on other sites

sorry if this is a stupid question, but does midas gold work for tekkit 1.0.0 --> 2.0?

It should work fine.

As there are apparently no block ID changes between 1.1.4 -> 2.0 updating a 1.0 world to 1.1.4 should allow it to also work in 2.0.

However I have not tested this so backup first.

Share this post


Link to post
Share on other sites

Hmm, could this work from a non-tekkit world to tekkit 2? The world has Redpower, Buildcraft, Industrialcraft and Forestry installed.

Probably, if you find all your old Id's.

Share this post


Link to post
Share on other sites

Hmm, could this work from a non-tekkit world to tekkit 2? The world has Redpower, Buildcraft, Industrialcraft and Forestry installed.

Yes it can. What you need to do is find the block ids for your current installation and compare them to the block IDs of a tekkit installation.

You can find the block IDs here:

IC: .minecraft\config\IC2.cfg

Forestry: .minecraft\config\forestry\base.conf

Redpower: .minecraft\redpower\redpower.cfg

Buildcraft: .minecraft\config\buildcraft.cfg

Once you know which ones have changed backup your save, open midas gold and add the correct translations i.e.

<your block ID> -> <tekkit Block ID>

and run midas on your world, now open your save in tekkit.

Do not open your save in tekkit before you have converted any necessary block IDs.

Share this post


Link to post
Share on other sites

Can anybody link me to the patch file? Ive googled everything and searched forums but have found nothing relating to this patch file.

Would be great is somebody could supply with a solid link.

Edit:

Is this the correct file?

http://pastebin.com/HKvDu0KW

or

http://pastebin.com/wuzaktz5

In both instances I seem to have the same problem, after the world has been converted, I convert to tekkit 2 using

(http://midas-gold.googlecode.com/files/WorldUpdater1.4.jar)

Then running the server I get the following error:

java.lang.UnsatisfiedLinkError: C:\Users\Elliot\AppData\Local\Temp\jline_git-Buk

kit-1_1-R4-b1938jnks.dll: Can't find dependent libraries

at java.lang.ClassLoader$NativeLibrary.load(Native Method)

at java.lang.ClassLoader.loadLibrary0(Unknown Source)

at java.lang.ClassLoader.loadLibrary(Unknown Source)

at java.lang.Runtime.load0(Unknown Source)

at java.lang.System.load(Unknown Source)

at jline.WindowsTerminal.loadLibrary(WindowsTerminal.java:315)

at jline.WindowsTerminal.initializeTerminal(WindowsTerminal.java:240)

at jline.Terminal.setupTerminal(Terminal.java:75)

at jline.Terminal.getTerminal(Terminal.java:26)

at jline.ConsoleReader.<init>(ConsoleReader.java:191)

at jline.ConsoleReader.<init>(ConsoleReader.java:186)

at net.minecraft.server.MinecraftServer.<init>(MinecraftServer.java:86)

at net.minecraft.server.MinecraftServer.main(MinecraftServer.java:592)

at org.bukkit.craftbukkit.Main.main(Main.java:134)

C:\Users\Elliot\Desktop\Tekkit_Server_2.1.1>pause

Press any key to continue . . .

>

Do i have to run the server in 1.1.4 before converting?

Share this post


Link to post
Share on other sites

Thanks for you quick responce, I get the same error with a new world

Ok, I suggest you ask for help on the Tekkit Bug Board, make sure you follow this. I would rather not clutter up this thread with unrelated problems. After you have fixed your server, if you have any problems with using midas please come back here and I will be happy to help.

Share this post


Link to post
Share on other sites

I made a patch file, but I'm running into a problem. For example, if I put this:

90 ->1

90:1 -> 2

90:2 -> 3

It will insert 90 -> 1 but then ignore the ones with damage values and give an error "Source ID 90:1 is already being translated!" and ignore it. So if I put in a list of blocks with damage values, it only inserts the conversion for just the base value. Any ideas?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this