#1.20.5/6 Snapshots
1 messages Β· Page 9 of 1
just a fyi, i updated to use the pr-publishing branch and this is still an issue for me in userdev
I am still updating AE2 before I'll be able to get to this. So probably within a day

to the snapshot?
Yes, which else π
finally, all tests pass π
It's highly non-trivial to allow RegistryFriendlyByteBuf packets in the config phase
why do we need to again
we don't need to
it's just that in theory the registries are already synced and it should therefore be safe to use RFBB
the other thing is that you can't do anything that requires RFBB in the config phase
(for example: sending Ingredients or ItemStacks)
hmm, trying to clean up those FML changes i made for locators.. and i'm trying to decide if i should return a securejar or a path from the locators
I'd prefer a path but of course there is still some filtering in dev atm
well technically a SJ is more flexible
ok I just added a check to make sure that only synced registries used RFBB
and guess what...
Cannot use ID syncing for non-synced built-in registry: ResourceKey[minecraft:root / minecraft:recipe_serializer]
1.20.4 uses RLs
1.20.5 uses int IDs
good call @blazing valve on adding this check really
(or well... on giving me the idea for it π )
One less footgun
yup
another one: Caused by: java.lang.IllegalStateException: Cannot use ID syncing for non-synced built-in registry: ResourceKey[minecraft:root / minecraft:attribute] π
Hah.... Oh... no. Item.TooltipContext has no access to the level?
That's a problem π
wait wait wait... how tf do we add attributes now 
We need it to get the RecipeManager
mojang added MapItemSavedData to it and they didn't think of providing a proper level isntead?
You get registries, tickRate and map saveddata π
that's so fucking stupid π
a path is horrible to deal with
it's easy enough to build a SJ from it?
but yeah I suppose SJ would be clearer when reading the code anyway
on the contrary, sjs are sometimes created with automatic service infos
btw maty can we do the SPI merge first?
but only if they're a mod..
ah right 
so both sides are badβ’οΈ
attribute sync is fucked
we need a solution for registries that are both synced and optional
trying to run the 24w14a builds and getting many recompile errors, is that normal? (I assume not
)
indeed it's not
LivingEntity.java:2524: error: cannot find symbol
default -> throw new MatchException(null, null);
^
symbol: class MatchException
location: class LivingEntity```
they all look like this, at the default branch of a switch
ItemStack itemstack = switch (equipmentslot.getType()) {
case HAND -> this.getLastHandItem(equipmentslot);
case ARMOR -> this.getLastArmorItem(equipmentslot);
case BODY -> this.lastBodyItemStack;
default -> throw new MatchException(null, null);
};```
I am running the same setup and don't have that problem. Do you have a tasks.byType(JavaCompile) reconfiguring compile tasks?
The recomp task is "user-accessible" in that way, sadly
I do, actually
but it has a check for if the task name starts with neo
to avoid that sort of error
let me see if I've fixed it
update: that's fixed
I have a few more problems but I think those are on my side
I probably broke vanilla compat in this latest commit - thankfully there is a TODO π

Exception in thread "main" java.lang.module.ResolutionException: Module unsafe reads more than one module named org.objectweb.asm.tree
at java.base/java.lang.module.Resolver.resolveFail(Resolver.java:900)```
I can't launch runClient
???
Still porting AE2, can't really validate it yet
it keeps giving different names
There seem to be lib conflicts (?)
It'll error out on the first duplicate module and I think it's unordered
Likely the asm upgrade in one transitive dep gets put in together with asm from another
you can check build/neoform<something>/steps/minecraftClasspath/classpath.txt for duplicate asms if you really c are, but I'll get to it π
Yeah, asm 9.5 and someone bumped something else to 9.7 so we have both on the CP
shouldn't configurations prevent such duplicates?
@slow prism we can safely add new data component types in neoforge
regsync doesn't happen at all on neoforge-vanilla connections
of course, the client will probably disconnect if it receives a data component type it doesn't know - but that seems fine?
I bumped it in 2 places
Is it possible for some of my issues to be resolved along with the porting efforts? They are simple removals of a few lines, so I feel it's not worth making PRs.
Ideally https://github.com/neoforged/NeoForge/issues/705 and https://github.com/neoforged/NeoForge/issues/706
I think it's better for posterity to make separate PRs
Is the history not already preserved by just continuing the branch with the next snapshot?
every time we rebase, the history is lost
We just have to make sure we know where the squash from the last snapshot ended, then cherry-pick the new squash on top
ah
hrm
I feel like at that point it's better to have a separate repo to not pollute the main one with a ton of branches?
π€· idk
we could also tag the last commit of any previous snapshot
the ref associated with a tag is retained even if there is no branch containing it
huh, incidental thing that i hadn't noticed - potion durations in tooltips are scaled to the tick rate
Oh right, it's wednesday heh
WHAT COULD THAT MEANNNN????
potato part 2?! /jk
p(otato)
p data driven items
enabling preview features in Java? π
https://fxtwitter.com/Brandcraft06/status/1778050792076857512 might be a good shout
so we can use project panama
(p)re-release
1.20.4 part 2
yeah we should ask people to start submitting their patch series to the mailing list...
<@&1067092163520909374> we got a pre
preee
lets go finally
Oh fuck
nice
org.jcraft:jorbis
yes tech indeed
fuck
we need that fml pr merged yesterday
did you finish it
Nope
I'm busy with the ingredient rewrite
weee
Blog link? π
no minecraft.net article?
I still do not know how to navigate their site
ok, by the looks of it, jorbis is hela outdated?
I'm guessing no changes other than some bug fixes?
what's jorbis?
[Reference to](#1184607569629675530 message) #1184607569629675530 [β€ ](#1184607569629675530 message)lol pure java ogg decoder
hmmm
was the jcraft jorbis site down already or did minecraft kill it
metadata has updated now for me
https://piston-meta.mojang.com/v1/packages/2fb2c20dfa96166980872b24e02ea8c0b5ae7a5d/1.20.5-pre1.json
will likely come soon
the bot extracts the metadata they release
What did they use so far?
stb_vorbis from lwjgl?
If I had to guess.... STB likely has vulnerabilities and they load ogg from untrusted sources via the server resource packs, right?
whos building snowman?
Added support for Viossa language
whats this ?
Mobs that can wear equipment will now often spawn with enchanted weapons and armor
STB also can't load all ogg files
if you have the link, please do share with the class lol
A lot of files just don't work
I have a mod that replaces the audio loader with one that uses ffmpeg
im reading from here, it has link to mc.net but that 404's
https://mdcfe.dev/mc-changes?ver=1.20.5-pre1
Yeah, 1.20.4 uses stb_vorbis
stb_vorbis?
Oh sorry, I totally read over the "all" π
as in, I thought you said it couldn't load any at all. Ok nevermind.
But honestly, vulns are much more likely imho since STB is not known for "security"
Yeah
but they went with a lib that was last updated in 2008
unless I have the wrong page
And using a pure java one means its memory safe
They actually used to use jorbis
Back in like 1.12 and older
Actually they might've stopped before 1.12 even
https://mvnrepository.com/artifact/org.jcraft/jorbis/0.0.17
that uhh....
is a old lib
All I know is that jorbis was used in 1.2.5, sometime between then and now they switched to stb, and now they're back to jorbis
huh?
what was the excuse
Apparently it's breaks_decorated_pots now
break_decorated_pots as a replacement for tools? am I hearing that right?
someone who has access to the decomplied one see if it was a direct replacement
yes
i have it
Removed Item tag minecraft:tools (overlapping with minecraft:breaks_decorated_pots)
lemem have a look
Oozing Nerf
yep, it is
Mojang ships the Parameters attribute now apparently
guess you just check if item has the tool component now, rather than tool tag?
Because all the parameters just became final
oh ok well the tools tag was unused
it was just added to the pots tag
so it makes sense to remove it
tho neo may want to add one for mod reasons
why not remove the pots tag and use tools instead?
you're a bit late π
Because the tag is only used in breaking decorated pots
does the removal of the tools tag mean we remove the other tool tags in #1134480199937957969 ?
So a datapack needs to be able to say potatoes can break the pot but theyre not a tool
oh this is going to be annoying
I would argue it means we need to add a tools tag
theres a new enchantment tag for tooltip ordering, so enchantments display in tooltips in the order they are loaded from that tag
no more weird enchantment orders due to order to apply them in anvils
sent everywhere
the Level now has a abstract potionBrewing method? is potion brewing/mixes datapacked now?
public abstract PotionBrewing potionBrewing();
constructed language
feel like i did my snowblower wrong xD
alot of my changes are param name changes and nothing else in the class
for example in Tiers
- private Tiers(TagKey<Block> $$0, int $$1, float $$2, float $$3, int $$4, Supplier<Ingredient> $$5) {
+ private Tiers(final TagKey<Block> param3, final int param4, final float param5, final float param6, final int param7, final Supplier<Ingredient> param8) {
They publish parameter metadata now
Thanks Finn
and it's obfuscated
That link was broken when the alarm was sounded btw
- The page limit in Written Books has been removed
Oh boy. Lectern puzzles just got interesting
no limit oh boy, i can already see all the broken chunks and stuff from that
having books of crazy stupid large page count
I can see someone with an autoclicker having a field day, adding pages..

ooh theres a codec specificly for colors now, thats handy
ExtraCodecs.ARGB_COLOR_CODEC
deserializes color from integer/vector4 codecs using Codec.withAlt
ooh potions are now feature elements, makes sense why the level has a brewing method now
its to delay when the brewing is loaded/registered to pass along the levels enabled features
hmm the parameters being final is going to be fun for some patches if we ever abused reassigning them
If we want to, we can strip that attribute
I'd prefer if we did
final parameters are so noisy π
noisy ? in what way, visually?
Mentally trying to read and understand the parameter list
final parameters are great, you're just broken /s
I am not against the effect of it
it also makes the snowman diff noisy
It's even funnier that it might break patches if we re-assign parameters. We might have to patch it out hehehe
I'd suggest we add that to ART, maybe?
Nope
We now have parameter names for many constructors

doesnt look to be helpful param names though, $$# -> param# is what im seeing
so parchment still goto for param names
the lvt is still $$
For example, BreezeDebugPayload$BreezeInfo's constructor has the following args: uuid, id, attackTarget, jumpTarget
This might be on only records
think it's empty for non records
aba$a:
Yeah that's unfortunate
So it's names we already have
because we have those through the method names in mappings, right?
yeah they can be empty
final parameters are just stupid...
So, thoughts: ART is touching everything anyway. That would be the right place to fix this?
can you justify that ? I am curious and want to know why
I really care more about how to strip it r/n instead of discussing philosphical pros and cons
I'd say just keep it. It's in the code, and I don't really see a good reason to touch it generally
If a specific patch needs to reassign a parameter, then that patch can un-final said parameter
that increases the likelihood of a patch failure on updates
it's the same kind of problem as ATs being in patches IMO
We'll not keep it since it fucks up patches. A lot.
We will also need to patch the method signature if we want to overwrite parameter values in patches
so... no? we're not working on minecraft code, having final params has literally no value for us
only downsides
Just make sure not to strip things other than the final-ness
*not working on Vanillas minecraft code.... you know what I mean
Like synthetic and mandated params
Yes ofcourse, the entire point was to keep the other attributes π
Those are part of the same attribute
It's access flags for parameters
So you need to keep the attribute, but just access &= ~ACC_FINAL
They just create noise and add 0 value
As in: when reading the code, the final keyword on parameters doesn't give you any insight
Alright: private Tiers(TagKey<Block> param3, int param4, float param5, float param6, int param7, Supplier<Ingredient> param8) {
we could expand ATs to allow definalization of method params :P but that seems pretty overkill
Lol π
I suppose this means adding the definalization arg to neoform?
ok
merged
can we enable that option in snowblower too?
the latest snowman commit is unreadable
Huh is this a straight up decompile error or is ART messing up?
the param names should be p_xxx_ I think
Well yes, the LVT is patched, but is VF ignoring that when the parameter attribute table exists?
(p.s. I don't see that in javap)
Odd. It this limited to parameter lists that have any synthetic params? the other methods look ok
check VF server, jas has been made aware
Okay, patched VF. Trying a local version now
remember to send a PR if it works π
Yeah works
private Direction(
int p_122356_, int p_122357_, int p_122358_, String p_122359_, Direction.AxisDirection p_122360_, Direction.Axis p_122361_, Vec3i p_122362_
) {
this.data3d = p_122356_;
this.data2d = p_122358_;
this.oppositeIndex = p_122357_;
this.name = p_122359_;
this.axis = p_122361_;
this.axisDirection = p_122360_;
this.normal = p_122362_;
}
LOL
Vineflower has a test for the broken behavior
that sounds like a weird TODO - fix later when we care
#maintenance-talk message https://www.githubstatus.com/ oof
[Reference to](#maintenance-talk message) #maintenance-talk [β€ ](#maintenance-talk message)Huh. Okay yes, I never had that either
stuff kaputt
just realized this was snapshot not #neoforge-github ...
Blergh IJ loses its VCS connection in some projects randomly after the latest update
And only a full IDE restart fixes it
VF Release is probably gonna take until next week, but I might have a suitable workaround
haven't had that, but yeah it's super buggy, terrible time to have run all the updates...
we can publish a VF fork if we want to
keep having menu panels not responding when I hover over them
There's a CLI option to disable use of the method parameter data
depends how quick jas is with the update I suppose
Well I sent a PR, but she says she'll need until next week, so I'll try this with that o ption set to false
Neoform on Windows is really quite annoying
I need to start IJ as admin for it
@slow prism We should probably change that to neoforged GAV, right?
Alrighty, done. This fixes NeoForm for 1.20.5-pre1. No patch changes required
https://github.com/neoforged/NeoForm/pull/2
This should fix the snowblower output: https://github.com/neoforged/snowblower/pull/5
@slow prism how do I fix this on TC now?
Delete the branch and let it redo it? Just guessing, though
Alright, the maxStackSize part of https://github.com/neoforged/NeoForge/blob/1.20.x/patches/net/minecraft/world/inventory/AbstractContainerMenu.java.patch is no longer necessary. They now use a stack-sensitive Slot.getMaxStackSize(ItemStack) method
whew
I agree with @maiden prairie, [2, 263] Generating 19w36a is really weird for progress
It has to rerun everything
so new branch in about 4 hours?
Is there yet another Slot method?
No, we're waiting for neoform
This is in Slot
They now use the latter method which does exactly what our patch did π
Okay, PotionBrewing is no longer static
So our patch might move, honestly, but I'll keep it as is for now
Fabric had to redo its brewing hooks a bit
Or rather, it definitely will, yes
Yeah it now allows for feature flags apparently to have experimental recipes
Oh
Why aren't these recipes datapacked yet?
Btw you can check https://github.com/neoforged/Snowman/commits/dev/ to see the progress π
it's more like 12 hours
that's a wrong statement of a fact
I have not checked any further. Anyway. all rejects done. I just restored the previous patches for now.
Is this cuz they moved to j21 or cuz they modified the proguard config to give the final flags and things?
Modified Proguard config
VF just doesn't handle parameter metadata with null names correctly and now those showed up
(which happened in reaction to java 21 changes)
so did they modify the config out of necessity or? I'm confused
I think it's for us π
so useful if we're stripping it all anyways :p
Well only until VF catches up
this is something we can fix from ART is it not? Just... don't have a null name?
We could, presumably
ART is the perfect spot to put fixes that means we don't have to maintain a forked decompiler (again)
But I didn't see any improvement with handling SYNTHETIC/MANDATED parameters either
For the time being, I just disabled parameter metadata again via a CLI switch that VF had, until they 1) merge the fix PR and release it and 2) do something useful with the additional metadata we get
I mean for 1.20.5-pre1 at least we get 0 patch changes in Neoform vs the previous snapshot that way
so the params are still getting JAD names right
I honestly don't know how JAD names look like. I'll just say yes π
We're remapping them to SRG param names anyway. At least the ones that matter
They renamed the BE but not the renderer: public class EnchantTableRenderer implements BlockEntityRenderer<EnchantingTableBlockEntity> {
no it's an enchantable renderer
f1, blockpos$mutable, i
Should I just push port/1.20.5?
Even though it references a mavenLocal Neoform? π
Sure why not
I checked multiple methods and didn't see any final parameters
I believe it only affects methods that have synthetic or mandated parameters, i.e. enum ctors
Did you see my PR? https://github.com/neoforged/NeoForm/pull/2
That should just build out of the box
No that's useless
Why push something ppl can't use
like at the very least clone themselves I mean*
You can already see the necessary changes and once NeoForm releases just swap the version and be done? π
Realised I was checking the version with final modifiers removed and I see that they gave everything final
Another thing I noticed is that they seemed to change a bunch of mandated modifiers to synthetic
Alright, NeoForm is out so here you go: https://github.com/neoforged/NeoForge/tree/port/1.20.5
Welp, starting to slowly make progress on this. Will probably need the NeoForge changes over the weekend: https://gist.github.com/ChampionAsh5357/53b04132e292aa12638d339abfabf955
Waitttt Util#getRegisteredName is hella useful
I didnt realize that was added
Makes it easy
Especially for datapack registries
Is just the potion thing the remaining thing that is preventing neoforge from building?

I am looking at snowman (https://github.com/neoforged/Snowman/commit/e12c01a0ecef45fa6c18488eb46ecf7bcb647ecf)
fuck, 137 lines of ItemStack diff this time
there will be a section on data components in the blog post
so that can potentially be omitted from the primer
Yes that requires an API change so I deliberately didn't touch that
Since the PotionBrewing in Vanilla now uses the experimental settings flag, you kinda need a registry/server/level whatever to determine if something is an output or an ingredient
will a BE able to hold attachments and dcomponents in 1.20.5?
For now yes
does this even work with j21 (afaik j21 needs asm 9.7)
also why do we not have a kits history for the pre1 port?
cause shartte did it all on his laptop while he waited for neoform to be published π
reading the squashed commit is pain
all these annoying line number changes 
yes
I gave up halfway through
is this the full 1.20.5 port PR?
I suppose he only has a single commit locally anyway π
(the un squashed with the sources)
then he broke protocol
I don't want to read patch diffs I want to read source diffs
I only have the.squashed one anymore
Please point to the documented procedure π
check the pins in here
I mean it's not the end of the world
shartte should probably apply for the mc-toolchain team π
We already deviate from that by doing the port branches for pre now π At least that was discussed that way
But I appreciate the bullet point list style. We have to put that into a MD file in the repo, really
Also no, ASM 9.5 adds J21, 9.6 adds 22 and 9.7 add 23
What is mc-toolchain responsible for?
Mostly neoform
Ah
I can redo it if we want and keep the individual commits. Do we want to have those on port/1.20.5 (are we going to re-squash that?)
no we shouldn't squash it
since we can start working on it as an active target rather than pure porting
we should squash port/1.20.5 "one last time"
then rebase on top of 1.20.x
starting from Monday we'll have a feature freeze on the 1.20.4 branch
Yes, what I meant is, I can produce a commit history that looks like:
- Update to 1.20.5-pre1
- neoform bump in gradle.properties
- reject files
- patch files updated once for line/context realignment and removed rejects
- Fix Patches
- rejects removed and corresponding patch file updated
- other patches fixed that had compile issues
If we want to have that, I can redo the fixes. But that only makes sense if we don't just squash that later anyway π
remember to announce that
doesn't matter anymore
I started working on a blog post: https://pr-32.neoforged-website-previews.pages.dev/news/20.5release/
All you need to know about NeoForge 20.5, now released for Minecraft 1.20.5.
Alright, I'll try to make a doc on the repo similar to CONTRIBUTE.md that outlines the porting process. I am getting old π
@magic pivot I also have a rather loose collection of thoughts on porting AE2 to 1.20.5 here: https://gist.github.com/shartte/f7cbf363e48a55a3d15f7ec59dff4bd3
getting or are?
tech you didn't ping
shush, get back to porting
a dev announcement should ping the dev announcement ping role
the patches won't fix themselves
I haven't checked Techs or Champions post yet, but this is probably something we should note. It's not a compile error to not notice this slight change in Vanilla semantics but it introduces extremely annoying bugs (data just gets lost)
meh this is a bit of a special case
it's irrelevant for most devs
Which was previously mainly just me so I never bothered making a workflow for pull requests because no one made any pull requests
I don't see a reason why it should hold attachments since BEs support dcomponents too now.
I half-wonder if we should patch that with @CheckReturnValue
their component support is awkward
it's only used to hold data until the BE is turned back into an item stack
is there some sort of gradlescript for changing class names like the one we had for 16.5 to 17.1?
idk
we have to redo brewing
I'm thinking of either subclassing or superclassing PotionBrewing
what happened now
β¨ feature flags β¨
I have a planβ’οΈ
my god why do they not use PotionBrewing everywhere 
why is there still this hardcoded list of containers even though they should just be pulled from PotionBrewing
I bet that mojang are gonna clean this up anyway
everything goes through PotionBrewing (which is accessible from Level), and registration is done using an event
so I would use the event to register vanilla-style brewing recipes?
this is probably going to be short-lived if mojang makes brewing recipes data packable, which their recent refactor would help with
cause you don't have the choice π
nah it's fine
I mean - really
no I mean as long as I can still register vanilla-style brewing recipes I'm cool with the event
this bootstrap thing is how vanilla does it now - it's called on server startup and on client join
(the event receives the full PotionBrewing.Builder which is augmented to also support IBrewingRecipes)
I like that!
Yes this is good. I didn't do that since it does require the break to remove our previous static way of checking outputs/ingredients/mixes
yeah it's better as a separate commit
at least for a few hours / days for people to have a look, I suppose π
is there a way of forcing the PR publishing to work even if there are conflicts?
Might have conflicted again
Yes
Sometime in the 1.20.5 port (I think?) Pack#hidden ceased to actually make a hidden pack. You might have noticed weirdness due to this. I added the fix to my PR with other resource loader fixes (which is now updated to the port branch)
Rebase pushed
So many changes, I'm still in the client package
keep in mind that I am writing the blog post too
I suppose you saw, but just in case: https://pr-32.neoforged-website-previews.pages.dev/news/20.5release/
All you need to know about NeoForge 20.5, now released for Minecraft 1.20.5.
Yep, I saw
Thereβs just a lot more than that to cover since I tend to go overboard
Oh good, I can finally ditch my brewing recipes that just copy a vanilla functionality
I think I only have one recipe that does anything the vanilla builders lacks, and that's just as I do a dynamic lookup in the vanilla map rather than coding it statically (fetch the ingredient used to transform splash to lingering and normal to splash)
Does the builder throw if a duplicate input is added? Can this let mods override vanilla recipes?
I check custom recipes before vanilla's checks
lots of fixes today, I wonder if we are getting a pre2 already, or they will wait till monday 
probably wednesday pre2 and friday rc1
i would expect something at the start of the week
Yeah this is a stupid large amount of changes I would expect them to keep it marinated a bit more
Please no more changes this week
I, for one, am waiting for the traditional tree refactors
or were they already done this cycle? I can't remember
Alright, PR is back to building, so it should be published now
I keep getting the following error in userdev:
Exception in thread "main" java.lang.IllegalArgumentException: Unsupported class file major version 65
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:196)
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:177)
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:163)
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:284)
at net.minecraftforge.accesstransformer.TransformerProcessor.lambda$processJar$3(TransformerProcessor.java:108)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
at net.minecraftforge.accesstransformer.TransformerProcessor.processJar(TransformerProcessor.java:104)
at net.minecraftforge.accesstransformer.TransformerProcessor.main(TransformerProcessor.java:81)
Execution failed for task ':neoFormApplyForgesAccessTransformer'.
makes no sense
aren't we supposed to be using our version of AT everywhere
Now if it was a named configuration we could inspect it π
is your NG up to date
mavenLocal strikes again
> Could not resolve all files for configuration ':classpath'.
> Could not resolve net.neoforged.gradle:userdev:7.0.105.
Required by:
project : > net.neoforged.gradle.userdev:net.neoforged.gradle.userdev.gradle.plugin:7.0.105
> No matching variant of net.neoforged.gradle:userdev:7.0.105 was found. The consumer was configured to find a library for use during runtime, compatible with Java 17, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '8.1.1' but:
- Variant 'apiElements' capability net.neoforged.gradle:userdev:7.0.105 declares a library, compatible with Java 8, packaged as a jar, and its dependencies declared externally:
- Incompatible because this component declares a component for use during compile-time, as well as attribute 'org.gradle.plugin.api-version' with value '8.6' and the consumer needed a component for use during runtime, as well as attribute 'org.gradle.plugin.api-version' with value '8.1.1'
this error message is traaaaassssshhhhh
but hey at least gradle handles it for us
Does that mean we can drop jabel from the eclipse launch project?
Is the ordinal change when switching on enum actually a thing, or is that something proguard or the decompiler doesn't handle?
Javac generates a switch on ordinal for enums in the same sourceset as the switch
And the decompiler does handle it if you're using 1.10.0+
J21 does change how switch-over-enum works, they got rid of the synthetic array used as a switch table and instead switch on the ordinal directly now. The implication of this change is that while any switch-over-enum was previously a tableswitch, certain ones will now be a lookupswitch instead: as long as your cases cover a continuous range of enum entries (case order is irrelevant, the range doesn't have to start at zero and doesn't have to cover all entries) it stays a tableswitch. If you have very small holes you still get a tableswitch with additional fake cases. If the holes get large enough, then you get a lookupswitch instead (which is basically binary search to find the target label instead of a direct lookup)
Gotcha, that makes sense
It just makes it a pain in the butt to read when trying to figure out if there's a difference I should be paying attention to
That's only if the enum is in the same sourceset as the switch. Otherwise it uses SwitchBootstraps.enumSwitch as a replacement for the synthetic inner class
that's a lot more involved than I expected π
btw FBB is gonna become less friendly over time...
I played around with this on Compiler Explorer since my dev environment refused to properly switch to J21, so it makes sense that I wouldn't have found that. Looking at the implementation of SwitchBootstraps.doEnumSwitch() in J17 (too lazy to check J21), that's even worse than lookupswitch, it's implemented as a linear search... It even has a fitting comment: // Dumbest possible strategy
anything that requires registries (e.g. readItem or readComponent) is gone from it
my imperative FBB code really doesn't like that π
That's now how it is in J21 for sure
I hope so
Which is really the way to do it in this case
Welp, I'm gonna stall for a bit. Getting to the data components section and I don't want to write it up at this moment. I know tech, you wrote something for the 20.5 page. Still gonna write it up in the primer
It does linearly search over guards though. So if you have cases A, B, B, and C, and you get the value B, it will check the B cases in order
That makes sense, yeah
Ok wrote primerβs section on components, will do more later. Gonna try and get to the world package tonight
seems like we have no way to check if an ItemStack has an empty component patch π€¨
you can do stack.asPatch().isEmpty() but that will allocate if the patch is not empty
is it possible to change when data component types are registered?
to allow mods to register custom default item components when building the item properties?
new Item.Properties().component(ModComponentTypes.FLUID_CONTENTS.value(), SimpleFluidContent.EMPTY) (as an example)
from what i understand this should make it so that my item always has a fluid on it
rather than needing to null check / use getOrDefault everywhere
currently doing this causes NPE as it tries to reference unbound holders
Caused by: java.lang.NullPointerException: Trying to access unbound value: ResourceKey[minecraft:data_component_type / apextech:fluid_contents]
public <T> Item.Properties component(DataComponentType<T> p_330871_, T p_330323_)
item properties wants the component type
Yep, I see the goof
Minecraft doing their bad arbitrary classloading again
I don't think the registry needs to be reordered. The Item$Properties just need to be updated to take in a holder and supplier of the data component value and then lazily loaded on first access
yeah that does make more sense tbh
also would it make sense to patch DataComponents.COMMON_ITEM_COMPONENTS to allow mods to register custom common components for all items?
like emc for example. which is on every item, register it as a common component, then can just look up emc via the component without needing to validate it exists, either been set or its default (no matter the item)
I understood, and I don't see a reason not to
There's just something in my head telling me it's a bad idea
Don't know why though
Ah, well now I know, well at least currently until a patch is made to fix the null issue
Items are bootstrapped before the mod loader runs, so patching the common item components is not possible with the lazy access
And even then, I don't see much of a reason when you can just do the equivalent of computeIsAbsent
You can also use #getOrDefault, which already exists, so that you don't need to store a default value
what MC snapshot version are you seeing this in
i'm not sure data components are a good fit for EMC
was rly just using emc as example of some data on every item
oh i see, its not related to registry order or item properties wanting the component type
its cause of how my util method is designed 
im immediately constructing the item properties, which is registering the component, i should maybe make that a supplier, to delay the creation of the properties
DeferredItem<BlockItem> TANK = ApexTech.REGISTRAR.registerSimpleBlockItem(ModBlocks.TANK, new Item.Properties()
.stacksTo(1)
.component(ModComponentTypes.FLUID_CONTENTS.value(), SimpleFluidContent.EMPTY)
.component(ModComponentTypes.FLUID_FILTER.value(), new ModComponentTypes.FluidFilter(Fluids.EMPTY))
);
so Item.Properties.component does work fine for mods, so long as construction of the properties is delayed to be with construction of the item
...huh
it occurs to me that we've designed part of the item and block deferred register API around being able to eagerly construct properties
not terribly important, but probably something that will become less useful over time
Yes, I had the same problem.
time to patch that in
Here's Techs PR for it: https://github.com/neoforged/NeoForge/pull/799/files
I am not sure we want or need the patch size?
so, i'm making a PR to add an event to allow modifying default components of items, what would be the best time to fire it
one option would be during item proprs construction
although... unpredictable event firing locations like those are bad so maybe not there
Would a datamap not be more suitable here?
Something build a priori
And then read in when the properties are loaded
Or will that not work?
not all components are persistent
The datamap would be attached to the item, you mean?
there's not really a place to fire the event maty
The item props don't really go through our hands. You could inject in the Item ctor I suppose but whew
well not a nice one anyway
i mean that if a component isn't persistent you can't write it as json
i was thinking something post reg and then swapping the component field on the fly if modification is requested... or building a second component map and delegating calls to that one first
Sadly then I have no idea
we have to wait for the data component registration event to fire at the very least
which makes me inclined to say that this event should fire after all register events
that's what postreg means
yeah i'd do that too
but not with an AT
cause that's transitive for mods
and in a pack with 1k items the reflection will hurt
maybe a varhandle 
uhm then how do you recommend setting it lol
wrapper map isn't too horrible though 
potentially a patched in method
which people can use to easily swap at runtime, i don't really like the idea of it
a varhandle could work and would be just as fast as a native call
or well, shouldβ’οΈ
it definitely is as fast
but for modders it makes our tampering really annoying t osee
meh, just throw a javadoc on the field
has the same affect as seeing the field non-final
Β―_(γ)_/Β―
idk
i would have liked a datamap tbh, if it weren't for non-persistent
maybe we do a datamap and if people want non-persistent then they can just mixin

or AT themselves or whatever
cursed π
datamap is problematic imo
for the simple reason that /reload won't really be possible
the default set of components is used in every item stack
changing it for existing stacks is not viable
we cannot change the prototype of items while there exist ItemStack instances
well yes, so a reload won't affect old stacks, but that sounds... normal
but sigh, recipes are loaded before datamaps
there could be weird side-effects e.g. if you do new ItemStack(stack.getItem(), stack.getCount(), stack.asPatch()) there might be a state inconsistency between the patch and the prototype
sigh this is all so annoying
why do we need to modify the prototype of existing items?
items
why would one need to modify the prototype of vanilla items? I don't think we allowed changing the item properties in the past 
because item properties affected like 3 properties
whereas everything is now components
although... I can imagine problems if someone extends a vanilla class and wants to tweak some components
"everything" not quite - most components replace the old properties π
what if someone wanted to give an item an implicit enchantment
we have a function for that
not their own item
well then they can't
actually no - they can using the enchantment level event π
using the component would be wrong for that anyway - don't confuse gameplay enchantments and stack enchantments
people are definitely going to AT the components field to modify vanilla components. i just think it's better if we have an api Β―_(γ)_/Β―
replacing tool properties of vanilla items is also something i'd consider a valid usecase for component modification
this is not different from registry replacement
people should just find a wayβ’οΈ
sorry to break it to you, but replacing a builtin component doesn't change the class of the item
that's a flawed argument and comparison
I'm just saying that this is something people would typically have tried to use RR for
Is this about stuff like how multiple people in past change the food value of many vanilla items or made some vanilla items now edible?
and when removing RR we said "just find a better way (possible mixins)"
yes and guess what another flaw of replacement was
that's one of the use cases
only one person could win
if a mod changed one property of one item
and another mod changed another properpty
I never said that RR was good
there's no problem
I'm just saying we never really gave a proper alternative for these cases π
components are much more specific
I encouraged people and showed them how to AT the item property iirc to change the food property directly on the item in mod init. No mixin or registry replacement
yes because replacement was globally destructive
you did it to change say the food props of an item and then you conflicted with another mod that did the same but to change the rarity of that item
with components both mods can coexist because
[Reference to](#1184607569629675530 message) #1184607569629675530 [β€ ](#1184607569629675530 message)components are much more specific
as expected then
the better way here will be to public-f Item components (which is the same as ATing the food field of the item previously) and replace it, how is that a better alternative than a neo api tho lol
API it is then
package net.neoforged.neoforge.registries;
import net.minecraft.core.component.DataComponentMap;
import net.minecraft.core.component.DataComponentPatch;
import net.minecraft.core.component.PatchedDataComponentMap;
import net.minecraft.world.item.Item;
import net.neoforged.bus.api.Event;
import net.neoforged.fml.event.IModBusEvent;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.util.HashMap;
import java.util.Map;
import java.util.function.UnaryOperator;
public class ModifyItemComponentsEvent extends Event implements IModBusEvent {
private static final MethodHandle HANDLE;
static {
try {
HANDLE = MethodHandles.privateLookupIn(Item.class, MethodHandles.publicLookup())
.unreflectSetter(Item.class.getDeclaredField("components"));
} catch (Exception exception) {
throw new RuntimeException(exception);
}
}
ModifyItemComponentsEvent() {}
private final Map<Item, DataComponentPatch.Builder> patches = new HashMap<>();
public void modify(Item item, UnaryOperator<DataComponentPatch.Builder> modification) {
modify(item, modification.apply(DataComponentPatch.builder()));
}
public void modify(Item item, DataComponentPatch.Builder modification) {
patches.compute(item, (it, old) -> old == null ? modification : old.and(modification));
}
void apply() {
this.patches.forEach((item, builder) -> {
try {
HANDLE.invokeExact(item, (DataComponentMap) PatchedDataComponentMap.fromPatch(item.components(), builder.build()));
} catch (Throwable ex) {
throw new RuntimeException(ex);
}
});
}
}
was thinking something like that
that's not too bad but can't we build a DataComponentMap.Builder.SimpleMap instead?
should be as simple as
DataComponentMap.builder().addAll(PatchedDataComponentMap.fromPatch(item.components(), builder.build())).build()
we could also directly let users access a PatchedDataComponentMap
(probably not a good idea)
that doesn't allow removals
we should pin component types registration to before items so we don't need a whole Holder/Supplier patch (which could get big and annoying to maintain)
yes it's already done
I mean when we replace the thing in the item
either DataComponentPatch.Builder or PatchedDataComponentMap in the API - then convert that to a simple DataComponentMap before replacing it in the item
I think the method on DeferredRegistry.Items which accepts an Item.Properties and registers a regular item should be changed to a supplier in the wake of DataComponents
Thanks to the new neoforge-for-snapshots-publishing, I was able to port my mod to 1.20.5-pre1 already. And I was very happy how cleanly it works now with the new GUI system. From various mixins and magic down to several event subscribers and 6 WrapOperations. I really appreciate both of these changes :)
snapshot versions are still done with local maven, right
wdym by that
like. I publish to local maven and use that, there isn't publishing by neoforge on the official maven
ah, nice. when was that set up?
GUI changes ? What changed ?
Mojang changed the way the Gui class works by splitting things (formerly called "overlays" in Forge) into render layers. And NeoForge built upon that to fire their pre/post layer events which makes it feel very clean. And when combined, these changes make these events more useful than before, because transparency & stuff isn't set up in each layer's render function, so I can actually control it from the events.
well that's good to know
patching that stuff in Gui was annoying π
π
in any case please let me know if the current layers are not "split" enough
Oh is Neo not adding a way to insert your own layers?
of course there is a way to add layers ^^
tsss
you can use RegisterGuiLayersEvent
you made me happy with it at least π
There are still a few hacky things I have to do, but I doubt they'd be useful for anyone else. The only thing I found missing that maybe (though implementing it would be painful) could be useful in NF would be a RenderMobEffectIconEvent.{Pre,Post}. But the Mojang code for that is a bit weird already.
Everything else was perfectly separated for my usecase
per effect? that would need a dedicated hook then
yeah, and it's messy, because the actual icons get rendered in a batch after all the backgrounds get rendered first.
this is stupid
what's the alternative mr. clever? π
have you even seen the rest of the file
I'm not gonna prefix all of these constants by net.neoforged.neoforge.client.gui.VanillaGuiLayers.
What was that layout called again?
Regardless, I love it
Deals with all the z level nonsense
What layout?
Thereβs some layout or layered class that handles the z layer position. Iβm pretty sure thatβs what the in game gui uses now
probably LayeredDraw
That sounds right
but we completely override it in neoforge for our events etc π
Hmm, dimension-based weather may be coming
Mainly speculation since I saw the weather command actually get the overworld level instead of just grabbing the current level context
Probably just bug fixes though
Huh, container default max stack size is 99 now...
default?
or hardcap
last I saw it was 64 still but yo ucould raise it to 99 if wanted
Default
Container#getMaxStackSize
It seems like the data component also supports up to 99 by default
let's say the hard limit got raised from 64 to 99 yeah
yeah
hard limit
it's still 64
but hard limited to 99
guess they didn't wanna deal with the font clipping lol
So I'm working on a 20.5 PR and when opening my old world from the 20.4 dev workspace I get
[18:49:37] [entity-deserializer/WARN] [minecraft/AttributeMap]: Ignoring unknown attribute 'neoforge:entity_gravity'
[18:49:37] [entity-deserializer/WARN] [minecraft/AttributeMap]: Ignoring unknown attribute 'neoforge:step_height'
spammed quite frequently in the log
any chance we can get rid of it?
Datafixer should be able to do it
Just add one to the default vanilla schemas/builder, since it's happening on a MC version update
Note any time someone saves an entity into nbt for a structure and then uses that nbt in a non-neoforge world as a datapack, they get spammed
Never liked these default attributes always added
Ugh, that's atrocious, really?
How else do you think I found my fabric mod at one point spamming hundreds of lines while spawning structures with entities I saved in forge
So now I save the nbt with entities on fabric when I can or use a script to yeet the forge attributes
Lovely. Are entity attributes just set up in a way that the default empty one has to be added?
Could neo strip out the empty one while serializing the entity or something?
entities saving with their attributes in general is fking annoying lol
wish mojang added a button to toggle it or something
imo we could just silence this log message, it happens fairly often when removing mods
its basically always junk
contrarily
I've found that error useful in identifying the fact that I haven't yet deleted an entity's attributes from a legacy structure block i have in my mod or whatever
Yeah but it's ultimately irrelevant
That doesn't fix the structure issue TelepathicGrunt brought up, and in fact just hides away what is a legitimate issue
^
Hiding a log error because a lot of the time people don't care is one signal you have bad habits

For removing the old neoforge-added ones in neoforge: a simple datafixer could do it; I'll poke it if I have a chance.
For the structure issue: can we make it not save those if they're empty? That seems something a patch could fix
^ I use thta error somtimes
but the issue here is that forge had attribs, now they're neoforge attribs
but they count as missing now cus we're on neo and were saved under forge namespace
it's the same thing that got neo into the mipmap thing
where people just stopped caring about it being an issue
that might also be an issue but here I was doing an update from 20.4 neo -> 20.5 neo, no forge involved
Not just that, there's neo attribs that are getting replaced by vanilla stuff here
But a datafixer can fix old stuff, and figuring out how to prevent empty ones from saving would prevent this in the future, so this isn't unsolvable
Can we just patch AttributeMap#save to not save attributes with no modifiers on them and a default base value?
That'd fix the second issue
For fixing the old attributes, we could just patch a datafixer deleting them into the datafixer builder, at one of the vanilla 1.20.5 schemas
Isn't this a behavioral change if the default base value of an attribute changes in a mod/Minecraft update?
Uh, good point. It's a very minor one, but I suppose there's some edge case where that causes issues and the intended behavior is to have the old value stick around? We can add a flag to the Attribute then for whether to do this
If a Neo attribute had a wrong base value causing a bug. And you keep loading the original value from saved structures and stuff, you now require ALL structure mods on Neo to re-save their structures
Yeah, so if the worry is changing vanilla behavior just add a flag that's not enabled for the vanilla ones and call it a day
Vs not saving when default value means the structure mods will get the corrected values when loading entity again without needing to re-save
A flag should be fine as it allows everyone to choose what works best for them
I assumed the not saving default wouldβve been strictly only NeoForgeβs attributes.
Not extended to vanilla lol
That's the flag, yeah -- we'd want mods to be able to opt into the behavior too
Attributes already have a flag for client syncing, shouldn't be that complicated to set up another like this
Am I correct that the removed neo attributes in 1.20.5 neo are:
entity_gravitystep_heightblock_reachentity_reach
(Writing up a datafixer for this)
I think @true jacinth is more likely to know the answer to that question
Should be, yeah
Reach is vanilla now, gravity is vanilla now, step height is vanilla now, I can double check the names
yep, all right
Coolio. Lemme test this fixer
Datafixer is working, I'll submit a PR with that and the attribute map to prevent this issue in the future
Wait, when did reach happen? I'm not seeing it in 1.20.4 -> 1.20.5
As in I see it's removal there but I'm not seeing log spam for it. Unless it's not added to all entities by default or something?
@prisma locust @foggy steeple here you go: https://github.com/neoforged/NeoForge/pull/803
There's an attribute fix to prevent this issue in the future, and fix the structure saving issue, and a datafixer to fix 1.20.4 or older worlds when updating to 1.20.5 and avoid the log spam
I tested this locally, and loading a 1.20.4 world with this present removes the old attributes correctly, preventing the log spam
Uh... whenever vanilla did it
I don't know the version
check revisions of NeoForgeMod.java
Cool, we must just not have been attaching that one to everything
Added in 23w51a, renamed in 24w03a https://misode.github.io/changelog/?search=interaction_range
That would be players only yeah
It looks like we weren't even attaching it to players all the time or something, cause I'm never seeing any log messages for it?
I remove it regardless because presumably it's attached to something
Anyways, I've gotta work on other stuff so ping me if anything there needs a poke and I'll poke it when I have a chance
idk I think we should migrate instead of nuking
(i think all of them but step height are the same as the forge ones were)
That's doable; I'll need to split up the fixer a bit
Ugh, nope, they have different ranges.
Might be able to sorta "remap" the attributes and their modifiers? Bleh. Doable, just ugly
Okay, so add_value gets remapped same as the value, add_multiplied_base is unchanged, and add_multiplied_total is the weird one
Actually wait that one should also be unchanged
Hmm, which of these get extended and which actually need to be scaled... Looks like I basically just need to "trim" stuff to fit in the new range but I think that will actuall happen automatically, so... cool?
@fallen igloo can the step height be updated in any sane way or should that be yeeted?
I'm noticing some very different behavior on that one in terms of its range and default value and whatnot between vanilla and neo, and how its actually applied, so I think trying to update it is just going to be a pain all things told, so I'll yeet it
I think we had 1 + attribute and vanilla just uses the attribute
Yeah poking through that I think it's safer to just yeet it entirely. Too many things that could go wrong trying to "remap" modifiers and whatnot from the look of it, though I can attempt that if you think it's worth it -- though I'm unconvinced
I'd say nuke modifiers and do +1 for the base value
I don't see why we'd bother tbh
Might as well nuke everything
The move in what "zero" is means you can't sensibly remap the various "multiply" modifiers -- and nuking the modifiers has its own side effects that may be unexpected; at that point just nuke the whole thing
So yeah, that's what I've updated the PR -- it now remaps to vanilla attributes when possible and only nukes step_height
wouldn't that break all saved entities movement
Hmm? No? They'll get the vanilla one
Same as if they'd updated from vanilla 1.20.4
We just remove the neo one
does it add the defaults for the ones not loaded from disc?
Presumably either that or vanilla has a fixer to do so
Looks like the former to me
hmm if it is a fixer we'd have to check if it works for modded, otherwise it's fine
Actually wait, it doesn't even bother, it just uses the default value if there's no attribute present. Coolio
Fixers work fine for modded, they just might not hit everything (for instance, entities in some sort of entity capture tool won't be updated in all liklihood)
But there's no way around that
yea mojang needs to fix their datafixer stuff so it is usable for non vanilla stuff
as I've explained many times before, a) it already is usable the issue is that it only works transitively if every single mod uses it and they won't, and b) it's only usable on vanilla version updates, not mod version updates -- and there's literally no way around this due to how it applies fixers/schemas and the ordering issues you run into if you try to have multiple version progressions
I'm also updating usages of attributes in my PR to call only getAttributeValue, not getAttribute, wherever sensible -- this avoids creating the attribute if it's not present already, which is the behavior for most vanilla attributes and probably what we'd like to do
In fact, I'm uncertain if the savesDefault flag is actually needed with this change; I may remove that
well for a) we can make an api which would benefit mostly storage mods
for b) it is a thing only solvable by mojang and unlikely to happen
b) is not solvable. Not by mojang, not by us
for b) you'd need namespaced versions
You can do that. Someone tried to in a fabric PR. Doesn't fix the issue
The issue is rooted a lot deeper in how this sort of update is actually reasoned about by DFU
I don't have the time to go into detail on it now but there's a discussion about it burried somewhere in the fabric discord. Has to do with assembling a chain of fixers that is fully ordered, which you can't do reliably with multiple versionings
a) is trivially solvable, except for two things:
- datafixers are all constructed very early, before mod init in fact, and changing this would be a bad idea for a number of reasons, and because DFU is optomizing stuff you can't delay it with suppliers or any sorta approach like that. Mods can use a simple mixin for this with ease though
- if a single mod doesn't use it, everything inside that mods stuff is unfixed -- even if that mod doesn't actually have any changes to apply!
And expecting mods to all use it is unreasonable.
Anyways, that got a bit off course -- I've updated the PR to remove the need for the savesDefault flag by just not making the attributes to begin with if they're not needed
it is reasonable to for storage mods like AE2, colossal chests, iron chests, etc. because that wold be a declare and forget thing that can be documented nicely in the docs
Writing fixers for AE2 would be... pain
Those don't store the data in the BE, do they
Regardless, it's reasonable for those mods to do, sure. It's unreasonable to expect them to do so, because datafixers are complicated and even writing a rather simple one can cause you pain -- and in the case of something like AE2 it's not a nice simple AddChoiceTypes fixer. It also places a number of limits on how/when mods are allowed to change their data formats.
(Note that those mods currently can already do this with a single mixin, and I'm not sure that can be improved given the very early entrypoint involved)
Anyways have to head out again; ping me if you need anything on the attribute PR
where?
Why is minecraft.net behind on these changelogs?
yeah that's how I found out
yeah that's a better pun
should I ping maintainer?
fuck it let's do it
no
ok fine
a new prerelease is not an emergency
fine got it
Some bug fixes
because their bot is looking at the Launcher meta files, not the website for a change log
Yeah, that's why Quilt is on-time, sure. But that doesn't explain why the official site is late
Because it takes time to write the blog post?
we can see the post in the meta already
Could be any number of reasons
<@&1067092163520909374> 1.20.5-pre2
https://mdcfe.dev/mc-changes?ver=1.20.5-pre2
Yeah, there too
they hand write the blog posts
and what the launcher metadata is giving, is not the actual post
ah
It's on the site now too
by and large, the launcher post is the blog post
the only difference being the end of the post, with the links
I wonder if it's some kind of caching
for us, sure 
for 99% other players, they don't know it exists
Finn, I'm talking about your saying that they hand-write the blog posts, as if the launcher post and the blog post are separate
when they are literally the same in content, excluding that the blog post has the list of links at the end for downloading the jars
hides in being tired
time to wait for neoform
just to make it clear: please don't ping Maintainers for non-emergencies or non-urgent stuff
you can ping one of us Maintainers (preferrably a Moderator & Maintainer, like me), but not everyone
PANIC PING
i like pings being on time too, but I don't want to annoy all the other Maintainers who didn't sign up to get pinged on snapshots 
yh just got taught a lesson alr
just do a everyone ping, and just ban those that get annoyed by it /s /j
Snip it!advancement is renamed toShear Brilliance
I wonder if this is because they had to change the old name, or someone brought up the new name as being way better
or both
Someone has to run https://github.com/neoforged/NeoForm/actions/workflows/update.yml, I still don't know who actually does that
What's the panic?
- The animated Nether Portal texture is displayed when changing dimension to or from The Nether
- The animated End Portal effect is displayed when changing dimension to or from The End
what
Bedrock
usually, it's coeh who does that
Kinda but not
err, who manages it at least
I assume this is because of UIs not having backgrounds and them fixing that issue with world loading
The panic is pinging @restive raft against his will
Snapshot is nothing. The real chaos is sci being here!
is it actually not?
ah, looks like it's triggered by https://github.com/neoforged/NeoForm/actions/workflows/check-for-updates.yml, which is scheduled on a regular basis
95% of me is joking
I'm on a decomp repo that's finished the decomp already
oh snowman is a lot faster this time?
it took quite a while for the last snapshot iirc
lemme check what happened last snapshot
Yeah, Ocelot (the one I'm on) finished in record time too
since it's usually quite snappy
Two minutes faster than last week
ah. it looks like Snowblower didn't see the update in the manifest, so it did no work
and had to be kicked by maty sometime later on, where it did see the new version
if that becomes a problem again, I'll look into introducing a small 10s delay before running Snowblower
that, or modifying Snowblower to return a non-zero exit code when it processed no versions, and make the build config retry on failure
but not tonight -- I'm too sleepy for that
The background it uses for the nether travel is the model's particle texture
@blazing valve want to trigger it manually?
oh wait, it triggered
Teleporting from the end to the nether or vice-versa will show the nether screen
The trigger seems to also write the last version into the projects CI variables
So it's probably unwise to do it manually
Oh wait, you meant the check-for-update.yml not the updaet.yml itself
they disabled random ticks on the gametestserver
Still at work, if I manage to be done before coehlrich does, I'll do a PR for nf

finally
negative slots
but short... (also creative mode...)
does creative mode have more than 32k slots
idk what that packet even does
is VF 1.10.1 out, if so you can bump that too
doesn't look like it
ok then that has to wait for pre3/rc1
As far as I can tell, it tells the server to put the given stack into the respective main inventory or hotbar slot, so the max value in a vanilla scenario (i.e. without a mod extending the player's main inventory) would be fairly low and nowhere near max signed short
are you sure it's not just fabric? Not throwing shade or anything, but before saying it's minecraft's fault you should probably test vanilla minecraft π
I've enabled Fabric, but I don't have any mods.
I'll try without
Oh... That's not good...
Brand new world, or did you try to open the modded one?
It's the same, but I think I've corrupted the world by having a corrupted chest.
Wait, this error screen is Vanilla?
yeap
Interesting
unicode font
the level.dat file is corrupted, sad
we had failed to load world screen before, they just made it harder to read by replacing the brown background with the panorama
I've never seen this before
It's brand new to me
I didn't expect a Vanilla screen to have such information tbh
Why did you assign the PR to me, Schurli?
@true jacinth Before making the PR, I thought this might be something ur interested in pre-PR: https://gist.github.com/Spinoscythe/677d45333ccb3ef58e934ce07a485d2a
ofc answer when you're free
just ping
Oh, RecipeManager byType was changed to no longer return a map
what does it return now
Collection
Was it a map of type -> recipe holder?
in 1.20.4? yeah
private <C extends Container, T extends Recipe<C>> Map<ResourceLocation, RecipeHolder<T>> byType(RecipeType<T> p_44055_) {
err resourcelocation -> recipeholder
Ok. Well, that makes sense then, who cares abt the name in this case :p
Recipe holder has the ID too iirc
Because you are part of the porting team for this cycle
Aren't we gonna close that PR? π

