Sadly, no… Back to the drawing board on the API.

After making that post about my plans for the API, I sat down to do it, and instantly noted a few catches.

First of all, event handling got more complicated. I realized that each version of the API would have it’s own version of the events. This was solvable, however, so I continued.

I noted that constants got more interesting. I wouldn’t be able to have public static final variables in the API, as I’d have to set them from inside Mystcraft. This meant they couldn’t be static and final, which means that another mod could accidentally change them, which is undesirable, as that would break other add-ons.
Again, this is solvable, I’d just need to provide the constants in instanced containers. No problem.

Symbols and functions were actually going to be the easiest things to handle, and were part of why I was doing this. Each API would have an internal handler which mapped all the API calls to a core handler system (my internals, which I use). I could wrap each symbol so that the communication became uniform within my system.

Lastly I noticed that I have class definitions in the API which are used for direct communication between any add-ons. This became the stopping point. I realized that, in order to handle these objects, I’d have to have converters set up so that I convert into and out of my internal implementations and I’d have to break how communication currently works for modifiers. There would be some things which I couldn’t convert, either.

Ultimately, it looks like I won’t be able to do this, unfortunately. While looking at it, I did like some of the properties the architecture would provide, so I’ll likely try to do them regardless. I’ll also add in a check for the version of the API loaded, to ensure that Mystcraft provided the classes, and that no other mod contains the API.

I’m still going to take this opportunity to rewrite the API, and I’ll still leave out sections of it for the reasons mentioned in my previous post, but I won’t be splitting the API into packages this way.

I’ll probably continue to think about how I could version the API to make things easier for add-on developers, but this particular approach seems too limited. I can version some things, but not all of it, and if I can’t do all of it there’s not much point to doing some of it.

We’ll see how it goes. For now, I’ll continue restructuring the API.

Cheers!

Mystcraft API for 0.10.14.00

As a number of people noticed, there was no API for Mystcraft 0.10.14. This was very much intentional.

I intend to completely revise how I do the API, at least on my end. From an add-on dev’s perspective it won’t change a whole lot.

I’m working on a versioned API system. This will mean that older add-ons won’t have to update every time the API changes and that I can add new things and alter the API without breaking stuff, so long as once an API version is released it remains stable.

It will mean I need to be slightly more clever in how I do things, in terms of handling the API, and that I’ll end up doing a lot of mapping API stuff into an internal handling system, but that’s OK.

One good example of why this would be nice: Recently, there was an issue where people would crash if they had both the DragonAPI and Mystcraft installed, because the DragonAPI included an older version of the Mystcraft API. The mismatched class files then caused Mystcraft to crash, as some functions didn’t exist.

So, why the versioned API? So I can support older things (as possible) while not being afraid to move the API forward. So I can easily know what version of the API mods are on. So I can introduce things in different versions without breaking older ones. So that users have fewer conflicts and crashes overall (defensive coding).

It may not be easy, and it might take a bit to move to, but I’m going to manage. 😉

That said, it’s looking like I’ll be releasing the initial API with a lot of missing stuff. Too many things currently being revised and I don’t want to release an API just to break it immediately. So, as odd as it seems, the first version of the API won’t be able to add symbols or instability effects. Most of my events and render handlers will be included, though, so most of the add-ons for Mystcraft will still be possible to update.

Why not instability and symbols? Because I’m rewriting instability. Since instability is tied into symbols at some points right now, I can’t change it without affecting symbols.

Just wanted to make a general announcement about this. It’s the main thing that’s holding up the next release, and I’m trying to sort out the initial API version now.

I hope to have the next release up soon. 🙂
Cheers!

Mystcraft 0.10.14.00

And here we go, a version of Mystcraft for 1.7.2!

I think I’ve got the save transition from 1.6.4 to 1.7.2 handled properly, but back up your saves just in case. This is primarily in reference for handling the transition away from fixed block ids.

This is basically a straight port from 0.10.13. It just updates Mystcraft to Minecraft 1.7.2. There were a few minor additions, as they basically went hand-in-hand with the update (like adding the new wood types as block modifiers, and adding all those new biomes as modifier symbols).
There were a number of graphical issues which I needed to handle, and there’s at least one left which is apparently a Forge bug (according to cpw) that I didn’t manage to pin down. Bravo if you even manage to find it, though.

Note that I’m not releasing an API with this build. I’m going to rework how I do the API for Mystcraft; rather than release it and break it immediately, I’m just going to defer it to the next build. It’s pretty much the next thing I’ll be doing. Along with crafting improvements and the beginnings of tech. API changes are somewhat the priority, though.

Check the Mystcraft Forums for updates and the change log.

Download: [1.7.2] Mystcraft Universal 0.10.14.00

Enjoy!

Mystcraft 0.10.13.01 HotFix

Whoops. Again. My track record is going downhill fast…
The previous build crashes on server startup.

Additionally, I realized when doing my 1.7.2 update that I’d not actually registered the names for things properly. That’s done now.
In order to keep a save from 1.6.4 on 1.7.2 you will need to run that save on this version of Mystcraft first!

To recap: there is only one download (found at the bottom of this post); This file is the universal install for client and server; it no longer goes in the jar.
Mystcraft goes in the mods folder.

If you are still lost on the 0.10 series, check out Direwolf20’s Mod Spotlight! Direwolf20’s Mod Spotlight for 0.10.4.00
If you are having trouble with writing, check out Direwolf20’s Writing tutorial!
Note that there are a couple changes between the video and the current mod, particularly that colors and things are easier to write. If you follow the tutorial, you’ll do great.

Download: [1.6.4] Mystcraft Universal 0.10.13.01
Download: [1.6.4] Mystcraft API 0.10.13.01
Check the Mystcraft Forums for updates and the change log.

Enjoy!

Mystcraft 0.10.13.00

This build… I honestly don’t remember it all. Just check the change log on the forums. 😛

To recap: there is only one download (found at the bottom of this post); This file is the universal install for client and server; it no longer goes in the jar.
Mystcraft goes in the mods folder.

If you are still lost on the 0.10 series, check out Direwolf20’s Mod Spotlight! Direwolf20’s Mod Spotlight for 0.10.4.00
If you are having trouble with writing, check out Direwolf20’s Writing tutorial!
Note that there are a couple changes between the video and the current mod, particularly that colors and things are easier to write. If you follow the tutorial, you’ll do great.

Download: [1.6.4] Mystcraft Universal 0.10.13.00
Download: [1.6.4] Mystcraft API 0.10.13.00
Check the Mystcraft Forums for updates and the change log.

Enjoy!

Full Steam Ahead! Mystcraft is back!

Or, at least I’m working on it again.

I’m back from my impressively long hiatus from modding. I hope I was missed. I like to think someone missed me at least a little.

Mystcraft continues. If you’ve been watching my twitter feed or twitch channel then you’ve seen that I’ve already dived back into things and spent a surprising number of hours refactoring GUI code and enjoying it. Man, I’ve been deprived of coding too long when refactoring GUI code lights my fire…

At any rate, you can hop over to the Mystcraft Forums to see what I’ve been up to. There’s a nice little topic there where I talk about the things that will show up in the next release. You can also check out what I’m up to by following me on twitter or twitch.

I’ll be streaming on the 9th. Not sure exactly what time, but sometime in the afternoon/evening my time (GMT+3). That’s 7 hours ahead of the US East Coast, for those of you used to telling time that way.

There should be a shiny new Mystcraft release for 1.6.4 before too long, followed by a port to 1.7.? after that. Not sure what all will go into this 1.6.4 update, yet, but it looks like it might be a bunch…

I’ve also created a Patreon account, on the recommendation of my other modder buddies. You can find that at http://www.patreon.com/xcompwiz. I have no idea what I’m doing or if the goals/rewards make any sense, so… ya. 😛

I’ll catch you all soon! Don’t forget to follow my twitch channel or twitter to find out when I start streaming!