Live data from Hacker News

Minecraft removing obfuscation in Java Edition

minecraft.net

291–300 of 478 posts

Re: Minecraft removing obfuscation in Java Edition

#291
On the one hand, great; should hopefully mean the monkey-patching by mods isn't quite as fragile as it is once you get into a decent number of installed mods.

On the other, I'd assume this means that any official modding support is now stone dead and will never happen.

Re: Minecraft removing obfuscation in Java Edition

#292

As I understand it way back in the early Beta days of Minecraft obfuscation was added to avoid mods being embedded into the JAR and it being released as a combination enabling piracy of the game with mods embedded. This has been a pain to workaround for years as the modding scene has gotten bigger. Hopefully this makes modding a bit more accessible.

Yeah I still remember when you had to manually patch your minecraft.jar with mods. Always remove the META-INF directory so it works. Back then, when you installed two mods that were incompatible with each other, you had to throw away the whole minecraft.jar and start again.

This already changed A LOT when Forge and later Fabric came out, with a simple patch system akin to BepinEx and a mods folder.

Re: Minecraft removing obfuscation in Java Edition

#293
post #180

It's extraordinary to me that Minecraft is both the game that has the most robust mod community out there and that the modders were working from obfuscated, decompiled Java binaries. With elaborate tooling to deobfuscate and then reobfuscate using the same mangled names. For over a decade! What dedication.

In 2004 I played an MMO game on a pirated server. The owner of the server somehow got a version of the server binary, and used a hex editor (!) to add new features to the binary over time. It's the closest I've ever see to someone literally being one of the hackers from Matrix, literally staring at hexadecimal and changing chars one at a time

I just remember when I cracked Space Empires III shareware as child. I didn't release the crack. Plus was a bit crappy, needing every time that I loaded the game, write a wrong serial so the check thought that was right serial code. I simple changed a few x86 opcodes to invert the check condition...

Re: Minecraft removing obfuscation in Java Edition

#294
post #270

Earlier quoted context omitted.

So we're not talking about runtime performance, but some minor improvement in loading times? I assume that once the JVM has read the bytecode, it has its own efficient in-memory structures to track references to classes rather than using a hash map with fully qualified names as keys

Proguard was heavily influenced by the needs of early Android devices, where memory was at a real premium. Reducing the size of static tables of strings is a worthwhile optimisation in that environment

Okay but we're talking about Minecraft on desktops and laptops, where the relevant optimizations would be runtime performance optimizations, no?

Re: Minecraft removing obfuscation in Java Edition

#295

On the one hand, great; should hopefully mean the monkey-patching by mods isn't quite as fragile as it is once you get into a decent number of installed mods. On the other, I'd assume this means that any official modding support is now stone dead and will never happen.

I haven't played minecraft in a fair while, but started with the alpha builds back when the Seecret updates were the most exciting thing going for the game.

> I'd assume this means that any official modding support is now stone dead and will never happen.

I was a bit surprised to read this because talk of modding support had been on the radar since notch days, it's wild to me that this hasn't happened yet.

Re: Minecraft removing obfuscation in Java Edition

#296

I consider Microsoft to be genuinely evil as an institution, but this is still nice to see.

Notice they're only doing this after the game is ensloppified (they make their money from merch and movies now, not from game sales) and after the game code suffers from so much inner-platform effect that modding it directly isn't as useful any more.

The inner platform effect is when, in an effort to make it so people don't have to use the original programming language because programming is complicated, you create a worse programming language and make people use that. In Minecraft, it's data and resource packs. The Java code isn't just a function on the block that renders it, any more - there's a bunch of indirection through resource packs, and they've gone abstraction hell with that too, adding unnecessary abstractions in the way of the actual abstraction they want.

Re: Minecraft removing obfuscation in Java Edition

#297

I would rather see allowing creators to monetize their Java edition mods again, and to get rid of their restrictive rules on mods. The old version of the EULA actually gave people a lot of freedom, but then they changed the rules on everyone and locked it down. Obfuscation is not a true problem compared to those.

You're always welcome to just ignore the EULA and hope they don't sue you. Which they won't because the costs to them are much greater than the benefits. Even with the monetized server thing, they didn't sue them, but they did create a server address blacklist, but it only contains a minority of monetized servers.

Re: Minecraft removing obfuscation in Java Edition

#298

Earlier quoted context omitted.

I am currently being radicalised against OOP because of one specific senior in my team that uses it relentlessly, no matter the problem domain. I recognise there are problems where OOP is a good abstraction, but there are so many places where it isn't. I suspect many OOP haters have experienced what I'm currently experiencing, stateful objects for handing calculations that should be stateless, a confusing bag of meth…

Separation of data and algorithm is so useful. I can't really comment on how your senior is doing it, but in the area of numeric calculations, making numbers know anything about their calcs is a Bad Idea. Even associations with their units or other metadata should be loose. Functional programming provides such a useful intellectual toolkit even if you program in Java. Sorry to learn, hope you don't get scar tissue fr…

But that is what classes does, it lets you have data lists and dictionaries implemented as a class so that your algorithm doesn't have to understand how the data structure is implemented. In functional programming the algorithm has to be aware of the data structure, I feel that is much worse.

Re: Minecraft removing obfuscation in Java Edition

#299
post #20

Earlier quoted context omitted.

Should make it easy to have mods running on latest releases.

But the only version that matters is 1.20.1!

In reality, Minecraft gets less Minecrafty in every update, and your baseline is whenever you bought it.

I bought the game after they added fences and fishing rods and before the Nether. The nether ruined the game, beds ruined the game, hunger ruined the game, potions, enchantments, villager trading, and hoppers ruined the game, but redstone and minecarts and dungeons didn't ruin the game because those were added before I bought it, see? If you bought it today, you wouldn't think hunger ruined the game, you'd rather think I took away a good feature if I showed you a version without hunger.

Re: Minecraft removing obfuscation in Java Edition

#300

It's extraordinary to me that Minecraft is both the game that has the most robust mod community out there and that the modders were working from obfuscated, decompiled Java binaries. With elaborate tooling to deobfuscate and then reobfuscate using the same mangled names. For over a decade! What dedication.

To be fair, the tooling existed before Minecraft and they published obfuscation maps that map the obfuscated names to the non obfuscated ones.
Post reply on HN