#26.1 Snapshots

1 messages ยท Page 2 of 1

inner creek
#

which is making me slightly hyperactive, but doesn't really remove all of the brainfog

#

invalidate caches didn't fix it

plucky hollow
#

question you did download java 25 and update to gradle 9.1.0? i had to do that for my builds to import

inner creek
#

OH java 25

#

that might do it

#

I knew I was missing something lol

#

ugh something reset in intellij and the Terminal got set back to powershell

#

I find powershell extremely awkward to use for my basic level of commandline usage

twin sun
#

Thanks for the info ๐Ÿ˜„ I haven't even started merging Arch Loom with any of the Loom versions that support unobfuscated Minecraft, so the testing will definitely have to wait a while

paper cedar
#

yeah that should work

inner creek
#

yeah except I used java 21

paper cedar
inner creek
#

now it worked after switching the toolchain to 25

paper cedar
inner creek
#

it didn't actually!

#

it just failed to find, without explanation

paper cedar
#

That is super weird, I remember it doing that for me when I ran an actual task

inner creek
#

maybe gradle version dependant?

paper cedar
#

I mean that paragraph-long infodump about variant selection blah blah yada yada

inner creek
#

was using 8.9 in this folder

paper cedar
#

Hm, that should have had that long-form error already. weird

#

It's possible that it only shows when you try to run a task like assemble, and not on sync

inner creek
#

LITERALLY the only code change lol

plucky hollow
#

thats jspecify right

paper cedar
#

Yeah, if you don't touch villager trades, there's very few changes (which I suppose is good)

inner creek
plucky hollow
#

i spent far too long going over my mods being sure im using those over jetbrains
(rly need something like what neo has to yell at me in moddev)

twin sun
inner creek
#

actually wait

#

the jetbrains ones are still in the classpath

#

that error was bogus from before I set the java25

paper cedar
inner creek
#

so 0 code changes woo!

#

sadly, that doesn't mean I can flag the existing build as compatible

#

because.

#

I should probably make it upper-unbounded

#

since we don't know when mods will be likely to be incompatible anymore

paper cedar
#

"anymore" = you never really did ๐Ÿ˜›

inner creek
#

also that should have been .11

#

cos I use ResourceLocation Identifier

inner creek
#

this stopped being true with 1.19.3+

twin sun
paper cedar
#

Is already in, yes

inner creek
#

ah, a conundrum....

#

if I build the mod again with 1.21.11, I can flag it both 1.21.11 and 26.1-snapshot-1

#

but if I build with 26.1, it will be java 25

#

but there are literally no code changes

#

so do I re-release 1.21.11 just to update the mods.toml

#

or do I look to see if I can use java 25 features in this mod, so I can justify it being a new file ๐Ÿค”

plucky hollow
paper cedar
#

Don't do that

#

That is super pointless

plucky hollow
#

no?

paper cedar
#

no one downloads mods that require you to manually bump your java version up for your instance

inner creek
#

well I don't want to force java 25 on 1.21.11 players

paper cedar
#

I'd just not bother with cross-version compat like that

inner creek
#

so if I release the file built with java 25 it will be literally just a java bump vs 1.21.11

#

but I can build with java 21 and have it flagged on CF ... except it will still just be a new file that contains no changes other than metadata

#

so it feels like a lose-lose situation :P

#

what the fuck intellij? what are these indentation changes?!

#

those are NESTED blocks they GO NESTED in indentation too!

worthy mesa
lusty thistle
#

Hey! I just wanted to try the MDK for 26.1 using tthe provided commands in the PR:

mkdir NeoForge-pr2879
cd NeoForge-pr2879
curl -L https://prmaven.neoforged.net/NeoForge/pr2879/net/neoforged/neoforge/26.1.0.0-alpha.1+snapshot-1/mdk-pr2879.zip -o mdk.zip
jar xf mdk.zip
rm mdk.zip || del mdk.zip

Without modification, I got this error message:

Execution failed for task ':prepareDataRun'.

Trying to prepare unknown run: data. Available run types: [client, clientData, serverData, gameTestServer, server, junit]

It was fixed by doing this:

        data {
-           data()
+           clientData()
+           serverData()
            programArguments.addAll '--mod', project.mod_id, '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath()
        }

But then, I get this message:

NeoForge-pr2879:main: No matching variant of net.neoforgedneoforge26.1.0.0-alpha.1+snapshot-1 was found. The consumer was configured to find a library for use during compile-time, compatible with Java 21, preferably in the form of class files, preferably optimized for standard JVMs, and its dependencies declared externally but:
Full message: https://pastee.dev/p/QH4oaZEh

At the bottom, it tell me the possible solution to be using Java 25 or newer as Gradle JVM but I did that.

OOF! I now realized that the problem was that I had to change this as well:

- java.toolchain.languageVersion = JavaLanguageVersion.of(21)
+ java.toolchain.languageVersion = JavaLanguageVersion.of(25)

Now everything works.

tl;dr

Provided MDK requires changes, see my provided diffs above. Maybe something to report to your PR publishing bot instead ๐Ÿ˜„
I think you already know, just ignore my message lol

steady oxide
#

hmm surely there's a way to make the fact that users need to upgrade from j21 to j25 more obvious with an explicit error?

plucky hollow
#

off topic but i like how the net.neoforged:neoforge:26.1.0.0-alpha.1+snapshot-1 turned the artifact id into neo emoji blobxd

steady oxide
# paper cedar Nope that's the Gradle way

I have to imagine that there is some way to re-throw a "nicer" error to the user if this error is detected. (I know that it was on a much older Gradle version and different architecture, but the ForgeGradle days didn't have much issue with explicitly telling the user where they went wrong in terms of Java version.)

steady oxide
# paper cedar Nope that's the Gradle way

You could pretty easily add a check for JDK version and error out early right here:

https://github.com/neoforged/ModDevGradle/blob/704957196a120ecc493e0137f2cd2ed24929cca6/src/main/java/net/neoforged/moddevgradle/internal/ModDevArtifactsWorkflow.java#L123

Old check for comparison: https://github.com/SizableShrimp/ForgeGradle/blob/651e43fd7c68068c835548583c5eb924e13d9251/src/userdev/java/net/minecraftforge/gradle/userdev/MinecraftUserRepo.java#L189-L197

I think it's pretty safe to assume that if a user is requesting a Minecraft artifact of a specific Java version, the Java version of their project should be at least as high as that (if it is set). And the error message from this check is a lot nicer to look at than the Gradle vomit that you get otherwise.

#

Also it's pretty interesting to me that NFRT optionally accepts a Java executable as a CLI argument, but uses its own javac to recompile the game. Why not instead allow passing a path to javac as well and using that as a tool call for recompilation if present? It would save the headache of having to run NFRT with different JDK versions, but only if the version capability reports strictly greater than J21. And using the actual JDK for a given -release flag is a safer bet anyways

wintry flower
#

I believe the problem is that NFRT needs at least java 21 to run

#

But it uses the javac api directly, not the executable

wintry flower
#

So there wouldn't be a way to read the java version from it

steady oxide
wintry flower
#

We could use the VesionCapabilities I suppose, but it would require an up-to-date MDG since we'd have to hardcode it there

steady oxide
#

Ah

wintry flower
#

I'm happy to accept a PR for it

#

There's a solid chance that modders will bump the plugin but forget about the java version

steady oxide
#

In any case, you could likely punt the check to when the neoform config is available too. That would still be before Gradle vomits its trash to the console I would hope

#

I can look into it later; I think it's going to be quite a common occurrence, so giving people an obvious error is helpful

steady oxide
wintry flower
steady oxide
#

I saw. I guess the conditional logging of errors/warnings would be more annoying if it were an executable call

wintry flower
#

I guess. It's also not a big deal ig

steady oxide
wintry flower
#

We could also tweak the NeoForge publication to skip the java version attribute

#

In any case I will include this information in the blog post, maybe that will be enough

steady oxide
wintry flower
#

I guess that something else required java 8 ๐Ÿค”

#

(for legacy i.e. 1.17 - 1.20.1)

paper cedar
#

Hence javac is not usable directly, we need a compiler driver shim

#

There has not been an issue with JDK 21 and -release 8, even for binpatches, BUT for binpatches the bytecode is now slightly different with javac 25 and -release 8

#

Which is why I did start this branch:

But it's not super high priority

paper cedar
#

As in, passing J9+ JDK as libraries to the old versions of fernflower fails

#

That's why it requires the path to a J8 JDK, to pass the libs on to ART+fernflower

jagged ridge
#

Technically speaking Fernflower can probably run on a newer JDK as long as it has rt.jar from Java 8, but there's no point as long as there are Java 8 builds available for the host

paper cedar
#

but yeah, it should use that external JDK to actually run the javac driver, but it needs some much more complicated setup (i.e. that needs to be compiled with java8)

paper cedar
#

It's somewhat annoying overall, that Gradle has no real path to retrieve some config via HTTP at configuration time, and still be configuration-cache-compliant

jagged ridge
paper cedar
#

It will detect that you're trying to use the network

#

Since it intercepts disk I/O you do.

jagged ridge
#

Oh wow

paper cedar
#

There are hacks via ValueSource that suppress the Disk I/O checks it does, but overall there's no clear-cut easy way

#

But they do instrument your entire plugin and redirect all java.io.* calls to their own shim to detect this stuff

#

and track dependencies to external sources for your plugin/config code

wintry flower
#

It should be compliant but slow

paper cedar
#

You can do a ValueSource, and immediately query it

jagged ridge
#

I guess that is convenient for enabling the cache with legacy code

paper cedar
#

But otherwise it'll detect your cache writes as a hard dependency on files

#

which would be untrue

jagged ridge
#

Forcing everyone to rewrite their stuff to use Gradle I/O APIs would be a non-starter

paper cedar
#

They would have to expose their configuration resolution code in a configuration-time friendly way

#

configuration resolution = dependency resolution

#

i.e. you'd still want it to be offline mode compliant

steady oxide
paper cedar
#

They'll manage. That gradle resolution error is not that bad

#

๐Ÿ˜„

#

If you actually get to it

hushed canopy
#

If you need something that isn't gradle-inspected I/O, then it needs to go through a VaueSource so that the reuslting value is conf-cached and so that the source is re-run on every invocation

#

Ideally you'd be able to route the value source around and only un-lazy it at the last possible moment but it's still useful even if you don't because it ensures that conf cache works by isolating the logic used to retrieve the value, and running that in a config-independent context every time

#

That said, that's awful UX in this case, cause it's basically going to lock you into non-offline-compatible mode unless you're really careful

#

๐Ÿคทโ€โ™€๏ธ I mean you can probably make it work, TBH

indigo venture
still elbow
#

is the neoforge versioning seriously going to be just 26.1.0.x for 26.1?

paper cedar
#

... as opposed to?

indigo venture
#

there were other formats discussed but none of them presented significant enough benefits for the team to agree to change neos versioning system, so the existing one of appending a neo build no. to the mc version was kept

paper cedar
#

Yeah it's just the logical continuation of the previous versioning

#

In other news: I cherry-picked the missing commits from 1.21.x over to port/26.1 and will make another snapshot version release should it build correctly

indigo venture
#

oo nice. how hard is the porting of those with all the param name changes?

paper cedar
#

Well it wasn't a lot of commits and patch changes so it could be worse

#

I just had to patch up a single line with references to two params ๐Ÿ˜„

#

The params are also the easier ones, the local variables also all changed, those would be harder if the patches are actually significant

#

I am confused. Wasn't it previously possible to create tags in the GitHub web interface?

#

(Other than creating releases)

#

Well anyhow.... as a reminder to the other maintainers, making a snapshot release r/n is manual and requires pushing a tag with the right name format (it's just release/<version>):

To github.com:neoforged/NeoForge.git
 * [new tag]             release/26.1.0.0-alpha.2+snapshot-1 -> release/26.1.0.0-alpha.2+snapshot-1
still elbow
#

also i just realised there are now snapshot versions of neo for the general public to use it seems?

indigo venture
paper cedar
#

Yeah

#

Seems like 26.1.0.0-alpha.2+snapshot-1 published successfully

graceful laurel
#

VF seems to be choking pretty hard on the changes done for statements-before-super

paper cedar
#

Yes, it does, coeh has been PRing fixes, I believe

#

We patch some of these out in NeoForm

hushed canopy
# paper cedar ... as opposed to?

I guess I'm just confused why it wouldn't be 26.1.x? Aren't the vanilla versions just going to be Year.Release, or have I misunderstood that?

#

(Basically why the extra version, when will that actually bump?)

graceful laurel
#

Year.Release[.Hotfix]

paper cedar
hushed canopy
paper cedar
#

we pad it with .0 to have a consistent scheme

#

in case of the first release, ofc

hushed canopy
#

Yeah okay that checks out to me

#

Seems the most sensible approach, plus version comparisons will still work right with existing versions, luckily

#

So all around, could have been a lot worse

wintry flower
#

The cherry-picks didn't appear in #neoforge ๐Ÿค”

#

Oh you cherry-picked in the wrong order ๐Ÿ˜…

wintry flower
#

Compare with 1.21.x

#

The commits are not in the same order

paper cedar
#

Doesn't really matter though, does it? ๐Ÿ˜„

wintry flower
#

Hmmm

#

Nevermind it looks correct

paper cedar
#

Even if, they're different commits

wintry flower
#

Yeah it's not very relevant

paper cedar
#

I still think it's weird there's no default trailer for Git commits pointing to the source of the cherry-pick, but oh well.

#

They have the PR numbers in the commit description

opaque basalt
#

seems like RenderStateExtensions class's onUpdateEntityRenderState method dosen't use anymore in current neoforge 21.6-snapshot version

paper cedar
#

Hm

paper cedar
opaque basalt
#

no problem...!

jagged ridge
#

Is it expected that lambda numbers would shift between Neo 1.21.11 and Neo for 26.1 snapshot 1 if the function looks identical?

paper cedar
#

yes

#

javac 25

#

vs. javac 21

#

I noticed that you can't even compile with -release 8 anymore in javac25 and expect binpatches to apply. it generates different bytecode, so I'd not be surprised if it also generates lambdas differently

jagged ridge
#

Right, forgot they updated the compiler in addition to not obfuscating

fresh gyro
#

@paper cedar I checked the current PR build of the port to 26.1

NG can most likely load it once you update to the new NeoForm to have the fixed arguments in that config file.

paper cedar
#

We can make an updated release soon with the updated NF

fresh gyro
#

That is fine by me

#

I will wait untill then

#

Alternatively I can probably just push to that branch

#

As it should not change anything

#

Other then that setup thingy

paper cedar
#

You mean the NF update?

#

Do it

fresh gyro
#

Yeah currently checking some other things in NG7

#

To validate and then I will push that

#

Should just be a bump to .3 for NF

paper cedar
#

That's the wrong one:

fresh gyro
#

I misread

#

This morning .......

#

I reverted it back

paper cedar
#

You want port/26.1 ๐Ÿ˜„

fresh gyro
#

For some reason I clicked on the target branch

#

I know

#

I read that file twice

#

And still misread it

#

FFS

paper cedar
#

the 1.21.11_unobfuscated branch is really just there as a "reference" so we can compare 26.1 against a prior version with the same naming

fresh gyro
#

Yeah

#

I know

#

There we go

#

My browser hang twice already today

fresh gyro
#

@paper cedar Is it normal that the PR build did not get a new version number?

paper cedar
#

No that's a bug

fresh gyro
#

Okiedokie

paper cedar
#

I noticed that too. Doesn't matter for the tagged releases, but apparently gitinfo['tag'] returned by gradleutils isn't the current tag

#

it's just any previous tag

fresh gyro
#

....

#

Okey

#

That has me slightly worried

paper cedar
#

Urgh yet another learning

#

Annotated tag crashes the release build

#

Lightweight tag doesn't

#

@fresh gyro 26.1.0.0-alpha.3+snapshot-1

fresh gyro
#

Lets see

#

Including downloading crap on my slow ass internet

#

So I would call that good ๐Ÿ˜„

untold oyster
paper cedar
untold oyster
#

where did you see that? locally?

paper cedar
#

No, obviously not. Release builds = CI/CD ๐Ÿ˜„

#

Deleted the tag, made a new lightweight one -> works

untold oyster
#

smh, should've linked that in the first place /j

paper cedar
#

We need to disable fetch tags for builds originating from a tag me thinks

paper cedar
#

If you're running for a tag, no point in fetching commit history

#

The entire thing is bodged. We set fetch-tags: true for checkout, but that doesnt actually work properly with recent git either

untold oyster
#

but we then have a separate git fetch --tags?

paper cedar
#

Hence the explicit fetch tags right below it

untold oyster
paper cedar
#

There's a comment on that, that was added later to fix a regression with git

#

IMHO that should all be ripped out

untold oyster
#

but by the time you committed to it, the bug was fixed in git, no?

paper cedar
#

Comitted to what?

untold oyster
#

err, your changes to the gradle-publish workflow last week

paper cedar
#

No idea, I didn't follow up

#

The linked issue is still open at least

untold oyster
#

since if we look at the linked issue, the issue seems to be fixed in 2.49.0 according to a comment, and the action logs confirm that the current git version on the runner is 2.52.0

#

so we can eliminate the git fetch --tags

paper cedar
#

Well, as I said -> #1445764870564745228 message

#

All of that is redundant

#

fetch-tags and fetch-depth as well

fresh gyro
#

Do we have any example of a Fabric version for this Snapshot already?

Or is that still far away?

paper cedar
#

Uh... Fabric version?

#

WDYM

fresh gyro
#

Thinking about looking at their stuff to do some comparisons

#

So I was wondering

#

With my hat of to you and tech

#

We were very very fast

#

With getting a working version

bold forge
paper cedar
fresh gyro
#

Mostly just curiosity

#

Just checking some of their tooling

#

How they handle the new unobfuscation stuff

paper cedar
#

They did publish an API as usual but they also liberally disable modules (probably not needed for 26.1)

#

I don't know when they swapped to MojMap but I think it's pretty easy for them (no patches, no installer)

fresh gyro
#

Hmm okey

#

Well I will do some digging

#

Lets see if I can find anything interesting

#

But I doubt it

obsidian perch
zenith dove
#

during the 1.21.11 snapshot phase, yeah

zenith dove
paper cedar
#

You mean a loom update

zenith dove
#

no, a new plugin entirely

#

loom was split into fabric-loom-remap and fabric-loom, both are on version 1.14

paper cedar
#

Ah interesting

#

That sounds more like remapping was split off

fresh gyro
zenith dove
zenith dove
fresh gyro
worthy mesa
#

modmuss does/did plan a loom 2.0 with bigger changes to come later

fresh gyro
#

Alrighty

zenith dove
zenith dove
fresh gyro
#

Just need to make sure that it works ๐Ÿ˜„

worthy mesa
#

autoswitch was also ported with neo if you need a reference, but the changes needed are pretty trivial

fresh gyro
#

But first: NG support for 26.1 ๐Ÿ˜„

#

Which is nice and ready to go

#

And a bug fix for 21.11 I think to fix my unit tests

zenith dove
fresh gyro
#

As that currently errors out it seems if there are no datagenerators

worthy mesa
#

its on maven this time round

zenith dove
#

that's even weirder it didn't work then

worthy mesa
#

you need new mdg, iirc
definately if you had parchment enabled

zenith dove
#

i believe i bumped it, but lemme test again

#

forgot to bump the java version, works now

paper cedar
#

Oh, I think I know what's up

#

If it was a wall of text from gradle

#

You need to update your build.gradle to use Java 25

#

It can't find a version of NF compatible with J21

zenith dove
#

not a very visible error, but yeah it was the java 25 thing

paper cedar
#

You get that errro twice I think, one is from IntelliJ trying to resolve sources and it hides even more details

worthy mesa
#

I saw that recently when I tried to set the compiler option to be release = 21
since I backport to older versions, having that would be nice
also wanted to test if that worked with markdown javadoc

paper cedar
#

In case you have that setting enabled to make it auto-download sources

worthy mesa
#

this thing

tasks.withType(JavaCompile).configureEach {
    options.release = 21
}
paper cedar
#

That's not really the recommended way of doing that anymore anyway

worthy mesa
#

if you mean to use a toolchain, that is not what I want

paper cedar
#

Fucking hell.

#

I've been chasing a ghost for about 20 minutes.

#

"Why does this Mixin not apply, not crash, not anything?!"

#

Well turns out. My proguard config stripped it of all methods.

#

BTW. Phantoms spawning in a void world is not normal, right?

worthy mesa
#

they spawn in the sky, so I think it is?
I don't think MC checks for void world

paper cedar
#

Hmmm, interesting. I never really noticed that before.

#

I can't rule out that I temporarily made myself non-creative in this test world. But I was certainly surprised to look up and see 10 phantoms circling while being in Creative Mode ๐Ÿ˜…

worthy mesa
#

does insomnia even tick in creative?

paper cedar
#

Hard to say. But to validate this I'd need to make a new world and probably sit in it in creative hehe

inner creek
#

I keep leaving debug runs open in the background while debugging and then return to find phantoms around

worthy mesa
#

I mostly test in survival peaceful, so that's interesting

paper cedar
#

Could that have led to a crash like this?

java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 1025
at it.unimi.dsi.fastutil.longs.LongLinkedOpenHashSet.add(LongLinkedOpenHashSet.java:457) ~[fastutil-8.5.18.jar:?] {}
at TRANSFORMER/[email protected]/net.minecraft.server.level.ChunkMap.setChunkUnsaved(ChunkMap.java:214) ~[minecraft-client-patched-26.1.0.0-alpha.3+snapshot-1.jar:?] {neoforge:access_transformer,neoforge:access_transformer,neoforge:mixin[APP:ae2.mixins.json:chunkloading.ChunkMapMixin from mod ae2]}
at TRANSFORMER/[email protected]/net.minecraft.world.level.chunk.LevelChunk.markUnsaved(LevelChunk.java:182) ~[minecraft-client-patched-26.1.0.0-alpha.3+snapshot-1.jar:?] {}
at TRANSFORMER/[email protected]/net.minecraft.world.level.Level.blockEntityChanged(Level.java:872) ~[minecraft-client-patched-26.1.0.0-alpha.3+snapshot-1.jar:?] {neoforge:access_transformer,neoforge:access_transformer}
at TRANSFORMER/[email protected]/net.minecraft.world.level.block.entity.BlockEntity.setChanged(BlockEntity.java:222) ~[minecraft-client-patched-26.1.0.0-alpha.3+snapshot-1.jar:?] {}
at TRANSFORMER/[email protected]/net.minecraft.world.level.block.entity.BlockEntity.setChanged(BlockEntity.java:217) ~[minecraft-client-patched-26.1.0.0-alpha.3+snapshot-1.jar:?] {}

wintry flower
#

yes most likely

#

Commoble found it

tawny spireBOT
#

[Reference to](#neoforge-github message) #neoforge-github [โžค ](#neoforge-github message)patch goof in LevelChunkSection in 26.1 due to deobf changes causes the server to shit itself every 65536 block updates

https://github.com/neoforged/NeoForge/blob/1.21.x/patches/net/minecraft/world/level/chunk/LevelChunkSection.java.patch#L8
https://github.com/neoforged/NeoForge/blob/port/26.1/patches/net/minecraft/world/level/chunk/LevelChunkSection.java.patch#L8

paper cedar
#

excellent

#

CC: @steady heath that might have been the cause of that unexplained modern dynamics crash you had...

visual basin
hazy wind
#

always soaryn... /s

high sonnet
#

Sooooo no snapshot today it looks like

visual basin
#

๐Ÿธ is on vacation

high sonnet
#

Or frozen in ice

plucky hollow
untold oyster
#

next snapshot is in the new year

#

i'd say the same

high sonnet
#

It would have been funny if they did a snapshot that is the same as the last. Like "sorry we were all on holiday so no changes in this one"

untold oyster
#

too much overhead, probably

gray frigate
untold oyster
#

oh yeah, right
I said sometime ago that maybe it might not be the first Tuesday back, since first Tuesday assumes the have work done since last snapshot which they probably don't

#

someone could go check the historical records to see if they did publish snapshots on the first snapshot day after New Years

worthy mesa
#

25w02a was jan 8
18w01a was jan 3

#

(just ctrl+f for 01-0 on the launcher meta)

zenith dove
untold oyster
#

hmmm

wintry flower
#

@graceful laurel turns out I am really not convinced by these commas on new lines ๐Ÿ˜…

#

it looks quite weird, and I'm not convinced it's of any use when porting

gray frigate
#

That's not commas on new line, comma on new line would be putting it first

hazy wind
plucky hollow
#

i sure hope it is, why would you want to shoot fireworks at anyone?
into the sky sure but at other people?

untold cypress
gray frigate
#

thats what the style guide at work has me do

#

for all params

#

so,

void FuncNameYesPascal(
    int A
  , int B
    )
{
    // code
}
untold cypress
worthy mesa
#

it's not terrible format
certainly nice for comments without block comments

gray frigate
graceful laurel
#

Which, surprise surprise, is exactly the reason why I did that in some patches

paper cedar
#

it doesnt really matter if its a single line diff

#

the context will break the patch should that line change anyway

untold cypress
#

the way rust solves that is just allowing a trailing , kek

gray frigate
#

at work, it does keep the p4 blame for a given argument line correct, which has been helpful

untold cypress
untold oyster
#

I only know of it from the Git book

gray frigate
#

yup, perforce

#

its pretty common in games

#

it handles large binary blob assets better

#

things like textures

untold cypress
#

thinkies isn't that what lfs is for?

gray frigate
#

the thing lfs doesnt solve is exclusive checkout

#

w/ p4, checkout can be exclusive, so nobody else is modifying the same file as you

#

this matters for things that can't (easily) be merged (see textures)

untold cypress
#

ah, file locks thinkiedown

gray frigate
#

fwiw, i have worked on games in both p4 and git (w/ LFS)

#

one of the other big issues with git is needing a copy of the repo locally

#

even if sparse, that gets very large very quickly

#

p4, you only need to store current revision locally

#

when you have 1TB+ of texture/model data, not having to keep a second copy of everything matters a lot

#

now dont get me wrong, for code i very much do prefer git

#

but its not like p4 is without its benefits too

#

and unified VCS is also a good thing, splitting code and data has its own drawbacks

untold cypress
#

thonkies from what I remember you can do similar stuff with git, but sure, use what works for you

gray frigate
#

look, i dont make decisions on what VCS to use

#

there are ways to do similar things in git, but its not as automatic
the project i worked on that used git LFS, and had huge assets, also had a custom git client to handle it all

#

all the p4 projects ive been on, its just the standard p4 client

#

the fact that p4 is just "off the shelf" matters for enterprise

fresh gyro
#

Hey is anybody able to get into a world on the current 26.1 snapshot build of NeoForge?

#

It gets stuck at this screen

#

WHich makes me wonder if i have a thread hanging somewhere

#

My thread dump seems to be entirely normal

wintry flower
#

yes I am able to on alpha 2

fresh gyro
#

I am currently on alpha 3

#

And it gets stuck here

wintry flower
#

ah no oops this was in neoforge so a very recent (not released yet) version

#

I guess you'll have to check why it's not connecting

#

could be a misnamed variable literally anywhere

fresh gyro
#

Yeah

#

Well the client thinks it is rendering the world.....

#

Actually never mind

#

Level is still null

visual basin
#

I had alpha-1 working earlier, lemme try alpha-3

steady heath
visual basin
#

yeah alpha-3 works for me

fresh gyro
#

Wtf

#

Why would this not directly work

wintry flower
#

could be a linux/wayland-exclusive problem

untold oyster
fresh gyro
#

This seems not correct

worthy mesa
#

do you have prchment?

fresh gyro
untold oyster
#

can't repro the issue on my fresh setup of port/26.1 -- I can create a world and load into it fine

#

for avoidance of doubt, I am on Linux using Wayland

untold oyster
untold cypress
#

or it's a compositor issue, someone try on different wayland based ones

untold oyster
#

are you in a mod dev workspace or in a Neo dev workspace?

fresh gyro
#

Yep

#

It was parchment

#

FFS

untold oyster
#

smh

fresh gyro
#

Okey

#

Note: need to figure out a way to enforce it to be disabled

#

That that does not crash our fucking patcher

#

Is somehow a wonder....

hushed canopy
#

Which I thought maty fixed. But I guess there's some edge case or something?

empty night
#

TMW the codebase has more edges than a icosahedron

wintry flower
#

ah yeah I think shartte ran into this exact bug

#

we already made a patch to MDG that disables parchment param renaming

hushed canopy
#

Ohh wait is this on unobf versions

untold oyster
#

yes

#

wait, why am I answering

hushed canopy
#

Ahh I think that must be it, the fix maty had probably tests for parchment/parchment name conflicts but doesn't detect parchment/existing or parchment/local name conflicts

#

Welp

untold oyster
#

-# I answered on instinct before I considered you may be referring to another thing kek

empty night
#

-# you wanted to feel included, it's okay

fresh gyro
#

makes a note

fresh gyro
#

What is the version format that CurseForge supports for uploading?

paper cedar
fresh gyro
#

CurseForgeGradle, Darkhaxes plugin

paper cedar
#

CurseForge has a weird support-level for snapshots (which is, you can manually download files for them, but the launcher does not support them at all)

#

26.1-snapshot is their version id for all 26.1 snapshots

fresh gyro
#

Ahh

paper cedar
#

they dont differentiate between individual versions (Modrinth does)

fresh gyro
#

So yeah it probably detects the mc version from my properties

#

Okey

#

I think I can fix that manually then

paper cedar
#

Yeah I set the version manually for Modern Dynamics too

fresh gyro
#

Ah yeah I even set it manually

#

I just need to set it from a different property then

lucid tree
#

Should I design a plugin that publishes to both modrinth and curseforge?

hard citrus
#

Iโ€™ve been happy with modmussโ€™ mod publish plugin

paper cedar
#

don't do more gradle plugins for that

#

The more appropriate way is ultimately GH actions

hard citrus
paper cedar
lucid tree
hard citrus
paper cedar
#

You shouldn't publish from your own machine either way

#

The issue with gradle plugins is that you cannot retry

#

and since you're necessarily hitting external systems

hard citrus
#

No I just call the publish task in GH actions

paper cedar
#

if you do it in separate jobs, you will have to ship the artifacts over from job to job

#

which is very hard to do correctly without gradle rebuilding the jars

lucid tree
#

I publish from my own machine

#

Whats wrong with that?

hard citrus
#

Iโ€™ve made more cursed GH actions stuff ;) but thatโ€™s besides the point

jagged ridge
#

Higher chance of jars being compromised

paper cedar
#

not reproducible, if you inadvertently depended on some arcane config on your machine

lucid tree
#

On my own machine?

paper cedar
#

i.e. you 5 years ago put some token in gradle.properties, forgot and your publish only works because of that ๐Ÿ˜„

hard citrus
paper cedar
#

I'd recommend anyone to publish via some form of CI/CD tbh

lucid tree
#

I mean if there was some way to make GH actions run when commit message contains "release" sure

#

Time in a bottle doesnt need a per commit release

lucid tree
#

I mean I suppose

paper cedar
#

yes, git tags

lucid tree
#

Hrm

#

Maybe Ill do that

paper cedar
#

that is how this snapshot is being released

#

we're not doing per-commit for this one

lucid tree
#

I mean I dont want it to run every commit

hard citrus
#

Yeah then use tags

lucid tree
#

Hm alr then

hard citrus
#

GH releases require tags anyways

#

So if you plan to publish to GH releases too youโ€™ll need tags

lucid tree
#

Then ill do that then, maybe.

#

For 26.1 release of TIAB

vapid juniper
#

I've used unifiedpublishing plugin in the past, it works well

lucid tree
#

Neat

alpine minnow
#

The tools that used to help with unobfuscation Minecraftโ€™s code what will happen to them?

fresh gyro
#

They stop being maintained

#

We don't need them anymore

round spear
#

Guessing we still would be willing to merge PRs but like the priority within the team to review said PR isnโ€™t likely to be that high

paper cedar
#
  • What went wrong:
    Execution failed for task ':neoforge:createChangelog'.

Cannot invoke "org.eclipse.jgit.lib.AnyObjectId.hashCode()" because "id" is null
Fuck JGit

untold oyster
#

@paper cedar deleted tag? squirr

paper cedar
#

Well. See above.

untold oyster
paper cedar
#

Disabled changelog, will try again.

#

Alright, new version: 26.1.0.0-alpha.4+snapshot-1

plucky hollow
#

its pixfrog day my dudes, what we all thinking, snapshot today or nah?

paper cedar
#

Ah right, technically they could release one

#

I don't think there will be one

lethal onyx
#

today is a public holiday in sweden

#

so if we get one this week, probably not today

plucky hollow
#

oh it is, then yeah maybe no snapshot today then

inner creek
#

I don't expect one this week

plucky hollow
#

<@&1067092163520909374> and so it begins

alpine minnow
#

Oooo

quartz spadeBOT
#

New version detected: 26.1-snapshot-2.

next harness
#

yee

craggy river
#

Huh. Craftable nametags?

hazy wind
#

ohhhhhhh

plucky hollow
#

A second snapshot is here for the next drop - with cute new baby mob models. #minecraftemployee

slicedlime works as a Technical Director for Minecraft at Mojang, but the YouTube and Twitch channels are personal projects run entirely in his spare time. This is an unofficial update video that aims to be the most comprehensive guide possible. Offi...

โ–ถ Play video

Pack news in Minecraft 26.1 Snapshot 2 includes a tag and some changes to entity data - along with plenty of texture renames. Here's a quick guide! #minecraftemployee

slicedlime works as a Technical Director for Minecraft at Mojang, but the YouTube and Twitch channels are personal projects run entirely in his spare time. This is an unofficial u...

โ–ถ Play video
craggy river
shy valve
#

I see they're trying to entice me into playing with sound again. clever trick Mojang

paper cedar
#

Ah nice so we can check our update infra with unobf

#

Aaaaaaaaaaaaaand it has bugs. ๐Ÿ˜„

inner creek
#

oh shit

#

unexpected snapshot lol

quartz spadeBOT
#

We're back from vacation and the lights are back on in the shipping room! In this very first Snapshot of the new year, we're bringing you the first features from our cutest game drop yet! Befriend floofier wolf pups, kittens, piglets, calves, lambs, baby c...

north berry
#

kitties aww

inner creek
untold oyster
#

squirr just when I woke up

shy valve
# craggy river They seriously are making this too easy for people these days. First saddles, th...

there's a balance between fun and easy. having to grind through mineshafts or fishing to get nametags is neither hard nor fun. it's just tedious for something people would like to use more often. Saddles are even more justifiable considering it poses a barrier to what is quite possiblly the best early game transportation, but by the time you find one in a chest, you probably don't need horses anymore, so what's the point of mounts. Craftable saddles was a good choice. ||plus i've had these recipes in a personal datapack for years now because it just made sense to me||

untold oyster
#

...huh, MC ran on 2GB by default?

inner creek
#

yes

untold oyster
#

I thought it ran on 4GB harold

inner creek
#

nah, vanilla runs "fine" on 2gb

#

or at least did

shy valve
#

oh noe! my toaster can't run MC anymore. gonna have to migrate to the fridge.

bold forge
#

418

untold oyster
#

interesting new rules in the version manifest

#

arguments.default-user-jvm

paper cedar
#

Oh we definitely don't support those

inner creek
#

LOOK AT THIS OMG

plucky hollow
#

TagKey<Item> METAL_NUGGETS = bind("metal_nuggets");
well that goes against our tag conventions

paper cedar
#

oh fuck thats good

#

๐Ÿ˜„

untold oyster
plucky hollow
#

do we update nuggets/iron and such to be metal_nuggets/iron now?
cc: @runic anchor

bold forge
obsidian perch
#

Discord

obsidian perch
inner creek
compact swan
#

how many files were added and deleted this snapshot?

compact swan
#

ah pretty good

inner creek
#

I made it a sticker

compact swan
#

hell yeah

shy valve
paper cedar
inner creek
#

doesn't look very good as an emoji sadly

paper cedar
#

Ah, ofcourse i forgot to do what Shrimp had told me, and it thinks the snapshot is a special version kek

#

Sadly, I only remember that shrimp told me something about that, not exactly what though.

snow island
plucky hollow
#

looks like mojang is making x,y,z fields in pos stuff private
alot of the changes are just .x -> .x()

compact swan
#

huh

plucky hollow
#

also chunk/block pos long packing methods renamed from toLong and fromLong became pack and unpack

inner creek
plucky hollow
inner creek
paper cedar
# plucky hollow nope

Okay so it's less about making x/y private and more about them making it a record ๐Ÿ˜„

inner creek
#

the other ones are adorable too but the rabbits and chicks are the biggest change

snow island
#

Now I am wondering about theme of this drop

inner creek
#

depends on the other features they might add later

runic anchor
#

Is Mojang adding a food nugget

#

McDonalds in Mc

plucky hollow
#

chicken nuggets mojang i want

#

please and thank you

runic anchor
#

I canโ€™t read blog so idk what is happening and Iโ€™m at work rn

inner creek
#

kill adult chicken -> you get chicken meat
kill baby chicken -> you get chicken nugget

tawny spireBOT
#

[Reference to](#1445764870564745228 message) #1445764870564745228 [โžค ](#1445764870564745228 message)nice!

inner creek
#

this

#

the snapshot is small

runic anchor
#

So what does that have to do with metal nuggets

inner creek
#

it happens to be a change in the code ๐Ÿคทโ€โ™‚๏ธ

runic anchor
inner creek
#

wrong link, I think

#

one of the bots has the wrong link

plucky hollow
#

link in pin works fine for me

inner creek
#

they provide no explanation for it

worthy mesa
#

for the nametags

plucky hollow
#

added for the name tag recipe, so that it accepts any nugget

runic anchor
#

It can be viewed as nuggets/metal and Mojang just does metal_nuggets

plucky hollow
#

also am i reading that right? have to obtain a nametag to unlock the nametag recipe?

runic anchor
#

So no need to redo our tag and see metal nugget as a subset of nugget

worthy mesa
#

has paper, or nametag

inner creek
#

ooooh

plucky hollow
inner creek
#

doesn't matter though? unless you disable crafting locked recipes

#

I'm surprised they didn't include string in the recipe

plucky hollow
#

yeah nugget feels weird tbh

#

its just paper with a string

#

wheres the nugget fit in

inner creek
#

I guess they see it as a metal ring

paper cedar
#

Not having to look up timestamps for neoform versions is nice

inner creek
plucky hollow
#

i guess it does kinda look like a metal ring
but ive always seen it as string

#

inb4 26.1-snapshot-3-hotfix "nametag recipe now uses string" blobxd

runic anchor
#

Seems too thick for string

inner creek
#

yeah

#

but I always imagined

#

this kind of tag, with string and cardboard

worthy mesa
#

I always saw it as metal for both the ring and tag
since animals are outdoors

strong wing
#

thonk do max librarians still offer them in a trade

untold cypress
untold cypress
paper cedar
#

Could be worse

#

new ChunkPos(BlockPos) -> ChunkPos.containing(BlockPos)

#

ChunkPos#asLong() -> ChunkPos()#pack
ChunkPos#toLong() -> ChunkPos()#pack

#

And predictably: new ChunkPos(long) -> ChunkPos#unpack(long)

round spear
# inner creek nice!

Ohno does this mean for mek additions baby mobs I will need to do something more than just have a smaller model concern . At least the list doesnโ€™t mention baby zombies yet

plucky hollow
#

i demand more cute adorable baby models, so... yes get on that /s

#

need a baby zombie we cant kill cause he too damn adorable

round spear
round spear
lethal onyx
plucky hollow
#

heard it here first schurli hates babies

lethal onyx
round spear
inner creek
#

Baby Bogged

#

there's more than just strays :P

#

Drowned already have babies right?

round spear
round spear
#

As do husks

inner creek
#

Parched?

round spear
#

?

zenith dove
inner creek
#

the Parched is a deserd skeleton

#

desert*

round spear
#

Oh

inner creek
#

ignore the tool belt, that's my addition :p

round spear
#

I have yet to have 1.21.11 compile

#

I havenโ€™t looked at vanillaโ€™s changes since 1.21.1 yet to add parity to

paper cedar
#

Most of it is patch context changes, only semantic change I could see is that fall-damage calculations now calculates an "effective fall distance" first, and it's not quite clear to me where that was before (it might have been done in the player subclass, tbh.)

#

I moved the event to below that calculation and made it use the effective distance

round spear
#

But yes eventually I will have the parched one as well (once I get mek compiling again and start going through the changelog to see what stuff I need to mirror)

round spear
#

I am still many many hours from getting mek to be compilable on 1.21.11 xpout

#

And then I get to adjust to transactionsโ€ฆ.

plucky hollow
#

๐Ÿ‘€

paper cedar
#

I just made it a PR so I could wait for the CI/CD checks. Didn't want to pollute the port/26.1 history with "fix up xyz" crap if I could avoid it ๐Ÿ˜„

plucky hollow
#

thats fair was just suprised to see it so quick

paper cedar
#

Well I just hammered it out the snapshot was trivial in terms of porting

#

Okay, I tagged a version which just finished building, too: 26.1.0.0-alpha.5+snapshot-2

plucky hollow
#

wooo time to update my mods

paper cedar
#

I probably use ChunkPos somewhere, but that shouldnt take long to update

plucky hollow
#

nice not a single line of code changed for me, but thats not hard when your a furniture mod xD

paper cedar
#

Now: add baby furniture.

plucky hollow
#

oh cat trees and shit would be real nice ngl

#

but alas im not the artist for my mods
and the artist has gotten busy with irl shenanigans recently

round spear
#

Still something you could add to your backlog!

plucky hollow
#

yeah ive been slowly learning block bench

#

but wont be able to match what my friend did
they some how matched vanillas style while also being their own thing

paper cedar
#

I also updated the earlier pin

robust pike
#

Back to resting

steady heath
# plucky hollow # 26.1 Snapshot 2 - **Primer**: <https://github.com/ChampionAsh5357/neoforged-g...

A second snapshot is here for the next drop - with cute new baby mob models. #minecraftemployee

slicedlime works as a Technical Director for Minecraft at Mojang, but the YouTube and Twitch channels are personal projects run entirely in his spare time. This is an unofficial update video that aims to be the most comprehensive guide possible. Offi...

โ–ถ Play video
inner creek
untold oyster
#

can't wait for the inevitable plushies

#

but first, gimme ghastling/happy ghast

inner creek
plucky hollow
#

i still only see pahi-ghast when seeing the happy ghast

lethal onyx
robust pike
#

I got a code review on the primer, never expected that

#

But thanks shnups

plucky hollow
inner creek
#

he's just separating the snapshot news from the technical (see: resourcepack and datapack) change news

lethal onyx
#

so... what does one need to do to update to a snapshot build using NG?

fresh gyro
#

You need to be on 7.1.20 though

compact swan
#

I think they should add baby creepers

plucky hollow
#

so long as they arnt like modded baby creepers

#

those things suck

compact swan
#

what are those like?

plucky hollow
#

tbh i might be confusing them with a different mob
but i remember a mod adding baby mobs
and they had some of the most annoying effects

#

@round spear am i thinking of mekanism additions?

plucky hollow
# plucky hollow # 26.1 Snapshot 2 - **Primer**: <https://github.com/ChampionAsh5357/neoforged-g...

Pack news in Minecraft 26.1 Snapshot 2 includes a tag and some changes to entity data - along with plenty of texture renames. Here's a quick guide! #minecraftemployee

slicedlime works as a Technical Director for Minecraft at Mojang, but the YouTube and Twitch channels are personal projects run entirely in his spare time. This is an unofficial u...

โ–ถ Play video
inner creek
#

the worst, by far, are baby skeletons

#

much harder to hit, move annoyingly fast in the way skeletons move sideways and such

#

and quick-fire arrows at you

compact swan
#

damn that sounds like a lot of pain

round spear
round spear
#

(That is their only special power)

shy valve
#

i'm pretty sure that feature was why i stopped using mek additions lol

round spear
#

The fact that they only blow up like 5 blocks max when a normal creeper blows up way more than that?

runic anchor
#

when's 26.1 release date

zenith dove
#

march/aprilish probably, they haven't said

inner creek
#

previous spring drops have been late March

alpine minnow
empty night
#

Not me over here hoping Mojang finally kills minecraft:mob_griefing and splits it into enderman, creeper, and villager game rules...

#

I learned the other day that turning off that rule also stops villager breeders and other farms from working, because they stop picking up food and harvesting

untold cypress
#

Yeah, picking up items is griefing harold

untold oyster
#

-# DIE, GRIEFER

lucid tree
#

So villagers starve to death ๐Ÿ’€

plucky hollow
#

oh shit, its ๐Ÿธ day this past week zoomed by for me

rain herald
#

"Also Play Hytale" is coming trust

paper cedar
#

Yeah, I'll hold off on that for a week to get the sentiment of ppl actually playing it ๐Ÿ˜…

plucky hollow
# rain herald "Also Play Hytale" is coming trust

the fact the fan base has to be like "trust me its coming" is the whole reason im not intrested in hytale
its had way too many rewrites/restarts and chances at this point and has lost me as any potential player

rain herald
#

I meant the splash text

#

I should've quote wrapped it

#

I am also not buying the hype but I think itd be cute to add a splash

plucky hollow
#

i already have a few friends who are like "yooo you should port your mods to hytale"
like jesus at least give the base game some time breath before to bombard it with mods

#

which is another reason why im not so intrested in it
if people are already like, "the mods gonna be crazy" the base game cant be all that good
and from what ive heard theres no client side modding capabilities? which i feel will limits mods potentials
i mean look at mc plugins vs mods, ones clearly more powerful than the other and thats cause you have client to play with
rather than being server only reskininng existing game elements, hijacking and forcing them into what you want them to do

bitter gorge
#

@plucky hollow it is time

plucky hollow
tawny spireBOT
#

[Jump to referenced message](#minecraft-updates message) in #minecraft-updates

This is a new version. Changes listed from 26.1-snapshot-2.

Links:
client | server

quartz spadeBOT
#

New version detected: 26.1-snapshot-3.

zenith dove
plucky hollow
#

The third snapshot is here for the next drop - with a new way to change game rules! Check out this quick guide! #minecraftemployee

slicedlime works as a Technical Director for Minecraft at Mojang, but the YouTube and Twitch channels are personal projects run entirely in his spare time. This is an unofficial update video that aims to be the most...

โ–ถ Play video

Pack news in Minecraft 26.1 Snapshot 3 bring us a new system for World Clocks and Time Markers along with a lot of new tags - check out the news here! #minecraftemployee

slicedlime works as a Technical Director for Minecraft at Mojang, but the YouTube and Twitch channels are personal projects run entirely in his spare time. This is an unofficia...

โ–ถ Play video
next harness
inner creek
#

woo!

#

ingame game rule editor!

inner creek
#

oh interesting

fresh gyro
#

So many tags

inner creek
#

they added a time-tracking system

inner creek
#

yay one less patch

lethal onyx
#

The Tripwire texture is now rendered as alpha cutout instead of transparent

Interesting

visual basin
#

thinkies does it just use cutout rendertype now instead of having its own special bunny rendertype

lethal onyx
visual basin
#

now you can duplicate ores without mods!

plucky hollow
#

@paper cedar another thing ItemResource may want to inherit?

inner creek
plucky hollow
#

ItemResource already extends TypedInstance and DataComponentGetter why not also this

inner creek
#

could extend ItemInstance instead of the other two, I guess

bitter gorge
#

because ItemResource doesn't have a count

plucky hollow
#

wait..

inner creek
#

oh right

plucky hollow
#

did mojang add ItemResource?

quartz spadeBOT
#

We're back in action with another Snapshot! In this week's release we're making it possible to access game rules from the in-game pause screen, through the new world options button. On the data pack side of things, we're introducing a new concept of world ...

inner creek
#

no cos it has count

#

so it's automatically not the same :P

plucky hollow
#

oh yeah the count i missed that

inner creek
#

it's just an immutable itemstack

plucky hollow
#

i like immutable stacks

#

ooh

bitter gorge
#

its POJO for data/network

plucky hollow
#

SpawnEggItem lost its BY_ID map intresting

runic anchor
#

FUCK YES

untold cypress
runic anchor
#

FINALLY

#

WE HAVE ASCENDED

#

TIME TO DELETE THE NEO PATCH AND MY CUSTOM RECIPE

untold cypress
inner creek
#

I knew some people would be very happy as soon as I saw it

#

I underestimated it

untold cypress
#

Oh well, uranite as it's called iirc

visual basin
#

#supports_vegetation which provides support to the following blocks:
what does that do to croptypes thinkies

#

oh fuck they added a bunch more

untold cypress
#

thonkies this time stuff seems interesting

#

Maybe I'll need to expose that in my mod

visual basin
#
#supports_vegetation
#supports_crops
#supports_stem_crops
#supports_pumpkin_stem
#supports_melon_stem
#supports_sugar_cane
#supports_sugar_cane_adjacently
#supports_cactus
#supports_chorus_plant
#supports_chorus_flower
#supports_nether_sprouts
#supports_azalea
#supports_warped_fungus
#supports_crimson_fungus
#supports_mangrove_propagule
#supports_hanging_mangrove_propagule
#supports_nether_wart
#supports_warped_roots
#supports_crimson_roots
#supports_wither_rose
#supports_cocoa
#supports_lily_pad
#supports_frogspawn
#support_override_cactus_flower
#cannot_support_seagrass
#cannot_support_kelp
#dry_vegetation_may_place_on -> #supports_dry_vegetation
#bamboo_plantable_on -> #supports_bamboo
#small_dripleaf_placeable -> #supports_small_dripleaf
#big_dripleaf_placeable -> #supports_big_dripleaf
#mushroom_grow_block -> #overrides_mushroom_light_requirement
#grows_crops
plucky hollow
#

holders can now be given a component map?

#

Holder

visual basin
plucky hollow
#

registries have a component lookup

#

intresting

visual basin
#

related to default datacomponents for items maybe

#

might be necessary for data-driven items later

plucky hollow
#

expanding the component system for any registry type id guess

#

but mostly items for now?

raven wharf
rain herald
#

data driven time is such an interesting addition

plucky hollow
rain herald
#

I liked timelines now theyre taking it further

#

very fun

#

can u now make an in-game day 24 hours with a datapack?

raven wharf
plucky hollow
#

oh nice we dont need our custom behavior for custom spawn eggs anymore

rain herald
#

kill the bot

untold cypress
#

apex's a better bot

plucky hollow
#

little do yall know ive been a bot the whole time

plucky hollow
#

hey a fellow dropout fan Blobwave

#

oh yeah default item components seem to be coming from the registry now

compact swan
#

Sam Reich is so cool

plucky hollow
#

wonder how this messes with the modify default component event we have

untold cypress
plucky hollow
#

yep Item.components does not exist anymore

plucky hollow
#

unsure if thats how it fully works in this snapshot tho

visual basin
#

thonkies wonder if the datamap system could piggyback off that

obsidian perch
#

The thing is though that the world would have to be running 24/7 or it would get out of sync

plucky hollow
visual basin
#

maybe

#

how are datacomponents even cheesed into holders though

#

how are they set, how mutable are they

untold cypress
visual basin
#

datamaps are tied to the registry system, yeah

inner creek
# plucky hollow

I wonder if that's the first step toward json-defined data component maps
like our DataMaps but using DataComponents

rain herald
#

wow

#

mojang w

compact swan
#

what do they mean with this? loot tables can be based on time?

rain herald
#

indeed

untold cypress
visual basin
rain herald
#

where?

#

who depended on time

visual basin
#

in the minecraft:time_check loot predicate, it says

compact swan
rain herald
#

ohhh

#

the check already existed

#

just without the clock

compact swan
#

well what is it used for?

rain herald
#

great question for intellij

visual basin
#

mojang doesn't use it themselves

untold cypress
runic anchor
inner creek
#

I assume it was made for packmakers

visual basin
#

theyy just added it as a nice thing for datapacks

runic anchor
#

Content creators

inner creek
#

adventure map stuffs

runic anchor
#

Influencers

#

YouTubers

#

Tiktokers

untold cypress
#

Outfluencers

rain herald
#

imagine an entity that only drops certain loot during sunset or sunrise

inner creek
#

"Sunflowers only drop loot when the sun is out"

untold cypress
#

That's a weather + time check tho

compact swan
untold cypress
#

and idk if there's a weather predicate

visual basin
#

WeatherCheck!

gray frigate
plucky hollow
gray frigate
#

part of the problem with MC is that some things (animated models, guis) are completely client code created/defined

#

in most games, thats just data, so theres no need to mod the client for those if it can load some additional data from the server

visual basin
#

okay so holder components are immutable and generated on registration

plucky hollow
#

ItemProperties -> delayedHolder -> Item() -> BuiltinRegistries.DATA_COMPONENT_INITIALIZERS
after that im unsure

plucky hollow
visual basin
#

which is the opposite of datamaps harold

round spear
robust pike
#

Seems like they killed off interactAt

#

Merged completely into interact

plucky hollow
#

but yeah i feel this might kill the modify default item component event we have

#

did anyone even use that event?

gray frigate
round spear
obsidian perch
visual basin
#

a quick discord search for that event name suggests people are definitely using it

plucky hollow
#

tbh looking at it more we might be able to andThen the intiializer to inject our event into it

#

similar to how the finalizer validates the components, we just andThen our event before the validator?

plucky hollow
#

at that point just use datapack to add components to vanilla stuff

visual basin
#

eehh

#

as long as datamaps can be assigned by tag and mojangcomponents can't then datamaps have a niche

plucky hollow
# paper cedar yes

we may also want to also swap ItemResource internals to use ItemStackTemplate rather than ItemStack
so its fully immutable, not backed by some mutable stack type

also ive seen a few places in vanilla code that swapped ItemStack to ItemStackTemplate so maybe ItemResource gets a toStackTemplate method too, but also not that desperately needed either

lethal onyx
plucky hollow
#

oh ive seen a few places that took in ItemStackTemplate

#

but taking in the iface is nice too

#

i mean its mostly been rendering and network stuff which makes sense that should be immutable
so yeah not as needed for resources to fully support

paper cedar
#

I'll start the update

wintry flower
#

It's essential that conversions from/to ItemStack remain fast

#

We should also preserve symmetry between fluids and items

plucky hollow
wintry flower
#

Well, is accidental mutation of resources a problem in practice?

#

I haven't seen it happen so far

plucky hollow
#

yeah ive not seen it myself either but is possible mostly by misusing the is(Predicate<ItemStack>) method since that passes the internal stack directly

paper cedar
#

Hm. our AfterWeather rendering event is emitted before the weather-special-effects renderer is called

#

Is that a port mistake?

plucky hollow
#

but keeping the resource->stack conversion fast i will agree is a good

plucky hollow
paper cedar
#

I moved it to after

#

Ok due to the extensive changes to time-keeping, I think our patch to control the flow of time in levels needs a deeper look.

#

Oh, the introduction of ItemTemplate makes at least one patch redundant kek

(In ItemParticleOption)

-            this.itemStack = itemStack;
+            this.itemStack = itemStack.copy(); //Forge: Fix stack updating after the fact causing particle changes.
plucky hollow
#

yeah mojang having immutable stacks gonna be nice, more they get used

paper cedar
#

Someone is going nuts on RegistryDataLoader kek

#

patch-wise, the reformats caused by vineflower when variables are renamed is a real pain in the ass.

#

i.e.:

26.1-snapshot-2:

return CompletableFuture.allOf(loadCompletions).thenApplyAsync(ignored -> {

26.1-snapshot-3:

return CompletableFuture.allOf(loadCompletions)
    .thenApplyAsync(
        ignored -> {
#

Ah. ServerClockManager is probably where the time logic went.

paper cedar
#

TODOs (will edit):

  • restore SleepFinishedTimeEvent
  • our custom overloads for daytime customization in Level (this.setDayTime(this.levelData.getDayTime() + advanceDaytime());)
  • decide what to do about state.is(BlockTags.SUPPORTS_VEGETATION); where we previously added instanceof FarmBlock
  • decide whether to keep state.canBeHydrated(...) in combination with fluidState.is(FluidTags.SUPPORTS_SUGAR_CANE_ADJACENTLY)
  • should Item#getMaxStackSize(ItemStack) now be made Item#getMaxStackSize(ItemInstance), since the max stack size query was moved from ItemStack to ItemInstance?

Notes:
FungusBlock -> NetherFungusBlock
FarmBlock -> FarmlandBlock

paper cedar
#

Isn't this a misapplied patch too? I think this lacks an else for the subsequent default block?

plucky hollow
# plucky hollow # 26.1 Snapshot 3 - **Primer**: <https://github.com/ChampionAsh5357/neoforged-g...

The third snapshot is here for the next drop - with a new way to change game rules! Check out this quick guide! #minecraftemployee

slicedlime works as a Technical Director for Minecraft at Mojang, but the YouTube and Twitch channels are personal projects run entirely in his spare time. This is an unofficial update video that aims to be the most...

โ–ถ Play video
lethal onyx
paper cedar
#

I think they just refactored it

#

After noticing it was incredibly large/bloated

lethal onyx
paper cedar
#

They pulled out the inner classes ("loading tasks") into top-level classes

paper cedar
#

Hmhmhmhmhmhm. Maybe we should just do that for generating, storing and applying patches

#

@wintry flower do you remember why we validate components in component() rather than in validateComponents? Probably because we want "nice" stack-traces ?

#

There's now a "delayed component" system for components that can only be created once registries exist

#

So that'll be a bit difficult

lethal onyx
#

we'd need to andThen it to the initializer

paper cedar
#

I think that returns an entire map. I am juggling it into SingleComponentInitializer#asInitializer

#

That's where it calls #create on the supplier

#

But at that point you'll not get a stacktrace that points to the culprit, really

#

Mhmmm. okay but I think that's the point at which we shove that modify event into

#

That's certainly interesting. It's modifying a built-in registry in the Item constructor

#
public Item(Item.Properties properties) {
    this.descriptionId = properties.effectiveDescriptionId();
    DataComponentInitializers.Initializer<Item> componentInitializer = properties.finalizeInitializer(
        Component.translatable(this.descriptionId), properties.effectiveModel()
    );
    BuiltInRegistries.DATA_COMPONENT_INITIALIZERS.add(properties.itemIdOrThrow(), componentInitializer);
#

Oh. Huh. That's not a real registry

visual basin
#

it's just some weird object they stuck in BuiltInRegistries thonkies

paper cedar
#

Also uh

#

I never noticed that check in the Item constructor that we patch out ๐Ÿ˜„

#

The one that enforces item subclasses are named [...]Item ๐Ÿ˜„

robust pike
#

It took me a moment to realize, but the default components are now datagennable, at least at a glance

#

Or at least on the way to being so

paper cedar
#

I am still trying to wrap my head around that part yet

#

At first I thought they did this so default components can safely reference registryobjects

robust pike
#

Ah, yeah

#

That and holder sets

#

That would make sense since they first reload the full registries, then build the components, and finally handle the rest

paper cedar
#

So which means they re-evaluate these everytime the regs change (?)

#

yes, seems like it

robust pike
#

That's my understanding

paper cedar
#
return ReloadableServerRegistries.reload(contextLayers, updatedContextTags, resourceManager, backgroundExecutor)
    .thenCompose(
        fullRegistries -> CompletableFuture.<List<DataComponentInitializers.PendingComponents<?>>>supplyAsync(
                () -> BuiltInRegistries.DATA_COMPONENT_INITIALIZERS.build(fullRegistries.lookupWithUpdatedTags()), backgroundExecutor
            )
#

We can probably still support that event, but it'd interestingly be 1) more generic since it is not item specific, 2) would re-run everytime registries reload

robust pike
#

Yeah, technically components can be on any registry object, provided you can get the holder reference

paper cedar
#

Oh wait it's not an event yet

#

Okay. Wait. I am confused.

#

We patch in modifyDefaultComponentsFrom but it's deprecated

#

When did we add that?

robust pike
#

I wanna say 20.6 or 21?

paper cedar
#

Oh, so we deprecated that and replaced it with the event, I presume?

#

Well 26.1 is as good a time as any to yeet the method then

robust pike
#

I believe so

#

I like how the immutable itemstack is now ItemStackTemplate

paper cedar
#

I like even more how both implement ItemInstance:D

#

10 rejects remain

shy valve
paper cedar
#

Hm. So....

We previously replaced
state.is(Blocks.FARMLAND) with state.getBlock() instanceof net.minecraft.world.level.block.FarmBlock

But Vanilla has now replaced their checks with state.is(BlockTags.SUPPORTS_CROPS)

I suppose that will make the instanceof redundant, yes?

visual basin
#

I hope so!

shy valve
#

yes and no. it now behooves mods to ensure their blocks are in the correct tags since inheritence is no longer assumed.

visual basin
#

right right

paper cedar
#

Yes, it will introduce bugs where mods forget to do so.

visual basin
#

maybe make a dev announcement summarizing the important new tags when 26.1 finishes?

paper cedar
#

(Removing the instanceof that is)

visual basin
#

or at least any instanceof -> tag updates

paper cedar
#

There is another place where the new tag is not 1:1 sufficient to replace our patch, IMHO and that is for fluids.
For sugarcane, we replaced the hardcoded is(WATER) check with state.canBeHydrated(level, pos, fluidState, below.relative(direction))

visual basin
#

(it's not the first time mojang converted instanceof to a tag and it won't be the last)

shy valve
#

probably worth making a note of every time new tags and registries are added so that modders know to update. as we approach data-driven items/blocks these kinds of features are going to become more and more common and thus easier to lose track of or fall behind.

paper cedar
#

Vanilla now does fluidState.is(FluidTags.SUPPORTS_SUGAR_CANE_ADJACENTLY)

#

But since our patch is actually level-sensitive, I've left it in

round spear
paper cedar
#

Rejects that can be addressed right now are addressed I think

#

Thoughts on ItemStackTemplate getCraftingRemainder(ItemStack itemStack)?

#

Vanilla now returns an immutable stack (ItemStackTemplate)

#

Should we generally make our itemstack-sensitive methods in Item now consume ItemInstance?

#

As the super-interface of both mutable and immutable ItemStacks?

plucky hollow
#

i for one am in favor of using the new ifaces for super of immutable/mutable and resource/value

paper cedar
#

I am also not sure why you would mutate the given stack in a getter like that

plucky hollow
#

yeah the param should rly be TypedInstance or something
to take in either mutable or immutable, prefering immutable ofc

paper cedar
#

Hm?

#

ItemInstance is that

#

It's the super-interface of ItemStack/ItemStackTemplate.