Quick overview of the new “Launch Types”

By default, Minecrafter launches mod packages via a “temporary install”, i.e. Minecrafter always keeps a copy of the original minecraft.jar, and will revert it back once you’ve finished playing Minecraft. Although in my opinion it’s the optimal way of installing mods, a lot of people wanted a permanent install, so they don’t need to load Minecrafter everytime they want to play. So I’ve came up with 2 new options of launching:

Permanent

As you’d expect: A permanent mod install, with no way of reverting back. It’s up to you to maintain backups of your existing minecraft.jar

Semi-Permanent

A mix between temporary and permanent. What this allows is a permanent-like install (i.e. launch from Minecrafter, and launch from the Minecraft launcher and the mod installation is still there), but launching new packages will be based on the previous state of minecraft.jar.

This might be a bit confusing for some, so I’ll explain exactly what happens. On a semi-permanent launch, Minecrafter will compile the JAR as usual, but but once that’s done, it will add the source minecraft.jar into minecraft.jar. Everything still works out as expected, but now you have  a copy of minecraft.jar inside minecraft.jar which holds the older version of minecraft.jar without the mods applied. When you select a new mod package to launch, Minecrafter will look for a nested minecraft.jar file in minecraft.jar, and if exists, it will apply the mod package to the nested minecraft.jar.

So, in the end you don’t need to launch Minecrafter everytime you want to play with a particular mod package, but you have the power to revert the changes and re-install a different mod package on top of the original minecraft.jar.

Quick update on “Executable Mod packages”

That’s the new name for mod packages that can be exported to JAR. Not a particular clever or creative name, but it’s what inside that counts, right?

After a grueling few days, I’ve finally stripped Minecrafter into a wrapper which is under 400KB, 381KB to be exact. Miles below the 1MB threshold I set a few days ago! Had to rewrite a lot of the metadata, to use the in-built Java serialization classes (ObjectOutputStream). I’m still skeptical whether the binary serialization is portable between Java versions, but we’ll see. The wrapper size is still going to grow as I add in a few more features, but I’m confident it won’t break 500KB. The wrapper contains all the launching functionality as you’d expect, HD fix, temporary install, point to Minecraft executable, but also has permanent install as well. This feature will also propagate to its big brother, so no worries about that. On top of that, it uses Swing, so its multi-platform (i.e. no OS specific wrappers). Your mod packages will be slightly larger though, as I convert all mods into ZIPs, but I think that is a decent compromise seeing that if I did include RAR/7-Zip support, the wrapper would be 5MB!

Here is an early look into the feature set of 1.2.0 (the next version, barring any minor bug releases):

  • Export mod package to self-contained JAR
  • Permanent mod package install
  • Workarounds over the major issues that I cannot find a solution for (minecrafr.jar finding issues, world loading freezing)

1.1.6 critical update for Windows users

Here is a critical update for Windows users. Not sure whether it’s isolated to 64-bit or Windows 7, but some of you are having problems with Minecraft freezing during world load. This “should” fix it.

I believe it only happens to 64-bit users. I use Eclipse with 32-bit libraries, while I use 64-bit for my release versions. Testing on Eclipse never yields this issue, so from that, I  guess it’s a 64-bit problem.

Changelog:

  • Fixed issue with some Windows configurations not being able to load a world
  • Fixed 7-zip/RAR file handle release issue when clearing temp files

Download Links:

Windows

32-bit or 64-bit

Mac

32-bit or 64-bit

Linux

32-bit or 64-bit

 

1.1.5 out! I will start self-installing packages

Changelog:

  • Updated MCPatcher to 1.1.9 – That means working portals, compasses and watches.
  • 7-Zip support – Doesn’t support the newer LZMA2 algorithm though.
  • Mac OS X 10.5 Only – Will check class files to see which version of Java they have been compiled on. If it is higher than 1.5, then Minecrafter will warn you that this mod will cause a black screen. I haven’t actually tested this on 10.5, but the checking code works.
  • New column in Mod Package Editor for inactive rows to display which mod is replacing the file (i.e. what’s making it inactive). Hover over the exclamation mark to see the tooltip, or resize the column.
  • Resizable Mod Package Editor window – A user’s request which allows you to increase the size of the mod package editor window for a better view.
  • Error logging to file is back
  • Fixed some UI glitches
  • Removed BetterGrass option
  • Caught exception when Minecrafter couldn’t open a particular image file

One weird quirk on Linux: For some reason, the maximize button doesn’t appear on the mod package editor form. You can still resize though.

Download Links:

Windows

32-bit or 64-bit

Mac

32-bit or 64-bit

Linux

32-bit or 64-bit

—–

I’ve decided to postpone Minecrafter In-game – the mod which would basically add in mod support into Minecraft. Unfortunately it wasn’t compelling enough to work on, and the obfuscated nature of Minecraft puts me off, especially if I did complete the mod. Getting releases out to work with Minecraft would be a pain as I don’t understand the obfuscation and would need to wait for tools to be compatible with the newest Minecraft version before I could do anything.

But instead, I will actually start working on the self-installing mod package idea that I had discussed a while back. It’s not particularly difficult, but a lot of the work will be spend re-doing the critical parts of the UI to run on AWT, as SWT is OS dependent. The focus will be getting the bootstrap code as small as possible (hopefully not exceeding 1MB). This means removing a lot of the libraries and working with the basics. A good example is 7-Zip support. Although you can create packages with 7-zips, when you create a self-installing package, Minecrafter will convert the archives to ZIP to reduce this library dependency. There are other little bits and bobs that also need to be done, but I can say confidently that it’s very straight forward task. Stay tuned for this in the coming weeks.

7-zip support incoming

EDIT: Mistakingly put this item as a page rather than a post – my bad.

As a request from a user, I’ve added in 7-Zip support. This is for the LZMA algorithm, and NOT for LZMA2. The downside in the 7-Zip library I’m using (which from a quick google search, the only comprehensive one) is that it’s quite large, adding in at least 1MB of bulk. This might not sound like much, but thats about one third of the current size (with the latest version weighing in at under 3MB). One upside is it also has RAR support, which allows me to replace the RAR library which was pretty much found by scouring googlecode & finding one embedded in another project.

1.1.5 won’t be released till the end of the week, so in the meantime, you can suggest any features or bug fixes you’d like in the next version.

Also, thanks to Jerry for donating 🙂

1.1.4 out

No new features, just fixes.

  • Updated HD patcher to 1.1.8
  • Fixed AppData path issue with Windows OSes that are non-english

Download Links:

Windows

32-bit or 64-bit

Mac

32-bit or 64-bit

Linux

32-bit or 64-bit

1.2.2 Borked Minecrafter

You’d expect me to be knee deep in Black Ops by now, but I’ve only received it a few hours ago! Yes I did pre-order, but the place I bought it from had issues with the shipment. Anyways, back on-topic, Minecrafter is as expected, not working with the 1.2.2 update. Thats not 100% true. By default, the HD fix is applied. This is what’s causing the issues. So by clicking on the options tab and unchecking “Enable HD Fix”, you will be able to load mod packages.

Note, as well as HD support broken, some mods also need to be updated too. So make sure your mods support 1.2.2, and Minecrafter should work as advertised.

In terms of my new project, Minecrafter Ingame, that’s postponed until the Minecraft Coders Pack has been updated. Note that this update has done a lot of legwork in terms of the UI, so that lets me focus on more complicated things such as the actual mod loading. I actually exaggerate when I say complicated, it’s more annoying than anything to get it working, so I’m fairly confident I can get this mod out.