Live data from Hacker News

Minecraft removing obfuscation in Java Edition

minecraft.net

321–330 of 478 posts

Re: Minecraft removing obfuscation in Java Edition

#321

Earlier quoted context omitted.

Back in 2010 Notch promised > Once sales start dying and a minimum time has passed, I will release the game source code as some kind of open source. https://web.archive.org/web/20100301103851/http://www.minecr...

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?

Re: Minecraft removing obfuscation in Java Edition

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

(Hi Andrew) It's the misuse of OO constructs that gives it a bad name, almost always that is inheritance being overused/misused. Encapsulation and modularity are important for larger code bases, and polymorphism is useful for making code simpler, smaller and more understandable. Maybe the extra long names in java also don't help too, along with the overuse/forced use of patterns? At least it's not Hungarian notation.

Heck, I love the long names. I know, I also hate FooBarSpecializedFactory, but that's waaaay better than FBSpecFac.

A sample: pandas loc, iloc etc. Or Haskell scanl1. Or Scheme's cdr and car. (I know - most of the latest examples are common functions that you'll learn after a while, but still, reading it at first is terrible).

My first contact with a modern OO language was C# after years of C++. And I remember how I thought it awkward that the codebase looked like everything was spelled out. Until I realize that it is easier to read, and that's the main quality for a codebase.

Re: Minecraft removing obfuscation in Java Edition

#323
post #75

Earlier quoted context omitted.

The music and sounds play a large part into the experience though, and are much harder to replace than the textures.

The sounds maybe, but the music? If there's one game whose music I always turn off instantly it's Minecraft. Touhou Youyoumu Minecraft ain't.

I play Minecraft for the music. And for the feeling of digging myself up from the mines and breaking through to surface to hear the sound of rain.

Re: Minecraft removing obfuscation in Java Edition

#324
post #261

Earlier quoted context omitted.

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.

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++.

Re: Minecraft removing obfuscation in Java Edition

#325
post #205

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…

Thankfully those days are not with us any more. Java has moved on quite considerably in the last few years. I think people are still too ready to use massive, hulking frameworks for every little thing, of course, but the worst of the 'enterprise' stuff seems to have been banished.

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 code should be written in the most enterprise way they can come up with.

Always makes me think of that AbstractProxyFactorySomething or similar, that I saw in Keycloak, for when you want to implement your own password quality criteria. When you step back a bit and think about what you actually want to have, you realize, that actually all you want is a function, that takes as input a string, and gives as output a boolean, depending on whether the password is strong enough, or fulfills all criteria. Maybe you want to output a list of unmet criteria, if you want to make it complex. But no, it's AbstractProxyFactorySomething.

Re: Minecraft removing obfuscation in Java Edition

#326
post #158

Earlier quoted context omitted.

Just think of the untapped market of fresh 9 year olds who've never seen/played the game before. It's infinite, there will always be more people who have never played Minecraft.

They're playing Roblox and Fortnite these days, both free of course.

Where are you getting that from? Minecraft has been comfortably above 100,000,000 monthly active users since at least 2019. The only comparable figure I can find for Fortnite claims 650,000,000 registered users, which doesn’t seem remotely possible unless at least half of them are bots. 650,000,000 is something like 1/12th of the world’s entire population. The Roblox figures I could find showed just under 400,000,000 MAU in 2024, which also seems completely beyond the pale.

Re: Minecraft removing obfuscation in Java Edition

#327
post #75

Earlier quoted context omitted.

The sounds maybe, but the music? If there's one game whose music I always turn off instantly it's Minecraft. Touhou Youyoumu Minecraft ain't.

The music is definitely considered classic, you can find tons of people online talking about how it means a lot to them - and personally, I really loved the music.

The classic Minecraft music was great. Some of the new music Mojang has added in recent years is unlistenable noise. Like "glitchcore" crap. I tried playing with music on recently and after a few hours had to give up.

Re: Minecraft removing obfuscation in Java Edition

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

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…

> I recognise there are problems where OOP is a good abstraction, but there are so many places where it isn't.

Exactly. This is the way to think about it, imo. One of those places is GUI frameworks, I think, and there I am fine doing OOP, because I don't have a better idea how to get things done, and most GUI frameworks/toolkits/whatever are designed in an OOP way anyway. Other places I just try to go functional.

Re: Minecraft removing obfuscation in Java Edition

#329
post #222
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…

I find inheritance works best when you model things that don't exist in reality, but only as software concepts, for example, an AbstractList, Buffer or GUI component.

Really like this concept!

Re: Minecraft removing obfuscation in Java Edition

#330

Obfuscating Minecraft code doesn't make much sense to me from an IP protection angle. It is one of the easier games to build from scratch once you see how it plays. Most of the magic is emergent behavior between many simple rule systems. Nothing in that source code would be much of a revelation. It's not like there's a nanite implementation hiding in there somewhere. It's mostly boring stuff like defining how pig or…

That's all true now but none of it was true back in the alpha days.

And once there were mods and mod loaders built on the obscured source, it became easier to not disrupt the toolchains than to bite the bullet; I think Mojang now wants to make moving mods easier (someone somewhere has to be a bit sad that there are famous modpacks running old versions of Minecraft because it's easier to backport everything to 1.7.10 (including running on newer Javas) than it is to update mods).

Post reply on HN