Live data from Hacker News

Minecraft removing obfuscation in Java Edition

minecraft.net

371–380 of 478 posts

Re: Minecraft removing obfuscation in Java Edition

#371

Earlier quoted context omitted.

Notch has said a lot of things over the years. Many after the sale to Microsoft were not so great. Suddenly without purpose and more money than he would ever need in a life time, he found a new purpose that wasn't so great. A lot of Qanon rants and other conspiracy things. Just goes to show you that some times it is best you don't get what you wish for.

What is he up to recently? Did he come around?

I have been following him, and I think a lot of the claims about him have been exaggerated. He stopped being so edgy on twitter after watching the "this is phil fish" video. It is an interesting watch and applicable to notch.

https://www.youtube.com/watch?v=PmTUW-owa2w

He is developing a new voxel-like game called "levers and chests", and before that he has shown us a few cool webgl demos I find interesting.

https://www.youtube.com/watch?v=JYMy7TPsNd0

Re: Minecraft removing obfuscation in Java Edition

#372
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.

I agree with your point, and I want to second C# and JetBrains Rider here. Whatever refactoring you can with Java in JetBrains IntelliJ, you can do the same with C#/Rider. I have worked on multiple code bases in my career that were 100sK lines of Java and/or C#. Having a great IDE experience was simply a miracle.

Re: Minecraft removing obfuscation in Java Edition

#373
We paid for minecraft java edition and have no desire to use the online features.

Microsoft logs us out every damn time we close the software, which means my grade schoolers have my (now guessable) MS account password (and I scorch-earthed the account, because this is so dumb I won’t trust or use their crap moving forward).

Has anyone figured out how to pirate the binaries? I’d like to remove the yellow sticky note with the password from my monitor.

Re: Minecraft removing obfuscation in Java Edition

#374

Earlier quoted context omitted.

Turns out everyone was completely wrong except for that one guy working in Haskell. Tale as old as time.

Java was probably close to 50% of the job market at some point in the 2000s and C significantly dried up with C++ taking its place. So I'm afraid everyone was right actually. To be honest, I'm convinced the reason so many people dislike Java is because they have had to use it in a professional context only. It's not really a hobbyist language.

Just for the record, I don't think C ever dried up in the embedded space. And the embedded space is waaaay bigger than most people realise, because almost all of it is proprietary, so very little "leaks" onto the public interwebs.

Re: Minecraft removing obfuscation in Java Edition

#375
post #203

Earlier quoted context omitted.

It's also very highly customisable without being monetized out the wazoo, allows you to host your own servers, and in general avoids the incredibly bland corporate image that meta projects. (Meta, I think, fails to understand that the people that most want a virtual space to interact with, to the point of putting up with the limitations of VR tech, mostly want to not look like regular people in that space, because th…

I think they also would not accept that variability, in both avatars and spaces. Even VRChat developers have struggled with what users do and frankly as a company that makes total sense. It's a wild west which is great for a community, nightmarish for a company with moderation liabilities, copyright concerns etc. The VRChat community should consider forming and funding an open source group to re-implement the platfor…

Yes, while VRChat does a lot of things right, the VRChat company definitely doesn't seem trustworthy in the long run. It's an aggressively walled garden where the company has full control over both content and narrative, and we're starting to see more aggressive pushes for revenue, with the major new features in recent months being subscription-gated or addiction bait (stickers, baubles, random reward boxes, etc). I'd love to see an open, federated VR social environment, but how do you get people to use it? Many VR users aren't technologically savvy at all.

There are currently two much smaller competitors that are perfectly usable but lacking community buy-in. Chillout, which is similar to VRChat, with some improvements the community has wanted for years, but missing some of VRChat's (admittedly excellent) homemade functionality, such as better IK code, better bone dynamics, etc. And Resonite, which is more similar to SecondLife, possessing a cross-world inventory system and in-game content authoring tools.

Re: Minecraft removing obfuscation in Java Edition

#376
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…

From my pov, both inheritance and encapsulation aren't great if you have to maintain code and add new one. Also, I dislike design patterns overuse, DDD done Uncle Bob style. Also we can think of where OOP drives many teams to: https://steve-yegge.blogspot.com/2006/03/execution-in-kingdo... https://factoryfactoryfactory.net/ https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris...

    > https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
This! Everytime I see this project, I laugh out loud. The description reads:

    > FizzBuzz Enterprise Edition is a no-nonsense implementation of FizzBuzz made by serious businessmen for serious business purposes.
I mean come on, these guys are serious!

Re: Minecraft removing obfuscation in Java Edition

#377
post #270

Earlier quoted context omitted.

One of the biggest optimizations it offers is shrinking the size of the classes by obfuscating the names. If you're obfuscating the names anyway, there's no reason that the names have to be the same length. "hn$z" is a heck of a lot smaller than "tld.organization.product.domain.concern.ClassName"

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

Even a hash map with fully qualified names as keys wouldn't be so bad because Stirng is immutable in Java, so the hash code can be cached on the object.

Re: Minecraft removing obfuscation in Java Edition

#378

Earlier quoted context omitted.

> I wonder from a modding perspective would it be better if all public methods are just the API users can call and they themselves create a way for mods to exist? It's the way vintage story implemented modding. They developed the whole game as engine + modapi + hooking engine for stuff outside of hookapi. Then most of gameplay is implemented as mods on top of engine using api and hooking. And those tools are open sou…

> mods are automatically pushed to the clients I'm surprised this hasn't become a malware distribution channel yet.

It has and it hasn't. There's modders in the scene who I refuse to use mods from because I know they also have developed cheats.

All of the same supply chain issues you have with packages in a programming ecosystem exist in VS's mod system.

Re: Minecraft removing obfuscation in Java Edition

#379

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…

> that was actively encouraged by the design of the language. Java hasn't changed that much since the "hellscape" 00s. Is it better now? Or what is specific to the language the encourages "the mess of DAOs and Factories"? You can make all of those same mistakes in Python, C# or C++. I have used Java for about 15 years now and I have never written any of that junky enterprise crap with a million layers of OO. > I neve…

It insists upon itself. That’s really the problem with Java’s design philosophy from that era; it encourages ceremony. Even if you don’t write the full-on "Enterprise™" soup of DAOs, Factories, and ServiceLocators, the language’s type system and conventions gently nudge you toward abstraction layers you don’t actually need.

Interfaces for everything, abstract classes “just in case,” dependency injection frameworks that exist mainly to manage all the interfaces. Java (and often Enterprise C#) is all scaffolding built to appease the compiler and the ideology of “extensibility” before there’s any actual complexity to extend.

You can write clean, functional, concise Java today, especially with records, pattern matching, and lambdas, but the culture around the language was forged in a time when verbosity was king.

Re: Minecraft removing obfuscation in Java Edition

#380
post #259

Earlier quoted context omitted.

Java uses type erasure which are very cheap in compile time but you cannot do things like t = new T(); // T is a template parameter class C++ uses reified generics which are heavy on compile time but allows the above.

> C++ uses reified generics I was a C++ programmer for many years, but I never heard this claim. I asked Google AI and it disagees. > does c++ have reified generics? > C++ templates do not provide reified generics in the same sense as languages like C# or Java (to a limited extent). Reified generics mean that the type information of generic parameters is available and accessible at runtime.

Interesting I’d never picked up on this pedantic subtlety. I too thought reified meant what you could do at the call site not what you could do at runtime. Was my understanding wrong, or is Gemini hallucinating.

In any event, you have to use weird (I think “unsafe”) reflection tricks to get the type info back at runtime in Java. To the point where it makes you think it’s not supported by the language design but rather a clever accident that someone figured out how to abuse.

Post reply on HN