[HN Gopher] Minecraft removing obfuscation in Java Edition
___________________________________________________________________
Minecraft removing obfuscation in Java Edition
Author : SteveHawk27
Score : 446 points
Date : 2025-10-29 16:12 UTC (6 hours ago)
(HTM) web link (www.minecraft.net)
(TXT) w3m dump (www.minecraft.net)
| armchairhacker wrote:
| Minecraft, Roblox, Geometry Dash, Trackmania...these are games
| that succeeded because of their communities. Alone, they don't
| provide much for the average player, but creative players build
| interesting things that appeal to everyone.
|
| I think one of the reasons Vision Pro and metaverse have been
| struggling is because their engines are bad. Not just locked
| down, but hard to develop on (although I don't have personal
| experience, I've heard this about VR in general). If you want to
| build a community, you must make development easy for hobbyists
| and small users*. I believe this has held even for the biggest
| companies, case in point the examples above.
|
| * Though you also need existing reputation, hence small companies
| struggle to build communities even with good engines.
| bigyabai wrote:
| > Not just locked down
|
| The lockdown is a big part of it, though. The industry has
| cross-platform VR/AR SDKs like OpenXR that Apple refuses to
| implement. A big reason their platform isn't supported day-and-
| date with multiplat VR releases is Apple's insistence on
| reinventing the wheel with every platform they make.
|
| If the rumors of Valve's VR headset being able to run
| flatscreen games are true, it's more-or-less Game Over for the
| Vision Pro. The appetite for an iPad-like experience with six
| DOF is already handled by much cheaper machines.
| armchairhacker wrote:
| Many creative people don't care about being "locked in",
| since they already make mods that can be broken by updates
| (and often are, unintentionally) and threatened legally (for
| violating IP and DRM). I think the much bigger problem with
| locked-down engines is simply that the lockdown methods used
| make it harder to develop on them.
| Mr_Bees69 wrote:
| UE5 is decent for vr.
| jon-wood wrote:
| The other reason being that nobody is asking for The Metaverse,
| and definitely don't want to spend huge chunks of cash on a
| funny hat to wear in order to access it.
| beeflet wrote:
| Some people are asking for The Metaverse. Currently, the
| entire VRChat userbase. But you're right that there is not a
| large population of people willing to throw cash at it
| outside of a minority of virtual furries
| kg wrote:
| Critically, VRChat works on desktop (though it's an
| inferior experience), and you can incrementally enhance
| your experience with it by doing things like webcam
| face/hand tracking instead of buying an expensive headset.
| armchairhacker wrote:
| Examples that demonstrate why lockdown hurts ease-of-use
| and therefore non-intrinsically hurts community. Meta or
| Apple may not realize people want on desktop want to use
| VR software; they may want people to spend more (although
| a smaller community may generate less overall revenue);
| they may want people to have the "true" experience (their
| idea of what the users want, instead of what they
| actually want); they may not want to spend the budget and
| expertise to develop webcam face/hand tracking.
|
| If they released a cheap or impressive enough VR headset,
| I doubt desktop or face-tracking would matter. But I
| think the next best thing, a decent headset with an open
| platform that enabled such things, would've saved them.
| hnuser123456 wrote:
| VRChat is also consistently active with people making new
| worlds/maps, avatars, etc. There also used to be a client
| modding scene with e.g. melonloader but that got cracked
| down on around 2022. The "metaverse" however, does it
| even exist? Is there a vrchat-like, meta-built social vr
| environment available on quest hardware?
| kragen wrote:
| Probably half the people who grew up with Instagram cat
| filters are furries now.
| tmtvl wrote:
| I am now instantly reminded of that clip of the cat whose
| human filter wasn't working. 'I'm not a cat', indeed.
| kragen wrote:
| A lot of people seem to be spending huge chunks of cash on
| enormous monitors, dual monitors, curved monitors, etc., and
| the appeal of that is mostly that it gets you a little bit
| closer to wearing a head-mounted display.
| shermantanktop wrote:
| Makes sense that a primate with front-facing eyes that is
| both predator and prey would prefer to look at things at
| arms length rather than encase their head in a cocoon that
| is designed to block environmental awareness.
| kragen wrote:
| That's a function of what software you have running on
| it.
| cubefox wrote:
| Depends on what you mean with "environmental" awareness.
| Awareness of reality or virtuality?
| mikkupikku wrote:
| Monitors load my desk, not my neck.
| maeln wrote:
| > I think one of the reasons Vision Pro and metaverse have been
| struggling is because their engines are bad. Not just locked
| down, but hard to develop on (although I don't have personal
| experience, I've heard this about VR in general). If you want
| to build a community, you must make development easy for
| hobbyists and small users*. I believe this has held even for
| the biggest companies, case in point the examples above.
|
| Unity and UE have pretty good VR support nowadays, and even
| godot is getting there. Plus making a custom engine for VR was
| never that much harder than for a normal 3D game (well, once
| some API like OpenXR got normalized).
|
| The big issue with VR right now is that it is more costly to
| develop for than normal apps and games, while having less user.
| It makes it a hard sell. For some indie dev, I allow them to
| profit from a market that is not yet saturated (right now, with
| no good marketing, you just get buried on steam, any app store,
| etc). There are many factors that make it more costly, like
| having to support several mobility and accessibility features
| for games (for example smooth and jump locomotion, reduce fov
| when moving the view, etc), that you usually don't have to care
| for in other plateform. And there is the issue of
| interactivity. UX (and in many ways UI) is still very far from
| ideal. Most VR apps and games just try things out, but there is
| still a world of pattern and good practice to build up. This
| makes using anything VR often an annoying experience.
| Especially since some issue can be an absolute no-go for some
| user. As an example, displaying subtitle in a 6dof environment
| can be tricky. Some game put it at a fix point of your view,
| which can cause nausea and readability problem, some move still
| follows the head/view but with a delay, which reduce nausea
| issue but can be distracting and also has readability issue
| (the subs can go out of view).
| astrobe_ wrote:
| You can add the Flight Simulator series to the list, which
| spawned a vast ecosystem of add-ons, both free and commercial.
|
| I believe though, that what you actually need as a big or small
| company, is good game first and foremost; the engine is
| secondary. When the community around a game reaches a critical
| mass, the very small percentage of its members who have the
| skills to modify things becomes significant as well.
|
| For instance, Richard Burns Rally was not intended to be modded
| at all, yet the fans added new cars, new tracks, online
| scoreboards, etc.
|
| In the Luanti [1] community (a voxel games engine/platform,
| designed to be moddable nearly from the start), one begins to
| see something similar as well: notable games gets mods, others
| don't (the former default game is a particular case; it is not
| exactly good but go tons of mods because of its status, and
| games based on it benefit from that ecosystem). Yet all use the
| same engine (perhaps Roblox is similar in that respect, I'm not
| sure if they have "reified" whole games like Luanti did).
|
| [1] https://www.luanti.org/
| Nition wrote:
| I'm always impressed when I check it, that flightsim.com is
| still running, and still has everyone's mods going right back
| to the 90s. Just in case anyone still wants the poor quality
| airport I uploaded for Flight Simulator 2000 twenty-something
| years ago.
| nkrisc wrote:
| The thing is, Minecraft of 10 years ago (or more) wasn't even
| really that great of a game. It wasn't bad, I enjoyed it, but
| it wasn't that great.
|
| What it did do right was be very open-ended and be conducive
| to modding, both of which were amplified by multiplayer
| capabilities.
|
| I would wager that most of the fun players have had in
| Minecraft is from experiences that were built on top of
| Minecraft, not from the game's own gameplay.
| stronglikedan wrote:
| The Meta Quest is very easy to develop for. There's tons of
| games of all caliber from solo devs up to full studios. The
| reason the Metaverse is failing is because no one wants it,
| even though they keep shoving it down people's throats. VR
| gamers just want to play games, not dick around in "worlds".
| Meta is tone deaf to this.
| criddell wrote:
| I don't think they're tone deaf, they just know that
| inexpensive gaming headsets can't make them enough money.
| They've invested something like $100 billion into VR and
| "only" sold 20 million headsets The revenue generated
| annually is almost nothing.
| cubefox wrote:
| There isn't yet a game that involves all the players in one
| huge level, without shards, but there might be eventually.
| Current game engines don't support levels with that many
| players simultaneously. There is an interview with Neal
| Stephenson and Tim Sweeney on the Metaverse where Sweeney
| says supporting massive multiplayer is what he plans for
| Unreal Engine 6:
| https://www.matthewball.co/all/sweeneystephenson
|
| > So one of the big efforts that we're making for Unreal
| Engine 6 is improving the networking model, where we both
| have servers supporting lots of players, but also the ability
| to seamlessly move players between servers and to enable all
| the servers in a data center or in multiple data centers, to
| talk to each other and coordinate a simulation of the scale
| of millions or in the future, perhaps even a billion
| concurrent players. That's got to be one of the goals of the
| technology. Otherwise, many genres of games just can never
| exist because the technology isn't there to support them. And
| further, we've seen massively multiplayer online games that
| have built parts of this kind of server technology. They've
| done it by imposing enormous costs on every programmer who
| writes code for the system. As a programmer you would write
| your code twice, one version for doing the thing locally when
| the player's on your server and another for negotiating
| across the network when the player's on another server. Every
| interaction in the game devolves into this complicated
| networking protocol every programmer has to make work. And
| when they have any bugs, you see item duplication bugs and
| cheating and all kinds of exploits. Our aim is to build a
| networking model that retains the really simple Verse
| programming model that we have in Fortnite today using
| technology that was made practical in the early 2000's by
| Simon Marlow, Simon Peyton Jones and others called Software
| Transactional Memory.
| mminer237 wrote:
| All of those were also all $0-$20. It's kind of a chicken and
| egg problem to build a user and developer community. Games have
| to build a strong playerbase with limited content, then enough
| gamers have to be invested enough to become creators. Enough
| have to be able to actually pull off the development, yes, but
| I think the even bigger problem is that they'll never have a
| reason to with the small number of users inherent with
| platforms that cost $500-$3500 for special hardware to get
| onto.
| jjmarr wrote:
| Roblox had a phenomenal engine when it came out and its terrain
| destruction is still unmatched.
|
| In 2006, I could download the Roblox app and bam, I would play
| thousands of 3D multiplayer games for free that loaded near
| instantly. With fully destructible buildings and dynamic
| terrain. Somehow I didn't get viruses from remote code
| execution.
|
| That was groundbreaking at the time. In that era, I'd have to
| download Steam, _buy_ individual games like Counterstrike, and
| the wackiest thing would be the "surf" gamemode. Most games
| I'd buy on CDs. I certainly couldn't knock down entire
| buildings with grenades.
|
| If you contrast with Second Life/Habbo Hotel, you could walk
| around and talk to people I guess?
|
| The community that spring up around it _eventually_ carried it
| into total dominance of gaming for American children, but the
| _basic_ parts of the engine like "click button, load into
| game, blow stuff up" were a decade ahead of the curve.
|
| Also Blockland cost money, Roblox was free.
| Sweepi wrote:
| how big was Roblox in 2006?
|
| > _In that era, I 'd have to download Steam, buy individual
| games like Counterstrike, and the wackiest thing would be the
| "surf" gamemode._
|
| You could also play any Source mod. Also WC3 maps were insane
| at the time.
| jjmarr wrote:
| Roblox was tiny in 2006. I joined in 2008. It was still
| leading the market.
|
| To give an example, Roblox added user-created cosmetic
| t-shirts as a way to monetize the platform. Developers
| immediately scripted their games to recognize special "VIP
| t-shirts" that would provide in-game benefits. And quickly
| created idle games called "tycoons" where you could wait 2
| hours to accumulate money to buy a fortress, or buy the
| t-shirt to skip all that.
|
| I don't think there were any modding systems with mtx
| support.
| skeaker wrote:
| In many ways it remains ahead of the curve. Kids that grow up
| making games in Roblox rarely survive the jump to a dedicated
| engine because Roblox is just so much easier to develop for
| in nearly every aspect. One big thing I've heard is that
| instantly getting working, robust online multiplayer by
| default baked into the engine is a major plus.
| throwaway89201 wrote:
| > I'd have to download Steam, buy individual games like
| Counterstrike, and the wackiest thing would be the "surf"
| gamemode.
|
| It's interesting that you chose Counter-Strike as an example,
| as that is a Half Life mod itself, and by 2006 there was a
| large ecosystem [1] of Half Life modifications using Metamod
| and AMX Mod (X). The last one in a weird C-like language
| called Small or Pawn, which was my first programming language
| that I made serious programs with.
|
| Especially the War3FT mod where users gained server-bound XP
| in combination with a reserved slots plugins which allowed
| top-XP users to join a full server really created a tight
| community of players on my tiny DSL home-hosted server.
|
| [1] https://www.amxmodx.org/compiler.php?mod=1&cat=0&plugin=&
| aut...
| kvam wrote:
| Agree! We saw this a lot. Launching with the Quest 3, we were
| often the first company to do X, Y, Z despite being months
| after new features had been released in the SDKs because they
| were poorly documented (and often even conflicting).
|
| Diverging even slightly from the demo use case would quickly
| feel like Sisyphus; so close, but never succeeding in getting
| over the hill.
|
| Good for marketing in certain cases (to be the first), but bad
| for the community of builders
| YesBox wrote:
| I disagree with regard to Minecraft (only game I played in that
| list). I bought the game while it was in alpha and even then
| the single player experience was outstanding and sucked me in.
| I still have vivid memories from 15+ years ago. The balance of
| creativity and survival (and friggen creepers) was perfect.
|
| I dont think I am alone in saying this. IIRC the game was
| making millions while still in alpha.
| joemi wrote:
| Yeah, I think Minecraft definitely still would have been a
| hit without any modding. Though it might not have become the
| absolute juggernaut that it is now without it -- it's hard to
| say for sure.
| pugworthy wrote:
| I think Valve wouldn't exist as they do now except for modding.
| Counter-Strike's popularity must have driven a lot of purchases
| early on, which allowed Valve the freedom to do things at their
| own pace rather than under pressure from publishers.
| bsimpson wrote:
| Fortnite has been attempting to be a platform rather than a
| game for years now. (Epic Games Store too, so you ridiculously
| have to launch one then the other before you can pick your
| game.)
|
| Curious to know to what degree the "Creative" maps have fueled
| Fortnite's success as opposed to the 1st and 2nd party
| developed experiences.
| haunter wrote:
| > these are games that succeeded because of their communities
|
| To me an interesting thing when a game succedes despite its
| community. As if people can endure a lot of toxicity as long as
| the game is good
| pwdisswordfishy wrote:
| > But we encourage people to get creative both in Minecraft and
| with Minecraft - so in 2019 we tried to make this tedious process
| a little easier by releasing "obfuscation mappings". These
| mappings were essentially a long list that allowed people to
| match the obfuscated terms to un-obfuscated terms. This
| alleviated the issue a little, as modders didn't need to puzzle
| out what everything did, or what it should be called anymore. But
| why stop there?
|
| Indeed, why did they even bother with this half-measure in the
| first place?
| rirze wrote:
| If I had to guess, the legal team's brains started melting when
| de-obfuscation was mentioned.
| Macha wrote:
| A lot of mod tooling was built around the obfuscated or
| community names for those APIs.
| gs17 wrote:
| I wouldn't worry too much about it breaking anything with how
| version-specific modding already is. And by the time the full
| release is out, I'm sure every tool will have updated based
| on the new names from the snapshots.
| quamserena wrote:
| Still is for legal reasons. Also the community names (Yarn)
| come with javadoc that actually explains what the function
| does
| matteotom wrote:
| Were the mappings only a subset of the obfuscated
| classes/methods/etc? Basically making the mapping a sort of
| public API
| ethmarks wrote:
| Perhaps it was easier? There were also probably legal reasons.
| giancarlostoro wrote:
| 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.
| throwaway48476 wrote:
| More games should be open source like doom. It doesnt effect
| the art assets which are still copyrighted.
| dontlaugh wrote:
| Amusingly, Minecraft is a counter-example. It has very few
| assets and they are hardly essential to the experience.
| duskwuff wrote:
| There are _so many_ third-party texture packs for Minecraft
| that losing access to the official ones would hardly even
| be an obstacle.
| xboxnolifes wrote:
| The music and sounds play a large part into the experience
| though, and are much harder to replace than the textures.
| tmtvl wrote:
| 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.
| gbear605 wrote:
| 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.
| speedgoose wrote:
| I remember the early Minecraft musics from C418 to be
| relatively unconventional, especially some of the jukebox
| discs.
|
| I started playing Minecraft again recently and while it
| sounds like it's the same artist, and it's still somewhat
| contemplative, it's not dissonant anymore.
| ollien wrote:
| It's even recognized by the Library of Congress!
|
| https://www.loc.gov/static/programs/national-recording-
| prese...
| xigoi wrote:
| I like Minecraft's music. If there was a way to have it
| not play when the game is paused or on the title screen,
| I would probably keep it on.
| sodapopcan wrote:
| 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!
| kragen wrote:
| It sounds like you might be looking for Minetest/Luanti.
| ajkjk wrote:
| no, I think they're looking for the official game to be open
| sourced... that's much more appealing than a knockoff since
| it's the version everyone actually plays.
| kragen wrote:
| It's much less appealing because it's much harder to mod.
| willis936 wrote:
| It's much more appealing because it has a much more
| vibrant modding community.
| kragen wrote:
| Community can go a long way towards compensating for
| worse technology, yeah.
| nmilo wrote:
| Community is the entire goal. The technology just has to
| meet some minimum threshold. You know any 13 year olds
| playing Minetest?
| kragen wrote:
| I don't know any 13-year-olds, but I hear that a lot of
| them do play Minetest.
| unleaded wrote:
| less appealing to who? Lots of 13 year olds learned to
| code by writing minecraft mods so it can't be that hard.
| You also get the benefit & satisfaction of it actually
| being in Minecraft--yes, they are both very similar games
| where you explore and place blocks in a procedurally
| generated world, but it really does matter. I can't
| really explain why if you don't get it but it's evident
| people do care even when they know about Minetest.
| mikkupikku wrote:
| There's no reason for them not to. Open source launchers using
| the "honor system" for account verification are already
| established and normalized. It's trivial to just comment out
| that verification. The jars and assets are free to download
| from Microsoft's servers without needing an account. It's a
| trivial game to get without paying, so I don't see any downside
| for them to open source the engine.
| NelsonMinar wrote:
| 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...
| ikamm wrote:
| Notch has said he would do many things and rarely follows
| through with them. I'm still waiting for 0x10c.
| ecshafer wrote:
| He sold the game to Microsoft, his promises kind of don't
| matter anymore.
| ikamm wrote:
| I think you meant to reply to the parent comment, I never
| mentioned Minecraft
| einsteinx2 wrote:
| > Once sales start dying
|
| Has that part ever happened?
| ntoskrnl_exe wrote:
| I'm pretty sure A Minecraft Movie has already made more money
| that the game had made when he made that promise.
|
| Back then he couldn't have foreseen the size of the money
| printing factory that the game would become.
| OkayPhysicist wrote:
| At this point, they could open source it, and just charge for
| Minecraft accounts being able to authenticate with their login
| servers to join authenticated Minecraft servers, and it
| wouldn't change sales much.
| Traubenfuchs wrote:
| I'd like to see a benchmark between the obfuscated and non
| obfuscated version.
| internetter wrote:
| Probably virtually the same. If I recall, the "obfuscation" was
| mostly mangling
| Traubenfuchs wrote:
| Luckily I have never had to deal with obfuscation, but from
| what I have seen there are some grotesque things like
| defining every single randomly named method call in an array
| or map with random order or weirdly combining or tearing
| apart methods.
|
| The only time I encountered it was when I was working for the
| government, we were working on the rules that decide who gets
| audited in depth by the tax police. The .jar it compiled to
| was obfuscated.
| wtallis wrote:
| My decade-old recollection is also that Minecraft's
| obfuscation didn't do anything structural, just mangled
| class and method names. Think of it more like JavaScript
| minification than a serious attempt to thwart reverse
| engineering.
| duskwuff wrote:
| Minecraft - like most Java games - just used Proguard. It
| renames classes/fields/methods and sometimes inlines
| private methods, but doesn't make any substantial changes
| to control flow.
| xxs wrote:
| I have seen =tons= of obfuscation (non-minecraft). Back in
| the late 90s it used to be popular, unfortunately.
|
| Most of the stuff is like naming every method a or b, and
| using the fact they are overloaded, given one-letter-name
| or a reserved keyword like 'if' to classnames (or packages)
| was popular, too. Pretty much constant pool modifications
| w/o too much byte-code-editing.
|
| Overall cheap and unnecessary and has not stopped anyone.
| ok123456 wrote:
| It's still pretty popular. Most large smartphone
| applications are obfuscated to some degree. At least for
| Android, because it's bytecode for a VM, it's still
| trivial to disassemble and understand what is happening
| at a high level.
| circuit10 wrote:
| For Minecraft it's just removing names and replacing them
| with random strings
| SkiFire13 wrote:
| AFAIK it also shortens the names, which might make the jar
| smaller or make it take less time to do name resolution at
| runtime. It probably won't be very relevant though,
| especially after startup.
| PaulKeeble wrote:
| The files will be a little smaller obscured but it doesn't
| usually impact much other than RAM usage. The algorithms are
| all the same. Given the size of methods for being JIT compiled
| is token based not text size I don't think it even impacts that
| choice. So expect it to be identical.
| xxs wrote:
| same, except for meta space used - the class/variable names
| don't have pretty much any meaningful impact on java runtime,
| when the code is JIT'd. Even before (interpret mode) that the
| className/fields/methods are just references in the constant
| pool
| squigz wrote:
| For those in the modding scene, what difference, if any, will
| this make? Will this enable anything that was previously not
| possible?
| the_gipsy wrote:
| Should make it easy to have mods running on latest releases.
| squigz wrote:
| But the only version that matters is 1.20.1!
| Modified3019 wrote:
| Speak for yourself, Create supports 1.21.1 (neoforge) which
| is what my bloated and fragile mess of a mod pack is built
| on.
| xboxnolifes wrote:
| I think you typoed 1.7.10
| ZeWaka wrote:
| I think you typed b1.7.3
| VikingCoder wrote:
| At a guess, it will enable quicker updates on major revisions,
| where things move around a lot. There will be less reverse-
| engineering needed.
| ZeWaka wrote:
| They were already releasing official mappings.
| axus wrote:
| It's possible that the de-obfuscated symbols will be more
| backwards-compatible, since they don't need to change with
| every minor release. Though I'd imagined Forge and Fabric were
| supposed to provide a stable platform, yet plugins for those
| still need a different jar for every minor version.
| yrxuthst wrote:
| Main difference for NeoForge developers will be method
| parameter names in the IDE, the current mapping doesn't include
| those. We have community mappings (Parchment) for common
| methods, but there are a lot of less used functions that just
| have decompiler names. I don't use Fabric so I'm not sure how
| it will affect those devs.
| kevincox wrote:
| I'm pretty excited this but for a slightly strange reason. I have
| a little monitor for the logs that posts things like player joins
| and deaths to a chat room. It is fun and also encourages people
| to hop on the server when someone joins.
|
| However the source information was always missing and strange in
| the logs making matching some messages difficult. Hopefully this
| will make more messages more unique so that I can easily match
| the ones I am interested in.
| PaulKeeble wrote:
| As I understand it way back in the early Beta days of Minecraft
| obfuscation was added to avoid mods being embedded into the JAR
| and it being released as a combination enabling piracy of the
| game with mods embedded.
|
| This has been a pain to workaround for years as the modding scene
| has gotten bigger. Hopefully this makes modding a bit more
| accessible.
| hackthemack wrote:
| I much prefer just writing stuff for Luanti (formerly minetest).
|
| You can, pretty much, get the Minecraft experience by downloading
| mods. Or just use the VoxeLibre game mod.
|
| https://content.luanti.org/packages/Wuzzy/mineclone2/
|
| The mods are written in lua and you can find the source code for
| most of them.
|
| One I like is Zoonami which turns the experience into a Pokemon
| like game.
|
| https://content.luanti.org/packages/isaiah658/zoonami/
| anthk wrote:
| Zoonami will achieve what Tuxemon didn't.
| cachius wrote:
| https://github.com/luanti-org/luanti
| NelsonMinar wrote:
| 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.
| krackers wrote:
| 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.
| bitexploder wrote:
| Over time people learned the key APIs and classes that you
| needed to interact with. And obfuscated Java is like an order
| of magnitude easier to work with than machine code. Once
| someone figured out how to do something it was generally
| pretty easy to use that interface to do your own thing.
| Modders of course still often hit edge cases that required
| more reversing, but yeah, it was really cool to watch over
| the last 15+ years :)
| 6SixTy wrote:
| 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 replaced both of those.
| nightpool wrote:
| Not only working around proguard, but Minecraft mods are
| built on top of an incredibly cool and flexible runtime class
| file rewriting framework that means that each JAR can use
| simple declarative annotations like @Inject to rewrite
| minecraft methods on the fly when their mod is loaded or
| unloaded. This massively revolutionized mod development,
| which was previously reliant on tens of thousands of lines of
| manually compiled patches that would create "modding APIs"
| for developers to use. Putting the patching tools in the
| hands of the mod developers has really opened up so many more
| doors.
|
| Minecraft also has a plugin system based around JSON file
| datapacks, but it's a lot more limited. It's more at the
| level of scope of adding a few cool features to custom maps
| then completely modding the game.
| LelouBil wrote:
| The devs for Java Edition really have mods in mind
| nowadays.
|
| - They left in the code debug features that they used to
| strip out.
|
| - They left in the code their testing infrastructure that
| they used to strip out as well.
|
| - They started making everything namespaced to
| differentiate contents between mods (like in this week's
| snapshot they made gamerules namespaced with the
| "minecraft:" prefix like items and blocks and whatnot)
|
| - They are adding a lot more "building blocks" type
| features that both allow new /easier things in datapacks,
| and in mods as well.
|
| Method patching with Mixins is less needed now because the
| game's internal APIs are more versatile than ever.
| nightpool wrote:
| That's definitely true, and I think that's a testament to
| Minecraft / Java's strong OO design--it dovetails very
| nicely with the Open/Close principle. However my view is
| that for a mod to be a mod, there's always going to be
| stuff that you can't/shouldn't implement just with
| datapacks--whether that's complex rendering features, new
| entity logic, or whatever. The Mixin processor makes it
| really easy to build these kinds of features in a very
| compatible way
| hyghjiyhu wrote:
| These tools sound very powerful, could they find use for
| other Java codebases?
| ZeWaka wrote:
| They've also been working with a lot of modders on the
| rendering engine over the past year or two.
| Nition wrote:
| I remember Notch saying in 2010 that he planned to add an
| official modding API, but it never actually happened.
|
| ---
|
| Edit: https://web.archive.org/web/20100708183651/http://notch
| .tumb...
| nightpool wrote:
| Data packs were released in October 2017! And we had
| command blocks in 2012 for custom maps
| Philip-J-Fry wrote:
| Most modders aren't reverse engineering the game. There's a
| small community that are doing the obfuscation and then
| everyone else is effectively working from normal Java code.
| 1313ed01 wrote:
| I am terrified by Minecraft mods always being distributed from
| dodgy download sites and not rarely come with their own Windows
| EXE installers. And as far as I know there is no sandboxing at
| all in the game (uhm, no pun intended) so once installed the
| mod has full access to your computer?
| trenchpilgrim wrote:
| Yup very common to take a popular minecraft mod, insert
| malware, rehost it, and seo your way into getting downloads.
| superb_dev wrote:
| This is not the norm these days! There are popular mod
| loaders like curseforge that pulled from moderated
| repositories. It's still not bulletproof, but a far cry from
| trusting some installer executable
| Imustaskforhelp wrote:
| I prefer modrinth as well, both are good but curseforge has
| done some things which makes us require an api etc. for
| true automation where modrinth is genuinely nice.
|
| I used to use prism launcher which would just give me a
| search box and It on the side would have things like
| modrinth / curseforge etc., Usually I preferred Modrinth
| but there were some modpacks just on curseforge only but I
| never really downloaded a shady modpack from some random
| website aside from these two, In fact sometimes I never
| opened up a website but just prismlauncher itself lol
| SkiFire13 wrote:
| > I am terrified by Minecraft mods always being distributed
| from dodgy download sites and not rarely come with their own
| Windows EXE installers.
|
| That's not their main mean of distribution, most often those
| sites were just third parties unrelated to the mod authors
| that repackaged the mod and somehow got a better SEO. But TBF
| back in the days the UX/UI for installing mods was pretty
| terrible. Nowadays there are more standardized and moderated
| distribution websites from which you just download the .jar
| of the mod.
|
| > And as far as I know there is no sandboxing at all in the
| game (uhm, no pun intended) so once installed the mod has
| full access to your computer?
|
| This is totally true though.
| xp84 wrote:
| As someone whose kid has pulled me into the world of using
| mods (though not (yet) making them for Java Edition) I think
| this PSA is worth sharing of how to use minecraft mods
| without pain and with minimal risk, in case anyone is getting
| started, or has gotten started and finds it frustrating:
|
| 1. Use MultiMC to manage instances with various mods, since
| mods are rarely compatible with each other, and since each
| version of a mod only is compatible with a single specific
| point release of the game itself.
|
| Never download any EXE files to get a mod, that does sound
| sketch AF.
|
| 2. mods are always packaged for a particular Loader (some
| package for multiples and some require Forge, Fabric, or
| NeoForge), and MultiMC can install any of them into a given
| instance. Aside from different startup screens there seems to
| be no difference so idk why we need 3 different ones.
|
| 3. Curseforge's website and modrinth both seem to be legit
| places to get mods from. I personally find the installable
| Curseforge program itself to be bad and spammy, and would
| never use that, but the site still lets you directly download
| the jars you need, and lets you check "Dependencies" to find
| out what other mods you need.
| mikkupikku wrote:
| If you're using MuliMC or one of its various forks, you can
| search for and install mods from modrinth or curseforge
| right in the launcher. I fine it more convienent than doing
| it with a browser and dragging them in, but either way
| works.
| yrxuthst wrote:
| There are actually two versions of the Curseforge client,
| the "Overwolf" version that is built on that platform (and
| is quite bad as a result) and a newer standalone version
| that doesn't use Overwolf, it's much better.
| quamserena wrote:
| Yeah mods are just regular Java .jars that can do anything.
| To circumvent this issue Mojang introduced datapacks but they
| are super limited in what they can do. They're basically just
| Minecraft commands in a file along with some manifest files
| to change e.g. mob loot drop rates. These Minecraft commands
| are Turing complete but a huge PITA to work with directly, no
| concept of local variables or if statements, no network
| access, etc. Every entity in MC has associated NBT data that
| is similar to JSON that stores values like position,
| velocity, inventory, etc. You can change NBT with commands
| for mobs, but in what can only be described as a religious
| decision, Minecraft commands are unable to modify player NBT.
| So for example it is impossible to impart a velocity on a
| player.
|
| One wonders why Mojang didn't embed Lua or Python or
| something and instead hand-rolled an even shittier version of
| Bash. The only reason MC servers like Hypixel exist is
| because the community developed an API on top of the vanilla
| jar that makes plugin development easy. Even with that there
| is still no way for servers to run client-side code, severely
| limiting what you can do. They could've easily captured all
| of Roblox's marketshare but just let that opportunity slip
| through their fingers. Through this and a series of other
| boneheaded decisions (huge breaking changes, changes to the
| base game, lack of optimization), they have seriously
| fractured their ecosystem:
|
| - PvP is in 1.8 (a version from 2015) or sometimes even 1.7
| (from 2013)
|
| - Some technical Minecraft is latest, some is in 1.12 (from
| 2017)
|
| - Adventure maps are latest version
|
| - Casual players play Bedrock (an entirely different
| codebase!)
|
| The words "stable API" have never been said in the Mojang
| offices. So the community made their own for different
| versions, servers use the Bukkit 1.8 API, client 1.8 mods use
| Forge, latest mods use Forge or Fabric. The deobfuscated
| names are of little utility because the old names are so well
| ingrained, and modders will also probably avoid them for
| legal reasons.
| charcircuit wrote:
| Bedrock has proper mod support and you can program with
| Typescript.
| quamserena wrote:
| Better than datapacks overall but lacks a way to plug
| into the rendering pipeline or make custom dimensions.
| Java mods have more capabilities
| pdntspa wrote:
| Yes, much like how most software for PC has been written
| since the beginning of time?
| userbinator wrote:
| 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.
| pphysch wrote:
| Agreed; modding obfuscated Java is impressive, but not quite
| on the level of modding in the (Nintendo) emulation
| community. The things that have been achieved with classic
| Nintendo titles are absurd, like adding high-performance
| online multiplayer to Super Smash Bro. Melee.
| karlding wrote:
| Said online multiplayer [0].
|
| The devs also wrote a write-up here about how they handle
| the desyncs in netcode [1].
|
| [0] https://slippi.gg/
|
| [1] https://medium.com/project-slippi/fighting-desyncs-in-
| melee-...
| ed_elliott_asc wrote:
| Tbh decompiling software and figuring out how it works isn't
| easy but that is part of the fun :) - it's the reason ive
| ended up following many of the weird paths in computing that
| I have
| abraae wrote:
| 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 the real world a person can be both employee and
| contractor at the same time, can flit between those roles and
| many others, can temporarily park a role (e.g sabbatical) and
| many other permutations, all while maintaining history and
| even allowing for corrections of said history.
|
| It would be hard to find any domain less suited to OO that HR
| records. I think these terrible examples are a primary reason
| for some people believing that OO is useless or worse than
| useless.
| pavo-etc wrote:
| 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
| methods that are sometimes hidden behind getters so you
| can't even easily tell where the computation is happening,
| etc
| Romario77 wrote:
| You could write crappy code in any language. I don't
| think it's specific for Java. Overall I think java is
| pretty good, especially for big code bases.
| Quekid5 wrote:
| > I can't imagine building something like a graphics
| framework without some subtyping.
|
| While React technically uses some OOP, in practice it's a
| pretty non-OOP way do UI. Same with e.g. ImGUI (C++), Clay
| (C). I suppose for the React case there's still an OOP
| thing called the DOM underneath, but that's pretty
| abstracted.
|
| In practice most of the useful parts of OOP can be done
| with a "bag/record of functions". (Though not all. OCaml
| has some interesting stuff wrt. the FP+OOP combo which
| hasn't been done elsewhere, but that may just be because it
| wasn't ultimately all that useful.)
| mywittyname wrote:
| 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 taught me to avoid applying for jobs
| that used Java.
|
| I like OOP and often use it. But mostly just as an
| encapsulation of functionality, and I never use interfaces
| or the like.
| ZeWaka wrote:
| To be fair, since 2019 Mojang has been providing the mappings
| instead of everyone having to use community-created ones.
| tripplyons wrote:
| It took me a while to find how to obtain the official
| mappings, but this article seems to have instructions:
| https://minescript.net/mappings
|
| According to the article, official mappings can be found
| here: https://piston-
| meta.mojang.com/mc/game/version_manifest_v2.j...
| mikkupikku wrote:
| They're also linked on the wiki page for each release,
| along with links to the client and server jars:
| https://minecraft.wiki/w/Java_Edition_1.21.5
| zachrip wrote:
| Why do they obfuscate if they're just going to provide the
| mappings?
| kulahan wrote:
| Well, maybe that's why they're not obfuscating anymore.
| singron wrote:
| Proguard can also apply optimizations while it obfuscates.
| I think a good JVM will eventually do most of them itself,
| but it can help code size and warm-up. I'm guessing as JVMs
| get better and everyone is less sensitive to file sizes,
| this matters less and less.
| Karrot_Kream wrote:
| Java is pretty easy to decompile and it's not a huge amount of
| effort to poke into the generated JVM code and start doing
| things. If you have a decent idea of how VMs work, C-like
| languages work, and how object dispatch works it's really not
| that hard. Also the early modding scene for Minecraft was
| really fun. I was a huge Minecraft player at the time and was
| early into the deobfuscating -> modding scene and the community
| was one of the most fun computing communities I've been in. Due
| to how focused it was on the game and its output it wasn't
| bogged down in nearly as much bikeshedding and philosophy as
| most FOSS projects get. Honestly one of the highlights of the
| coding I've done in my life.
| 64718283661 wrote:
| The community obfuscation mappings unrestrictively licensed. The
| Microsoft ones are not. It's a trap.
| poly2it wrote:
| Does copyright apply to variable names?
| jagged-chisel wrote:
| Given the Oracle v Google decision, the likely answer is yes.
| But then there's a fair use argument to be made.
| einsteinx2 wrote:
| But the whole point is there are no more mappings. I'm not sure
| what the trap is supposed to be?
| nurettin wrote:
| Maybe they should open source the loader instead of offering a
| solution to already solved problems so people don't have to
| resort to using third party loaders for on-prem gaming.
| mmis1000 wrote:
| The game is still a licensed game though. You technically must
| pay it and go though proper verification to start the game.
| (Although it's a 100% public secret that how to load it as you
| want, and basically every single mod dev kit does that for
| local dev)
|
| I guess Microsoft won't want to deal with the license issue of
| publishing the loader part.
| nisegami wrote:
| I consider Microsoft to be genuinely evil as an institution, but
| this is still nice to see.
| spullara wrote:
| You know what would make it even easier? Releasing the source
| code with a license that allows for modding.
| RGBCube wrote:
| Even if they made it Source Available it wouldn't hurt them much,
| because Minecraft is very easy to pirate and the reason anyone
| pays for anything at all is because you need an account in
| Mojang's authentication servers (which people do not want to move
| off of for various reasons).
|
| Hell, they could even make it Open Source with a clause
| preventing other companies from using to code to make a profit.
| It's too big to fail.
| TheDong wrote:
| > Hell, they could even make it Open Source with a clause
| preventing other companies from using to code to make a profit
|
| Such a clause would immediately make it Source Available not
| Open Source.
| txrx0000 wrote:
| This is surprising. Perhaps the Minecraft devs and community are
| dedicated and capable enough to prevent it from being
| enshittified by Microsoft. It might even be open-sourced someday.
| LelouBil wrote:
| Maybe they'll publish javadoc jars down the line !
| bityard wrote:
| Asking from a place of sincere ignorance: TFA says the code was
| obfuscated from the beginning, and that they deliberately kept it
| obfuscated all these years, and acknowleded the huge community
| that built mods for Minecraft in spite of it. But what TFA
| doesn't say:
|
| Why did they keep it obfuscated for so long even after it became
| readily apparent that almost everyone buys Minecraft to
| (eventually) play the mods?
|
| Why did they keep it obfuscated even though they acknowledged it
| didn't really stop modders (or anyone else) from understanding
| the program?
|
| What occurred recently that caused them to change their mind?
| James_K wrote:
| I wonder what Minecraft sales are like these days. I'd imagine
| most of the people who are going to buy it already have. Makes me
| wonder if they'll ever open the whole thing up.
| smlacy wrote:
| 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.
| huhtenberg wrote:
| Ha, this explains then why MSFT dropped 4% after hours!
| ReFruity wrote:
| One of my favorite mods ever across any game is Create for
| Minecraft. It is well-made and polished, and sparked a whole
| ecosystem of mods that work with it. I wonder what possibilities
| the de-obfuscation can bring to that ecosystem.
| taccal wrote:
| Stop scrolling! Ini yang lagi hype! jo 777 banyak menangnya!
| charcircuit wrote:
| I would rather see allowing creators to monetize their Java
| edition mods again, and to get rid of their restrictive rules on
| mods. The old version of the EULA actually gave people a lot of
| freedom, but then they changed the rules on everyone and locked
| it down. Obfuscation is not a true problem compared to those.
| ika9os wrote:
| Nnl n Rnl,rtl rtt,rtl ll,,,, B - )( ^ ^ ): - P: -
___________________________________________________________________
(page generated 2025-10-29 23:00 UTC)