Quick Nav


Back To Top

Introduction

As anyone familiar with the modded Minecraft environment will know, my mods are at the current time still developed for the 1.7.10 version of the game, and will not function in newer game versions. In short, this is because the update process is an extreme amount of work, and because I am still unconvinced it will be worth it. This page explains these reasons in more detail.

Note: Large portions of this are adapted or paraphased from a few "high profile" places I have discussed this topic before, notably here and here.

Background Information

By far the most significant barrier to updating is the sheer scale of the task. Unlike in many games, where mods may continue to work unmodified even across game versions (a la Stellaris, Starbound, Space Engineers, or more), or where unless certain specific breaking changes are made to a generally stable API, the only thing you need to change is a version identifier (ie Factorio), Minecraft modding is different. Because there is no API to speak of - Forge is merely a set of hooks to register content to the game on startup, as well as a number of handlers to intercept various parts of vanilla behavior - almost the entirely of any mod's codebase is direct calls of internal vanilla code. Even something simple like, say, the ThaumCraft infernal furnace, which "seems" both simple in concept and completely "custom", is almost exclusively made of such calls, including checking neighboring blocks (world.getBlock(x, y, z)), looking for item entities (world.getEntitiesWithinAABB(type, box)), performing smelting recipe lookups (FurnaceRecipes.getRecipes.getSmeltingResult(input)), and more.

There is no "interface" layer that exists to "buffer" the changes, nor can one reasonably be made given the sheer variety of calls required. Those who have been in this community for a long time will remember how many projects to be exactly that kind of layer have been born and swiftly abandoned before ever reaching a point where they were practically usable.

Any one of these can be moved or renamed in any version update, which requires fixing by way of manually updating every call; this on its own is annoying busy work, but not insurmountable (with a few exceptions, as we will get to). However, just as common in every game version update is wholesale removal of entire portions of the codebase, sometimes going as far as eliminating entire concepts from the game (eg the "flattening", which removed metadata, and the infamous 1.8 dynamic block renderer removal).

As it happens, the versions between 1.7.10 and whatever version of the game you consider "modern" almost all contain such changes, sometimes several of them. Several of them are extremely time consuming or difficult to adapt to, but altogether they result in a truly monumental task if I choose to update, with an estimated time requirement of multiple years.

On that note, four things need to be stated:

Specific Issues

Additionally, there is another nontechnical issue: The Forge/Fabric split. While that does not make it harder for me to update, it does make it less appealing, because now I have to contend with a bifurcated community, where a Forge mod is completely ignored by those who insist on using Fabric (and vice versa). Since porting to Fabric is not an option - and maintaining a version for both loaders even less so - I will have far less base appeal than I did even in past versions. Moreover, since mods are split between them, I will be operating within a somewhat gutted modding ecosystem, probably destroying many of the mod interactions I have spent years developing.

A Growing Mountain

As with anything of this nature, the longer it is put off, the larger the task becomes. Recall how above it was described how the delay before a usable ISBRH replacement was found meant that the majority of mods - I was far from alone on this - had to wait a great deal of time before they could begin updating, by which point the task had grown larger (and the specter of another game update "beating them to it" grew similarly larger). For mods on the scale of RotaryCraft or especially ChromatiCraft, even that delay meant that it was basically guaranteed that by the time I would be done any hypothetical 1.8 update, 1.9 would already be out (and indeed, I was right). The same has also proven true for almost every update since. Not helping matters is that unlike how 1.7.10 was kind of a "standard" version for a long period of time, where the majority of the playerbase was in agreement on, no version between that and 1.12 reached anything remotely resembling the same level. This greatly eroded the apparent value of an update - why bother updating to 1.8 if half of the users are already on 1.10, and why bother updating to that when it leaves half of the people behind on 1.8, and by the time you are done you need to move to 1.11 anyways? - until 1.12 had proven itself several years later. By this point of course, there were now a great many major changes and redesigns accumulated that I would need to deal with during an update, making the task even more daunting.

And this pattern continues; at the time of this writing, in spring 2021, vanilla is previewing some major changes to the worldgen process, which while interesting, again come with some major potential to break mods. Notably, y=0 is no longer the bottom limit of the world; blocks now extend to y=-64. This means that any code which previously assumed that y=0 was the world floor - such as anything scanning a chunk or column for a block, or any kind of worldgen, or anything checking if something is "in world bounds", now needs to be corrected.

Partial Updates

A somewhat common question is why I do not just update only some of my mods. The answer to that is twofold: One, DragonAPI is the base of every mod - and all but a couple use it extensively - and would thus need to be updated. This is in itself a huge task, though granted not the multi-year endeavor for all of the mods. Two, the little mods that are the easy ones to update are frankly not very popular; the vast majority of people who want updates to my content do not much care about getting a new version of ExpandedRedstone, GeoStrata, UsefulTNT, or MeteorCraft; they want RotaryCraft, its addons, and ChromatiCraft.

Help

Another somewhat common question is whether I would be willing to accept help in updating, to make the task more realistically attainable. Contrary to many people's expectations, the answer is in fact yes, but it does come with four significant caveats: I have only met a handful of people who were accepting of all of those caveats, and of those who were, none of them ever really made much of a dent in the project. The largest amount of progress ever made was (allegedly) getting DragonAPI alone to boot in a 1.10 instance, but that was A) in 2018, B) only a claim, with my never seeing evidence of that fact (nor really hearing much from them ever again), and C) sounded like it was accomplished by simply removing code that was hard to update rather than actually updating it (meaning said DragonAPI would not be usable as the foundation for other mods).

If you think you will be different, I am very open to hearing from you; simply contact me via one of the (relevant) platforms in the footer.