#1.20.5/6 Snapshots
1 messages Β· Page 8 of 1
We're working on cleaning up FML
waves towards #1187879036815417456
or we'll spend months doing nothing but tell people "rename your mods.toml"
Yes we need it giga, but we need a billion things done in FML
In fact I really need the CoreMods PR approved so we can move forward
opens github
so long as it's part of the ongoing plans, all good
This reminds me that we should bump ML
is this still WIP ? I changed the name to neo.mods.toml and it is still not being loaded. I cant find the commit or the PR for that change else would have verified myself
It's neoforge.mods.toml
this is what happens when everyone keeps saying Neo lol
neo is the way
I'm fighting against neo π
neofox committee will get a report of this
We dodged a bullet with Neo 
Did this syntax work before ? It errors out now. Is this known ?
If you configured Gradle correctly yes
Look at your processResources config
I bet you haven't renamed mods.toml there
It's probably time to start drafting the 1.20.5 blog post so it can be used as a reference
There's a lot of content we can prepare though
I wonder about discoverability though
Should notes on how to port go into the blog post or rather onto a new page in the docs
(which then is either copied into the blog or linked from it)
There is this page in the docs under "Legacy" (oh well...) https://docs.neoforged.net/docs/legacy/porting
I'd have everything on the blog post
Well there's a ton of stuff to write on it
I don't know that I agree, the capability info got lost pretty quickly
I am not against replicating the info into the post so people don't just glance over a link to the actual info...
But IMHO anything we write should just go into a porting page on the docs
Fun fact, the {} aren't required
It's actually applied like a GString
So $var and ${var + 'hi'} are allowed
I've actually used that before
To use a ternary
that's actually nice
Did any of neoforge extract codecs get yoinked upstream or at least able to be cleaned up?
Mainly wondering about the more robust versions of with alternative we add than the extracodecs versions
not sure
Isn't that good though?
As far as I could tell that gets rid of that god-awful hidden instanceof it was doing to inline other MapCodecs
Even if they were wrapped in Codecs already
Yes it's very nice
The grand finale
βοΈ Quoting Minecraft (@Minecraft)
Ominous Trials are now available on Java Snapshot!
π Drink an ominous bottle to gain the Bad Omen effect
π Head to a village for a Raid Omen and start a pillager raid OR enter a trial chamber to trigger a Trial Omen effect
π Trial Omen effect will spew out tougher mobs with better gear, ...
so now instead of attacking the village for killing their captain they attack the village because you drank their booze
plot twist, the ominous bottle is hallucinogenic and the pillagers are really just random creatures and villagers that you are slaughtering
the illagers in the mansion are minding their own business, you are the one breaking into their private property
the outposts are ... well, outposts. the villagers in them are law enforcement, same as the patrols. that's why they mostly ignore you, or stop and stare in your direction unless you get too close.
But they're very trigger happy, I'm just defending myself
well obviously they are american /s
hmmmm
interesting error message
why do codecs have basically 0 error tracking
it wouldn't be hard to at least say the field that was erroring 
it's probably due to the mc upgrade, I bet reloading the world won't give that
networking has basically 0 error tracking too
it's quite annoying and honestly should be considered a vanilla bug imo
Yeah we noticed that too. It's just borked. You get an "writer index blah blah blah" error with no indication as to which packet type it even was
Which is nuts given that we now use the vanilla custom payload ID field, even
OK we just need the remaining rejects to be fixed and the port to 24w13a should be complete
didn't feel like doing the rebase yet
might do it in a few days
TODO: figure out what to do with mojang's ItemStack#getEnchantments and whether we want to adjust our IItemStackExtension#getAllEnchantments method
What's the complication there?
more of a note for later than anything
mojang added this method to ItemStack:
we have this one in IItemStackExtension
there's a single call site in Player right now
Yeah we can probably flatten those, just need to maintain the event's functionality
did someone forget to run gradle unpackSourcePatches?
just ran it in my local clone for local publishing and it generated a patch for MobEffectIdFix, shouldnt the port branch already have all patches generated?
What would it even generate the patch from? Did I push the sources?
i imagine they ran unpackSourcePatches with old sources from before they pulled from upstream
maybe it was old files left behind, but i did a clean checkout of the 24w13a branch afaik
dk how helpful it is but this is the patch it generated
Ah yes this is incredibly annoying
Idk why diffpatch does this
It might be on my end then, I'm not sure
lovely
Looks like one of those "no thank you" merges
TODO: redo attachment internals PR
and I just pushed the rebase
got to run now π
thank God I still got my train
(you have your own train?? /S)
he's the technician on the train (*slaps knee extra hard*) /j
I don't know if this is normal, but the GUI test in NeoForge's Github is not correctly rendered.
Text is rendered in the foreground when the F3 menu is open
like this
That's not really unexpected
what happened to ModList in 24w13a?
It is still there
wait lemme refresh then
the semantics of gameplay logic vs actual enchantments [tinkers construct uses this to have certain enchantments like fortune and silk touch be effective in gameplay without actually being removable with the grindstone] are important to maintain
so we need to make sure we have something for that in whatever the API ends up being
Yeah same here, we need it in AE2 as well. We have implicit Fortune on some tool
so like the item enchantment components, not the item stack patched components
Yeah mek also uses it. And just adding it directly doesnβt work because then grindstone and stuff would affect it
The issue with that is the implicit enchant is not supposed to be improvable by anvil
improvable?
i agree that there should be patches to make them not affected by the grindstone and such, but I imagine it could be done by just using the item-defined component
question. with the new "reloadable registries", are they real registries that can have tags?
oh great a new kind of registry
currently only used by loot tables iirc
no, reloadable refers to the /reload command
im pretty sure dp registries are affected by the reload command
cuz it existed before 24w...
And i think datapack registries used it
they are not
what was the purpose of reload before
reload listeners, like tags, recipes, and formerly loot tables
and now the new reloadable registries, which ik next to nothing abt but that they complicated loot events for fabric
were loot modifiers not reloadable?
probably, there are several I didn't name
i know loot tables weren't a registry before, but loot modifiers [a forge feature] were
wait, they might not be a registry
the serializers are a registry
no, they weren't. the serializers are
got me confused
yep
They are full registries, which implies tag support
It is currently not possible to move everything to this model since some reload listeners are dependent on tags
(i.e. recipes)
interesting... wonder how that works with loot tables that check tags
i think its fine if they load after tags
but
hmm
maybe theres a load order
item/block tags, then tables, then table tags
nvm, they don't resolve them immediately, unlike recipes, so it's fine
ah
wait
recipes resolve every item tag in one when they're reloaded
even if the recipe is never used
it has to sync them to the client. to do that, it resolves everything in the tag. loot tables are not synced
ah
Seems like it is based off 24w12a since it has the trial edition advancement and the heavy core but not the new ominous items
No idea, still on phone in bed
Itβs FINALLY here! The update youβve always asked for that brings ALL the usability and functionality to your #1 favorite item.
The Poisonous Potato Update is LIVE!
Get it at: https://www.minecraft.net/article/poisonous-potato-update
More about Minecraft: https://www.minecraft.net
<@&1067092163520909374> The 1. April joke is online.
TECHNICAL CHANGES
The flux capacitor integration now synergizes with quantum voxelization, which enables a 360-noscope enhancing real-time RTX terrain-rendering nightshade multibox spectrum acceleration while optimizing transdimensional entity synchronization for seamless vitelotte-king edwards-russel burbank experiences!
how much more fps per tick do I get now
I can already hear the influx of people that dont like the current updates come in and say "SEE???!!! Mojang is fully able to make content updates!?!!?!?!!"
Does snowman run for april fools?
It's a tradition at this point that people say this everytime april fools update released :v
ideally, it should
practically, the build failed because it couldn't handle the April Fools version
(SRGUtils has a hardcoded list of April Fools versions, iirc, because they don't follow the standard version format)
Going to have to get neoform to use neoforged srgutils
probably pin the version, so we can make changes to SRGUtils without breaking NeoForm
same sentiment for any of our other projects using SRGUtils, really 
i'll poke at SRGUtils later, I think I have some energy for that
FYI on that modification to the April Fools snapshot
Whoever wrote that needs a raise
did someone figure out what differences the two jars had?
one of the recurring problems in recent content updates is that they're unwilling to figure out a good place for useful things so they put it way later in progression than when you'd actually benefit from it. lodestones and the recovery compass are good examples of this. and the hammer looks like another one (well, the hammer is super overpowered, but the difficulty to get it is scaled accordingly, rather than making something that's just as fun to play with but fits into the mid-game). April fools updates don't have that issue since they're free to wreck the core gameplay loop
what happened to ExtraCodecs.lazyInitializedCodec in 24w13a?
it may have been merged upstream into DFU
either that or mojang is just using static fields in static inner classes to delay classloading where needed
the embed is arguably a better approximation since boq is the commit author (but not the committer)
however, on the GH commit page itself, it distingushes as "boq authored and Gegy committed"
so it's an inconsistency at least
having said that, it might be a side-effect of GH's way of handling commits where the web-flow user is the committer (e.g., squashes, merges, web editor commits)
Codec.lazilyInitialized
hypothesis: pre 20.5, if I had a call that copied attachments from an item stack to a tile, how would that be done post?
There are methods on BlockEntity for assuming the components found on ItemStacks now
(and the reverse)
is there a utility for copying over dcomponents?
just look for methods named component in BlockEntity
Gotta love the nothingtoseeheremovealong in the April 1 snapshot..
https://www.youtube.com/watch?v=s_VWNUJ3bEs
sooo, angel block, cursed earth, grappling hook, and a lot of other stuff
Minecraft The Poisonous Potato Update Playlist βΊ https://www.youtube.com/playlist?list=PL7VmhWGNRxKixIX8tWEQn-BnYKE9AaAXk
Snapshot 24W14potato for Minecraft 1.20.5 adds a new dimension, the potato dimension! Full of potato related fun and a boss fighr against mega spud!
All My Links In One Place
π https://linktree.xisuma.co
π Support Xisuma Di...
you had some other people mention this, but essentially the forge method here is meant as a mirror to the vanilla method for mods to use, its not meant for vanilla code
Nearly every call site in vanilla that wants enchantment lists just fetches the single enchantment as of the time we added that feature
meanwhile all the usages of the full list was for areas that would change enchantments
However, its possible a mod wants the full list for gameplay reasons
I'm aware - except that vanilla just added this new method with the full list (only one call site for now π )
what are the semantics of the vanilla method though?
if they use it in anvil/grindstone, its not gameplay, its recipes
There's a single call site atm
single call site in player is not clear to me if its gameplay logic or conveience to get for teh anvil
if its gameplay, then yeah, its the same as the forge one
it would be nice to have detached tags or something to be able to poke at the snapshot code from github
detached tags?
even for that it would be gameplay because direct modification isn't possible anyway
https://github.com/neoforged/NeoForm/actions/runs/8518926323
Finally an update summary
Do you have a version of NG SRGUtils for me?
So I can bump Jammer for you
net.neoforged:srgutils:1.0.1
Building
entity.ignoreGridCollision = true; when moving in a vehicle in 24w14potato
private static boolean awesomeAntiCheatIsFlying() {
return false;
}
By nature I think they're detached
as in you can push them without a branch
what do you want it for?
Just fun?
I'm talking about snowblower output for the April fools snapshot
Oops I didn't actually specify I was talking about April fools snapshot lol
yeah π
But uh someone will have to fix snowman cuz it won't run for any future snapshots until srgutils is fixed
which is honestly silly design but it's once a year so π€·
π€· indeed
do we know what snapshot/version is the base for the april fools one?
24w12a
also Ingredient.of(POTATO_PEELS_MAP.values().toArray(p_340204_ -> new ItemLike[p_340204_])); confuses java of whether the called method is Ingredient.of(ItemLike...) or Ingredient.of(ItemStack...)
/tellraw @s "\uD83E\uDD54"
weird 
Polymorphic method invocation....... They are the nightmare for decompilers
if you run this you get a bouncing poisonous potato in chat
the fletching table has gotten a use
or press '
I only nkw looked at the content in the snapshot and wow, this should have been a normal update
the floater stuff is so cool
try putting 2 poisonous potato plants in a chest and reopening the chest
also theres a quest system
I'll start a kits branch, curios about the reject amount
what snapshot is it based on
24w12a

you get a new version of the end poem if you fall into the void of the potato dimension
the potato staff can create a potato portal anywhere you click but only if you have either already visited the potato dimension or aren't in survival
that's literally the srgutils class lol
Yeah
Because the original code used it
It is stupid
But I ripped it out
The problem is that I have 4 test failures with that removed....
So I am tracking those now
now to find out what this sub grid is for
there's a grid carrier entity
#squirrels-π¦ message
Video of floatater block
Down to 3 tests failing
who wants to PR the removal of the dep required fallback and dev crash
and we should also probably move most properties to mod-specific instead of file-specific (see #1210674981034397706)
I can't get that one test to work
the old method was never about direct modification either
you grab the map, make modifications, then save to NBT
if this map is expected to have non-NBT enchantments, then grabing it, modifying it, and saving it leads to non-NBT enchants getting dumped into NBT and doubling up their levels
is ItemStack now ItemLike?
Wait ItemStack is ItemLike??
Yeaj
tags also never fit that framework
you sure you are not thinking the ingredient internal matcher?
and will cut down on my overloads in datagen lol
to be clear, I am not sure ItemStack is ItemLike
I don't think that's what was meant by the original comment
poop
the message above just implied it might be so I was asking
There are too many times that itemlike and itemstack are sibling overloads
yep
you do lose a lot of semantic meaning if ItemStack is ItemLike as it ignores count and NBT in the methods
it also just.. makes sense that it could be an itemlike lol
yeah but itemlike is never used in that way anyway
thats my point
if a method just accepts itemlike and stack works, you might think it considers NBT/count when it does not
I just did not understand why java might not understand that ItemLike[] is not ItemStack[] unless inheritance is involved
Funny var args
I mean you can still take an overload
my point is not can here, its clarity
eh I guess
supposing an overload does not exist, but you think it does
you can't store an array of type ItemStack[] in a field of type ItemLike[] because then itemLikeArray[n] = block would be invalid
you can't store an array of type ItemLike[] in a field of type ItemStack[] because then itemstack = itemStackArray[n] would be invalid
e.g. Ingredient static creation methods by default work on subclasses
my question is
is there any situation in which nbt/count would matter for an object that only takes an itemlike?
like even if you think it matters
if the receiving method only cares about the item
does it really matter?
depends on the object
the extension is not just going to affect vanilla, it also will affect mods if its done
I would agree there, anyone doing itemlike instanceof ItemStack stack would be a breach of the code contract
I can't see any situation in which the confusion would even matter
I have plenty of systems where I don't specifically support stacks but you might think they could exist
notably when it comes to predicates, I don't always want a size or NBT predicate, but you might infer one exists if the method works with a stack
that feels like that only applies because ItemStack isn't ItemLike already
once people were familiar with the fact that ItemStack is ItemLike, that would be more or less moot
shrug
if ItemStack implements ItemLike [it does not on 1.20.4], the former is not actually a problem.
you get - i think it's a specialized runtime exception specific to this case rather than a CastClassException - in the element assignment but the narrow type array goes in the wide type array variable fine
ArrayStoreException
tags also have never [and unlike ItemStacks, can never] implement ItemLike - items and blocks implement it, and so do neo block and item specific deferred holders
based on the failing game test at https://github.com/neoforged/NeoForge/pull/771, it seems the rewritten FluidStack class doesn't pass muster on the "must implement equals and hashcode" test
@elder swallow I believe this is in your wheelhouse...?
Yes I know
I haven't decided what to do with it yet, since we can't even add data components to preserve vanilla compat
I mean it's mutable, that seems worse π
Yeah no it's not expected to pass
But what do I even do about FluidHandlerItemSimple
It can't directly write to NBT anymore
Oh well I have an idea
Yes but I can't register them in NeoForge itself
Well, a) why can't you π b) assuming you don't, you define the data-class for the component and let the user of FluidHandlerItemStackSimple pass in the ComponentType<YourClass>
a) synced reg
I'll just make getFluid abstract
And setFluid
Do the milkbucket thing
fuuuuck that
Could do some shenanigans with the vanilla packet filter
we can do the milk thing
that would cause issues with syncing
if we do the milk thing we need a better system
marker in neoforge.mods.toml
that's probably not a better system π
is it actually a problem to have a data component registered on one side that is never used (are they synced by numeric id or something?)
i haven't seen the data components, are they an actual registry or some other system? could we register it when FluidHandlerItemStackSimple is classloaded?
[which is at least likely to be during item registration, and almost certainly no later]
yes they use numeric ids for syncing (like all registry entries that are used in syncing)
yall think we're getting a pre today
are you thinking that?
im hoping
Feature?
You mean making our own feature flag system based pn the neoforge.mods.toml
It already is....
ForgeFeature
It is for example used for GL Versions and Java versions
we could move the milk fluid and all NF component types to use that
snapshot alarm
snapshot snooze
sorry what?
Joke
should I ping mods
No, they will get to it when they get to it
ok
is there a new snapsot?
Oh boy, here we go, java 21..
java21 breaks mixins?
Wtf
Java19 does.
wonder how badly this fucks the decompiler 
Java 21???
No? Why?
I heard somewhere it doesn't work. Maybe that's either changed or was never true.
Might have to bump ASM
Given people are already running NF on J21, I don't think there is any real issue.
I have a feeling 1.20.5 might not happen and we go straight to 1.21
Java19 broke forge mixins. Saw it people having that issue running servers on the forums all of the time.
that would be cool
destructuring
I hope so. The update is pretty much feature-complete already.
Might be J21 bytecode? Although tbh I canβt remember if there were any changes there
mojang be syncing mc releases with java releases
We'll have to update snowblower I think
gegy said not in 1.20.5 π
Not sure, Mixin might complain about mixing into j21 bytecode, till we tell it not to. But pretty sure the Fabric guy can fix that.
1.21 is already done? gosh darnit the mace isn't 3D
She also said "change of plans" in fabricord hehe
so 1.20.5 scrapped lol ?
MOJANG
Yeah, not 1.20.5 release! This is snapshot!
well, the mace model isn't really a feature?
Loophole wording
Wait, was J21 not planned for...
1.21???
idk
Were we lied to 
no 3D allowed
gestures at trident
also it needs spikes, a mace needs spikes
if a snapshot for 1.20.5 is Java 21 then 1.20.5 release will be too
Paper Minecraft all the way.
aaaaa not the trident! now its inconsistent and I hate it. Time to make 2D trident mod
Whoβs to say they wonβt revert right on release to mess with you?
it doesn't say for what version it is
it may be too late for 1.20.5, there's a chance next update is 1.21 :P
Spyglass too.
Just make everything 3D
you mean they are skipping 1.20.5
this is for 1.21
yes, they may choose to bump the preview features out of preview
and release as 1.21
look at the bottom of the snapshot page
I do wonder who still plays on a 32 bit system
that doesn't say this is a 1.21 snapshot, it say that the snapshot contains 1.21 preview features, which is true
Thatβs about the preview features
Raspberry Pi Players
curle /s
isn't rpi4+ 64bit?
Inb4 snapshots lasts for a whole year before full release
yep 4 and 5 are 64bit
yeah so, anyone on rpi3b+ will have to upgrade or keep playing an old version ;P
I actually don't remember what J18+ added besides record destructuring
Virtual threads
non-preview foreign function is 22 right?
Yes
Or use mods that do some weird viabackwards stuff that allows them to play newer (but then AntiCheats go BRRRRR).
Oh right
We also have sequenced collections
Is the main() thing still preview?
Not to mention getLast and getFirst on many collections
Even in J22, yes
Also, code snippets in javadocs!
And the _ one?
That's out of preview in 22, preview in 21
Ah well
There's probably that one person who bought a Pi3 just to run a Minecraft Server on it and now they can't (but that's their problem).
I mean they can, they just need a build of java21 for 32bit ARM, and lwjgl natives for 32bit arm
The when stuff?
wait server, no need for natives then
I mean, I assume the java21 64 bit change would also pertain to servers.
Idk much about server architecture though.
Doesn't the Raspberry Pi come with it's own MC version?
pi "3b+" is aarch64
Yeah but it's Pocket Edition Alpha with most of the features stripped out. And API.
are you considering the python bindings tho
I just amended my message.
yeah i saw just as i sent it lol
And I also know that you can mod the game to re-enable the disabled features.
That's Kotlin, but pretty much yes. Java basically has the when (x) { from Kotlin now (not the when {, though, as that's just a glorified if-else-if chain)
I meant case Integer i when i > 0 ->
yes
Nice
finally j21 is here
can anyone explain
Raspberry Pi 3B+ is compatible with aarch64
I guess Mojang was sick of us asking /s
π
Do they have some immediate use? Cause in general threading is a pain when not done well, especially in places mc isn't prepared for it...
I have a feeling that Mojang has worked with them, over the course of the dev time of J21, and have moved things to them
(I assume)
virtual threads are not actually threads, you have to think of them in a different way
Devs and misleading names 
I also haven't really understood what virtual threads are and what they accomplish, but I also didn't really look into it
short version is, they are coroutines
they automatically suspend during blocking I/O
letting another task run meanwhile
but they don't do preemptive multitasking
switching between tasks is much faster than switching threads
but you can't predict how long it will take
snowman is broken?
I dont personally think this is worth updating to
Uses an old SrgUtils so canβt handle the April fools snapshot+
maty bumped srgutils though 
I think it is
I want my neo on my 1.20.5 ML test branch with j21
IT BEGINS
YES
YES
where's the nearest Mojangsta? i need to redeem a hug ticket
no, but I did have a lot of MC crashes in the past
Ah, fair enough, forgot those existed
Is updating a huge task or were they too busy with the April fools snapshot to do anything else
Very small snapshot
I thought maybe only a few people were working on April fools
But it's a lot so perhaps they all did
April fools was a technical showcase of their new systems. Also helps them see where limitations are and issues (imo)
The snapshots after April fools are generally rather small
Yes, sadly
What is the next lts after 21
I think it's year based and as such not decided yet?
the next planned lts?
Yea
i vaguely remember it being every 2 years, but they didn't keep that for 11 either, so who knows
Oracle intends to make future LTS releases every two years meaning the next planned LTS release is Java 25 in September 2025
that's the only use of it. its not much of a diff code wise
Which means a quick port :p
who disabled the auto build for neoform?
What is jammer and where is that even coming from π€
There's just a straight up download from Maven (why is that not a dependency hmm) but I can't find the source fo rit
Ah. Found it in the pom: https://github.com/marchermans/JarAwareMapping
That needs an ASM update apparently 9.1->9.5
where?
that is Bedrock tho
Bedrock versioning is not related to Java versioning as far as I know
This is the first version named 1.21
there is no mention of 1.20.5 being abandoned
Hmmmmm. @wooden tendon Is it intentional that if Jammer fails, it still exits with exit code 0? Should I PR a System.exit(1) there?
it just says 1.21 features
No that is not intentional
Okay, I'll include a System.exit(1) there in a PR. I was surprised by that
In what way is it doing that?
[main] ERROR com.ldtteam.jam.neoform.JammerRuntime - An error occurred while running the jammer.
java.lang.IllegalArgumentException: Unsupported class file major version 65
I am updating ASM to 9.5 r/n. I was just surprised by the Neoform update.gradle still building successfully π
not a cookie?
You need VF snapshots to get J21 features
VF 1.9.3 does not support J21 properly
Enum switches inside the same source tree appear to not use the lazy inner class indirection anymore, which would break decompilers resugaring switch-on-enum unless they support the new way of doing it
that is a VF bug (already discussed on the VF discord)
oh ok
Yeah that looks like decompiler artifacts, its what the enum switch compiles down to
what is VF ? is it VineFlower ? What does it do ?
the decompiler we use
that is also not a real confirmation
only if someone with the problem causer role here would say it explicitly or a mojang employee would tweet it
Do we care?
Well, we obviously care...
But does it currently matter much, I mean
why are mojang people the problem causer. shouldnt that be other way around lol?
no they cause the problems for us
counter-point, gegy edited her message stating the likelihood of j21 in 1.20.5, which still mentions 1.20.5
we can't really cause problems for mojang
I'm using snowblower-2.0.17, but it keeps crashing with: "java.lang.NumberFormatException: For input string: "24w14potato""
that's the wrong snapshot?
Hm is it normal that Vineflower generates so many this arguments to anonymous class constructors, or is that new?
I saw that they updated SRGUtils to fix the problem, but it doesn't seem to work. It worked until last week
It worked until last week because the april fools snapshot didn't exist last week. All the april fools snapshots need to be hard-coded because of their basically unparsable version string
Yes. Theoretically the srgutils bump should have fixed it
I am trying to do it in the neoform project but oof π
#Unknown
Ok it looks like I'm using srgutils from minecraftforge. Why?
it's the vineflower discord
Ah. Well. We are patching the bytecode to patch in the parameters as far as I understand. No idea if that might (or not) cause this
Not super familiar with all the ins and outs of the API, but would this j21 feature maybe be used in the future for something like how events are passed?
It's a preview, so no
If mojang updates to a version where that's no longer in preview, who knows Β―_(γ)_/Β―
I know... if they don't add some syntactic sugar for it, nope
So basically even if it wasn't a preview it is a bit too verbose then?
So Java 25 or 29
Probably 25 at the latest
a bit? it is at least as verbose as a ThreadLocal
My java experience is...less than the rest of you all who work on neoforge to say the least lol, so I was not aware
The question was also mostly just curiosity and wondering whether the tradeoff would be worth it, which sounds like a resounding no because of the verbosity
Can anyone approve this PR, it should fix the problem https://github.com/neoforged/snowblower/pull/2
What does that even do
could you please add an exclusion to the license block in the buildscript for **/*.xml?
iirc, Snowblower stores the hashes of its dependencies, so it knows to regenerate the whole repo if any of its tooling changes
the way it works though is a task which runs prior to build, iirc
and it seems Maty missed that when he updated SrgUtils
and it seems Maty missed quite a bit more
ah no
wait
eh, i'll think of this later
just woke up, so thinking's a bit of a slog
Like this?
exclude '**/*.properties'
exclude '**/*.xml'
yes, that should work
try the license task before and after the change
(make sure you don't commit any change to logback.xml)
Ok done, but I need CI maintainer approval
poking the PR is called duplicated conflicting work, the proper fix is to not pull mcf srgutils
see, and this is why I ask you to poke the PR 
sigh is ART still pulling mcf
yes it is, aaagh
https://github.com/neoforged/AutoRenamingTool/pull/5 more poking is in order
or uh @blazing valve can you do me a favour and poke that pr (bump major too)
what exactly do you mean by "poke"
merge
It's running checks
BTW, on Neoform, what do I do to analyze this π€
> Task :24w14a:testDecompileServerHotSpot22Compare FAILED
Jar Contents did not match:
net/minecraft/world/level/storage/loot/functions/SetAttributesFunction.java
@slow prism Maven central publishing failed
- What went wrong:
Execution failed for task ':closeSonatypeStagingRepository'.
Staging repository is still transitioning after defined time. Consider its increment. StagingRepository(id=net***-1042, state=open, transitioning=true)
Otherwise it seems like it did publish 2.0.0 successfully. What do I do about this now π
it changed from not planned to planned? 
It happened today, the latest snapshot is using J21

91 compile errors for the client side
I saw a lot of new SomeClass(this) {...anonymous overridden methods...} that didn't seem to occur in j17
For NeoForm the decompiler output needs to stay the same and vineflower only publishes snapshots under a single snapshot version
Sigh
It seemed slightly annoying but still not a large problem to fix
Time to fork it?
in patches, I mean
saying things on the internet was a mistake 1.20.5 is still planned π
if it were to be skipped you wouldnβt hear it from me in a random discord π
this must mean minecraft 2
but we already got a minecraft 2.0
goddamnit gegy
I know we wanted java21 ASAP
but this ruins the perfect opportunity of java21 for mc 1.21
now we can never have peace
just round the version lol
And 91 compile errors need fixing
itβs truly devastating and I will never emotionally recover from it
minecraft not having the same release cadence as java, smh :P
this snapshot probably also has the highest new compile errors compared to patch updates
Probably the decompiler's fault though
could you imagine if Mojang waited to release new MC content until a java version released. riots. literal riots
from players maybe
i mean, Java releases on a 6 month cycle
Is there a repo for panama-based lwjgl4 yet?
Java 21 for the new snapshot? That's amazing!
I, for one, am ecstatic about sequenced collections and the code snippet doctag
moreso the latter for all the docs. all of it
gone are the days of <pre>{@code ...}</pre>
21 has switch pattern matching, right?
yep
Ah thank goodness
Unnamed patterns/variables are still preview though?
But those compile out so I should be able to just turn that on in dev
Ooh and virtual threads, nice
no
that's not how previews work
all of your classes will require the runtime to have previews enabled
isn't this preview just a change in javac?
it's a generic requirement
also no
it generates previously invalid bytecode
the lvt entry has a blank name
which is invalid until the preview is promoted
preview features change the version of the class file
legally, yes
illegally... 
some ASM can fix that

Oh huh, they literally use a blank name in the LVT. Wacky.
Wait why does that go in the LVT at all. Okay I need to poke how this actually compiles down more
I remember stumbling into that when making camelot use preview j21
Ah wait try-with-resources, that's why it needs to be in a local still
SubscribedTask(DataFetcher.Task<T> var1, Consumer<T> p_239959_, Consumer p_239960_) {
this.task = p_239959_;
this.output = p_239960_;
}
The decompiler produces this weird artifact now π€
I am really confused, is it possible our parameter renaming loses some info now?
It essentially shifted the parameters off by 1 and repeated the last one
The correct code would be:
SubscribedTask(DataFetcher.Task<T> p_239959_, Consumer<T> p_239960_) {
this.task = p_239959_;
this.output = p_239960_;
}
Here's a real weird version of that:
public OverlaySmeltingRecipeButton(int var1, int p_100262_, RecipeHolder<?> p_100263_, boolean p_301104_, boolean p_100265_) {
super(p_100262_, p_100263_, p_301104_, p_100265_);
}
[...]
new OverlayRecipeComponent.OverlaySmeltingRecipeButton((int)this, j1, k1, (boolean)recipeholder, flag1)
This happens outside of Neo as well
Can't I just replace the 0xffff minor version with 0x0000?
I think most things that are behind preview probably aren't checked
Can confirm that most things that require preview do indeed appear to not be checked
No idea how pointless this is, but I tried my hand at fixing the compile issues https://github.com/neoforged/NeoForm/pull/1/files π
testCompile and testDecompile pass but I don't really know what these do...
I have a theory, Mojang has 2 teams
Well perhaps one team for most of a specific version, and when one version gets close to finishing (1.20.5) they split into 2 to speed along that and other (1.21)
Perhaps
Not unheard of in game studios
Coffee stain studio actually did that
so is the current neoform usable or should we wait until jas is done with the VF fixes
We should likely fork and republish VF
1.10.0 is planned to release sometime soon
tech we can wait those couple of days jas already said she is nearly done with it (probably just a timezone issue now)
Yes it's fine if it's a couple of days
The last release was months ago, and we already discussed forking VF a few weeks ago; if things finally start moving again I'm fine with waiting for the release
might be good if all active porters are in here: https://discord.com/invite/MsBAZamXGF
should add that server to the invite list
There is already a neoform version using 1.9.3 for 24w14a
#builds message
[Jump to referenced message](#builds message) in #builds
24w14a-20240403.231702
1.20.5-dev
24w14a
eh I think we should wait for 1.10 to update to the next snapshot
since this one has a lot more manual patching
That's not really relevant for neoforge though?
We can update to a new neoform later on
Yeah
In general
It might cause some rejects
Due to changes in the neoform patches
yep it could mess with the neoforge patches
I don't really care tbh, we can wait a few days
it just needs to be coordinated when it happens
I'd do it as soon as coeh bumps the VF version which should be when jas publishes the new version
And maven central is down
lol
Their publish also failed, probably for that reason
Though I can access Central fine, so it's probably back
https://status.maven.org/
Seems like it was just publishing
Welcome to Maven Central's home for real-time and historical data on system performance.
Ah
vineflower 1.10.0 has been released
vineflower also has a plugin api now
[Jump to referenced message](#builds message) in #builds
24w14a-20240404.210202
1.20.5-dev
24w14a
@fallen igloo
tech I think you f*ed up list time you squashed
you squashed more than the kits commits
idk how to restore the history without doing the rebases on main again
because we can't squash commits that were made via github PRs
But yes I made a few small changes in the squashed commit for some reason
Of course we can
Just do an interactive rebase and squash everything
Then update the time and message of the first commit
Maybe need to add a few authors too
And what's this talk of history?
we loose the commit messages and thus the links to the PRs
it's not an issue but a best practice thing
It doesn't matter
Adding links to the PRs would be useless noise
Most of the PRs are simple fixes
to what version? and do I only need to bump it here https://github.com/neoforged/AccessTransformers/blob/main/settings.gradle
(we are also still using mcf AT so someone has to change that after the ASM bump)
I'm not touching neoform
accesstransformers is neogradle
We really need to fix our tests /sigh
Also this pls https://github.com/neoforged/snowblower/pull/3
But broke injection
Did we not repackage AT?
Don't we have to change the package somewhere??
And we really need to stop with xxx+ version crap
It's not great, I had the same thought
Maybe not if the main class is pulled from the AT manifest, idk
Yeah so the main class is specified in the manifest ok
huh?
did we remove the fatjar in our AT fork? @slow prism
because before it was 8.0.+
@wooden tendon the NG version with the bumped AT is broken because there is no AT fatjar, is that a problem in AT or NG?
probably with AT
why is it not there then? https://maven.neoforged.net/#/releases/net/neoforged/accesstransformers/10.0.2/
cause you're looking at the wrong thing
well it's the wrong artifact
what's the correct one?
maybe this one: https://maven.neoforged.net/#/releases/net/neoforged/accesstransformers/at-cli/10.0.2
can we disable the
SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
[12:03:50] [main/INFO]: Access Transformer processor running version null
[12:03:50] [main/INFO]: Command line arguments [--inJar, C:\Users\georg\Documents\modding\NeoForged-Porting\projects\neoforge\build\neoForm\neoFormJoined24w13a-20240328.090800\steps\rename\output.jar, --outJar, C:\Users\georg\Documents\modding\NeoForged-Porting\projects\neoforge\build\neoForm\neoFormJoined24w13a-20240328.090800\steps\applyUserAccessTransformer\output.jar, --atFile, C:\Users\georg\Documents\modding\NeoForged-Porting\projects\neoforge\build\neoForm\neoFormJoined24w13a-20240328.090800\accesstransformers\User\accesstransformer.cfg]
[12:03:50] [main/INFO]: Reading from C:\Users\georg\Documents\modding\NeoForged-Porting\projects\neoforge\build\neoForm\neoFormJoined24w13a-20240328.090800\steps\rename\output.jar
[12:03:50] [main/INFO]: Writing to C:\Users\georg\Documents\modding\NeoForged-Porting\projects\neoforge\build\neoForm\neoFormJoined24w13a-20240328.090800\steps\applyUserAccessTransformer\output.jar
[12:03:50] [main/INFO]: Transformer file C:\Users\georg\Documents\modding\NeoForged-Porting\projects\neoforge\build\neoForm\neoFormJoined24w13a-20240328.090800\accesstransformers\User\accesstransformer.cfg
[12:03:50] [main/WARN]: Found existing output jar C:\Users\georg\Documents\modding\NeoForged-Porting\projects\neoforge\build\neoForm\neoFormJoined24w13a-20240328.090800\steps\applyUserAccessTransformer\output.jar, overwriting
[12:04:04] [main/INFO]: JAR transformation complete C:\Users\georg\Documents\modding\NeoForged-Porting\projects\neoforge\build\neoForm\neoFormJoined24w13a-20240328.090800\steps\applyUserAccessTransformer\output.jar
``` logging for the AT task
How are there so many
changes in the decompiler

yea --variable => variable-- is the most obvious
wouldn't that change create the wrong behavior under certain conditions?
only if it's used inside an expression
a(++x) vs a(x++)
if it's used standalone or like for(;;x++) it doesn't matter
(but eg, while(x-- > 0) does)
so i guess it comes down to whether VF makes that distinction and just defaults to x++/x-- for non-expressions since it doesn't matter, but hopefully preserves the syntax for applicable expressions
thing is, there's often more than one way to interpret the instructions.
say you find ... using pseudo-assembly not actual bytecode ```
INC x
PUSH x
INVOKE a
you can interpret this in three ways:
1. `++x; a(x);`
2. `x++; a(x);`
3. `a(++x);`
I suppose that most rejects are quite trivial then?
why does this even exist?
++++ REJECTED HUNK: 2
@@ -59,20 +59,6 @@
}
}
- private static boolean isSticky(BlockState p_155938_) {
- return p_155938_.is(Blocks.SLIME_BLOCK) || p_155938_.is(Blocks.HONEY_BLOCK);
- }
-
- private static boolean canStickToEachOther(BlockState p_155940_, BlockState p_155941_) {
- if (p_155940_.is(Blocks.HONEY_BLOCK) && p_155941_.is(Blocks.SLIME_BLOCK)) {
- return false;
- } else if (p_155940_.is(Blocks.SLIME_BLOCK) && p_155941_.is(Blocks.HONEY_BLOCK)) {
- return false;
- } else {
- return isSticky(p_155940_) || isSticky(p_155941_);
- }
- }
-
private boolean addBlockLine(BlockPos p_60434_, Direction p_60435_) {
BlockState blockstate = this.level.getBlockState(p_60434_);
if (blockstate.isAir()) {
++++ END HUNK
Custom sticky blocks
yes but that is not patching anything in or replacing functionality it is just removing 2 private static methods
They should probably be marked as deprecated instead
they are private so you can't even access them without AT
Are we adding a method of the same name in a Superinterface?
So removing the private will now invoke the super instead
Hmm
Weird why were the statics removed then?
I guess to force people to use the none static ones
If the same class internally used isSticky it now goes up the inheritance chain instead
Oh wait π€ I am mobile impaired hehe
they are static there is no inheritance
The call sites are qualified?
off topic but looking at 2 methods above, whats the difference between
isSlimeBlock and isStickyBlock? the javadocs to me sound like they are the same thing
(feels like multiple sticky block patches/old prs that could be merged into 1)
Could be one pre mojmap one post. But also could be for whether it can pull other blocks vs whether other blocks can pull it or something. I vaguely remember there being some way to specify both
so uh I was looking at snowblower and this check seems wrong to me https://github.com/neoforged/Snowblower/blob/1253f7e6f4ce4bbe3041690c261550643b5e6448/src/main/java/net/neoforged/snowblower/Generator.java#L270-L271
why is it inverted?
I have a feeling this only "works" due to accidental chance
assuming we are discussing current manifest data, then latest snapshot = 24w14a and latest release = 1.20.4
then, running this code gives a variable of release = 24w14a and snapshot = 24w13a, which seems entirely wrong. but it still "works" by comparing release times and picks the right thing
then, if we simulate with old manifest data when 1.20.4 was released, we have latest snapshot = 1.20.4-rc1 and latest release = 1.20.4
then, the code gives release = 1.20.4-rc1 and snapshot = 1.20.4
so in summary, the code works but only by accident :P
and in fact if wanting to provide specific mc versions through a config file, probably is prone to breaking?
I was just looking into this to try and run snowblower for the april fools version
@restive raft Why did you change this to a comma instead of a backslash cuz it's hurting my brain
https://github.com/neoforged/Snowblower/commit/15c899fa38f63d85c6829eec0f68f3db1818af52#diff-c2361e81da5afce941ac2dc5491ad47334be37e6858334bd9467ffdcbd5d1c2fR349
sooo is this still an issue since we are using mojmaps at runtime?
/**
* Used to mark a recipe that shape matters so that the recipe
* book and auto crafting picks the correct shape.
* Note: These methods can't be named 'getHeight' or 'getWidth' due to obfusication issues.
*/
public interface IShapedRecipe<T extends Container> extends Recipe<T> {
int getRecipeWidth();
int getRecipeHeight();
}
Shouldn't be
No, they can be renamed now
ok did it
The previous issue was that using the same name would mean the compilation would succeed but the override would be absent at runtime
ok 33 reject files left
only client and entity stuff left
ToDo:
Tadpole.java.patch.rej
WitherBoss.java.patch.rej
Hoglin.java.patch.rej
I guess 24w14a porting is already in progress, but I reran snowman with the newer snowblower version w/ fixed srgutils, so it also has 24w14a for viewing purposes
Just out of curiosity, @fallen igloo I'd go into Kits, check out the branch and work through re-applying the rejected hunks?
And then delete a rejected file after reapplying it?
I'll just give that a try. There's a first for everything heh
I can show you, I'm in voice
Oooh you are still at it. nevermind then π
I thought your TODO list was to say you were going to take a break
StopHoldingItemIfNoLongerAdmiring is such a silly class name lol
hey me doing stuff does not mean you can't do some too
I already liked AbstractPiglina lot....
I'm doing bottom to top
Alright, I'll go from top to bottom then
come into voice so you can see what I'm doing
What does re-running genPatches do?
Since they don't seem to be part of your commits
nah I'm not gening patches yet
It looked like you were running the task
nope that button is commit
@fallen igloo Tadpole
WTF
We probably need to check if there are new uses of RULE_MOBGRIEFING
Since we seem to be replacing those with net.neoforged.neoforge.event.EventHooks.getMobGriefingEvent(this.level(), this)
yep
@fallen igloo Done with Hoglin, so I think we're caught up
yep you rebase, then push so I can have everything too
Done
I'm generating the patches
So I see two uses of pLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) that we already forgot in 1.20.4 (PowderSnow being destroyed by mobs on fire, it seems, and pitcher crop being destroyed by ravagers)
yea there is also a new gamerule that we probably need to treat the same way (the projectile break block one)
We can do that outside of Kits though, I assume
probably
there are compile errors in base... HOW?
I don't have any in base
What's the compile error?
ok I had a dirty state after checking out kits, that compile error was a removed class
we are compiling
There wre some minor issues in neoforge itself, did you fix those? I wasn't so sure about the attributes, heh
*in successfully applied patches, to be precise
So now that it compiles and launches, is that the point at which it gets moved back into the port-branch on NF proper? What's the process for that?
? just looks like a patch failure that duplicated lines, don't remember the technical term (if there is one)
Remove MC sources and squash all the port commits together
I want a workflow for that @slow prism
It is easy to fuck up and annoying (no matter if you use git in the console or via a tool)
Do you copy the port branch in the NF repo from the previous snapshot and then MR from Kits or just push it ?
I can remove the sources and squash, but I can't actually push it to NF
I pushed 24w14a-squashed to kits that has the squashed source-free port that would be suitable for ports/24w14a upstream
Yeah I probably should π
I am bad at filling out forms. But we'll see how this goes .D
i don't remember 
lol
what is there to fuck up?
targeting the wrong commits, forgetting commits, forgetting to remove sources
not skill, tiredness or silliness
I find it hard to miss or forget commits. At least when I use intellij's view, I don't think it's that bad. We should have a clear/consistent commit msg for where a new snapshot started (or you can tell by just using the fork point).
My recommendation would be:
- make a commit deleting all sources / rejects/ whatever
- set the branch filter to the branch you're on for ease of use
- select the starting commit
- hold shift and select the latest commit you just made > right click it > squash commits
I don't see why we couldn't automate this either (with human review of course)
but it doesn't really necessitate automation
I usually first gather the list of committers, then I do an interactive rebase, push the squashed commit to Kits, and if it looks good I push it to NeoForge
Well if you had those, you'd install a rule on the NF repo that fully prevents anyone from pushing projects/**/*.java π
Anyway, can someone check 24w14a-squashed and copy it to port/24w14a on NF?
And IIRC, close https://github.com/neoforged/NeoForge/pull/752 and reopen from port/24w14a
can't normal rules do that too
ah metadata rules only work on the commiter
unfortunate
24w14a is failing to run clients for me in userdev
Exception in thread "main" java.lang.module.ResolutionException: Module io.netty.common reads more than one module named org.objectweb.asm
cloned the branch, published to local maven
bumped versions in my mod and attempted to run data gen after import
someone should rebase the port branch..
I'll rebase soonβ’οΈ
Hm so I tried my hand at it. So far so good. It now causes patch rejects on setup which I don't find surprising.
What I do find surprising however is that it doesn't produce a half-patched projects/neoforge/src/ directory to which I could apply the rejects by hand π€
A ha! setup -Pupdating=true. Also, I broke the patch file so bad, I get a "Patch engine failure" π
So the 24w14a port is broken right now? Not sure I follow
You mean w.r.t. Apex comment? Maybe
Or mine? I am just trying my hand at rebasing π
Oh, well any patch conflict needs to be resolved by accepting the porting branch, then redoing the patch after the merge
Okay, I was about to ask what your strategy for resolving those would be
Because I tried manually fixing up the patch file π
I typically open a list of conflicting files in my browser and redo them one by one
Yeah well... that doesn't really work 
Now I provoked Patcher to throw an IndexOutOfBounds exception lol
Well it does for some parts of it π
I probably would have been done already if I just saved the files that had conflicts for later lol. like you said
Hm, TBH it'd be nice if diffpatch didn't outright crash on malformed hunks. if it wrote those to rejects "normally" this would be faster to do π
@elder swallow It's done https://github.com/shartte/NeoForge/tree/port/24w14a but you'll have to force-push that for me π
Trivial conflicts due to the ingredient isEmpty optimization and the burn-time changes
You had author sorting?
π
I can change the commit message no problemo, but what sorting did you actually apply
I mean that they were sorted by name in the commit message π
Just so it wouldn't look as random
Okay let me fix that then
Done
Well, but the case of co-authored-by doesn't match. I'll also fix that π©
Alright... now
fair but also doing it by hand just isn't really part of the intended design. However, I've been where you are before. I had to tell intellij to not delete trailing spaces for *.patch files as that ruins the patch file if enabled. Since, an empty line in the source file that is unchanged between the original and patched src will be a line with a single space in the patch file
and you of course have to update the hunks to have the right # of lines for both the src and patched version. space lines are common and included in both counts and - lines go in the - count and same for +
Yup the trailing spaces caused the "Patch engine failure"
I did try updating the hunk line count and that worked for some hunks. But I gave up when Patcher threw an index out of bounds exception π
24w14a implemented a new TooltipContext class inside of Item
(it allows holder, server/level tick rate and map data lookups)
and replaced basically all usages of Player inside of tooltip item methods (appendHoverText) with this new context class
could this context also be passed to ItemTooltipEvent to keep inline with the vanilla tooltip usages
Yes
what happened to DyeableLeatherItem in the snapshots?
it become a item component and item tag now
tag used to know which items are dyeable, component holds the dyed color and whether or not to show the "dyed" tooltip text
got it
yeah its much better, only rly need to tag your items as minecraft:dyeable
and register a item color provider if your texture is tinted based in specific tint indices
Alright, force-pushed the rebased port/24w14a
Oh and ofcourse new commits just came in π
are we going to keep doing this branch/PR-per-snapshot? 
No idea, I am just going off of what was there before
i was wondering if we could make a long-running 'next-version' branch for each MC release instead
I am assuming we'll clean up later, at the moment it does help identify squash/rebase mistakes
between snapshots, I mean
my idea was to have a port/<next-release> branch but tech made port/<snapshot> the pattern
let's break the pattern 
yea down with the system β /s
what was tech's reasoning?

