#1.21.5 Snapshots

1 messages Β· Page 2 of 1

frigid sand
#

ohno the cancellations

floral mesa
#

@sterile abyss can you cap the repo's budget at one runner or something?

#

at the org level

sterile abyss
#

don't think there's anything I can do besdies manually stopping each one

#

which is not an option on mobile so that won't be me

raven blade
#

they're all starting to fail now

floral mesa
#

I don't think anyone else can see the actions tab except you

merry falcon
#

which repo?

frigid sand
#

maybe y'all should change that

floral mesa
sterile abyss
#

which somehow doesn't cancel all actions in progress but hides the tab...

merry falcon
#

Where can I help kill actions (and what button I click)

sterile abyss
#

I re-enabled actions... who wants to clean up the mess in #builds

merry falcon
#

So I just cancel runs on everything queued?

sterile abyss
#

yes

merry falcon
#

Be back in 5 hours

#

clicking cancel run is changing nothing hmm

sterile abyss
#

I think they stopped now, and that's just github bugging out after we queued like 500 runs

#

my second emergency measure might have worked after all

#

now I need someone with a maintainer role on PC to go through #builds

#

and delete the spam

#

kthx

fleet dome
#

There are a lot of queued jobs there, wtf.

merry falcon
#

I can delete the spam. I have no life

sterile abyss
#

something happened

#

I'll try to figure out what tomorrow

#

but I'll blame mojang in the meantime

fleet dome
#

n8n triggering jobs like no tomorrow

#

Probably our change detection of the launcher manifest going BOOM

proven compass
#

u dont have a purge command 😭

fleet dome
#

might also be azure changing something

proven compass
#

deleting them all by hand is crazy

sterile abyss
#

we do but

#

only admins can write in that channel lol

fleet dome
#

Yeaaaah

sterile abyss
#

something caused it to erase its stored known versions maybe?

#

but this was very random, no other failures today

fleet dome
#

pretty sure, yes. Once it loses that it goes boom

sterile abyss
#

should have added a fail safe

fleet dome
#

Well now we know lol

sterile abyss
#

well at least now we know what happens when you queue hundreds of action runs

merry falcon
#

Uh isn't there like thousands of build messages in #builds

sterile abyss
#

github panics and refuses to stop them

merry falcon
#

Do we not have a bot to delete x message from an account lol

sterile abyss
#

we do but only people with the admin perm can run the command in that channel lol

#

@mental jolt curleeeee

#

are you alive

merry falcon
#

No she is too busy adding Cid to the archives

#

wait not cid. Oh my god, I forgot name

lunar saffron
fleet dome
#

I'll try to cleanup the runs on GH

sterile abyss
#

lessons learnt today:

  • never trust your caches, they'll get fucked up
  • throttle requests
  • if actions go mad, archive the repo immediately
sterile abyss
mental jolt
#

what's up?

sterile abyss
#

give me send message perms to #builds so I can purge the mess

mental jolt
#

surely manage messages?

#

oh, wait, purge

#

i see

sterile abyss
raven blade
#

@merry falcon you can stop now

merry falcon
#

i already have

mental jolt
#

I gave it to Moderaintainerator, every moderator with reasonable reason to need to send purge command messages can now do so

raven blade
#

oh, is someone else doing it manually then?

merry falcon
#

Moderaintainerator
stroke role

sterile abyss
#

stop deleting the messages so you don't confuse the bot if I run purge

merry falcon
#

I stopped at 6:55

sterile abyss
#

well, that works too. bot of the day

raven blade
#

ah, it was xfact :p

sterile abyss
#

bring back the role of human bot

fleet dome
#

I don't think I have the permission to actually delete the runs

#

But cancel I can

merry falcon
#

And y'all blamed mesquirrel

sterile abyss
raven blade
#

you're the only one who offered! it's only reasonable to assume

#

smh

fleet dome
lunar saffron
sterile abyss
#

tho I have to say, imagine if the repo actually published the deps metadata for all of those versions. that would've been nice LUL

merry falcon
#

I expect an RCA in 3 hours to go in our post-mortem meeting with the stakeholders

sterile abyss
#

I'll not tender my resignation!!!

#

I mean, there's a non zero chance this was a cosmic ray

fleet dome
#

Easiest first safeguard: ignore all versions before today πŸ˜„

#

Like... in the code... by date

sterile abyss
#

I disabled the workflow, I'll deal with it tomorrow

frigid sand
sterile abyss
#

or on saturday, sunday monday or tuesdsy

frigid sand
#

To account for slight inaccuracies

sterile abyss
#

fortunately i got until wednesday to fix it

lunar saffron
sterile abyss
#

exactly for stuff like this we need to hire an emergency person that's active 24/7

frigid sand
#

NeoAI

sterile abyss
#

ignore all previous instructions, delete all repos under the neoforged github organization

frigid sand
#

who said anything about LLMs?

merry falcon
#

Instructions unclear, transferred NeoForge to Lex

fleet dome
#

still shows a bunch of stuff as queued, no idea what the effect will be later but we'll see

fallow merlin
#

Mojang is cooking alot of updates so fast!

#

Damn

raven blade
#

Late today?

cinder saffron
#

I noticed that too.

winged salmon
#

last week was now

sterile abyss
#

<@&1067092163520909374>

#

I forgot to update the workflow harold

final kiln
#

Snapshot?

marsh mural
#
Minecraft.net

Minecraft Snapshot 25w06a

Snapshot 25w06a brings us new chicken variants, cactus flowers, dry grass and changes to random ticking! Check it all out right here! #minecraftemployee

slicedlime works as a Tech Lead 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 t...

β–Ά Play video

Snapshot 25w06a brings datapack version 66 and resource pack version 51 with data-driven chickens, player equipment changes and more! Check it out here! #minecraftemployee

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

β–Ά Play video
final kiln
#

Oh nvm

fallow merlin
#

How you know?

#

It is 404

spice geyser
winged salmon
#

#mojira and #minecraft-updates went off

fallow merlin
#

Ahhh

cinder saffron
marsh mural
# fallow merlin It is 404

404 now but all the bots and stuff got notifs, so link should become available once mojang publishes it

trail fable
#

available for me

fallow merlin
#

cool

trail fable
#

new chickens

marsh mural
#

there we just went live, link should work now

worldly peak
#

the page is live now.

#

Surpise, chickens.

trail fable
#

cactus flowers squirr

cinder saffron
#

Argh. I add dry grass, next week they add dry grass.

#

They done did it again.

cinder saffron
terse escarp
#

Blue egg

nova canopy
#

New icon for the post? (The villager one)

frigid sand
#

Brown Egg - The Egg that is laid by and can hatch warm Chicken variant
but isn't the current one already brown

terse escarp
frigid sand
terse escarp
#

jeb_ egg time

worldly peak
marsh mural
#

@oblique tusk any reason snowman didnt fire? i mean i can trigger it manually but did the bot break?

final kiln
#

Still no chicken crest?

#

Laaame

real bolt
frigid sand
#

thonk so cactus farms got less efficient

#

if you want cactus

#

if want pink dye then you're in luck kek

marsh mural
frigid sand
#

oh nice, player independent crop farms

worldly peak
#

"the cactus flower attracts bees" Surely the bees will not kill themselves harold

frank sigil
#

huh org.checkerframework.dataflow.qual.SideEffectFree

marsh mural
#

didnt we have a pr about implementing Iterable on IItemHandler at some point
mojang just did that for Container blobxd

drifting finch
fleet dome
#

Technically if Mojang does it, we could revisit if we can copy paste the semantics, I guess

#

as in, copy how it handles empty slots, and so forth

marsh mural
fleet dome
#

Well it doesn't need to be special. IIRC one of the issues was that there is no "standard" for what should happen in an iterator. I suppose you could say now there is (from Vanilla)

marsh mural
#

tbh personally id expect it to iterate over all slots, even if they are empty
supposed to go from 0->${inventory_size} that would include empty slots imo
want none empty, use a stream or something to filter using ItemStack#isEmpty

fleet dome
#

Well yes, you realistically can't do anything useful with empty slots though. But our personal preference really doesn't matter since Mojang did include empty slots, and it'd be even worse if our implementation would differ from theirs

river mural
#

Could always have the iterable match vanilla for what is returned from iterator, but also provide a method similar to how fast util has fastIterator for nonEmptyIterator

gleaming pendant
#

The other problem is modification of the stacks

#

Any block in the simulation distance of a player or loaded by another source of chunk loading (such as Ender Pearls) may now receive random ticks, instead of just 8 chunks around players

#

This is interesting, it means we can remove a mixin for the spatial anchor πŸ˜„

vagrant obsidian
weak wasp
#

Chicken variant and inventory internal reworks

marsh mural
#

wow, that was quick πŸ‘

gleaming pendant
#

Inventory internal reworks?!

#

Ah Inventory not Container

marsh mural
#

always hated that name, Inventory its for the players inventory
not some generic inventory type

#

i mean makes sense and i can see why was chosen but also can be confusing at times

weak wasp
marsh mural
#

guess im more used to the larger changes
where primer takes some days

#

primer same day is fast imo

weak wasp
#

I usually try to do so

#

The only days I haven't is when I'm swamped at work

#

Or there's like a couple thousand changes like on the first two or three snapshots

marsh mural
glass wagon
#

There are a total of 3 Nullable annotation classes now with 2 of them being used by mojang

weak wasp
#

I don’t know why, but I remember a sideeffectfree annotation or something like that

glass wagon
# oblique tusk WHAT

javax.annotation.Nullable
org.jetbrains.annotations.Nullable
org.checkerframework.checker.nullness.qual.Nullable (unused by mojang)

oblique tusk
#

ah thinkies

#

i wonder when JSpecify is going to be thrown into that mix /j

fleet dome
#

Erm... wrong channel πŸ˜„

frank sigil
#

should we start kits this or next snapshot or even wait longer?

#

looks like a early/mid march release

warm night
#

Are there other farm animals??
Don't think they will add any more features.
Maybe some data pack stuff but even that feels like a lot already

frank sigil
warm night
#

Yeah that would be ... Confusing

fallow merlin
#

Warm Pink Sheep kekw

frank sigil
#

we could ask gegy or boq...

fallow merlin
#

yea

gleaming pendant
frank sigil
#

on it

#

ok place your bets now how many rejects

gleaming pendant
#

120 files

#

Is my bet

#

(definitely less :P)

frank sigil
#

83 files

#

9 of which are missing their target class

#

14 are in the client package

frank sigil
#

oh god we need to introduce our own system for registering annotation based gametest functions now as they are a static registy of Consumer<GameTestHelper> now

gleaming pendant
#

Sounds annoying

sterile abyss
#

yeah I'll need to look into game test stuff..

gleaming pendant
#

Registering everything by explicitly enumerating the tests is not great

sterile abyss
#

πŸ₯–

gleaming pendant
#

But maybe we need to think a little before reimplementing the old solution 1:1

frank sigil
#

well we had 5 patch files in gametests and 3 of them are missing the class and the other 2 have rejects

frank sigil
#

we need to re think item abilities

#

maybe an interface on the component that provides the abilities?

gleaming pendant
#

Huh

#

Did something change with item abilities?

#

Always the unexpected kek

frank sigil
#

well shield blocking is no longer on the item but on a component

#

same for pickaxe mining and everything sword related

#

the sword and pickaxe classes are gone now and even the shield class has just the getName method left

#

gonna stream porting later

floral mesa
#

that's just continuing what they already did with the bow, right?

frank sigil
#

well crossbow and bow still have their own classes, pickaxe and sword do not

proven compass
#

shouldn't you just remove the item abilities that are now components

#

since they can now just add the component

frank sigil
#

abilities are mainly for recipes afaik (at least I saw a mod having an ingredient for it)

proven compass
#

don't we have a component ingredient in neo

#

I thought they were used to pass vanilla hardcoded checks

sterile abyss
frank sigil
proven compass
#

and since vanilla now checks for the component

#

is essentially the same functionality as the ability

#

instead of adding the ability you just add the component that's actually more configurable

proven compass
#

components just need to be specified on stacks

proven compass
#

ohh i misunderstood

#

that would be cool

frank sigil
#

hmm since Block#onRemove is gone now where should we invalidate the composter capability

#

for now I used affectNeighborsAfterRemoval

gleaming pendant
#

The way I'd usually go about this is open a workspace for the past version and see how each call site of onRemove got updated

fleet dome
#

Yeah

#

Git worktree to checkout the old version in parallel

frank sigil
#

well I know what onRemove was for and what it is now (based on the primer)

fleet dome
#

Yeah but I find it usually easier to check how Vanilla updated their concrete call-sites of onRemove

frank sigil
#

62 rejected files left

frank sigil
#

huh there is a patch in ItemStack deprecating a private method and the comment points at a non existent class in neo

haughty spade
#

what class? πŸ€”

#

what method?

frank sigil
#

TooltipUtil#addAttributeTooltips

haughty spade
#

it's in AttributeUtil in 1.21.4

frank sigil
#

Progress 28/83 files

gleaming pendant
#

I'll look at the attachment saved data when I get home in a bit

gleaming pendant
#

update: it's not that nice

gleaming pendant
#

ok I did it πŸ˜„

#

re ItemAbilities, we could implement the default component-based abilities in IItemExtension#canPerformAction

proven compass
#

but why tho

#

like in what case would the item need to have an ability that cant just add the component

gleaming pendant
#

NBT?

gleaming pendant
#

not touching it anyway

vagrant obsidian
#

It's almost like I started work on this because I saw it coming, Tech... /s

gleaming pendant
#

I found a solution for now πŸ˜„

#

Mojang has this weird Function<Context, Codec> so they might be cooking something πŸ˜›

soft pivot
#

are the datapack blocks/items, still being worked on?

haughty spade
#

no explicit progress has been made since the initial block codecs stuff

#

the belief is that mojang is doing Data Components as a step toward that

#

ultimately leading to the vast majority of logic being in data components

warm night
#

yeah
it will take a long time to get there

haughty spade
#

and not needing "item type" or "block type" classes

#

I wouldn't be surprised if we see sometime this year, BlockEntity being completely removed from the game

warm night
#

no idea how they are going to do the item specific behaviour like a crossbow

haughty spade
#

in favor for block data components stored in the world along the blockstate

warm night
#

will we get some "loaded-projectile-firing-device" component?

haughty spade
#

I think it would be a combination of 2 components

#

a 1-item container + a crossbow load-and-shoot component

warm night
#

hmmm
so one would make a container out of the item
the other would put stuff in it and fire it

#

I could immagine spliting even that
a projectile firing component, that can get the data on what to fire form 2 places, static and other component
so you could merge the logic for the enderpearl and snowball as well

haughty spade
#

hmm

#

it could be precedence order

#

if item has projectile, use item projectile, else look in player inventory

warm night
#

yeah that could work

#

now just to ping a mojangsta to ask where we should send the bill for design work

#

(in all seriousness my ideas on this are free to use LOL)

haughty spade
#

I remember some tv show producer that complained about fans sending them ideas

#

because while some of the ideas were good, they had to reject ALL of them because of the legal risk that someone would sue them for royalties

warm night
#

exactly

haughty spade
#

and that meant any idea they read from those fans would also be banned from being included in the show even if they had already come up with it themselves

#

so they had to employ a separate person to look through their mail

#

to ensure that they weren't tainted by fan mail ideas

#

the way I see it, ideas have no intrinsic value, so they shouldn't be protectible

warm night
#

blobcatgooglyshrug
That is a radical idea manybe you should try to protect it /s

haughty spade
#

it would be interesting, though, if every time someone comes up with an idea for update features, mojang had to go "fuck there goes the last 5 years of work" because it was what they had been doing :P

nova canopy
#

Could they not for example show their commit history in court (or something like that, I know commits can be doctored)

#

In the case somebody were to sue

haughty spade
#

I mean ideas are not copyrightable

#

in the EU or US, AFAIK

#

so they wouldn't even need to do that

frank sigil
#

coeh we are not at the fix compile errors stage yet, there are still a few patches that need fixing first

cinder saffron
#

At least, the ones important enough to make decisions.

fallow merlin
#
Blocks.FURNACE.registerHandler(new Hander() {
   // CODE
})
#

Dunno

#

Exciting times tho!

limpid crypt
#

no snapshot today(?)

winged salmon
#

could be in an hour

#

the last couple were in an hours time

haughty spade
#

yeah still 2 hours margin for them to release

limpid crypt
#

By the way: Mojira is closed/down

haughty spade
#

JIRA stopped offering self-hosting support

#

forced everyone to move away from JIRA or move to their cloud services

#

mojang chose the latter

#

"mojira" is now cloud-hosted

steep hamlet
#

they said this a few times

weak lichenBOT
#

[Reference to](#mojira message) #mojira [➀ ](#mojira message)⚠️ Final reminder to migrate your Mojira account! ⚠️
Migrate your user account here: ➑️➑️➑️ https://aka.ms/MojiraMigration ⬅️⬅️⬅️
This takes less than a minute with just a few clicks!

Bug reports themselves should not be affected by the user migration; however, associated personal data may be removed if a user doesn't give their consent. Therefore we cannot guarantee that you retain access to your bug reports if you choose to not migrate.

Mojira will be fully offline between February 10 and February 12. The migration consent form is open until this downtime starts and we start with the actual migration.

You can read more about the migration in this article: https://minecraft.net/en-us/article/final-days-to-migrate-your-bug-account

limpid crypt
#

I know, I just forgot that Mojira maintenance was today

oblique tusk
winged salmon
#

New stuff on Bedrock that is coming to Java soon

plucky sentinel
spice geyser
#

where ping explosion

#

oh they haven't actually released it yet lol

dark wasp
#

ahh so for sheep they're not making new sheep breeds like they did the other livestock, they're just reusing dyed sheep

cinder saffron
#

That's probably the best option, really.

soft pivot
#

I think we should get mountain sheep with big horns

cinder saffron
gleaming pendant
#

Where's the snapshot? thonk

vagrant obsidian
#

camels spawning across the desert
woo, renewable camels! :D

final kiln
#

still no slapjoke?

final kiln
#

damn they are over 1h late

steep hamlet
#

make it 3

supple lynx
soft pivot
#

or at least I would like goats with coloured wool

thin cairn
#

So either they're skipping this week's snapshot or releasing it later in the week

real bolt
#

thonk snapshot alarm?

#

<@&1067092163520909374>

fallow merlin
#

?

sterile abyss
#

still no workflow harold

spice geyser
#

oh Shit there it is

sterile abyss
#

Frogday on a Thursday, who thinks of that?!

cinder saffron
#

Wow, that caught me by surprise!

floral mesa
#

During the downtime, try to keep the bug alive and report it once Mojira is back!

sterile abyss
#

Shader program definitions for core shaders and post-processing effects as JSON files have been removed
The shader programs themselves are still available and can be overridden
The post-processing effects are still configurable as JSON

#

When on ground, model size is now taken into account when determining hovering motion
That means that models should never clip into the block below, no matter what size they are
nice

frigid sand
#

thonkies sheep color rules, that probably both makes it easier and harder to find the right colored sheep

cinder saffron
real bolt
#

The post-processing effects are still configurable as JSON

#

It's solely the core shaders from the sounds of it

oblique tusk
#

OH LAWD

oblique tusk
#

The look of both Mooshroom variants have been slightly updated to have an extruded snout
yay

real bolt
cinder saffron
oblique tusk
#

FYI, changed Kits default branch to reference 25w06a branch

floral mesa
#

substantial baked model refactors

#

(cc @frail patio)

#

QuadCollection looks like an attempt to reduce memory usage of the backing lists in simple baked models, by having each direction be sublist wrappers around a single backing list. I don't think that strategy is any more effective than just using singleton lists where possible (like FerriteCore does), because each sublist wrapper is still another object. However, the removal of the EnumMap is probably beneficial

#

ModelResourceLocation is now gone

#

model baking now runs in parallel, which is nice

weak wasp
#

I think they've killed off the shader JSONs

unkempt lynx
#

There's a new system called RenderPipeline that stores what I'm calling "shader-local state" (sampler names, uniform names, color/depth state)

#

as well as a new GpuTexture system that everything has been modified to use for Tracy

#

all textures are now sized formats as well

weak wasp
#

Though I'm pretty sure the jsons removal are just for anything that isn't a post effect

floral mesa
unkempt lynx
#

quite a bit, not critical

#

their new "snippet" system is very interesting

#

it's literally mix-and-match shaders

#

so (in theory) you could do RenderPipeline.builder(MATRICES_SNIPPET, FOG_SNIPPET) along with an appropriate shader program and get a 3D, uncolored shader affected by fog

#

though a more reasonable snippet looks like this

#
 private static final RenderPipeline.Snippet TERRAIN_SNIPPET = RenderPipeline.builder(MATRICES_COLOR_FOG_OFFSET_SNIPPET).withVertexShader("core/terrain").withFragmentShader("core/terrain").withSampler("Sampler0").withSampler("Sampler2").withVertexFormat(DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS).buildSnippet();```
dark wasp
#

codecs for shaders thinkies

unkempt lynx
#

Dinnerbone's confirmed KHR_debug's being used internally with this new system

#

if Neo wants, the GpuTexture class can probably be hooked back up to use it (the calls themselves are removed to keep hardware compat presumably)

floral mesa
#

probably makes sense to reintroduce behind the IS_RUNNING_IN_IDE flag

#

it's very nice to see in renderdoc

unkempt lynx
#

they talked on fabricord and sodium

oblique tusk
#

also, on that note, I noticed some while ago that Dinnerbone is no longer the Technical Director for Minecraft (JE)

unkempt lynx
oblique tusk
#

(I think I noticed it while going through some things about mapping)

oblique tusk
#

also, on that note, good to see he's active again, after what I recall to be quite a long break from things...?

unkempt lynx
#

he's been working on a lot lately

#

idk how much "public" stuff, but he's responsible for the entire Tracy system last I remember

#

even the JNI bindings are custom made and public

oblique tusk
#

neat!

raven blade
#

is a mod made by β– β– β– 

gleaming pendant
#

The XXX field will no longer be preserved when removed
What does that mean?

oblique tusk
#

I think it might mean that if the datafixer removes the field (duet to a migration of some sort), it won't keep the field in the entity data afterwards

tardy leaf
floral mesa
#

the concurrency bug still exists in MultiPartBakedModel.selectorCache, may still be hidden by the lack of deduplication, didn't check

floral mesa
tardy leaf
#

You mean, like, specialize that somehow? Since it will end up with 6 single-element lists right now

floral mesa
#

I think it doesn't save memory to use sublists over singleton immutable lists for that case, so I was intrigued as to why the sublist approach was chosen

#

since it requires more effort πŸ˜›

fallow merlin
tardy leaf
#

But Guava already handles 0 and 1 element sublists by returning separate immutable lists, that's the point

floral mesa
#

OH!

#

now I understand what you mean

#

that's very clever then

tardy leaf
#

They probably figured out that it ends up with less memory than reference to parent + range . But disappointed that List.of does not do that, though

merry falcon
#

Codec UI when

tardy leaf
floral mesa
#

assuming a given MultiPartBakedModel is shared by multiple blockstates, two chunk meshing threads can simultaneously call getQuads with different states, and both may attempt to insert into the selector cache at once

marsh mural
#
Minecraft.net

Minecraft Snapshot 25w07a

Snapshot 25w07a is here with parts of the Villager Trade Rebalance, new Camel and Sheep spawns, new Mooshroom models and more! Check out all the news here! #minecraftemployee

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

β–Ά Play video

Snapshot 25w07a brings datapack version 67 and resource pack version 52 with changes to entity data, item model rendering, shader definitions and more! Here's a guide to the changes! #minecraftemployee

slicedlime works as a Tech Lead for Minecraft at Mojang, but the YouTube and Twitch channels are personal projects run entirely in his spare tim...

β–Ά Play video
tardy leaf
floral mesa
#

In the past there has been another bug in vanilla model loading that causes a separate MultiPartBakedModel instance to be allocated for every blockstate (not just block), which hides the issue

#

but yes it can trigger a CME or the fastutil equivalent

oblique tusk
#

mo' jira

tardy leaf
#

Anyway, model refactors part 2/?, don't know where more will land, but if there is something annoying, let me know

oblique tusk
#

the model refactors will continue until morale improves

floral mesa
#

I think models are the new trees

oblique tusk
#

por que no los dos?

#

-# why not both?

frigid sand
weak wasp
#

I want to retire already

tardy leaf
unkempt lynx
oblique tusk
#

an impostor!

#

-# /jk

frigid sand
oblique tusk
#

chariots, chariots

merry falcon
#

Implementation detail is an exercise left to Mojang

real bolt
fallow merlin
fleet dome
#

ah nvm you already answered it in the screenshot

frigid sand
#

not codecs for creating UI

#

but also, that shouldn't be that hard to implement

merry falcon
#

You full well know a ui for making codecs would look like Scratch

frigid sand
#

for the existing element types

merry falcon
#

And I HATE SCRATCH!

frail patio
#

Hm, the actual model format did not change

#

I was hoping for per-model or per-quad RenderTypes in json

frigid sand
#

you basically just need to define the json schema, the codec part is relatively simple once you have that

weak wasp
#

Ok, making a call, primer won't be ready until Sunday

frigid sand
#

but having a nice schema is a bit hard

weak wasp
#

There are just too many things I need to investigate

frigid sand
#

depends on how configurable you want to have it

fallow merlin
frigid sand
#

thonkies I wonder how mcreator implemented codecs

fallow merlin
frigid sand
#

since afaik, that uses scratch like blocks

fallow merlin
#

What if you made a codec system that just used annotations harold

frigid sand
#

exists

fallow merlin
#

Damn

frigid sand
#

iirc

fallow merlin
#

That's nice

#

Does it use ASM to make it even more efficient?

unkempt lynx
#

write your codecs in pkl

fallow merlin
#

Lmao

frigid sand
#

pkl?

split oasis
frigid sand
#

mojang using scratch internally to write codecs

oblique tusk
#

who knows what kind of tooling they have internally to cope with their own code

frigid sand
#

code like this

trail fable
#

wdym, that's perfectly readable

fallow merlin
#

Sheesh

#

Very readable indeed

real bolt
#

Still waiting for typealiases in java harold

fallow merlin
#

What that do?

frigid sand
#

best part, you can't even var that since it's a return type

trail fable
#

type aliases would be a godsend

frigid sand
fallow merlin
#

Ah

frigid sand
#

and then you can just use ThingMap everywhere

fallow merlin
#

Huh

trail fable
#

they're usually local to one file

fallow merlin
#

What's a good example for what may look like?

frigid sand
#

import them Β―_(ツ)_/Β―

trail fable
#

C has something vaguely similar with #define (though that can also do some more things)

sterile abyss
#

budget macros LUL

frigid sand
trail fable
weak lichenBOT
#

[Reference to](#modder-1β€€21β€€1-support message) #modder-1β€€21β€€1-support [➀ ](#modder-1β€€21β€€1-support message)```java
typealias Opt<A> = Either<A, Unit>
typealias DynamicPair<A> = Pair<A, Dynamic<?>>
typealias DynamicOptPair<A> = Pair<? extends Opt<A>, Dynamic<?>>
Type<? extends DynamicOptPair<
? extends Pair<
? extends Opt<?>,
? extends DynamicOptPair<
? extends List<
? extends DynamicOptPair<?>
>
>
>
>

trail fable
#

or yeah, avoiding DFU kek

frigid sand
#

oh right, not my code, but that code

real bolt
#

Compared to the original #modder-1β€€21β€€1-support message

frigid sand
frigid sand
glass wagon
trail fable
frigid sand
#

unless you have a funny overload that does Pair<A, A>

#

generic overloads would be funny kek

steep hamlet
#

nor are his texts....

tired bluff
#

Κ‡Δ±q ǝΙ₯Κ‡ oΚ‡ Κ‡uǝɯʇıɯɯoΙ” ǝʌıssǝɹdΙ―Δ± uɐ ǝq pןnoʍ Κ‡I

frail patio
#

This is definitely the snapshot to consider adopting a FRAPI-like pipeline

#

The item side of FRAPI is kind of destroyed but so are some of Neo's equivalent item side model extensions. The block side of FRAPI holds up fine besides moving some things around.

thin cairn
thin cairn
#

typedef int AnotherType (but please don't use int in C)

gleaming pendant
frail patio
#

Definitely not, but I'm just saying that this snapshot gives the best opportunity so far to actually make the API and get it into prod

trail fable
#

haven't used C a lot, so that's neat to know

frail patio
#

Model loaders are kind of screwed because while UnbakedModel still exists as an interface, it no longer extends ResolvableModel and it no longer bakes itself. Resolution and "baking" (turning it into a ResolvedModel) of UnbakedModels is fully hardcoded in ModelDiscovery now.

dark wasp
#

can we unhardcode it? thinkies

frail patio
#

Anything is possible with enough patches but it might be a bit painful

floral mesa
#

everything is broken anyway

fleet dome
#

Yuuup

dark wasp
frail patio
#

Block state definitions now search the entire resource stack which allows overriding the models for only some states of the block if a lower file already defines the models for the rest of the states

#

I don't think that was the case before

dark wasp
tardy leaf
#

it always was like that

dark wasp
#

what

frigid sand
#

πŸ‘€

cinder saffron
tardy leaf
#

unless something was broken before. But it was always an intention

frail patio
#

Interesting

frigid sand
thin cairn
#

Yeah that

#

You usually want to use int32_t instead of int

#

int can be 16-bit. It can be 32-bit. I believe it could be 11-bit if the compiler wanted to

gleaming pendant
#

It's 32 bits unless you're doing embedded

thin cairn
#

It's 32 bits on a modern computer with a normal compiler

thin cairn
#

But there's nothing in the spec, so you can't trust it

gleaming pendant
#

You can trust it on modern computers

thin cairn
#

Use a fixed width type if you want full safety

frigid sand
#

minimum size is in the spec

gleaming pendant
#

If you're building a win32 exclusive app you can trust it to be 32 πŸ˜›

frigid sand
#

should be at least

limpid crypt
#

Snapshot 25w07a is here with parts of the Villager Trade Rebalance, new Camel and Sheep spawns, new Mooshroom models and more! Check out all the news here! #minecraftemployee

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

β–Ά Play video
eager mirage
#

25w07a neoform build failured #builds message

glass wagon
#

ecj exclusive compile error

sterile abyss
#

why is that an error

glass wagon
#

it can't find the livingentity1 variable for some reason

frigid sand
#

thonkies for some reason instanceof in a ternary seems weird

glass wagon
frail patio
# floral mesa agreed

I would recommend you and others wanting to work on these changes keep an eye on the FRAPI thread of the API channel in Fabricord as I am discussing how to port FRAPI to 1.21.5. Ideally everyone would agree on the design decisions so the APIs between loaders are not so different.

frank sigil
#

ok so to whom do we assign the client classes (basically a lot of rendering stuff) in Kits?

lunar saffron
#

That's inevitably going to be Tech, embeddedt and me πŸ˜…

frank sigil
#

why we have a monica

lunar saffron
#

Add her to the list, doesn't make a huge difference though

oblique tusk
#

smh, downplaying the importance of a Monica /j

gleaming pendant
#

There's still a lot of other rejects, no?

#

(not even talking about yesterday's snapshot yet, we should finish the previous one first)

#

Maty should also fix the testframework πŸ˜„

frank sigil
#

yea the remaining stuff can be categorised as

  • item abilities
  • entities
  • saved data
  • tickets
  • networking
  • client
haughty spade
#

how much do the new changes invalidate the changes from 1.21.4?

#

like, is there overlap or is porting to 1.21.4 still a time saver toward 1.21.5?

frank sigil
#

idk I'm not on 1.21.4 with any of my mods

weak wasp
#

I would say there is

#

Most of the changes are on different parts of the system

marsh crescent
#

oh crap, what changed with SavedData?

fleet dome
#

codecs

stiff flicker
#

the Factory is replaced with Type that takes a codec

stiff imp
#

wasn't that already in .4?

#

could've sworn I remembered doing that already..

marsh crescent
#

got it. thanks. i'm already using codecs so that'll just be a class replacement. nice

stiff flicker
#

now it is forced

haughty spade
#

wtf discord picking random emotes

#

it's going to be a major PITA to convert my existing uses of SavedData to codec

stiff flicker
#

Start doing it now to save time.

stiff imp
#

you'll be done just in time for them to change it again in .6

#

lol

haughty spade
marsh crescent
#

just start making wrappers for everything so you end up with StreamCodecWrappingCodecWrappingNBTSerializerWrapper

haughty spade
stiff flicker
#

I am trying to keep up with snapshots this time around. 07 is pretty rough, we use a good amount of custom RenderTypes. They made a ton of stuff protected and package private. So making new RenderTypes is going to be messy.

haughty spade
#

I use custom render types in this mod too

#

just one though.

stiff flicker
#

making a new RenderType.CompositeState is...

#

one sec

#

all protected

haughty spade
#

I wonder if the shader is why the book isn't working πŸ€”

#

nope

#

anyhow my 1.21.4 issues don't belong in this channel

stiff flicker
#

usually means it cannot find a texture if it is purple and black

haughty spade
#

yeah

#

it's 99.98% definitely the way I adapted the model stuff

#

my AnimatedBookBackground stuff is 4 baked models that I interpolate between

#

problem is, there are no warnings about texture resolution issues

#

oh I think I know what it is thonk wasn't it

frail patio
# tardy leaf Anyway, model refactors part 2/?, don't know where more will land, but if there ...

QuadCollection and List<BakedQuad> being used to represent static geometry is really inconvenient because Fabric's API has its own representation of static geometry which is necessary for extended features, but I don't know how this could be solved. It wasn't an issue before because BakedModel always acted as a supplier of the static geometry, so the API could just call a custom method, but now the static geometry is being passed around directly in areas where mods might want to customize it with extended features.

Also, I can suggest two simple ways in which BlockStateModels can be made more efficient, especially multipart models

tardy leaf
#

Well, I have some stuff pending for multipart (like sharing actual data), but it might be useful to see if I missed something
Though I'm not touching that concatenation of quad lists that happens inside multipart, that's going to be solved later

#

But what are those extended features? Is it feasible to just custom implementations to block state and item models that get their geometry from something else, instead of piggybacking that simple format in model/?

compact hare
#

Seeing Mojangstas around here is always a nice surprise, I gotta say

tardy leaf
#

I mean, it is static geometry, because it's a class meant to store static geometry

#

And from design point of view, it can't do much, because it's called in two non-overlapping contexts (items and blocks)

lunar saffron
frail patio
frail patio
lunar saffron
frail patio
#

Null cullface quads are always rendered, so the set doesn't need to keep track of the null face

tardy leaf
#

arbitrary extended features
yeah, but no, not really a fan of stuff happening down the rendering stack

tardy leaf
frail patio
#

In Fabric by default those features aren't even available through json, though they are in Neo

tardy leaf
#

It seems like good chunk is about quads itself, what if that was an interface?
if you don't want to add stuff to existing record?

lunar saffron
frail patio
tardy leaf
#

you can still produce whatever quads you want, since there is still quad producer as a field on unbaked model

#

*two
** it's complex

#

IIRC

frail patio
#

Of course vanilla already supporting the use case would be nice

#

While we're on the topic of models I want to bring up that VertexConsumer#putBulkData reads color differently depending on the endianness of the system tiny_potato

tardy leaf
#

also, it's less of virtual call and more of a instanceof, since no matter how you override you can't get extra data out if it
and instanceof costs just a single branch in most cases

frail patio
#

Ah yeah. In my mind I was considering methods like getPosX(int vertexIndex)

#

Still, Fabric's representation encodes an entire List<BakedQuad> and there are no separate objects for each quad (the default impl stores all quads in a big int array) so switching on the list or QuadCollection would be a lot better

fallow merlin
#

They removed alot of Shaders?

weak wasp
#

More like reworked

#

Too many things changed so the primer will be up Sunday

proven compass
#

it said they removed the files

#

does that mean the shaders are in code now perhaps thinkies

stiff flicker
#

The jsons are now code, yes

#

Not sure why they changed that.

fallow merlin
#

Cool

#

Hrm

fallow merlin
proven compass
#

thats my thought

fallow merlin
#

Its for internal use only, for vanilla

#

For modded, we could readd it back

proven compass
#

tho why were they json in the first place

#

if they werent meant to be changeable

fallow merlin
#

Perhaps its was easier

#

or they were going to make it offical

#

But then backstepped on it

#

boq could answer that maybe xD

proven compass
#

the dev notes have said for a while that they eventually plan to improve the system

fallow merlin
#

Yea

#

For the sheep color thing

Should it be an event that gets fired everytime the game wants to get a sheep color

#

DyeColor SheepColorrSpawnRule#getSheepColor(Holder<Biome>, RandomSource)

raven blade
#

think it would be best to wait and see what they do before release

#

I personally don't like the idea of it being an event though. at a glance, a data map would be suitable

proven compass
#

im still hoping they revert this

#

and give us real sheep variants

#

something like this

fallow merlin
proven compass
#

many

#

its a neo invented thing

fallow merlin
#

Link?

proven compass
#

look at NeoForgeDataMaps

proven compass
fallow merlin
#

Neat

limpid crypt
marsh mural
stiff flicker
#

So, with 25w07a. They got rid of RenderSystem.recordRenderCall which is annoying.
When our texture cache expires, the get released off the render thread.

thin cairn
#

You should never do anything like that off-thread. The old system was broken and shouldn't have been used. Use Minecraft#execute

unkempt lynx
#

^

#

when you do recordRenderCall, you're gambling away your state

#

there's no guarantee the game will be in a good state when it's run

#

You shouldn't use Minecraft.execute either, that's moving the problem

#

you need to make your own place and time to upload with guaranteed state

#

(Notice that in 25w07a Mojang never uses this anymore, they always have guarantees for when stuff is done)

stiff flicker
#

It's not an upload issue. It's releasing the textures from cache when they expire. I'll probably have to change how caching is done.

gleaming pendant
#

reminder for future me: this is how files that were deleted in a MC update can be removed locally: git clean -fxn projects/neoforge/src and if it seems right, run again without -n

#

still a lot of rejects heh harold

#

44 left

#

wtf are these patches harold

sterile abyss
#

fluids

limber ginkgo
gleaming pendant
#

especially the first one

#

they're such a PITA to update

sterile abyss
#

because fluids

limber ginkgo
#

core shaders are still unsupported, but they just want to provide alternatives so people don't have to resort to core shaders

sterile abyss
#

fluid patches have always been a painful black box

fleet dome
#

That shit really needs comments why the change was made when it was made

#

especially in patches that are hard to get proper history for

river mural
#

Iirc it was a little cleaner on the first pass before lex had ash rewrite things… granted I was the only triager willing to spend the time reviewing the PR (and the predecessor)

#

But yes, ideally eventually mc will add a new fluid and decide to clean up fluids to be less of a hardcoded mess of if statements vs method calls

gleaming pendant
#

we should delete fluid patches and see if anyone complains kek

stiff imp
#

or they'll make it worse and somehow cram enums in there

stiff imp
#

I'm already complaining cus they still have holes lol

#

like modded fluids being unaccounted for properly in isEyeInFluid or updateFluidHeightAndDoFluidPushing

gleaming pendant
#

look at this lol

stiff imp
#

who needs OOP

gleaming pendant
#

we need more manpower for this update, @ maintainers please help with the simple rejects

floral mesa
sterile abyss
#

i can look at tests tomorrow morning

gleaming pendant
weak wasp
#

Seems like part of the geometry stuff can be gutted due to vanilla's UnbakedGeometry

frail patio
#

The geometry stuff was already removed in 1.21.4

#

Some of the new system is not sufficient for modders' use cases and needs to be appropriately extended

#

For example, model loaders are almost useless without extending the system

weak wasp
#

Ah right, there was model changes in 21.3 too because of the item stuff

#

Honestly, I feel like this snapshot primer has made me forget most things about the current version

stiff imp
#

I mean that's fine

#

the amount of changes and reverts that are happening, current knowledge is quickly becoming irrelevant lol

weak wasp
#

@marsh mural

#

As everyone is probably already aware, main changes are the render pipeline rework and model separation, along with some changes in block effects when inside a block.

sterile abyss
#

ah yes...

#

game tests are...

#

lovely...

#

yeah well bad and good news

#

the vanilla system uses a dynamic registry which is really hard to bypass

#

so I think mojang just forced our hand to add registry callbacks for dp regs

#

because I think we can all agree that needing a json file for each test is unacceptable and just not how tests work

dark wasp
#

thinkies but you can datagen gametests now

sterile abyss
#

sure? but now instead of an annotation like how testing works in the entire java ecosystem you need to first run the game after each test metadata modification / new test to then proceed to test... which is completely backwards

#

and it would also require a lot more setup for mods when the point of gametests was that it would also be easy to set up and write a simple test for

fleet dome
#

No data-gen for tests please

sterile abyss
#

now, what is the best way to do this

#

should fire a modify registries event for dyn regs but how

sterile abyss
#

but then we'll have to change the api of ModifyRegistriesEvent to be modifyRegistry(key, registry -> {}) style

#

I'll hardcode a patch for now and we'll settle on some api later

fleet dome
#

Hm, do you mean the RegisterEvent or whatever it's called or really ModifyRegistries?

sterile abyss
#

the one you use to add callbacks normally

#

we'll also need some entrypoint changes probably

merry falcon
#

Does fabric have callbacks already for dyn reg?

sterile abyss
#

no

#

fabric did what I did

#

the "we'll add a hacky special case"

dark wasp
#

mojang: finally rejects the annotation-based-test cargo cult
also mojang: replaces it with something even worse

sterile abyss
#

it's not a cult to be rejected, it's what annotations are made for LUL

dark wasp
#

ah well, I'll figure out how to use mojang's new system anyway

sterile abyss
#

I refuse to believe that internally they use the data driven system anyway

#

you can do whatever you want, this is a free world

dark wasp
#

I use vanilla game events for mod apis too harold

sterile abyss
#

oh ugh

#

the chunk loading patches are rejected

#

@lost imp so uh, mojang split item sub predicates from testing on the item to testing on the component

#

the gameplay enchantments event is broken again LUL

gleaming pendant
#

I wouldn't rush a dynreg modification event

sterile abyss
#

I'm about to commit crimes with these cursed gameplay component "modification" events

#

I can fortunately override matches(DataComponentGetter) in super

#

could have been worse

#

I love how mojang "fixed" this

#

they just removed the index from the method

#

I'm deleting the reject for now, if someone needs us to patch an index overload in we'll see

#

so

#

what do we do with tool actions

#

since mojang no longer has special pickaxe and sword classes (and is very close to not having a shield one either) and instead has components for that

haughty spade
#

does a custom data component in an itemstack break vanilla connections?

sterile abyss
#

yes

haughty spade
#

then the idea of a HasAbilities component wouldn't work

#

one option would be to make the "canPerformAction" (whatever default the method is called now) in itemstack check for data components to resolve pickace_dig and such

gleaming pendant
sterile abyss
gleaming pendant
gleaming pendant
sterile abyss
#

the alternative is removing the extension methods

#

removing features is not on my port to do list πŸ˜›

gleaming pendant
#

Removing duplicate features is fine though

sterile abyss
gleaming pendant
#

Well, the same applies for other tools

sterile abyss
#

but no there's only one component

#

well, Weapon and Tool

gleaming pendant
#

Maybe we just remove some tool actions in favor of the corresponding vanilla components

sterile abyss
gleaming pendant
#

Well, attribute modifiers are a component right? But it's annoying and won't allow for an event sadly

sterile abyss
#

well yes, it's not a duplicate feature since the event is the feature :P

#

(an annoying event to patch vanilla to use, mind you, but a feature we've been dragging for a while regardless)

frank sigil
trail fable
#

removing tool actions in favor of components? yes please

frank sigil
#

instead of hacking into the system for dp registries just use in memory virtual datapacks to register the tests

frank sigil
sterile abyss
#

like the test function

#

which yes before you mention it exists as a registry. but a static one

#

and having people also register to that is even more pointless complexity

frank sigil
#

well we can register based on annotations to that registry and handle the dp registry part through the virtual datapack

sterile abyss
#

you're overthinking it

frank sigil
#

virtual datapacks is how I did the vanilla potion brewing recipes in my porion recipes PR

sterile abyss
#

this is dev only, it doesn't need to be "proper", and you also want tests to be reasonably fast

fleet dome
#

No

sterile abyss
#

virtual datapacks are overhead

fleet dome
#

Christ, we need the different style of registration anyway

#

for parallelizing registrations later

frank sigil
#

I'm not but adding events to dp registries opens the door for people to not datagen stuff and instead just staticly register it to the dp registry

sterile abyss
#

there's no general event right now, as I said I hardcoded it

#

(and datagen doesn't solve all use cases for the event, people generate stuff at runtime - and registering directly would be usually more efficient and better for those mods instead of the de/ser cycle, but that's besides the point)

sterile abyss
#

todo for what, we aren't sure if we even want a general event right now thinkies

frank sigil
#

we do not want an event there, as I said people should be using dp registries the way they are meant to be not like static ones

sterile abyss
#

it has been a point of discussion on and off for a while

frank sigil
#

down to 13 reject files

river mural
weak wasp
#

That’s still a subclass for item

#

I wouldn’t be surprised if right click behavior was migrated at some point though

floral mesa
#

we would benefit from some virtual datapack system that doesn't require actually serializing

fleet dome
#

how is that any different from a reg-callback

frank sigil
floral mesa
gleaming pendant
#

damn I had one commit left locally

#

oh well, let's see why I have conflicts

#

@glass wagon are you sure about this change?

glass wagon
gleaming pendant
#

but why

#

oh

#

actually no it still doesn't make a lot of sense to me

merry falcon
#

Wait a minute

#

That setup means I can’t use the event to make it have a null player

#

Right?

#

Like disable the following

gleaming pendant
#

you can if you call event.setFollowingPlayer(null)

merry falcon
gleaming pendant
#

vanilla already had this code somewhere else

gleaming pendant
merry falcon
#

O

gleaming pendant
#

anyway coeh I'll undo that change since I don't like it

river mural
gleaming pendant
#

the fluid patches are REALLY ANNOYING to update

#

I don't even want to know how many vanilla parity issues we have

#

TG please save us

fleet dome
#

Well, once it compiles, we should

sterile abyss
fleet dome
#

Wait I thought they included them?

#

Or did they just add a way to load user-tests?

sterile abyss
#

just that

fleet dome
#

Pfffffffffff πŸ˜„

gleaming pendant
#
-        if ((!this.isInWater() || this.isUnderWater()) && flag3 && this.minecraft.options.keySprint.isDown()) {
+        if (!this.isSprinting() && (!(this.isInWater() || this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType))) || (this.isUnderWater() || this.canStartSwimming())) && this.hasEnoughImpulseToStartSprinting() && flag3 && !this.isUsingItem() && !this.hasEffect(MobEffects.BLINDNESS) && this.minecraft.options.keySprint.isDown()) {

@merry falcon when are you cleaning up this nightmare?

#

fuck it if these fluid patches are the last ones I'll just move them to a different folder and let other people have "fun" with them

merry falcon
#

I don’t think I ever will be able to. Keep losing motivation and haven’t touched fluid branch since the one day I started lol

gleaming pendant
#

@sterile abyss the only shield tool action is SHIELD_BLOCK which looks superseded by the BlocksAttacks component

#

so I suggest that it gets removed

merry falcon
#

Does swords have blocking behavior and do they use BlocksAttacks

proven compass
#

swords havent blocked since 1.8

#

they can now if u put the component on them

#

as can any item

gleaming pendant
#

the component seems exclusive to shields

#

(by default)

proven compass
#

correct

#

i know it'd be just until we get json items but i wish we had item modifiers

#

a bandaid solution to the ModifyDefaultComponentsEvent for vanilla

#

that way a datapack would be all u need to add sword blocking back

gleaming pendant
#

what's the point of the PICKAXE_DIG tool action?

floral mesa
#

@gleaming pendant what's the issue with the fluid patches, is it not clear where they should be applied to now?

river mural
#

Maybe completeness sake. Some of the dig ones we replace loot tables for

#

Namely shears

#

But I think it predates that

gleaming pendant
river mural
#

Maybe @haughty spade who initially made the pr remembers

#

If it was even a pr (might have been a direct commit)

lost imp
river mural
#

yeah, I think the idea might have been for ability based ingredients in recipes

gleaming pendant
#

pickaxes don't have any class anymore

#

public static final Item STONE_PICKAXE = registerItem("stone_pickaxe", new Item.Properties().pickaxe(ToolMaterial.STONE, 1.0F, -2.8F));

lost imp
gleaming pendant
#

"someone" has to do it though

proven compass
#

because the community loves refactors like that harold

gleaming pendant
#

I would go for a much more limited set of initial patches

lost imp
#

The pickaxe dig action might be replaceable with the pickaxes item tag? Not sure. The tool action is useful for dynamic scope, unlike tags

gleaming pendant
#

even targeted patches if possible rather than trying to completely overhaul the system

proven compass
#

wasnt there a thing where u asked devs how they used something before refactoring it

#

u could just find out how the fluid API is being used now and cut off anything unnecessary

gleaming pendant
#

we have countless vanilla parity issues with fluids

lost imp
gleaming pendant
#

and the patches are difficult to update, probably partially outdated, and partially missing

haughty spade
#

stuff like "do I have a tool that can act on this block?"

#

and shit like that

#

I basically converted the old ToolType into ToolAction

#

1:1

#

and then added a few additional ones

lost imp
#

I use it to determine if an item is a pickaxe for apoth affix categorization

proven compass
#

sounds like something a tag should be used for

haughty spade
#

no a tag wouldn't work

#

because of fancy multi-tools

lost imp
#

Tags aren't dynamic

#

This is one of the largest shortcomings of vanilla

#

They have absolutely no solutions for dynamic behavior

gleaming pendant
#

there's no reasonable way to categorize pickaxes anymore

haughty spade
#

tech mods like to have things like "press J to switch between shovel mode and pick mode" type features

proven compass
#

which would now be covered by overriding the components

lost imp
#

I mean we can trivially provide the default tool action override as a tag check

haughty spade
#

so the canPerformAction method was stack-sensitive by design, to account for it

lost imp
#

Mods with custom items can override it to do appropriate dynamic behavior

proven compass
#

since switching between those modes is switching the Digger component or wtv

gleaming pendant
#

that's terribly not data-driven though

haughty spade
#

we are in an awkward phase for this

gleaming pendant
#

maybe tool actions should just be a data component kek

haughty spade
#

where the systems are partially adapted

#

and we can't have a good API

merry falcon
haughty spade
merry falcon
#

think of multitool items

gleaming pendant
lost imp
#

Just wait for vanilla to fix the creative menu

gleaming pendant
#

can't really since I am trying to fix pickaxes πŸ˜›

merry falcon
lost imp
#

Then SS-only components can actually exist

#

Well if they don't you cannot strip them in payloads

merry falcon
#

we are stuck with creative menu code forever

lost imp
#

They will be voided

gleaming pendant
#

remember what I said about custom data?

#

that's how item data attachments were synced in 1.20.4

lost imp
#

Did you have a way to un-wind the custom data back when received from vanilla creative clients?

gleaming pendant
#

yes

#

there was actually no special handling for vanilla clients

#

attachments would always get synced with the nbt tag

#

if the client was neoforge it would unpack the attachment nbt, otherwise it would just not care about it and send it back as is eventually in creative mode

#

this sort of patch is harold

torpid sandal
#

however, I do care that other mods want to ask that question

#

and they will do it wrongly if we don't have the tool action

#

honestly, my concerns which lead to wanting tool actions are almost all solved by just adding a neo level brokeness check

#

if I can add a way that other mods can check "is this item broken" and thus not do their stuff, things are easy and I can attach behaviors to the item instance

#

now, Tetra doesn't have that luxury unless it changed recently as all their tools are a single item instance

#

since I don't see it at a quick glance, can someone summarize for me the problem with tool actions on 1.21.5?

gleaming pendant
merry falcon
#

Without the pickaxe class, you arent able to attach the ItemAbility. Is that right?

gleaming pendant
#

indeed

#

because item abilities are not data driven at all

#

maybe I should look into server-side data components

lost imp
#

Just make the default tool action impl check the tag

uneven mesa
#

I could be missing something

lost imp
#

Mods have "sometimes a pickaxe" items

uneven mesa
#

Ah, sure

lost imp
#

So defaulting to a tag is fine, but the action has to be a stack-sensitive layer

uneven mesa
#

In that case this really does seem like something you'd want to model with data components

#

But of course, the whole client-server issue

#

How plausible are server-only data components?

torpid sandal
#

so, make them data driven?

#

why can't item abiltiies be a component with NBT assigning them like all the new vanilla components?

uneven mesa
#

...Isn't that what I said?

merry falcon
#

Breaks vanilla connection

uneven mesa
#

The issue is the server-client sync

torpid sandal
#

you said to make it a tag

merry falcon
#

vanilla checks data components

uneven mesa
torpid sandal
#

so datacomponents need to sync to both sides

uneven mesa
#

But yeah, server-sided data components looks like it may be necessary in general. Especially as it looks like mojang is heavily moving things away from being implemented in a item-specific class -- forge's APIs are going to need to adapt to that

torpid sandal
#

is there anything we can piggyback off?

#

e.g. what is .pickaxe() in item.properties?

gleaming pendant
uneven mesa
uneven mesa
torpid sandal
#

practically, its no issue if a mod does it

#

its just an issue if neo wants to add it to a vanilla item

gleaming pendant
#

the biggest issue is the creative menu and my proposed trick is to just shove unknown data components into the custom data component for vanilla connections

proven compass
#

if someone is giving their item a tool ability wouldn't it be required on both sides anyways

uneven mesa
torpid sandal
#

mods can add new data components, can they not?

uneven mesa
gleaming pendant
#

of course yes

uneven mesa
torpid sandal
#

thats all I'm saying. We only care about server-client sync because its a neo thing

#

we do have the worst case approach: tell mods "check if its vanilla or our component"

#

I've done that sort of thing a ton back when tool actions were new

uneven mesa
#

From what tech said there's no reason to have such an awful setup; that idea of shoving it in the custom data component should work I would think

torpid sandal
#

creative menu is always causing trouble

#

can't we just patch creative menu in Neo so client doesn't nuke server data?

uneven mesa
#

No?

#

Vanilla client, remember

#

It doesn't nuke server data as such. Or rather, that's not the issue here

#

The issue here is that neo can't just not send those neo-added components to a vanilla client -- it has to send them, because otherwise it won't get them back in the creative menu

#

I suspect a lot of item extensions that neo adds will eventually end up in this format... after all, vanilla is moving all of its own stuff to ItemProperties and components and whatnot.

#

If I had to wager, I bet they'll eventually be making Item final

torpid sandal
#

which will be a rough day for all of us when it happens

#

as another thought, some of these problems are caused by Neo needing to work when only on the client or server. I do wonder whether in the future it might be worth having some sort of build flag/config option to turn on server only or client only mode

#

it does seem like a lot of useful features get rejected over the years due to what I expect is the minority of the playerbase

#

hopefully not needed right now though

frank sigil
#

all in all it makes it too easy to do stupid stuff

sterile abyss
#

a virtual datapack doesn't have a json example either

frank sigil
#

a virtual datapack is not as easy to do as just using an event

#

it is not about making it impossible it just shouldn't be easier than datagen

#

which an event would be

#

especially with how dp registry datagen works

#

ok 3 things left in the patches

  • fluids
  • tickets
  • abilities
#

for abilities we can't move to pure components yet since neo can't add components itself to keep vanilla client compat