Minecraft is removing code obfuscation in Java Edition

Minecraft: Java Edition has been obfuscated since its release. This obfuscation meant that people couldn’t see our source code. Instead, everything was scrambled – and those who wanted to mod Java Edition had to try and piece together what every class and function in the code did.

Modding is at the heart of Java Edition – and obfuscation makes modding harder. We’re excited about this change to remove obfuscation, as it should make it quicker and easier for modders to create and improve mods. Now you won’t have to untangle tricky code or deal with unclear names. What’s more, de-bugging will become more straightforward, and crash logs will actually be readable!

surprisingly fantastic and consumer friendly move from mojang, good on them

Is that going to kill the need for the various modloaders?

As I understand it no, the modloaders will still handle things like file management and conflicts and load orders and etc. Individual mods could implement solutions for that, but it makes more sense to centralize that effort around the modloaders.

What this will do is make it much less tedious to develop the mods in the first place.

(I may be wrong and the role of modloaders may have changed in the six years since I was last active in the modding scene without my knowing it)

Modloaders also mainly exist due to the onerous terms of any mojang/minecraft API for java edition that would exist - Forge/Fabric/etc… are designed to rip open the game and then stitch it back together with the desired goodies. Anything official would probably still have strings that would bind the modders, so modders won’t embrace the system wholeheartedly (similar to how datapacks can’t replace mods).
I look forward to several critical CVE being discovered like log4j
Unironically, me too. They’re there now, waiting to be discovered. We can find them now on our terms or be surprised by them later.
Wasn’t log4j originally found by 2b2t players, then used maliciously and reported later on, then going onto get fixed by every major server framework like bukkit, paper, fabric, and more?
No, it was found in november 24 2021, publicly disclosed in december 9 2021, and only used by 2b2t players on december 10 2021.
That would be good though. Better the communities finds them and they can be patched than when only some black hats know them.

Oh I see it’s that time of the year where Mojang gives the community a bone after stomping on them the rest of the year.

Anyways as someone who has worked on Java projects extensively since 2020, very little will actually change from this. The main problem of Mojang’s asinine version numbering will continue to be a problem for any modding, server, building and resource pack projects past 1.19.

Mojang’s asinine version numbering

They do what now?

Mojang started adding in substantive resource pack changes in the patches for 1.19. Which made it more annoying for resource pack artists to support the update their since it required 2 separate versions of a pack to be made and maintained just to make sure it works properly. Let alone the annoyance of having to constantly deal with people complaining about it not working when it is an issue Mojang made.

There is also Mojang’s censorship of their community that began in the 1.19 patch versions which allowed Mojang to just ban anyone for saying something they didn’t like. Servers largely just disable it since it’s a headache to deal with and it doesn’t benefit them at all, only Mojang.

Then in 1.20 and 1.21 Mojang began adding content in the patches so it makes it a nightmare to support the patch versions since they now function differently than they used to. Which only makes it harder for servers to update and makes the experience of joining servers more frustrating. So plenty of servers on those updates just blacklist certain versions just to make sure things are able to function.

Oh and at some point Mojang added censorship to player skins. And it can be triggered by just mass reporting any individual skin for any reason.

Basically Mojang made a fuck ton of problems where none needed to be or used to be.

Also I just want to add this, but I was sounding the alarm on the patch version problem back in the 1.19 days. The community at the entire either ignored me or called me crazy for pointing out how it was problematic. Now the community is growing more and more annoyed and I’m just sitting over here saying I told you so.

I’ve mostly stopped playing the game because of Mojang’s constant shitty choices and because of the community refusing to call Mojang out on their bullshit.

The no chat reports mod and having community hosted servers that don’t really need to give a damn about what Mojang thinks (I’ll convert my server to support cracked accounts if I have to) kind of pulls the heavy lifting to allowing players to keep playing without having to give a shit about overall moderation by the company.
The no chat reports mod is great but it still is an uphill battle to get players to install it. We also need to focus on putting on Mojang to remove the problematic system in the first place so the experience is better for everyone including Bedrock players.
Installing the mod (or plugin) server-side strips all player chat messages of the information that makes them reportable, so no requirement is needed for the client (Although recommended for complete protection and for usage on non-compatible servers)
I am aware, all the servers I work on have it installed.

Previously, they had the versioning system 1.MAJOR.MINOR, where Major referred to a feature update, and minor referred to bug fixes or other non-breaking technical changes

The first instance where they broke this was 1.16.2 by adding the Piglin Brute, but this was so minor that hardly anyone really cared, and hey, free feature with a minor update!

Well, now they have update “drops” where the minor version means either what it used to, or it’s also a feature update, just not as big as a full update.

From the wiki:

1.20: Trails and Tales Update 1.20.3: Bats and Pots Drop 1.20.5: Armored Paws Drop 1.21: Tricky Trials Update 1.21.2: Bundles of Bravery Drop 1.21.4: The Garden Awakens Drop 1.21.5: Spring to Life Drop 1.21.6: Chase the Skies Drop 1.21.9: Copper Age Drop

That’s close to how the numbering system works! It’s MAJOR.MINOR.PATCH, Mojang just doesn’t use the major part at all.

Also I completely forgot the piglin brute existed!

It’s kind of like Java itself, Sun dropped the leading 1 after 1.4, following it up with Java 5.

the problem is that the way version numbers are handled now, it’s more like 1.MAJOR.MINOR, with no real definition of what counts as a “minor” update, so it’s hard to tell which versions are compatible. i feel like this problem would mostly go away if they either added another number to the version to signify patches, or actually used semver properly (they could mix these approaches to do something similar to java, so the next version would be 22.0.0)

i feel like this whole version debacle is only gonna get worse because microsoft is planning to move to a “content drop” model, with smaller more frequent updates, which means even more pressure on the “patch” version. so unless their update model or versioning systen changes, we’ll probably be playing 1.21.37 in a couple of years, and good luck figuring out which of those versions are actually compatible

Fuckin right?

ALSO can Mojang get my goshfuckin ALPHA account back that Microsoft deleted because I wasn’t paying attention to their bullshit during COVID and now it’s gone forever even if I make a Microsoft account which I will never do and now I have to pay money to Microsoft (which I will also never do and have never done)?

Go join mc: consequences edition discord.gg/mojanglawsuit (Website link in case you don’t wanna use discord: lawsuit.gg)
Join the MC: Consequences Edition Discord Server!

The main hub for communications with the community in regards to the class action that will be initiated against Mojang. | 11779 members

Discord
Would the people developing mod loaders need to rewrite their source code to fit this new deobfuscated minecraft?
from what I understand mod loaders will need to remove the part where they deobfuscate code then translate mods. this update will break modloaders for a while but in the end it should simplify the process and make modding easier.
Well… my producer and I will certainly be playing versions before 1.22 then…
Can’t say I saw that coming, particularly after Microsoft bought them. Nice to have a surprise be pleasant once in a while.
The most profitable decision for MS is to leave the golden goose alone.
Every Minecraft update just makes me hum “Where’s the modding API” again.
It’s datapacks
♪ Minecraft Parody - Wheres the Modding API?

YouTube
So, what’s the catch? Surely Microsoft and Mojang didn’t just suddenly become good?
I wonder how good AI is at deobfuscating code. It seems like the kind of thing it might be good at.
With how bad it is at writing it, I’m guessing similarly bad. It’ll do something, but odds are it introduces a ton of errors that you then have to track down. That’s the best case. Worst case, it just creates something totally different that looks similar to the input but doesn’t do the same thing.

The monkeypaw says they will stop updates for the java edition or release a new version that doesn’t work on the java edition.

They probably see how many sales are generated from the free work done by modders though. If someone wants to come along and do for free the thing you might have to actually pay designers, developers, artists and all the support staff for and they still need to pay you to play it, you’d be foolish not to encourage the exploitation of free labor.

Call me ignorant, if this happened and it brought a new golden era of modding (1.7.10) style golden era where everyone’s playing the same version I’d be maybe the happiest player ever.
Modders backporting content wouldn’t be nothing new, hell, they even brought the mobs that didn’t make the cut from those stupid mob votes to life. Let modding become the new updates, fuck it.

1.7.10

Y’all can try and pull it from my cold, dead hands.

I should boot up the ol modpack and see what it do—oh, right, it crashes 🥹

Young generations and mobile players are on bedrock

Everyone else plays Java where you can easily self-host a server

Or a Bethesda style creation club is coming.
They already do that for bedrock.

Complete with microtransactions and a horrible lack of customizability! Seriously I just wanted to play some Minecraft in RTX but you literally can’t use the nVidia RTX stuff outside of the demo maps, otherwise you have to purchase a different texture pack with real money. And basically everything in the Bedrock Marketplace costs real money, and very little is free.

Meanwhile Java edition doesn’t have any paid content in part because the original Minecraft license specified anyone was free to make mods and custom content but were explicitly restricted from charging money for it

I was thinking the same thing. If the de-obfuscation tools are already out there, it might cost them more money to keep that layer. Their developers also have to use it to read the crash logs and the like from the sounds of it. Less layers = less maintenance = less cost. More mods = keeps the game relevant.

If that happens, the modding scene would boom incredibly

And you’d have some smart nerds who take it upon them to keep updating the game much better than Mojang ever could.

It would become open source almost

I said basically the same thing and got downvoted for it.

Hopefully the catch is nothing, but you can never be too sure.

I would advance: trying to keep the brand alive against the hidden giant of Roblox.
I guess it’s just doesn’t make sense to obfuscate it when mods in general runs the Minecraft community in turn making more profit to Mojang/Microsoft. My other suspension is potential competition. There is this game called Vintage Story which kinda directly competes with Minecraft seems gaining ground and was built to be moddable from the start.
Exactly. Community bindings do exist and are used over the official bindings already, and I think the source code obfuscation is just an annoyance by now.
It’s a 20 year old game going into abandonware mode. This is the nicest way for them to do that.
  • Its 16, not 20, the earliest version “Cave Game Tech Test” was in May 2009.

  • They’re still actively pushing updates, a really big one is scheduled for the holiday season. Additional biomes and mini-bosses were added last year with structures hinting at development plans for a 4th dimension. The lighting engine is being actively redone.

  • Minecraft is absolutely not gearing down into abandonware mode.

    And they finally added copper items 😂
    Luanti eating on their turf.
    I doubt microsoft even knows what luanti is
    Whats that?
    It’s the platform that used to be Mine test, apparently

    Havent they been making changes to help mod/datapack development?

    Modding is such a big part of the game, helping it would get more people playing the game

    They made “datapack” which is a way of playing with mods without having to use third-party mod loaders like Forge and Fabric but (don’t quote me on this as I’m not a mod developer) it’s not as powerful compare to the mod loaders.
    Yup. Mods can change basically EVERYTHING, compared to datapacks being able to change only what mojang wants.
    Not sure if it’s just what they want, it’s mostly that Minecraft’s spaghetti code had a lot of things hardcoded. Lately they’ve been changing a lot of things to be data-driven, and able to be changed by datapacks
    I'm not super familiar with Java, but does this mean Java edition is basically source available, or is it still compiled Java bytecode but with proper variable names?