#1.21.11 Snapshots
1 messages Β· Page 2 of 1
I'll have to deal with that
we also need to change Neoform
But good news, you have a whole update cycle to make the changes
need to use jst to rewrite the sources to the new mappings merged into the old classes
it's automatable, just painful
how many patches are there? is it worth automating?
I'm waiting for a vineflower release before releasing neoform for 25w44a because I am not patching more than 200 annotations
yes lol, there are hundreds
Oh well yeah go ham lol
yeah, ok, locals are confirmed (see #789950127774105602 message), which will make many parts sooo much less pain
looking at stuff like FogRenderer#setupColor
www.minecraft.net/en-us/article/removing-obfuscation-in-java-edition
Congratulations to who I assume are Mojang's programmers for finally pushing this through. When I started work on alternate community-sourced Minecraft mappings in 2016, I did not imagine that it would start a domino chain culminating in Mojang's legal team finally conceding that the charade of binary obfuscation for one of the most reverse engineered games in the world is no longer beneficial to maintain.
Now let's hope Fabric finally lets Yarn go independent, as they should have done long ago.
idk where that is linking but it ain't accessible for me
did you try clicking on it 
now it works
it's a message in fabricord
it turned into unknown and now it works
yeah, that's what happens when you're not in the server it links to
day one rendering changes mapped yay
no, I mean it was literally giving me an error message. I did try it like normal first.
it doesn't matter though, it works now! π
discord jank Β―_(γ)_/Β―
There are 790 patch files in Neo itself. Not sure how many NeoForm patches there are
π₯³
how much will this speed up gradle refresh
not unless we somehow get source visible mixins
that's theoretically possible right?
OBFUSCATION IS DEAD
just a bit of a pain
And even if we had source-visible mixins, there are some things you simply cannot do with mixins while patches can
there was talk about moving patches to mixins when they were working on runtime mojmaps, I'm pretty sure, so there has been a bit of thought that has gone into this already
yeah, there was at least talk about doing that
That's no use
this actually has the incredible benefit of making our patches super readable lol
Yes that's a very good point
(and reducing rejects, once we're over the initial hump)
im late to everything... whats this about mojang no longer obf mc? thats crazy
are they like releasing sources (would love to have comments/javadocs in vanilla code mojang please)
or just the compiled jar skipping the obf proguard step they currently do
starting with next snapshot, they will provide alternative files that will be deobfuscated, so we can observe the differences
and starting with the next snapshot cycle after the current drop, the main files will be deobfuscated
no sources
only jars with real class/method/field names and LVTs
no docs
no capes!
-# wait, wrong reference
deobf capes implies the current capes are obfuscated
which means they contain some meaningful information and aren't just pixel art
I meant capes because java edition is now no longer obfuscated
Well, we can't add more of those either.
capes for everyone who had to deal with obfuscated jars and stuck around
how different will vanilla code look now that we wont have to deobf everything
will we see all the magic numbers and stuff turn into static final references and such?
no
those are inlined
the only real difference is the names of things
local variables and parameter names
its still the compiled code, not the source files (for now)
local var names will be real sweet, could get param names via parchment but i guess aside from javadocs thats now dead
yes parchment and yarn are reportedly EOL
hehe yarn that should have died when offical mappings released
also i hope parchment doesnt full die
i like the javadocs it provides
well
I hope parchment dies
in the way forge did
replaced
I want the yarn people and the parchment people to merge into a big javadoc group
and make the best javadocs
i mean if mojang drops some kind javadoc jar that we can merge during setup
that would be great, having mojang comments and such would be real nice
would love to see what kind of cursed comments mojang makes
I suppose thatd be similar to release deobf mappings
its not a full sources jar its just the docs
annotations?
I thought we have those
did they not ship annotations before
unpick will be nice tho
If they're only Retention(SOURCE), then no
Oh, is unpick part of parchment?
I thought unpick was fabric
built by and used by fabric, but that doesnt mean we cant use it
There was already talks of including the unpick data in parchment, the news has just moved up the timeline on that
now that they dont have to worry about silly things like the reason they began the project
can we deal with the lambda problem please
this feels like a good time π
i don't know how well it's dealt with right now
the lambda problem? 
patches offset the name of lambdas, making the same injection wrong between fabric and neoforge
such as lambda$addMainPass$8 having different index on Neo because all of the LevelRenderer patches
however, I haven't checked in a bit and I don't know if this has somehow been fixed
My understanding is that it's kinda impossible to fix. It'd require a lot of manual work to to write mappings for fixing it
That would also work, I guess. Just define functions?
no that's not the root cause
Vineflower also decompiles in a different order from bytecode order
you get reordered lambdas just because of that alone
patches just add to it
doesn't neo not change classes that are unpatched in prod?
We patch all classes these days
yes, since if we did not, you'd have a delta between neo moddev environments and prod for mixins
yup
Ok im reading this thread
So in a nutshell we get the jars unobfuscated but there's no documentation so we gotta figure it out
we get the jars unobfuscated
π
we do get param names now which should be a huge help
what we'll getting next snapshot compared to this snapshot is all the parameter names and local variable names
and especially locals
lotta times I'd override some method and have no idea what the param names were so I just made shit up
we're gonna stay in 1.21.1 until the new popular version drops
1.22.1 is gonna be the next one, i just know it
we already had params via parchment, but not locals, and having those is gonna make stuff nicer
Egg on your face when it turns out that's also what Mojang called it :P
maybe they did Β―_(γ)_/Β―
still i wonder with these new changes is neoforge is going to be rewritten again? Kinda like what happened post 1.20.1 after branching off forge
we'll know next week
yeah
mojang we love u please make this new era of unobfuscation 1.22 so I can stop being pressured to lag behind π
you can also make your own decision to use whatever version you want
it's going in 1.21.11 so 1.22 will have unobfuscation, yes
but yeah you can just ignore the pressure
when people ask me to backport the new stuff I did in the minor versions to 1.21.1 I just throw bricks at them
reason I'm doing new stuff in the minor versions is so that when we finally get 1.22, all of my stuff will be nice and settled down and stable too and I won't have to worry about breaking my own apis or save compat mid-version
like four out of five dentists in user-support are crashing because some mod's dependency made a breaking change in the middle of 1.21.1
who is pressuring who ?
my players r pressuring me
cuz 1.21.1 has create and all the big mods that have decided theyre staying on 1.21.1 for the forseeable future
well, its your project, do with it what you want
no point if there's nobody to play it
i did eventually decide to port
but it is unfortunate that I lose that mod availability
well that's on you for deciding to port π€·
it's clear that 1.21.2+ versions are not gonna stabilize atm
I will start porting my bigger mod (MI) but I expect very few players on new versions for now
so I am first taking the time to add a few more features to 1.21.1
there are fewer players on newer versions because there are fewer mods on newer versions
its a cycle
given the version churn it's obvious that it just cannot be stable
when will it be stable?
the new drops system is very successful i doubt theyll stop it
there will always be a new update every 3 months
drops are staying. the versioning will change
if its not rendering they have plenty of other things to refactor
whenever 1.22 gets released and people stick to it (instead of moving to 1.22.1+/1.22.2+), is my best guess
it'll probably be more rendering too
the new update cycle does not allow for "stable" releases
we dont even know if 1.22 is a thing
ur looking forward to a hypothetical
what does stable mean anyway
if there's enough incentive in terms of accumulated features, ppl will port
1.22 could be 3 years out or not coming at all
stable = enough "big modders" agree on sticking to a version π
i.e. java 25 is an incentive
proper parameters and local variables throughout the entire vanilla codebase?
problem with that approach is some will never move
that means no stable version for 3 years
I think (hope and pray) if this release ends up being Java 25 + deobf jars, it will become the next major modding version
the problem is that 1.21.11 just doesn't sound catchy
1.22 is a different story π
is ae2 updated? generally it's one of the mods that starts porting saga
there's a certain group of modders that are refusing to participate in the "drops" system altogether and are waiting for the next hiccup to cause minecraft updates to have a gap of at least 1 year
cuz they also said the rendering stuff doesnt have much left to go
it is
we dont release though
source?
it was also updated to .5, .6, .8
oh why so?
This work is mostly complete for entities, block entities, particles and the UI. Next, we plan to tackle chunks and small leftovers.
oh don't want additional burden of maintaining 2 branches ig
chunks and small leftovers are what's left according to this
can you link the article?
afaict, that specifically talking about the state extraction for a render thread
not renderer work in general
yup that's also how i took that
given that currently that work doesnt even have much benefit I think given the submission still happens on the same thread
it can help batch up the submit better
true, yes
but in terms of parallelism
i gathered that they'd move submission to another thread?
once it's actually all using that approach (extract/submit)
doing that means moving OpenGL (assuming they stick with GL) to another thread
or the other way around π
so its gonna be like 3 years before modders decide on a stable version? 
hoping wishing praying that 1.21.12 (inevitable hotfix) has enough appeal that a good amount of people move
for mac reasons, technically yes other way around
but still GL getting its own thread
wait mac was only affected by first thread message pumping
not rendering
(I thought)
yes definitely, given that we render from different threads too
thats correct, so really its whatever thread processes the event queue that matters and has to stay as the first thread
idk how timing with the two threads would be handled there though, so it could go either way really
https://www.minecraft.net/en-us/article/removing-obfuscation-in-java-edition
So does this mean we get eventually get access to sources jar too?
likely no
Ah rip
theres a big difference between 'heres the compiled code' and 'heres the source code', especially for saying that you actively try make sure people dont steal it
I do wonder if this changes everything tho, for future server software like Bukkit...
Method-coded param names and inlined magic constants are still going to be an annoyance
I think Paper has already been running with mojmap in prod, or at least has done all the enablement work for it, so probably not a huge deal for them
Yeah
I think that'd only happen if MS and Mojang completely write off JE as a substantial revenue source
Wdym?
As long as selling licenses to JE still makes money I don't think legal and/or corporate will let them publish sources
Crash logs will be easier yay
So if I understand, its not as huge as I thought ? I thought this change would make it so much easier for the modding community and allow to literally just diff each versions to see what changed & if it affects their code
We already had that
We had half the information already ever since mojmaps exist
Now we have the other half
100%!
it makes some parts easier
it doesn't change a whole lot, tbh
its nice that they do this though, but I feel like this has been in the works for at least a year, as many mojang employees working on JE were modders in the past
would it take a year to remove a couple lines of gradle related to obfuscation ?
then get it through the legal department
indeed π
would be funny if they used ANt to build all of it 
Makefiles
I feel like it's more like 15 years to get it through legal
Microsoft hasn't even owned Minecraft for that long
however long ith as been :P
There's a good chance it's been in the works for a decent time since they provided mojmap originally though
September 2014, over a decade now
10 years then :P
MDG-Fabric when?
I mean, don't we all obviously agree that MDG is the nicest Gradle plugin? π
totally unbiased opinion
How can you not with such a cute mascot.
I would love that, simply because Loom has been pissing me off every time I've updated AtlasViewer to a new MC version. Update FAPI? Sorry, need new loader. Update loader? Sorry, need new Loom. Update Loom? Sorry, need new Gradle. And, oh, btw, can't update Gradle without reverting absolutely fucking everything...
We could really consider it
The biggest problem atm would be the recomp cycle messing up the lambda names
damn, emotional manipulation! I approve,
!
But otherwise running fabric loader shouldn't be too difficult without obf
it should be possible to remap the lambdas post comp, not sure if luke has already managed to finish doing it, but technically it should be possible to figure out the correct name of the lambda by cross-referencing what method is calling it
I always update gradle manually via the distribution url
Much easier
ugh i get this too when i update my one multiloader mod i maintain.
and when i complain in the fabric discord they ensure me that everything is backwards compatible.. (this was not a one off occurence)
how is that even relevant
Uhh... no actually you can't, if there's recomp involved. Because the descriptors also shift
It's not just the names
(i tried this to be clear π)
Old Fabric API and old loader do not work on newer versions. That is like expecting old Neo to work on a newer version.
Newer loader requiring new Loom and new Loom requiring new Gradle is a reasonable point
It is, but old versions still don't work on new versions
this is what everyone says but what they mean to say is that its backwards compatible
That only means new versions work on old versions
and no one seems to understand the difference
oh
backwards compatible is very different
is MDG backwards compatible or version independent?
MDG is version independent provided mojang doesnt change some stuff, like suddently deciding to remove obfuscation
makes sense
(thats probably not the only reason, but its an interesting piece of code regardless)
But split sources! :p.
Oh we'd love to
Have to do it in Neo first, though
Or rather, Neo is split
We have to publish it split, though
Not really no
yeah we do
no we can't
we don't actually want to process neoforge-universal jar
we just wanna put it onto the classpath using gradle
It's not particularly slow to process if it's just splitting two jars up
I do not want to process the NF jar at all
(and yes, yes, you are right, we are right now, but that's really due to legacy)
It also depends if we want to have NFRT just pass it through unchanged or if we also want to add special logic to MDG
pass through what?
NFRT needs the universal jar to compile Minecraft
yes, as a classpath item, but merging it into a merged jar is shit
I also apologize for completely derailing this thread lol
Pack news in snapshot 25w44a include changes to game rules and environment attributes and a new system of slot sources for loot tables! Here is a video showcase! #minecraftemployee
slicedlime works as a Technical Director for Minecraft at Mojang, but the YouTube and Twitch channels are personal projects run entirely in his spare time. This is a...
0:35
huh game rule command does not accept the namespace
that feels wrong, what if 2 game rules have the same path but diff namespace
neo patch?
mayhaps
if not using it already should be just swapping the arg out to use the RL arg type
ideally it would support the short form w/o namespace too if it doesnt conflict
thats built into the suggestion provider
someone recently PRd it so RLs match substr from both parts + full
and i think vanilla yoinked it too iirc
The thing with the game rule command is that because you can either have integer or boolean game rules, you can't know which argument type to expect if you just use the resource argument. So game rules are currently just literals with the corresponding type argument coming after. Literals do not support partial matches (unless what you write starts the same way), so if namespaces were allowed, you couldn't type /gamerule advance_time to get autocomplete suggestions because the argument is a literal minecraft:advance_time.
can you not resolve the previous dynamic (non-literal) parameter to provide the suggestions for later ones
It's that the argument that you use for setting the game rule value is fixed when you register the command. But which argument it is (int or boolean) depends on which game rule you select while writing the command at which point the argument types are already fixed.
Yea
Ah, because you specify the argument type in the command registration
Yes
the hack then would be double register each gamerule, once namespaced and once just as the path (if no conflicts)
And then your suggestions go
agamerule
gamerule1
gamerule2
minecraft:agamerule
minecraft:gamerule1
minecraft:gamerule2
minecraft:zgamerule
zgamerule
Ain't that fun
The real solution is to design brigadier to use codecs! XD
youd need to use a different sort, assuming brigadier allows that
A key/value sub cmd system
ah but they are literals
yeah that is a problem
entire command is a greedy string that gets manually parsed: problem solved
xD
dispatch commands
Hmm
I worked at that for a bit, but it's definitely awkward and requires jank mixin on fabric where I was doing it
why not PR it to brigadier?
Because it was awkward and jank, and I only really did it as a proof of concept gist for someone on the fabricord. The code existed for about 20 hours on my computer
It was just, it works? Cool. Throw away
tomorrow yβall know what that means first unobfβd jar
Oh and the shenanigans that comes with a new snapshot but that should be expected
Java 25 tomorrow, maybe?
nah java 26 with value preview obviously
"we have decided to go back to java 5"
Oh gods no
Is it Java 5 or Java 1.5?
I don't know when their public naming changed from 1.x to x
1.4 -> 5
the internal version remained 1.x until 1.8, then java 9 was 9.0
"We migrated everything to Kotlin"
You know, I like how they shuffled around gamerules and its still only really limited to ints and bools
At least if you want to use other features
Who's to say that isn't prep work?
Maybe? But I'm not confident on that
They merged the type and key into one unit, which makes me think it's just some simplification work
Scala was fun. What was not fun for me was unwinding 15 yr old ChickenBones scala magic 
also, iirc, scala support in forge was originally ChickenBones's suggestion. So blame him for scala.Arrays :) (for those who know what that pain was)
Scorge was the second iteration, AFAIK
made by, back then Illy
yeah, i'm meaning when it was included in forge, circa 1.4/1.5
maybe 1.6, not sure on the timeline
famously, uses a lot (or used to) of bandwidth for forge maven
yes
eh, I might revive it at some point for forge (and perhaps neo, who knows)
or just a general gradle plugin, dunno
mm, there was another language loader for it
scalable cats force right?
I don't remember the name
thats the one
but, scala is very academic, its not particularly friendly
nor does it promote good memory/gc patterns
can still be fun π
oh absolutely, traits were based af
i still also miss implicit functions
i remember a lot of sensitive code in fmp explicitly using java collections everywhere to avoid the immutable collections lib
still waiting for someone to make a C# lang loader
Don't care if it gets transpiled 4 times, I want one lol
wasn't there somebody working on a WASM loader
(and if you want them at runtime for java, with java, compatible with scala, https://github.com/TheCBProject/TraitMixinCompiler
)
that'd basically allow everything
I mean a wrapper that wraps neoforge + minecraft via ikvm in a c# project could provide a bridge
Heh the snapshots not dropped yet, champ must be on the ball
yes, but that is java IN C#
not C# in java π
Some sampler additions, block/terrain split in pipelines, game rule changes, slot sources, and jspecify
Unless heβs only just now posting last weeks?
If thatβs the case tell us champ, fucked are we with the unobfβd jar tomorrow xD how broken are our tools gonna be
RenderPipelines that were used by both a standalone block and the terrain has been split into separate pipelines: one with prefix_BLOCKand_TERRAIN, respectively. This includes the solid, cutout, translucent, and tripwire pipelines. No block variant exists for the translucent pipeline.
how do I render translucent blocks in renderers then
Comm if you figure that out lemme know, Gander 21.10 is still broken on that aspect
oh uhh
in 21.10 if I have a SubmitNodeCollector and I'm trying to render blocks that are naturally transparent just do submitBlock and they work
Yes but submitBlock does not tesselate (try rendering a bunch of glass)
hmm
It does not what?
to render solid blocks transparently I extend ModelBlockRenderer (so I can unhardcode the alpha) and call tesselateBlock on it
submitBlock:
woah
nano
WRONG copy, sorry
please this is a christian minecraft server
I am at the office...
I firmly blame Discord for its copy paste there, and can't take that back. Deleted as fast as possible.
Where message log
I checked message logs (in case I needed to delete it from there too) but didn't see it, maybe the log bot doesn't do threads?
BIG oversight
a man of culture i hear
is that wrong?
But if you look at more correct rendering:
looks fine to me, just no culling
it is translucent, just obscured faces are not culled
your second one is incorrect, you should see the red, and the sides of the command block
I'm confused, is the picture labeled "more correct rendering" the incorrect rendering?
It's more correct in that it removes additional geometry but incorrect on translucency
the first is closer to correct than the second imo
yeah when I saw the first I was like "yes this is what I would expect it to render like"
While submitBlock does translucency correctly but does not tesselate and remove the additional geometry (since it's one block upload per call)
nano is on a cracked german windows install?
Seems like we should provide an overlaod to submitBlock which takes a side mask for occluded faces, seems quite easy
it boils down into ModelBlockRenderer.renderModel, line 452, that for loop
well they did say that they are not done with static block model rendering
What would be more useful is a renderBatchedBlock or renderBatched submit call
Which is a combination of tesselate and submitBlock
Submitting them individually is fine, they will use caced buffers
it should really not be any different
If you want to call a Windows install that isn't activated because MS are dicks and won't re-activate a valid license after changing the hardware three times a cracked install, then sure, that's what I'm using π
Switch to Zorin, team Linux is nice :>
Multiplayer games and Intel Quartus would like a word with you
I can play plenty of games just fine
And Intel is too busy shooting themselves in the feet to make me care lol
You certainly won't be playing BF6 on Linux any time soon
M'kay
I've got Rocket Lab, Portal, Minecraft, Factorio, Shapez, over half of Steam... think I'm good. And the more things that work with Steamdeck and Linux, the more pressure is put on all the AAA companies to give a shit
'kay. Hope companies making stuff like Silksong eat them alive
3% of the userbase is not profit
once the market share is like 70/30, we can probably expect them to start caring a tiny bit
Anyway. Topic. Rendering sucks. What do y'all think tomorrow will bring?
MORE RENDERING!
...besides that, we KNOW that'll happen
very excited to diff asm dumps of obf remapped an unobf
i have been bashing my head against RT errors in CG for a while, and i want to know if i'm insane or not
(my 3% was from the latest steam hardware survey)
TG, now update that for the year and a half since
They won't give a shit until the problem of non-invasive ACs is solved in a way that's simpler than a Windows-only kernel-level AC (which I know is a controversial topic)
Is there a larger view of that?
Curious how linux changed once steam decks became a thing
That was Google images
oh
So
3% is fucking huge, fyi, linux was at sub 1% for yeeeaars
Win 10 is dead. That's a LOT of market that might suddenly move
linux is less than "none of the above" 
And I know a ton of people reaaaaal mad at MS right now, and willing to try Linux...
yeah, come to linux, we have good customizable de's, and cracked translation layers :)
oh did i tell you nano i ditched zorin a while back
been on fedora now for quite a while
βImma try linux!β
Sees 100+ different flavors of Linux and gets overwhelmed
Goes back to windows
just use ubuntu, its fine
Ubuntu, Mint, or Zorin
if your starting, it doesn't matter
All are very very friendly
i used ubu for like a year then moved to arch
The only windows computer I have that's not decomissioned at this point is my main work computer, though that's only because the apps I need only exist for windows/mac and wine isn't good enough
The rest is like 5 different distros of linux because of testing things
your a day early
Oh wait I'm an idiot π
π π
for reference snapshot drops in ~<t:1762268400:R>
likely
neofrog?
FXAA in Minecraft pls π€
Don't worry, we've got you
https://github.com/MrGlockenspiel/activate-linux
lets not suggest zorin now. please. thank you
what's wrong with zorin?
im looking at it rn it actually looks really nice
and it supports windows apps with is my main issue with switching to linux i might actually try this one out
everything supports windows apps. zorin is not special in that way
none of the linux things i tried supported windows and they felt gross to use, very basic looking no polished look
- uses heavily modded shell of a different project and is prone to breakage
- uses and ships outdated software
- tech advertised on their website is not even their own
i want windows without the microsoft of it all that still supports windows games and apps
(probably not for this thread but plz enlighten me in #squirrels-π¦)
use any modern distro in that case. zorin is not special as I said
zorin isn't special in tech, they just package things to be less annoying to people that have used windows all their life
that's their whole selling point
above all, it's one of the few distros that supports nvidia proprietary drivers out of the box without having to go through 50 hoops to get them installed and working
almost everything else whines about them not being foss
I wonder if there's any distro that includes the best choice for any purpose even if that choice is paid software and it adds to the price of a license π€
(this moved to #squirrels-π¦)
Frog day!
The anticipation is killing me!
wrong answer, you were already dead!
Saaaame! Gimmie unobf!
todays the day
6 hours 
~<t:1762268400:R> to go
is it not an hour after that
always been 3pm my time
which is in ~5hrs
ig its between 10 and 11 est
i mean they try to release around that time sometimes they are later some times earlier
but always around this time
If Mojang adds Vulkan, I think it will be via bgfx.
ngl im not rly expecting much this week since they are also shipping the unobf jar
i am
shipping the unobf jar probably doesnt require much effort
all they have to do is disable the proguard thing and upload a new jar
not saying it does, im just expecting that to be the focus of this week
yeah probably nothing super big like a new backend
but i think some more rendering changes and maybe J25
since J25 is also trivial
and would make a nice break in the versions
so the newer versions could simply start with J25
Maybe also new content of the drop for non technical audience
Dst switch, iirc
Both show up as 15:00ish for me in the uk
does sweden not do DST
It does
Cet(UTC+1) -> cest(UTC+2) in the summer
Apparently
But since the UK changes by the same amount in the same direction at the same time, the relative change is 0
oh yeah that happened recently didnt it
ngl i rarly ever pay attention to when that happens
but should still be around the time i posted
it's Tuesday 16:00 mojang time when they have the release scheduled, it just takes a few minutes to show up
which is in ~3h 15min
<t:1762268400:R>
<t:1762268400:f>
~< 25mins to go
~T- 5 mins
inb4 mojang is late

T-1 min
I'm watching an exam
as in, proctoring/invigilating? 
better than writing it
what kind of exam?
gimme 
T+1
they late π /j
afjklhsdf\
25w45a
Snapshot 25w45a
- Primer: https://github.com/ChampionAsh5357/neoforged-github/blob/primer/2111-or-22/primers/1.22/index.md
- Article: https://www.minecraft.net/en-us/article/minecraft-snapshot-25w45a
- Changelog: https://misode.github.io/versions/?id=25w45a
- Notion: https://apexmodder.notion.site/2524f070f88880648482e3cbdcba566a?v=2524f070f88880b29f60000c52785ecb&p=2a14f070f888805bb0dee2658269e0ab&pm=c
- SnowMan: https://github.com/neoforged/Snowman/commit/3ea660bd0b9481306ce5bc99c3673f02361baba2
SlicedLimes Videos:
- Main: https://www.youtube.com/watch?v=JBhZriLnIFs
- Pack: N/A
||<@&1067092163520909374>||
Minecraft Snapshot 25w45a finally brings Netherite Horse Armor to the game, along with a new Coral Zombie Nautilus variant and more! Check it all out here! #minecraftemployee
slicedlime works as a Technical Director for Minecraft at Mojang, but the YouTube and Twitch channels are personal projects run entirely in his spare time. This is an unof...
where da unobf at
Our final set of features for Mounts of Mayhem
With this week's snapshot, we're also introducing a new concept for data packs called timelines, that can modify game behavior based on the in-game day time β more about that in the full changelog below.
there it is 
jesus christ mojang

timelines
New version detected: 25w45a.
what is this, Doctor Who - Minecraft edition??
As we are preparing to remove obfuscation from Java Edition, you can also get a non-obfuscated experimental version of this snapshot using the Minecraft Launcher:
Download this zip file
Unpack the folder into your "versions" folder of your local Minecraft application data folder
Start (or restart) the Launcher
Create a new launch installation and select the "unobfuscated 25w45a_unobfuscated" version
Start the game and the remaining files will be downloaded
good, we don't have to worry about that pain
for now
alright, time to change toolings to accept custom version manifests
yeah, that's the first thing I checked 
me too 
items atlas
Item textures were split out of the blocks atlas into a separate new items atlas
Does the non-obfuscated not come with the source?
more sledgehammers to rendering!
they never will 
they're just unobfuscated
no name mangling
why would they give the source 
full LVT
I mean, at that point, the only thing they're not giving us is any javadocs they have
Assuming the LVT is not mangled
I assume snowblower can't access those since they're not in the manifest 
they said we would be able to see locals
if they have any
nope
We got a data-driven animation system for the server-side, now can we get one for the client?
And yes Ik NeoForge has one, but that's only for modded entities
The NeoForge one basically just defines a codec for the Vanilla one lol
I guess I could run the server jar through a standard decompiler
Hallelujah
-# Note that SnowMan is still Obf->Obf
so remember how i said i wasnt expecting much this week....
wtf are timelines 
oh, the server jar has an interesting structure
Oh hey, item atlas
oh.. thats concerning
Whatβs in it?
contained so many help utilities that are just gone
or moved eslewhere?
but hey, I see locals, I'm happy
Did ResourceLocation really get renamed to Identifier?
please no
we are not yarn
THEY WHAT
well time to retire i suppose /j
And Util still exists
this decompiler also can't handle records 

In net.minecraft.util
No way
ah it was just moved
I preferred ResourceLocation
Wait, what?
this is a neat new class tho
That's not new
I don't think it's new
Was originally ResourceLocationPattern
Did someone at Mojang deciding just to apply yarn naming to the whole project
not my minecraft
I like the new timeline stuff...
It looks to be more about time of day based events... but I could see it being used for longer running story stuff....
Imagine a slowly crumbling unstable dimension....
alright boys, I'm announcing my retirement from Minecraft modding /j
inb4 "unobf" is just "mojang->apply yarn->ship"
official were a ruse, they used yarn all this time
Beardifier, iirc a specifically not Yarn name, is still in
Welp, I'll start primer work tomorrow
Definitely not because I'm dreading all the renames
Noo the skybox field of a dimension is an enum
the sheer amount of changes alone the ResourceLocation to Identifier rename did 


Ah yes the blocks array
Wait, they fixed spelling???
haha that was me on fabricord pointing that out, slicedlime π reacted my message
perfect, thank you for that 
should have named it citroΓ«n
(also popping in to say Identifier forever! hope you guys don't mind it...)
doctor who in minecraft
Smh, each snapshot they'll progressively apply more and more yarn naming
This is going to be absolutely so painful for multiversion mods
time to reimplement remapping to just remap it back to ResourceLocation
It's less I don't care and more why is there so many changes
Are you shitting me?π
in secret, Mojang is going to keep Yarn alive, just because 
all the Yarn maintainers were in fact alts ofβ
What do mojangstas say about this, like what's the reason
My best guess is that this a tribute to yarn 
Identifier forever I guess
Could also be several Mojangsters prefering the name as well
Yh but the timing is suspicious
Modmuss being a secret Mojang emplyee, and this is just a stab at all the haters
Like why now and not before
tbf, some people were extremely toxic that Yarn was sunsetted..... so I can see Mojang just stabbing those who were like that
well sure, but still
I want them to reply, if they're online rn
was just RL renamed to the yarn name or anything else too?
Everything that was named after RL
some classes moved locations too
has anyone else checked the "preparing to remove obfuscation from Java Edition" link at the bottom of the blog post
Did Identifier move locations btw?
I could've sworn it was n.m.data
mainly net.minecraft.Util -> net.minecraft.util.Util
makes you wonder if Cpw is also just a Mojang emplyee, and that is why he is never around. He is cursed to never speak!
net.minecraft.resources
Ah
yeah Identifier is still where RL was
But RL just made sense
smh they renamed RL to identifier but didnt do IdentifierKey or some shit
They did RLPattern to identifierpattern
yes, as I said, I think Moajng just did this, to spite all the toxic shit heads who were toxic towards the blogpost of Yarn being sunsetted
that is my theory
they didn't fix the error messages tho 
or that Modmuss is just Jeb /s
not the best snapshot in terms of patches that need to be fixed
warnings dont exist, you can ignore them... right
depends, if it's yellow, sure, but if it's orange, no 
i see the word warn i ignore, simple as that 
Right in time for Spooky season
Is Identifier the only rename?
RLpattern turned into IdentifierPattern as well
and anything named after RL
so about 75%-80% of the codebase got affected 
except ResourceKey apparently, what is/was the yarn name for that one?
RegistryKey?
Registry key yeah
Yeah
Mostly being the operative keyword
time to add a bunch more vars to my codebase or finally figure out stonecutter's string replacement
var wont help you when you need to call one if the static methods to construct a RL Identifier
i have a helper method for that anyway since my multiversion extends to before 1.21
on the bright side
huzzah!
now who wants take to take the unobf jar and spit out a new parchment version with all the new param names
gimme those early unobf param names in my 21.10 workspace
uhh is this just another class being moved or do dimensions not have special effects anymore?
I mean, that shouldn't be too hard to setup
how is the unobf decomp?
i just know its something alot of modded dimensions used so kind concercning if its gone
bad, it's Identifier now
that's good though
but i was meaning about the decompile quality :p
I'm still working on getting my tools changed to the new stuff, but I'd love to know if there is any bugs that needs addressing
i want to release vf 1.11.2 if not
Replaced with Timelines
I will do the neoform update later since there are many patch failures due to mojang renaming stuff
the fuck you mean they renamed it to identifier 
alright
who do I stab
it's fewer characters!
Maybe we don't single out devs π
Identifier is so much better
enough batter to make several cakes?
fine, we stab all of mojang then
/j
For the amount of patches that broke
so you are suggesting.... tnt?
this is such a
moment
What makes a name like ResourceLocation or Identifier good or bad outside of being used to them?
is the obfuscated jar part of the version manifest?
principle
There's a separate link at the bottom to a special manifest
alright
So, not part of the "production" manifest, no
thanks!
Primarily how easy it is to tell what they do, aka how ResourceLocation represents the location of a resource.
I mean, since we have
s here anyway, could someone clarify whether 1.21.11/1.22 or whatever the release version is named will be the first one that's unobfuscated or whether the first snapshot in the new cycle will be the first
they said the latter
Starting with the first snapshot following the complete Mounts of Mayhem launch, we will no longer obfuscate Minecraft: Java Edition.
Mojang shouldβve used Id instead, even fewer characters
missed opportunity
They should have just used the obfuscated names, saves so many keystrokes
Depending on the definition it's not even an identifier, since the resource that is located there can change at any time 
Why write ResourceLocation.fromNamespaceAndPath(β¦) if you can just write like akd.h(β¦)
Should have named it NamespacedLocationOrIdentifierOrSomething
Is it possible to pin this?
by the way, are all params final now?
Ty
orion sniped me pinning that
i heard that somewhere so I was interested in whether development of the unfinaling vf plugin was going to happen
From what I know mojang's codebase is final by default
based
wait, people read pins? 
I have never opened them in this channel
i mean thats fair for this channel, the pins can get spammy during ports
-# which again is why im asking for snapshot dedi channels/threads/forum or something, but i dont think that will happen
ngl i feel like 1.22 is a new 1.12.2 to 1.13 situation
or 1.16.5 to 1.17
Is it possible that they will change back to ResourceLocation in the next snapshot
They also keep three location references in Identifier, which seem to have been not checked at all
some exceptions also still use RL
wiat, the fuck happened to ResourceLocation
yarn hacked mojang(JK)
this is completely unnaceptable
Somebdoy needs to run git revert real quick
but the mojang gods do as they choose i guess
covers your late to the party 
Enjoying your little block game eh
bro, i was fixing toolchains and my bot for the snpashot
i can only do so many things
ResourceLocation has been around for longer than I've been in the game, do they really understand what they're doing
LOL then make it remap mixins aswell...
Add back ResourceLocation π
mcp again
about to make a lib to bring back RLs π€£
π€£
time is now data-driven: *crickets*
ResourceLocation is now Identifier: *confused screaming*
not enough locations
shame on them
done
You can see our priorities are correct.
replay mod have a remap tool that support remap kotlin and mixin
but loom seem only support java
yeah. if I decide I want to die in gradle and gpl I may package that into a loom extension that doesn't actually have anything to do with loom
correct
you will get what mojang serves you, and you will enjoy it!
/s
pshh il just sneak in a simple RL patch into kits port

done ?
make Identifier sealed
add new class ResourceLocation
extend Identifier
add static bouncers
ez patch
migrate mappings supports mixins now
yoo finally
all of them, including some third party annotations
i had to fix 70 mixins by hand last time
last time Mojang released a fully deobfuscated copy of the game?
did I sleep in on a day?
that will be when 21.11/22.0 drops (well mounts of mayhem)
we get obf and unobf jars for each snapshot until then
what will Parchment become
dead or just javadocs
:(
it has no purpose shipping param names if mojang is giving us them
which was its main purpose
Variable names?
and var names, yes
those are included too afaik in unof jar
full lv table is now available
and i think method params are also final everywehre now
In my internal testing, it looks like the new (unobf) version has ~20 fewer compile errors when compared to the last snapshot
it's this snapshot ?
yes 45a is todays snapshot
full local variable ,but not good as parchment
what does parchment give that the unobf doesnt?
other than javadocs
nothing
parchment has a few javadocs, zero local variables
unobf has zero javadocs, all the local variables
solution: parchment becomes a javadoc provider
yeah i see no reason for parchment to stick around
i mean the javadocs are nice but i could understand it dieing out too
can intellij staple javadoc jars onto binary jars? may be able to just literally publish a javadoc jar on maven
technically it has another potential feature: manage unpick definitions
(unpick as in de-inline)
oh please, i wanna see all those constants in vanilla code get used
so many of them
no more magic numbers
like why do this, just AT the constant public and use it
so much more readable imo and if mojang changes it for what ever reason
we dont have to remember to update this random 1
In 1.22 do we think we will have a lts version that all mods will settle on?
for what it's worth we're working on a decompiler-level solution for unpick, based on unpick v4
well, from what I gather the idea is to have parchment as javadocs + unpick + annotations
fabric discord said something about merging, but idk
oh identifier wasnt a joke
Unfortunately not.
there is no 1.22 and there is no new lts
"there is no queen of england" /j
net.minecraft.resources.Identifier just sounds too wrong
what the hell no please
resource location makes so much more sense they couldn't have paid homage with Cat#meow or something why this
this is going to require so much refactoring for everyone
They use these for many things that are not resources.
everything is a resource so that's simply not true
whether it's a file resource or a registry resource
Just use migrate mappings /j
It still works from mojmaps -> mojmaps
As long as the intermediary name doesn't change
all my names revolve around rl
modLoc and things
now they have to be converted to modId
thats gonna cause some confusion
modId(<modId>) ->modId:<modId> ah totally not confusing at all
actually
modId(path) -> modid:path
but modLoc is just such a nicer name
idk if this change will grow on me I genuinely really don't like Identifier
and now the code base is a mess of both forms bc they didn't change everything
Identifier location just kill me
don't give them new ideas 
I wouldnt mind World tbh
you say that
but soon they will come with something stupid like SPWorld, MPWorld, ThreadedLevel
what are those supposed to be
I would prefer world to identifier
Yea identifier is just weird
Single Player World
Multi Player World
and then a common Level, where the 2 can talk to each other, in a multi-threaded way
not sure why, but part of me is kinda surprised they would name a parameter "thing", I always feel unprofessional when I do it lol
I mean, it's fairly correct in this context 
but I get what you mean
Well, that's not T, that's ResourceKey<T>
They could have called it value, but I guess that's not that much better than thing
day 1 param names i prayed for times like this
Minecraft Snapshot 25w45a finally brings Netherite Horse Armor to the game, along with a new Coral Zombie Nautilus variant and more! Check it all out here! #minecraftemployee
slicedlime works as a Technical Director for Minecraft at Mojang, but the YouTube and Twitch channels are personal projects run entirely in his spare time. This is an unof...
for me locals are the more interesting part, no more f3, flag1, i2
given rl is called id now, renaming modid anyone?
yeah namespace was my thought
Dude Im so happy that its Identifier I have maintained its my least favorite part of Mojmap
RL is better fight me
i dont like identifier as much as the next guy, but this is one hell of a method name that i kinda wish they changed with the class rename
i support the of overloads
It is literally an id I will stand on that hill
no it is not
a texture location is not an ID
all IDs are RLs but not all RLs are IDs
it's the id of a texture
its the location of resources such as textures and sounds.
Its also the id of registry onjects like items
it is the location of the resource in the registry
The way I see it, the blocks arent registered in the resource part of my code they are registered in the code part of my code
I will ragebait on this I dont care
...what
resources are not just assets
anything can be a resource even things in code
did anyone bother doing a snowblower with the deobf?
BTW here's a VF plugin to remove the final from the parameters: https://github.com/shartte/VineflowerUnfinal
asking as the smooth brain that i am, what does final on method params do exactly?
i mean me the dev creating the method, its like final on class fields, cant modify the param
but for a caller, does it rly change or do anything?
no, it has no effect on callers
so whats the benefit of removing final?
like its vanilla code we are removing them from
so we arnt inside the method bodies, we are the callers
whats the benefit?
we are removing them now
generally they make the signatures less readable if you're just trying to understand what is going on
im just trying to understand why/what the benefit is?
i mean in neodev i suppose its helpful, where you can modify the bodies
but as a general modder whos mostly calling the methods
im strugling the see a benefit/reason behind removing final
readability i suppose makes sense, some methods are already long enough in param length let alone all the final keywords now
-# looks at guiGraphics.blit
as a modder it makes the vanilla source file easier to read because the list of parameters has less boilerplate words in it
and yes, if remove them from neodev, we have to remove them from moddev
but generally it's both, I'd say, so we have been removing them as soon as they showed up in the obfuscated jars 1+y ago
does final params affect mixin?
no
Do final params even have any runtime checks?
no
That's what I thought
The flag that makes them final is in the same block as the parameter names (which is optional, anyway)
The tables you get when you compile with -parameters
That started showing up in 2024 in the obf'd jars
we're currently stripping those access flags in ART during the remapping from obf->named
but assuming we'd want to continue doing that when we directly decompile the new jars without any prior bytecode processing
then we need a vineflower plugin (or do it afterwards in JST)
Well, JST would be bad, since we patch the sources before JST, if I remember correctly. And the patches should be based on the non-final parameters.
screms in late to the party, and also Identifier
meanwhile, in Mojland.. I imagine there's a bit of amusement happening
^ Yarn rn
also Moj already announcing they aren't going back smh /s
don't worry, once we go unobf all the pain will go away 
how do I render translucent blocks in renderers then


can i see
