Live data from Hacker News

Minecraft removing obfuscation in Java Edition

minecraft.net

421–430 of 478 posts

Re: Minecraft removing obfuscation in Java Edition

#421

Earlier quoted context omitted.

I'm not opposed to changes, but every official change Minecraft makes, narrows the design space for mods. Forestry added bees, then Mojang added its own bees which where quite different, and now Forestry's bees look more than a little odd. Sheep used to not drop meat, the witchery mod added mutton as a drop if you killed a sheep in werewolf form, and some mechanics around that. They now would look a little odd. Choco…

This is also true, and also why I want it to be a relatively unopinionated base engine. Unfortunately technical advancements came alongside opinionated content. 1.8 brought creative mode and fast/tintable skylight updates - and hunger and very griefy endermen and a bucnh of worldgen structures. 1.0 brought itemstack NBT - to support enchantments and potions - and gave a sandbox game an official end. 1.3 brought clien…

All of those things seem like upsides to me!

And for what it's worth, I think I've visited The End once? What makes it a sandbox is that you can play however you want - let The End be your goal, if you'd like, or just mine and build big castles, or mess around in Creative mode. That's the brilliance of it.

Re: Minecraft removing obfuscation in Java Edition

#422
post #409

Earlier quoted context omitted.

What they did was illegal, and you absolutely can (and are encouraged to do so by Microsoft) sue them in small claims court for your Minecraft account back.

> and are encouraged to do so by Microsoft Source? It seems that if they wanted people to get their lost accounts back, there's more efficient, less expensive ways of doing it?

"Encourage" may be a strong word, but it's specifically outlined in the Microsoft Services Agreement:

> 11. Choice of Law and Place to Resolve Disputes. If you live in (or, if a business, your principal place of business is in) the United States, the laws of the state where you live (or, if a business, where your principal place of business is located) govern all claims, regardless of conflict of laws principles, except that the Federal Arbitration Act governs all provisions relating to arbitration. You and we irrevocably consent to the exclusive jurisdiction and venue of the state or federal courts in King County, Washington, for all disputes arising out of or relating to these Terms or the Services that are not heard in arbitration or small claims court.

Re: Minecraft removing obfuscation in Java Edition

#423

I have to assume this runs the risk of opening the floodgates for potential vulnerabilities to be discovered now. Hopefully they're prepared to start working on a bunch of new bug reports.

Closed-source code isn't that much less secure than open one that I think this is a legitimate worry, especially in this case where the obfuscation doesn't sound like it was effective much

Re: Minecraft removing obfuscation in Java Edition

#424

Earlier quoted context omitted.

I'm not opposed to changes, but every official change Minecraft makes, narrows the design space for mods. Forestry added bees, then Mojang added its own bees which where quite different, and now Forestry's bees look more than a little odd. Sheep used to not drop meat, the witchery mod added mutton as a drop if you killed a sheep in werewolf form, and some mechanics around that. They now would look a little odd. Choco…

This is also true, and also why I want it to be a relatively unopinionated base engine. Unfortunately technical advancements came alongside opinionated content. 1.8 brought creative mode and fast/tintable skylight updates - and hunger and very griefy endermen and a bucnh of worldgen structures. 1.0 brought itemstack NBT - to support enchantments and potions - and gave a sandbox game an official end. 1.3 brought clien…

I do remember your microblocks mod.

Yeah, 1.7.10 is many modders' favorite, I know. If you did stop at 1.7.10, I guess you know about the GTNH people's crazy work in keeping that version running? For a while, you could 1.7.10 with a newer version of Java than the current latest version.

Re: Minecraft removing obfuscation in Java Edition

#425
post #170

Earlier quoted context omitted.

But there's a real difference how easy it is to write crappy code in a language. In regards to java that'd be, for example, nullability, or mutability. Kotlin, in comparison, makes those explicit and eliminates some pain points. You'd have to go out of your way and make your code actively worse for it to be on the same level as the same java code. And then there's a reason they're teaching the "functional core, imper…

On the other hand, Java's tooling for correctly refactoring at scale is pretty impressive: using IntelliJ, it's pretty tractable to unwind quite a few messes using automatic tools in a way that's hard to match in many languages that are often considered better.

The language Kotlin is actually developed by JetBrains

Re: Minecraft removing obfuscation in Java Edition

#426

Earlier quoted context omitted.

PaperMC exclusively uses Mojang mappings, and it's the most popular loader for server-side modding these days.

Paper isn’t a mod loader, it uses Fabric under the hood. Also, what makes you think it’s the most popular server? I thought it was fading. I switched my server from Paper to Fabric years ago.

It doesn't use Fabric under the hood, where did you hear that?

> Also, what makes you think it’s the most popular server?

Because it's the only server software that can actually scale and support a long-term server with feature and bugfix stability. Its popularity bears out in what hosting companies say people are most commonly using. Though I'm not sure if there is a specific publicly published statistic to point to to prove this - there is bStats global stats, but it is biased towards the Paper ecosystem.

Fabric is getting close with certain optimization and bugfixing mods, but it's still not there. Paper has a checklist of what optimizations and fixes must be included for a release to proceed, whereas Fabric ecosystem is still a hodgepodge of different things that are only available on specific Minecraft versions.

Re: Minecraft removing obfuscation in Java Edition

#427
post #82

Earlier quoted context omitted.

Me too. Having only a vague familiarity with the game, I thought that mods were using some official plugin system. I had no idea that minecraft modders (presumably kids/teens?) were not only reverse engineering things but also creating an entire ecosystem to work around proguard.

There is and kind of isn't. There are community led modding apis, but also datapacks that are more limited but still allow someone to do cool stuff leveraging tools, items, etc already in the game. If you remember entire contraptions of command blocks doing stuff like playing Pokemon Red in Minecraft or "one commands" that summoned an entire obelisk of command blocks, the introduction of datapacks pretty much replace…

Datapacks kind of ruined the Java side. Instead of (metaphorically) "grass.colour = green;" now you have several layers of indirection to look up the mapping of block types to colours, in several real and virtual entity-attribute-value stores that shadow and inherit from each other, and the easiest way to make grass green becomes to write a data pack - with all the limitations of that, not to mention the obscure syntax (do you write "{"inherits":"dirt", "variables":{"colour":"green"}}" in stuff/things/blocks/grass/index.html.json?)

This is called the inner-platform effect, where in order to avoid programming in the original language, you invent a worse programming language. Apparently it used to be a big killer of enterprise software. It's also one of the reasons Minecraft needs ten times the RAM it used to. To be fair, we have fifty times as much RAM as we did when Minecraft came out, but wouldn't you rather have it put to use doing extended view distance, extended world height, and shaders?

Re: Minecraft removing obfuscation in Java Edition

#428

Earlier quoted context omitted.

Paper isn’t a mod loader, it uses Fabric under the hood. Also, what makes you think it’s the most popular server? I thought it was fading. I switched my server from Paper to Fabric years ago.

Paper is custom server software and could be easily argued to be a mod loader if you consider plugins to be mods (although it’s probably a weak argument since there’s no mixin support built-in, although some large servers have added mixin support to their own Paper forks). However, it does not use Fabric under the hood (it’s based on Bukkit/CraftBukkit). By playercount, it is the largest (custom, standalone) MC serve…

I tend to think the distinction between "plugins" and "server-side mods" is a little pointless these days. I would consider something a "mod" if it's in an environment where it can deeply touch Mojang code and completely transform it if needed. And before we ever had Fabric/Sponge mixins, we had reflection and ASM for doing just this. We still have that, and a lot of Paper plugins make extensive use of reflection - particularly libraries that reflect into netty to hook directly into the protocol are quite common.

Re: Minecraft removing obfuscation in Java Edition

#429
post #324

Earlier quoted context omitted.

It is probably because Java took this design philosophy (or I should say dogma) to heart as its very syntax and structure encourages to write code like that. One example: It does not have proper modules. Modules, the one thing that most people can agree upon that are a good thing, enabling modularity, literally. Another one: You cannot have simply a function in a module. Shit needs to be inside classes or mixed up wi…

It is called packages. There is nothing on the modules as programming concept that requires the existence of functions as entity. Again, Smalltalk did it first, and is actually one of the languages on the famous GoF book, used to create all the OOP patterns people complain about, the other being C++.

> There is nothing on the modules as programming concept that requires the existence of functions as entity.

I didn't claim it does. To make the point though: bare functions are a much simpler building block, and a much cleaner building block than classes. Classes by their nature put state and behavior in one place. If one doesn't need that, then a class is actually not the right concept to go for (assuming one has the choice, which one doesn't in Java). A few constants and a bunch of functions would be a simpler and fully sufficient concept in that case. And how does one group those? Well, a module.

In Java you are basically forced to make unnecessary classes, that only have static functions as members, to achieve a similar simplicity, but then you still got that ugly class thing thrown in unnecessarily.

In a few other languages maybe things are based on different things than functions. Like words in Forth or something. But even they can be interpreted to be functions, with a few implicit arguments. And you can just write them down. No need to put them into some class or some blabliblub concept.

Re: Minecraft removing obfuscation in Java Edition

#430

Proguard obfuscation, particularly when you get to aggressive renaming (there are a lot of valid characters for a java class or method), flattening, overloading and inlining, can make it very hard to understand what is actually happening. Its great to make this step.

minecraft had none of these, it only had clean and predictable name obfuscation.

Super interesting to know. I wonder why they bothered!

Thanks for the info.

Post reply on HN