Live data from Hacker News

Minecraft removing obfuscation in Java Edition

minecraft.net

411–420 of 478 posts

Re: Minecraft removing obfuscation in Java Edition

#411

Earlier quoted context omitted.

More games should be open source like doom. It doesnt effect the art assets which are still copyrighted.

Amusingly, Minecraft is a counter-example. It has very few assets and they are hardly essential to the experience.

Free (as in freedom) software can still be sold.

OSS would probably also just mean "read the source e.g. on github", not really specific as to all the four essential freedoms.

Re: Minecraft removing obfuscation in Java Edition

#412

Earlier quoted context omitted.

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 bef…

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 client/server unification allowing singleplayer commands, open to LAN, greater mod compatibility, latency in singleplayer (maybe not actually good) - and villagers and villager trading and emeralds. 1.4 brought command blocks - and local difficulty and armoured mobs and withers. 1.5 brought analog redstone - and hoppers. I think 1.7 was only upsides though - texture atlasing and a new less-broken terrain pattern. That's where I stopped.

Re: Minecraft removing obfuscation in Java Edition

#413
post #137

Earlier quoted context omitted.

More proof that you don't need the source code to modify software. Then again, Java has always been easy to decompile, and IMHO the biggest obstacle to understanding is the "object-oriented obfuscation" that's inherent in large codebases even when you have the original source.

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…

You're right, it is all about the problem domain. Unfortunately, there was a solid decade where that was not the typical advice, and OO was pushed (in industry and in education) as the last word in programming, suitable for all tasks. There's a generation out there who was taught programming as "instantiate a truck object that inherits from a car object" and another generation who was required to implement math using OOP principles instead of just doing math. Programming languages that did not have object models suddenly developed them, often incompatibly with the rest of the language. So, while I think that OO has its places, I understand why there's a lot of visceral response to it online.

Re: Minecraft removing obfuscation in Java Edition

#414

Earlier quoted context omitted.

Interesting, I love Minecraft's music. I do listen to it intentionally outside of the game, but it's not quite the same as having it suddenly start up during gameplay. The first I heard of someone "obviously turning off the music" was, I kid you not, yesterday, and now I'm hearing it for a second time today. Would woulda thunk!

That specific coincidence is a great example of the "Baader-Meinhof phenomenon"

Ah, thank you! Never knew what that was called. Guess I could asked Chat Jippity but there's no fun in that.

Re: Minecraft removing obfuscation in Java Edition

#415
post #410

Earlier quoted context omitted.

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…

> modding it directly isn't as useful any more. Can you elaborate on this? This seems like a strange way of saying, "it's easier to mod little things with data/resource packs" - and mods are still absolutely necessary, as data/resource packs can't do everything. But they're great for, say, adding tags to random items (something I do regularly) or - the most obvious usecase - texture packs

Previously if you wanted to create a simple block type you would write something like this (very roughly and excusing HN not supporting code formatting):

public class MyBlock extends Block {public Icon getTexture() {return 0;} public String getTextureAtlasPath() {return "/mymod.png";}}

Later it was

public class MyBlock extends Block {Icon icon; public void registerIcons(IconRegistry r) {icon = r.register("mymod:myblock");} public Icon getTexture() {return icon;}}

You need a little bit more code and you have to know that "mymod:myblock" really means "/assets/mymod/icons/blocks/myblock.png" but it's not too bad. (Why not specify the actual path?)

But now it takes the Java class, plus about 5 different JSON files that are magically linked based on strings like the above (interpreted differently in each context), and if you want to simply set the icon in a few lines of code like before, you can't because all the code is specialized for handling JSON files. https://docs.minecraftforge.net/en/1.12.x/models/files/

You could argue it's better because it handles more block shapes, but the story for shapes isn't much better - you used to be able to write if(thingAboutItem) renderCertainWay(); but now you can write {"when":{"certain_condition":"true"}, "apply":{"model":"certain_model"}} and there's a whole bunch of code to write to map "certain_condition" to the condition you want, and woe betide you if your model isn't a bunch of textured axis-aligned cuboids. https://docs.minecraftforge.net/en/1.12.x/models/using/ https://docs.minecraftforge.net/en/1.12.x/models/advanced/ex...

If you know the inner-platform effect, it's the inner-platform effect: creating a poor replica of part of your programming environment in the quest for "configurability" or "no-code". https://en.wikipedia.org/wiki/Inner-platform_effect https://thedailywtf.com/articles/the_inner-platform_effect https://news.ycombinator.com/item?id=39412321

Modding with data packs is harder than modding with Java used to be, and modding with Java now is also harder than modding with Java used to be, because of data packs.

Re: Minecraft removing obfuscation in Java Edition

#416

I wonder if they'll ever just open source the Java Edition on GitHub. People will buy Minecraft on every platform it is released on, just like Skyrim.

More games should be open source like doom. It doesnt effect the art assets which are still copyrighted.

This is one area EA has been doing well.

They have been open sourcing some of their older IPs, they recently open sourced their Command & Conquer games for example:

https://www.ea.com/games/command-and-conquer/command-and-con...

Re: Minecraft removing obfuscation in Java Edition

#417

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…

Funny, given that interfaces are the good part (especially compared to inheritance).

I didn't mean to imply that interfaces are bad or useless. Just that I don't use them. Probably because I write most of my stuff in Python anymore.

Re: Minecraft removing obfuscation in Java Edition

#418

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…

You’re right, my bad, Spigot (from Bukkit), not Fabric. I got the impression it’s actually using ~~Fabric~~ Spigot code for this because you’re using plugins compiled for Spigot and both a paper.whatever and spigot.whatever config file, but after looking it up I see that they forked it.

I’m not really clear on mod vs plugin vs mixin, I was just trying to refer to whatever software does the decompilation work rather than just consuming APIs provided by projects that do.

Sounds like it’s correct that Paper didn’t do its own mod API, but incorrect that Paper doesn’t do its own decompilation work.

> By playercount, it is the largest (custom, standalone) MC server software in the world.

Do you have a source on this? Not trying to accuse you of anything, I just know that a few servers claim this, and don’t know if we have reliable numbers.

Re: Minecraft removing obfuscation in Java Edition

#419

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.

Mod developers were able to get the source code for Minecraft through a developer program over a decade ago. I'm not sure that it is still the case. I think they are just de-obfuscating the compiled CLASS files so anyone can decompile them without access to the source.

Re: Minecraft removing obfuscation in Java Edition

#420

Earlier quoted context omitted.

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 cod…

I'm pretty sure if code is obfuscated there are no usable names and so people or deobfuscator comes up with original names.
Post reply on HN