Live data from Hacker News

Minecraft removing obfuscation in Java Edition

minecraft.net

391–400 of 478 posts

Re: Minecraft removing obfuscation in Java Edition

#391

Earlier quoted context omitted.

But the whole point is there are no more mappings. I’m not sure what the trap is supposed to be?

Your mod uses variable name FooBar in ways Microsoft don't like, Microsoft sues you for copyright before the judge would have to admit it was just coincident.

I’ll preface this by saying I’m not a lawyer, but let’s say Microsoft released an obfuscated version where the method FooBar is called FakeName instead. If I use FakeName in my mod, aren’t I hypothetically at risk of the same thing? How does the actual name matter for this argument?

Or is the argument that only source code is copyrighted, but not binaries so it only matters if the name matches the original source code? That doesn’t seem possible because it’s copyright infringement to share a retail game binary, so they’re clearly copyrighted as well.

So I’m really unclear how the risk here is any different regardless of obfuscation since the mod needs to use method names from the copyrighted binary either way.

Re: Minecraft removing obfuscation in Java Edition

#392
post #137

Earlier quoted context omitted.

First time I have heard of object-oriented obfuscation. I get it, but in general I don't get the OO hate. It's all about the problem domain imo. I can't imagine building something like a graphics framework without some subtyping. Unfortunately, people often use crap examples for OO. The worst is probably employee, where employee and contractor are subtypes of worker, or some other chicanery like that. Of course in th…

For me, it's the fact that the mess of DAOs and Factories that constituted "enterprise" Java in the 00s was a special kind of hellscape that was actively encouraged by the design of the language. Most code bases don't need dynamically loaded objects designed with interfaces that can be swapped out. In fact, that functionality is nearly never useful. But that's how most people wrote Java code. It was terrible and taug…

"But but... I can swap out my entire my persistance layer since it's all just an interface!"

Has anyone ever actually done this ?

Re: Minecraft removing obfuscation in Java Edition

#393
post #308

Earlier quoted context omitted.

I don't even think open sourcing Minecraft would hurt them financially. People don't buy Minecraft because that's the only way to play the game; it's not, it's easy to find ways to run Minecraft for free. The reason people buy it is to join servers. Most serious servers only allow players with valid paid Minecraft accounts to join, because it allows the server owner to ban people or otherwise keep track of people. I…

People could set up 3rd party auth systems and eliminate the need for mojang

That already exists, but people still buy the game

Re: Minecraft removing obfuscation in Java Edition

#394

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.

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 server software in the world.

Re: Minecraft removing obfuscation in Java Edition

#396

Earlier quoted context omitted.

I hope you are right. I really do. But I have a hunch, that if I accepted any Java job, I would simply have coworkers, who are still stuck with "enterprise" Java ideology, and whose word has more weight than the word of a newcomer. That's one of the fears, that stops me from seriously considering Java shops. Fear of unreasonable coworkers and then being forced to deliver shitty work, that meets their idea of how the…

I don't understand these complaints. Here is a tiny interface that will do what you need: @FunctionalInterface public interface IPasswordChecker { bool isValid(String password); } Now you can trivially declare a lambda that implements the interface. Example: const IPasswordChecker passwordChecker = (String password) -> password.length() >= 16;

I'm personally rather fond of Java, but even this (or the shorter `Predicate`) still can't compete with the straightforward simplicity of a type along the lines of `string -> bool`.

Re: Minecraft removing obfuscation in Java Edition

#397
post #275

Earlier quoted context omitted.

And minification in JavaScript only reduces the amount of bytes that has to be sent over the wire, it doesn't improve runtime performance.

According to the v8 devs it also can increase parsing performance > Our scanner can only do so much however. As a developer you can further improve parsing performance by increasing the information density of your programs. The easiest way to do so is by minifying your source code, stripping out unnecessary whitespace, and to avoid non-ASCII identifiers where possible. https://v8.dev/blog/scanner

Sure, but that's also just in the category improving loading a bit. It doesn't have anything to do with runtime performance.

Re: Minecraft removing obfuscation in Java Edition

#398
post #261

Earlier quoted context omitted.

For me, it's the fact that the mess of DAOs and Factories that constituted "enterprise" Java in the 00s was a special kind of hellscape that was actively encouraged by the design of the language. Most code bases don't need dynamically loaded objects designed with interfaces that can be swapped out. In fact, that functionality is nearly never useful. But that's how most people wrote Java code. It was terrible and taug…

As someone coding since 1986 it is always kind of interesting how Java gets the hate for something that it never started, and was already common in the industry even before Oak became an idea. To the point that there are people that will assert the GoF book, published before Java was invented, actually contains Java in it.

People did it, some times, when they needed it.

It was so rare that the GoF though they needed to write a book to teach people how to use those patterns when they eventually find them.

But after the book was published, those patterns became "advanced programming that is worth testing for in job interviews", and people started to code for their CVs. The same happened briefly with refactoring, and for much longer with unit tests and the other XP activities (like TDD).

At the same time, Java's popularity was exploding on enterprise software.

Re: Minecraft removing obfuscation in Java Edition

#399
post #392

Earlier quoted context omitted.

For me, it's the fact that the mess of DAOs and Factories that constituted "enterprise" Java in the 00s was a special kind of hellscape that was actively encouraged by the design of the language. Most code bases don't need dynamically loaded objects designed with interfaces that can be swapped out. In fact, that functionality is nearly never useful. But that's how most people wrote Java code. It was terrible and taug…

"But but... I can swap out my entire my persistance layer since it's all just an interface!" Has anyone ever actually done this ?

I have used something similar with effects in Haskell to mock "the real world" for running tests.

But if it was as convoluted to use as it's in Java, I wouldn't. And also, it's not enterprise CRUD. Enterprise CRUD resists complex architectures like nothing else.

Re: Minecraft removing obfuscation in Java Edition

#400
post #294

Earlier quoted context omitted.

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?

Probably, but proguard tends to bundle the whole lot together
Post reply on HN