#1.21.5 Snapshots

1 messages Β· Page 5 of 1

fleet dome
#

Yes, I try to at least read buzzwords while they're buzzing by but jeez I am so much behind in my understanding of where we're at now ^^

weak wasp
#

I imagine it's probably just to make blaze3d more rendering library agnostic, but that's mostly speculation.

#

Though, having knowledge of multiplatform stuff does make it easier to understand how it works since it's literally the same design structure

lunar saffron
#

Speaking of the GL abstraction: is this ^ something we should patch in Neo or should this be patched in NeoForm?

gleaming pendant
#

the way I understand is just by tracking where tf the opengl call went

weak wasp
lunar saffron
#

That's why I'm asking

weak wasp
fleet dome
#

DSA is faster IIRC

#

but not available on every GPU

#

or what are you referring to?

#

@gleaming pendant also, do a search for org.lwjgl.opengl across the entire project

#

It's getting pretty concentrated

gleaming pendant
fleet dome
#

Also you can swap out the render backend if it's abstracted enough πŸ˜›

#

Hm we have not really decided what we want to do about TextureFormat.DEPTH32, tbh

weak wasp
#

Well, at least we can remove the gl version adjustment in the early loading window since vanilla will essentially do that when creating the capabilities

fleet dome
#

Hm? I don't see anything different to before in their window setup

#

we wanted to remove that anyway

weak wasp
#

DSA is only enabled in GL4+, so if the GPU can't support it, it essentially 'emulates' the DSA calls with GL3 stuff

#

However, we ill need to store the GLCapabilities in GlDevice in that case since it's just created to setup the GlDevice

#

Though I guess you could try calling GpuDevice#getVersion instead

gleaming pendant
#

I writed it to the config 🀷

#

in principle it could still be interesting to experiment with the two options

fleet dome
#

No, I mean about splitting the existing texture type

#

I suppose it could be easier that we now have an actual enum to search for

gleaming pendant
#

not sure what you mean

fleet dome
#

@gleaming pendant would you do this?

#

What about pixelSize

#

8?

#

They seem to theoretically support copying the depth buffer to a texture or png, which will be... difficult for the combined depth/stencil format

lunar saffron
fleet dome
#

Oh you had it patched in 24w08 already?

#

So, copyTextureToBuffer, was that in 24w08?

lunar saffron
lunar saffron
fleet dome
#

I gotta whip out the OGL 3.2 spec

#

Ok, it might actually just work

#

It's not quite clear to me if you can copy DEPTH from a DEPTH_STENCIL texture

#

and vanillas size check will not work either in that case since pixelsize will be 8, even if you only read depth

#

Okay no, you have no control over that when calling read pixels

gleaming pendant
#

I patched it to 8, never checked it though πŸ˜„

glass wagon
lunar saffron
#

Yeah, found the patch, we're probably using the NeoForm version from before that patch

#

Though, hmm, no, that wouldn't make sense since the commit to enable publishing to the snapshots maven was made after that fix πŸ€”

glass wagon
#

I forgot to fix it in the joined

fleet dome
#

I am going to add fields to TextureFormat indicating whether a particular format has color, d epth or stencil

#

Since that is independent of the graphics backend used, the enum seems like a good place to add it.

fleet dome
#

Uh why are they configuring GL_TEXTURE_COMPARE_MODE, This seems to be for sampling from depth textures, are they doing that?

lunar saffron
#

That's the special-casing I was wondering about

fleet dome
#

Oh interesting

#

Reading up on this, by default if you use a depth texture and sample it from a shader, you do not actually get the underlying depth value.

#

Instead, you get the result of a depth comparision defined via GL_TEXTURE_COMPARE_MODE / GL_TEXTURE_COMPARE_FUNC

#

So by setting it to GL_NONE I suppose they do enable certain shader ops?

fleet dome
gleaming pendant
#

Otherwise it looks reasonable. Maybe too extensive for my taste heh

fleet dome
#

I did question for a moment if it's even worth adding back ^^

gleaming pendant
#

Could just have hardcoded more texture types in the various if checks I think

#

Idk if it would have been shorter though

fleet dome
#

_backupGlState / _restoreGlState is obsolete in my opinion

#

Any opposition to just dropping it?

drifting finch
#

From reading the code, I would concur, so none from my end......

#

So do the Pipelines not result in the same structural logic?

fleet dome
#

I think it's probably a code-smell to see raw GL calls in "normal" rendering code now

drifting finch
#

Where they store the entire state

fleet dome
#

Yeah the RenderPipeline is what normal game code would use, I think

drifting finch
#

Okey

#

Then yeah go ahead and remove it

fleet dome
#

Which is why I am writing the stencil state for that r/n

drifting finch
#

Oef

#

Okey

#

I know it is needed

#

But you know.....

#

Whished that it was there already XD

fleet dome
#

Well we have to, otherwise a modder would have no interface to even set the stencil state without completely going behind the RenderSystems back

drifting finch
#

Yeah for sure

fleet dome
#

While I am at it, I am extending the state to what's the common denominator between D3D11, Vulkan and GL

drifting finch
#

Very nice πŸ˜„

fleet dome
#

Ultimately for us it's just separate back/front face settings

drifting finch
#

needs to finish porting to 21.1

#

So that i can port to 21.4

fleet dome
#

D3D11 also has a stencil read mask, but GL and Vulkan have no equivalent for that

drifting finch
#

I doubt it will be needed

#

But nice to have none the less I guess

fleet dome
#

And OGL/Vulkan allow setting the write mask separately for front/back-face which D3D doesn't support

#

the back/front face stencil settings actually have a purpose for rendering occlusion stuff IIRC

#

but it has been a while

fleet dome
#

Oh I was wrong, GL does have read mask, I just didn't find it πŸ˜„

gleaming pendant
fleet dome
#

It is because the render pipeline will always fully set the state

gleaming pendant
#

So the enable/disable depth or blending calls are gone from gui rendering?

fleet dome
#

Doesn't matter

gleaming pendant
#

Saving the gl state was introduced for item decorators, which would otherwise have a tendency to mess up the global state

fleet dome
#

Or do you mean purely for ui rendering?

gleaming pendant
#

Yes UI

fleet dome
#

I will check again when I am home, but I think everything goes through the abstraction

#

Pipelines will set all state on the gl state manager though so if you changed anything it will be set correctly on the next pipeline anyway

#

You might only mess up others not using a pipeline. And i think you might wanna use that in all cases if you break out of GUI graphics

gleaming pendant
#

This was always about UI rendering which was disconnected from render types

fleet dome
#

Pipelines are not really about render types

#

Look at the pipeline

#

It's essentialy an immutable persisted snapshot of render states

limpid crypt
#

In 1.21.4, the fix in ItemDecoratorHandler prevents the screen from flickering due to the blur effect in the escape menu, iirc

fleet dome
#

The rendering has changed massively

#

But hey I could be wrong l. Still getting more familiar with it

limpid crypt
#

The fix no longer fixes the bug that is supposed to be fixed, as it is fixed in Minecraft 1.21.2

fleet dome
#

That's currently not very helpful since it changed so much that your prior testing is invalidated by it. Just hold off until there is something that actually runs again. Then we can reassess

fleet dome
#

@gleaming pendant

#

GlStateManager is not being used outside of blaze3d

#

And RenderSystem has no way to set blend, for example

#

There are however various pre-defined RenderPipelines for GUI drawing

#

I am still convinced the state backup is now obsolete

lunar saffron
#

I would agree with that

gleaming pendant
#

Alright then

fleet dome
#

Ya are not gonna like this one either, Tech

#

That's the extra stuff needed to actually wire up stencil for the RenderPipeline

sterile abyss
#

just a few parameters

fleet dome
#

Yup.

#

It follows our policy to add bounce methods, although it's very questionable

#

(in this particular instance)

#

Mods like sodium will have to adapt to the stencil buffer crap on Neo either way if they inject or override any of this, so I wonder if we should actually add a bounce here or not.

#

Mods are not gonna use it (that's what the builder is for)

sterile abyss
#

the use of an optional is a bit suspicious granted it's mojang's pattern inside the class

sterile abyss
#

also your optional can be null

#

you forgot to initialise it to empty in the builder

floral tide
#

I don't think Sodium touches any of the targets being discussed here

#

I can't really think of anything other than the mod that makes the game window transparent πŸ˜›

fleet dome
fleet dome
#

Hmmm. Why would this test disable blend? (Item Decorator test)

#

It's drawing opaque anyway

sharp haven
#

For what it's worth, if there are feature requests for the rendering api, I'm open to hearing them. Things like stencil operations and more texture formats are totally valid and if it makes your lives easier & increases the odds mods will use this vs hacky raw GL somewhere, I'll call it a win.

steep hamlet
#

upside down man πŸ‘€

fleet dome
#

Oh that gives me the chance to say I like the new abstractions a lot πŸ˜›

gleaming pendant
#

Not sure how much is relevant to you, but if it is we'd be happy to reduce our patches πŸ˜›

fleet dome
#

I did implement it along the lines of your existing abstractions up to the RenderPipeline & Builder, but have to yet to actually test it. If I interpret the intended usage, I'd say we have to define RenderPipelines + associated RenderTypes to make use of it πŸ€”

scenic totem
#

and if you're able to expose instanced draw calls through those fancy new Pipelines that would be all the better

fleet dome
#

I have it back in a compiling and running state.

#

All hail NVidia NSight

gleaming pendant
#

Not sure about commenting out stuff like that, it will tend to remain commented out forever πŸ˜„

fleet dome
#

Which stuff in particular?

#

I had thought I didn't actually commit commented out stuff, if I did, let me know πŸ˜…

#

I tried moving it to a separate changelist

#

we should copy paste Mojangs approach for GL labels and extend it to GL debug groups

#

that would really make analyzing stuff in Nsight and renderdoc a lot easier

fleet dome
#

@gleaming pendant thanks for pointing it out. reverted the accidentally commented out stuff.

river mural
sharp haven
scenic totem
#

buffer textures help significantly with that, and I've found they typically perform better than instanced arrays. but yeah things are much more flexible once you have 3.3 or shader_bit_encoding

fleet dome
#

Tech has a point, I just saw there's still a ton of commented out cod ein IGuiGraphicsExtensions πŸ˜…

#

// TODO: 1.21.2: do we need to fix these or can we just remove them?

frail patio
sharp haven
#

At the time most of our mac users were 3.2 afaik

#

Today they may be better but we are waiting for numbers to find out

frail patio
#

I see

#

Moving to 3.3 would be good for certain rendering mods so they don't need to check for it, at least

sharp haven
#

It's difficult when working with such a large userbase, to remember that even dropping support for 0.1% of users is actually a giant amount of people 😦

frail patio
#

True

worldly peak
#

The fact it's a 15 years old game must not help either, I imagine.

lunar saffron
fleet dome
#

Do you know off the top of your head why the loading overlay uses such a complicated way of blitting a quad?

sharp haven
#

What does it do?
I wrote that years ago and don't know if it changed since then πŸ˜…

fleet dome
#

Oh sorry, I was referring to Neos loading overlay πŸ˜„

sharp haven
#

Ah!

fleet dome
#

Hmmm so when we run through our external GL code and return to normal rendering, the command encoder still thinks it last rendered using a GUI pipeline and doesn't re-apply the desired state.

#

We might want to add a forgetLastPipeline() or markStateDirty() call to the GL encoder for this πŸ€”

lunar saffron
fleet dome
#

Getting somewhere

#

(With GuiGraphics blitting the quad)

#

But notice the border around the mojang logo, something about blending probably borked hm

frail patio
#

If vanilla created the window earlier in the loading process that might help Neo

fleet dome
#

How?

#

As in, how does it help us?

frail patio
#

Possibly you wouldn't need to defer it in Neo if it already runs early enough

fleet dome
#

No we always have to create the window

#

Mod discovery can take an arbitrary amount of time and will always happen before the minecraft code is even loaded

#

So in other words: we need to show progress during that phase, and to do that, we have to create the window.

frail patio
#

Ah yes

fleet dome
#

Hmmm, it's not just my eyes. This blending of the mojang logo (it's fading in) looks wrong, right?

haughty spade
#

yeah that doesn't look right

fleet dome
#

Weird...
The blend state looks ok:

haughty spade
fleet dome
#

That is some weird artifact, the actual framebuffer texture - when inspected - looks ok ?!

#

Oh huh, it overwrote the alpha value to also be <1 in the render target

#

in the area of the mojang logo, I mean

#

OK yes, blend function is incorrect for SRC_ALPHA.

#

Oh wow. This is a bug in ExternalDisplay oO

sullen geyser
fleet dome
#

I just wonder if I should design the stencil abstractions with the lowest common denominator between DX, Vulkan and GL. Or if the abstractions in MC are only designed with GLs capabilities in mind.

fleet dome
#

Ugh. we have to rework EarlyDisplay. We're messing up a ton of GL state apparently πŸ€”

outer ruin
#

Something I haven't figured out a strategy to diagnose, but I wonder if the difference in ImGui allowing multiple viewports on Fabric vs multiple viewports crashing on Forge & NeoForge, comes from Early Display

#

Something to do with a null window pointer or something. Been several months since I touched it

fleet dome
#

I am trying to diagnose the issue of the cubemap rendering like this for a second while fading from loading overlay to main menu

#

As far as I can tell (debug labels help a lot), somewhere in the pipeline, it captured the vertex buffer used by early display and held on to it.

fleet dome
#

Oh fuck, this is a vanilla bug picardfacepalm

#

@sharp haven In CubeMap.render: renderpass.setIndexBuffer(rendersystem$autostorageindexbuffer.getBuffer(6)
The ensured capacity is too small, it should be 6 * 6. You're not seeing any effects since the loading overlay will already have allocated more than 6 indices, since we skip the loading overlay, we see the issue πŸ˜„

sharp haven
#

Noted, ty!

merry falcon
#

imagine if Mojang decides to make z axis be up/down

#

chaos

oblique tusk
#

who do we need to bribe to ensure that never happens

keen orchid
#

When I took graphics in college I was extremely surprised to learn that almost everyone besides mc thinks of z as up/down

sharp haven
keen orchid
#

Fair- the professor definitely made a larger impact on me by saying that. Maybe it was a ruse to get me to pay attention in class πŸ˜…

oblique tusk
#

I would guess that's because some might consider the XY plane to be 2D, then the Z axis adds on to that for 3D, so Z becomes up/down

keen orchid
#

Yup thats how it was explained to me

merry falcon
oblique tusk
#

while some consider the XY plane of math, where the Y axis is up/down, and extend it with Z for depth

keen orchid
#

how MC does it though makes more sense from a physics 1 perspective (at least in the states)β€” what have you when you model a ball bouncing from a fixed height, the x axis is length and y is height in that case

frigid sand
#

We just used x1, x2 and x3 in math kek

merry falcon
#

mc uses opengl right

#

so it would make sense that notch built the game around that reference frame initially

frigid sand
merry falcon
#

April fools comes around and mojang adds a new direction to the direction Enum

frigid sand
#

Ana and Kata, it's a 4D game now

sharp haven
#

The new directions are hubwards, rimwards, turnwise and widdershins

frigid sand
#

5D?

cinder saffron
#

Discworld, apparently.

#

(Polar coordinate system)

oblique tusk
#

BlockPos to be refactored to polar coordinates

frigid sand
#

thonkies wouldn't cylindrical coordinates make more sense for a disc?

haughty spade
#

I was once thinking about 4 dimensional space, and wondered what one would call the 4th axis cardinal directions

frigid sand
#

Like I said

To describe the two additional cardinal directions, Charles Howard Hinton coined the terms ana and kata, from the Greek words meaning "up toward" and "down from", respectively.

keen orchid
frigid sand
#

CodeParade makes great videos too

haughty spade
fleet dome
#

We need this for the port: https://github.com/neoforged/FancyModLoader/pull/255
(Well or something along those lines at least).

Otherwise we have to reach deep into the CommandEncoder and clear some cached state everytime we update our loading overlay framebuffer.

drifting finch
#

Merged

stiff flicker
#

Hey guys, what's going on with neoform for the latest snapshot?

#

I saw the build failed initially due to decomp issues, but latest vf fixed that I thought.

lunar saffron
#

The VF build that fixes it is a snapshot and will disappear at some point. The NeoForm version built on it is therefore also published as a snapshot

stiff flicker
#

Oooh, I didn't see there was a snapshot version. Thanks!

limpid crypt
warm night
#

There is no correct option... But there is a wrong unreal option

gleaming pendant
#

Left handed is wrong πŸ˜›

haughty spade
#

z-up makes sense for manufacturing and geography

#

y-up makes sense for cinema, photography, and anything else for which you have a camera

#

I'm surprised blender is z-up

#

I guess whoever started it was CAD-oriented

fleet dome
#

Or they were just copying 3dsmax

haughty spade
#

hmm

#

yeah I prefer left-handed axis

#

y+ is up, x+ is right, z+ is forward

#

and forward means away from the camera toward the horizon

#

I don't personally like the hand rule, because it fucking depends on which finger is which axis

#

look, I just made a left hand rule, using a right hand! ... and my drawing for it is shit!

fleet dome
haughty spade
#

lol

sharp haven
#

I might steal this. That's actually amazing.

scenic totem
#

mojangular prism praiseup

merry falcon
haughty spade
#

well that's arbitrary

frank sigil
river mural
#

Or as the loading menu for April fools xlurk

steep hamlet
worldly peak
oblique tusk
#

1.0.0 Beta 1.9 Prerelease 5 Prior to this update, the sun in Minecraft rose in the North, which threw off many players and led to a common misconception that Minecraft maps/worlds were oriented with East at the top. The sun now rises in the east and sets in the west, making navigation much more intuitive.
https://minecraft.wiki/w/Map#History hmmm

haughty spade
#

wasn't that historically the case? that maps were drawn with east at the top?

#

Given that each culture has a very different idea of who, or what, they should look up to it’s perhaps not surprising that there is very little consistency in which way early maps pointed. In ancient Egyptian times the top of the world was east, the position of sunrise. Early Islamic maps favoured south at the top because most of the early Muslim cultures were north of Mecca, so they imagined looking up (south) towards it

Christian maps from the same era (called Mappa Mundi) put east at the top, towards the Garden of Eden and with Jerusalem in the centre.

mystic gulch
#

In the new snap shot what rendering changes happened?

vagrant obsidian
#

There's a lot of dust in the air surrounding rendering right now, best to give it a minute

lunar saffron
#

@oblique tusk can you change the Kits default branch to 25w09a? πŸ˜„

fleet dome
#

When you have the time to push the FML PR through I have yet another that should finally fix the loading overlay πŸ˜…

lunar saffron
fleet dome
#

what is that doing

#

is that a "fill" rectangle without stretching algo?

lunar saffron
#

I have zero clue πŸ˜„

fleet dome
#

I'd say just delete the rest for now, btw.

lunar saffron
#

Yeah, the bordered and nine-sliced helpers are already gone, they are superseded by vanilla

fleet dome
#

Hmhmhmhmh I wonder if this is a decompiler problem

#

We end up with an int[] in a uniform map for OutSize which in truth seems to be a float Vec2, leading to a crash later

#

I did find this:
renderpass.setUniform("OutSize", rendertarget.width, rendertarget.height);

#

Where the parameters are int so it selects the int... overload

lunar saffron
fleet dome
#

Ok yes, fixing those shoddily by hand gets me ingame at last

lunar saffron
#

Yeah, that's what I'm doing at the moment as well, I have the float casts sitting in a separate changelist

lunar saffron
fleet dome
#

Aight I did push the loading overlay already even if the FML side isn't fully fixed up yet

fleet dome
#

Especially since pretty much only devs are going to enable it anyway

lunar saffron
#

Fair enough

fleet dome
#

I might do it if we ever have demand for it

lunar saffron
#

Sounds good to me

fleet dome
#

The overlay is now just blitting using guigraphics

#

There is a behavior change though, I think. it's now just stretching the FB to window size. the old code did seem to have something to account for that? We should instead just change earlydisplay so it's capable of resizing its fb

#

The easiest way probably is to pass width/height from LoadingOverlay to DisplayWindow.render and have it resize on-demand

lunar saffron
#

Likely, yeah

lunar saffron
soft pivot
thin cairn
#

ΒΏsᴉΙ₯Κ‡ ΗΚžα΄‰Λ₯

oblique tusk
#

it's autocorrected

#

thankfully, upside-down English is 1-to-1 translatable to regular English

limpid crypt
#

@marsh mural ?

proven compass
#

All entities can now store custom data ?!

marsh mural
#

πŸ‘€

proven compass
#

getPersistentData in vanilla

real bolt
#

<@&1067092163520909374>

marsh mural
#
Minecraft.net

Minecraft Snapshot 25w10a

Snapshot 25w10a is here with a new game rule for TNT explosions, a new menu background and more! Check out all the changes 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 to be ...

β–Ά Play video

Snapshot 25w10a brings us universal custom data support for entities with datapack version 70 and resource pack version 54! 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 updat...

β–Ά Play video
final kiln
#

HOLY FUCKING SHIIT

#

getpersistentdata my beloved

trail fable
#

ohno

warm night
#

we are getting entity components (at a later date?)

merry falcon
#

MAKE UP YOUR MIND ABOUT FLOWER TAGS

haughty spade
#

oh mojang made custom data official?

#

thonkies

Unified format and functionality of predicates for components on Entities and Block Entities

thin cairn
haughty spade
#

ooh it's a component!

sterile abyss
#

block entity components thinkies

haughty spade
#

they half (more like 10%)-assed entity components

spice geyser
#

oh shit

haughty spade
#

they hold it in a dedicated field for now

thin cairn
#

Now we have functions in SNBT like CSS

warm night
#

but they seam to have confirmed that components are the way to go and will be switching all data to it by the looks

thin cairn
#

bool(5) is valid SNBT for true

terse escarp
thin cairn
#

True

haughty spade
#

TNTN'T

thin cairn
#

uuid(8333dc86-5812-47fe-a3a8-9fe70df6ce4e) goes hard

haughty spade
#

or hm

#

TN'T

marsh mural
haughty spade
sterile abyss
#

rather small snapshot

merry falcon
#

No u

spice geyser
#

"undefined behavior" lmao

haughty spade
#

it's good to have weeks when the world isn't ending

warm night
#

with the addition of the panorama i'm guessing this is near the end of the cooking and will get an rc soon

thin cairn
#

It sounds like they might be working to add shader support

#

Like, non-core shaders

merry falcon
#

They are working on Killer Frogs to go with Killer Bunnies

thin cairn
#

Because currently the only non-core shaders are post processing shaders, right?

vagrant obsidian
#

RIP CompactCrafting again

thin cairn
#

Small snapshot

oblique tusk
#

oh heck, right, today's Wednesday

fallow merlin
#

Ya

vagrant obsidian
#

wew, that's a LOT of changes to block tags..

#

+7 / -99

marsh mural
#

am i missing something, cause i only see item tags being changed

vagrant obsidian
#

datagen for block tags

marsh mural
#

ah

vagrant obsidian
#

snapshot code for TNT looks fun. Can't wait for dataless block components to happen so I can turn packed ice into TNT

haughty spade
#

Suspicious Ice

fallow merlin
thin cairn
#

Ooh, their SNBT function system supports multiple arguments

#

Does NeoForge perhaps want to make this not an immutable map (or provide an event to extend it)?

spice geyser
#

I've always wanted turing-complete SNBT

gleaming pendant
#

They mention that they will introduce a proper system for entity component storage in the future πŸ˜„

sterile abyss
#

it better sync too

dark wasp
proven compass
#

isnt that synced entity data

#

just for all entities

gentle swan
#

I'm not sure if this is my decompile being dumb, but won't this code crash? I'm not seeing DataComponentGetter implemented anywhere near BlockEntity

raven blade
#

that casts the returned value of collectComponents

oblique tusk
#

gotta love those subtle differences

#

in this case, (Thing) something.method() vs ((Thing) something).method()

gentle swan
#

oh, it is just me being dumb

sterile abyss
#

the lack of a space makes a world of difference when you glance at it

gentle swan
#

mojang needs to release their style guide so we can format the decompiled code correctly πŸ˜„

oblique tusk
#

makes me wonder

#

do they use tabs or spaces

sterile abyss
#

stop that

#

don't even wonder

raven blade
#

better be spaces

sterile abyss
#

that too

terse escarp
#

Wdym, don't they have all space removed, putting everything onto 1 long line?

tulip echo
#

To my knowledge, they forgo the tabs vs. spaces debate and just use newlines instead. They don't agree on whether to use 1, 2, or 4 newlines per indentation level, though.

split oasis
gleaming pendant
#

if (x instanceof final Whatever whatever) {

haughty spade
#

Minecraft 1.21.5 Update Playlist β–Ί https://www.youtube.com/playlist?list=PL7VmhWGNRxKixIX8tWEQn-BnYKE9AaAXk
Snapshot overview video on Minecraft 25W10A

Minecraft Live 2025: Announcement Trailer
https://www.youtube.com/watch?v=1lWDHaqw-B4

All My Links In One Place
πŸ”— https://linktree.xisuma.co

πŸ™ Support Xisuma Directly πŸ™
πŸ’œ Membership β–Ί https://...

β–Ά Play video
#

OH tnt refuses to create the entity, doesn't refuse the interaction itself lol

#

still removes the block from the world though lul

weak wasp
#

@marsh mural

#

Main changes would be the addition of DataComponentMatchers and Entity now holding a CustomData

weak wasp
#

Yep!

thin cairn
#

Just less var

sterile abyss
#

final var is best

thin cairn
#

That is what I do in all my Java code

compact hare
#

final var everywhere

weak wasp
#

🀦

compact hare
#

Alternatively, lombok.val

thin cairn
#

Please no

compact hare
#

Why not? It's final var but shorter

thin cairn
#

It's cursed though

#

I don't like the idea of using Lombok in modern Java

marsh mural
gleaming pendant
#

How is lombok.val shorter?

thin cairn
#

Three characters instead of nine

compact hare
#

You import it and you use val

gleaming pendant
#

Ahh

fleet dome
#

It's still lombok

glass wagon
#

Vineflower 1.11.1 has finally been released

gleaming pendant
#

Cool!

thin cairn
#

That's a lot of 1s

vagrant obsidian
#

Was watching a youtube video and started to wonder.. have potion effects been moved to components yet? I feel like I remember discussion on removing stuff (like milk) but not adding..

proven compass
#

components?

#

theres a potion contents data component for items

vagrant obsidian
#

That's just storage though, right? It wouldn't replicate a potion bottle

proven compass
#

potion contents hold which potion it has

#

the consumable component makes it drinkable and applies the potion contents if present

marsh mural
#

Been a data component for quite a while now iirc

still kayak
#

Isn’t there also a ConsumeEffect

haughty spade
#

<@&1067092163520909374>

#

no bots yet

warm night
#

what??

warm night
#

today?

jovial dome
#

damn

marsh mural
#
Minecraft.net

Minecraft 1.21.5 Pre-Release 1

A first pre-release is out for Minecraft 1.21.5! Here's a guide to all 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 time. This is an unofficial update video that aims to be the most comprehensive guide possible. Offici...

β–Ά Play video
steep hamlet
#

daammmunm

terse escarp
#

It's in launchermeta

frigid sand
sterile abyss
#

fuuuck

haughty spade
trail fable
#

prerelease squirr

final kiln
#

damn

terse escarp
#

They've added windows commands /s

final kiln
#

nice

frigid sand
haughty spade
#

the bots are slacking

terse escarp
#

Lol

trail fable
haughty spade
#

I haven't looked but I presume they have moved the old color masks to the programmer art resource pack

frigid sand
haughty spade
#

yeah

#

probably

frigid sand
#

would be the easiest imo

thin cairn
#

Did they make the pack versions line up again?

trail fable
#

ah right

tired bluff
#

I guess they're aiming for a release before 1st April? I had assumed it'd be after.

thin cairn
#

Was just wondering about this wording

haughty spade
#

mybe they want to release april 1st specifically thinkies

frigid sand
merry falcon
#

April 1st, fluid layers to allow waterlogging/lavalogging any block

#

Then revert it on April 2nd to troll us

marsh mural
#

but a generic "fluid logging" cap which supported any fluid would be nice
rather than the current system which is mostly hard wired to 1 fluid type (water in vanilla), since its tied to the waterlogging property

warm night
#

isn't that cause this way it only needs to store a single bit of information?

#

i thought it was a space saving thing for world storage...

proven compass
#

boolean vs integer property

#

i just want snowlogging

thin cairn
#

A lot more of Blaze3D is @DontObfuscate now

marsh mural
frigid sand
thin cairn
#

Technically a string iirc, but chunks are palleted

frigid sand
#

I know they are, but the question still stands

thin cairn
#

In memory, it's a byte, but it's less possible values, which reduces the total number of block states

frigid sand
#

sure it cuts down the amount of possible states by a fair bit

tired bluff
#

The better thing to do would probably be store fluid information entirely separate from blocks. I think there was a demo of that posted on twitter, but it never made it into 1.13? Can't remember, it was many years ago now.

frigid sand
#

I mean, didn't mojang start work on non BE block data?

thin cairn
#

The code is kinda designed for that for sure

frigid sand
thin cairn
#

Level has getFluidState, which seems like it would access extra fluid data, but instead it just gets the block state and turns it into a FluidState

frigid sand
#

I mean, you can add lavalogging, mek does so for their blocks

thin cairn
#

Yeah you can, but it's annoying to have to hardcode every fluid you want to support in

#

And then you don't support fluids you don't know about

frigid sand
#

well yeah

frail patio
#

It would be neat if they used a separate palette for fluids

thin cairn
#

For sure

floral mesa
tired bluff
#

Do not envy having to write data fixers for this though.

proven compass
floral mesa
#

I've played around with it a couple times by itself and didn't see any obvious bugs iirc

#

The primary issue is mod compat because most mods correctly assume they can ignore level.getFluidState and just look at the blockstate

proven compass
#

wasnt this what they were trying to do in 1.13

#

but it broke farms

thin cairn
floral mesa
#

I didn't make that mod fwiw

thin cairn
#

Oh for some reason I thought you were a contributor

#

I see now that I was incorrect

floral mesa
#

the 'safest' solution would probably be to make BlockState.getFluidState throw an exception in order to catch code making such assumptions

river mural
river mural
#

Plus we can always use waifu to then check what mods are still using it and open issues for them

weak wasp
#

Ah yes, I love how the solution to checking infinite materials is basically, throw a skip packet exception

#

Discard all bad packets!

weak wasp
#

@marsh mural

#

Mostly cleanup and network changes

proven compass
#

coming soon to a snapshot

#

for the summer update most likely

weak wasp
#

For some reason, I want to see like a thousand player server with that enabled

tired bluff
#

Oh, and there's a Minecraft live on the 22nd, so I guess release sometime after that?

proven compass
#

i imagine itll be available right after

#

they announce the first summer drop features and then release them

thin cairn
#

So it's not disablable, but it replaces the XP bar?

#

That's a bit unfortunate

marsh mural
#

tbh personally, that doesnt sound or look all that useful to me
although for accessibility i see some users liking it

thin cairn
#

Would be nice if there was a way to check your XP while players are around

thin cairn
cinder saffron
#

Actually, wait - yeah, that would be really handy.

steep hamlet
#

Apparently blade3d is less obfuscated

proven compass
#

whats the point when we have the mappings anyways

vagrant obsidian
#

oh gods, I'm late and the pr is early, p a n i c

frail patio
#

Though from recent changes that could have been inferred as well

proven compass
#

oh nice

#

we love open source

vagrant obsidian
#

RemoteSlot.Synchronized tho better_eyes

marsh mural
#

yeah i noticed that too, menus now usinga RemoteSlot for the stack syncing, rather than raw ItemStack

vagrant obsidian
#

Big hype there, probably means inventories are getting a deeper look soon

marsh mural
#

something id like is now that we have stream codecs
that the "data slot" system gets expanded to sync any data type not just ints

dark wasp
#

RemoteSlot<T> thinkies

vagrant obsidian
#

Subtle but big change

dark wasp
#

under what circumstances would that have returned null before

merry falcon
#

THE COMING OF THE NULLs

dark wasp
#

no, they removed nullability

merry falcon
#

oh

#

i cant read ok

dark wasp
merry falcon
#

vanilla supports per-blockstate blockentities in all places basically except for some command autocomplete suggestion and one spot in level that neo could've patched

marsh mural
#

does this mean that newBlockEntity in EntityBlock is also none null? now

dark wasp
#

or at least they don't support some states not having blockentities anymore

marsh mural
dark wasp
#

have to use different blocks now, I guess?

merry falcon
#

sorry @torpid sandal, the mojang has spoken

#

your per-state blockentities is dimma-gone

marsh mural
#

guess i need to make a delegating block entity type
that delegates all other block netities in my block block to the root/origin

merry falcon
#

(if you return null for create, you will crash people not expecting null)

dark wasp
vagrant obsidian
#

Yet another breaking change to Crafting.. sigh

tired bluff
#

I still don't really understand why Level.{set,remove}BlockEntity still exist TBH. Is it just for pistons?

vagrant obsidian
#

No more active-only BEs, gotta split that now...

dark wasp
#

setBlockEntity is only used by pistons

tired bluff
#

Ahhh. Okay, so you can still return null from EntityBlock.newBlockEntity, it's just the type's factory which isn't nullable. Which fair enough.

marsh mural
#

ah thats good, i can continue reutrning null there then for my mulit blocks

#

but i should maybe look into delgates at some point

#

since seems mojang might change that to none null too at some point

vagrant obsidian
#

*non-null

dark wasp
#

if I understand correctly, EntityBlock#newBlockEntity is used to create the block after setting a block into the world, the type's factory is used for reloading existing blockentities

#

ah wait I see what you mean now

#

if there's no blockentity then nothing needs to load it thinkies

tired bluff
#

Yeah! It's a bit odd that the factory was ever nullable really!

vagrant obsidian
#

The one thing I really wish Moj would kill about BEs is the deferred level set

#

I wish it'd just construct the BE class with level and NBT data, rather than setLevel and load

lunar saffron
#

That would require rather significant changes to worldgen because worldgen does not operate on a full Level

tired bluff
#

It would be nice if you knew whether the BE was for the client or server at construction time. Really I'd like better separation of client/server BE state, but no clue how you'd design that.

thin cairn
#

Thread.currentThread().getName().contains("Server")

#

(please don't)

gleaming pendant
#

I'm at a conference this week, so I won't help with the port this week unless there's something urgent? (Doubt)

torpid sandal
gleaming pendant
#

HashedStack, what is that?

#

HashOps my god

frigid sand
#

DynamicOps for hashes?

dark wasp
#

no for hash browns

dark wasp
tired bluff
#

It looks like it's a way to avoid sending the whole item stack from the client to the server when the client moves items about? So now it just sends the item(s), plus some CRCs for the component patch.

#

I'm kinda surprised that item movements generate enough network traffic it was worth doing. I can't see anything in the fixed bug list, but maybe someone had items with absolutely massive components?

gleaming pendant
#

Would be way cleaner to give items an ID in the menus like we do in AE2

#

The CRC sounds like a great way to get random failures with low probability

tired bluff
#

Oh, to be clear, this is for ServerboundContainerClickPacket. So AbstractContainerMenu.clicked is called on the client, then sent to the server (along with a map of changed slot -> HashedStack). Then clicked() is called on the server, and the container's remote slots are updated with the HashedStack to avoid re-sending those changes back to the client.
I really should spend more time reading the menu network code. I thought I understood it, but I had never even looked at this code before today.

thin cairn
#

Or if you use commands to give you a full chest of full chests of full chests, that could lag or outright OOM the game

marsh mural
weak wasp
#

Primer has been updated with the new game test registry-driven format

glass wagon
#

HashOps has been added

frigid sand
#

still haven't gotten an answer as to what those actually do

thin cairn
#

Generates hash codes instead of structured data

#

It's a DynamicOps<HashCode>

frigid sand
#

so encode only?

fleet dome
#

oh interesting

lunar saffron
frigid sand
#

looks at my decode only ResourceOps kek

tardy leaf
#

For completeness, you also have NullOps

frigid sand
#

well yes, and JavaOps

frail patio
#

Can we have VoidOps?

frigid sand
#

how would that be different to NullOps?

thin cairn
#

One crashes, the other doesn't

frail patio
#

Different name

haughty spade
#

if it's about ops, I have my own, too!

frigid sand
#

mine is just a DelegatingOps

haughty spade
#

I have to bump DFU someday, and see if I need to make changes to adapt to latest DFU

thin cairn
#

VoidOps sounds like it would use null, which causes NPEs. NullOps uses Unit

frail patio
#

What about UnitOps then?

haughty spade
#

DynamicOps<Codec>

tardy leaf
#

I should make SumOps and ProductOps so we can have ops algebra

#

hmm, FixedPointOps

floral mesa
#

yes, we need turing-complete DFU

frigid sand
#

OpticOps thonkies

frigid sand
#

no clue how that would work, but yes

haughty spade
#

BytecodeOps

#

outputs a class with fields corresponding to the data

thin cairn
frigid sand
#

I am aware

#

they're not too bad once you start looking into them

cinder saffron
frigid sand
#

looks at OIS

haughty spade
cinder saffron
#

No problems! None whatsoever! We don't have any security problems here! Nope!

raven blade
#

DevOps

frigid sand
#

PsyOps

limber ginkgo
#

what we really need is XmlOps

haughty spade
#

it is doable, but only for a subset of xml

#

xml is more flexible than the DynamicOps format expects

limpid crypt
#

Nice, pre2

#

@marsh mural ?

marsh mural
#
Minecraft.net

Minecraft 1.21.5 Pre-Release 2

A second pre-release is out for Minecraft 1.21.5! I've promised you videos so here's certainly one of the videos of all time. #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 to be the...

β–Ά Play video
frigid sand
spice geyser
fleet dome
#

So ahem

#

I was just porting AE2 to 1.21.54, ig I can just stop that and go to 1.21.5 huh

limpid crypt
#

.4?

oblique tusk
#

i wonder how much screming they have internally whenever this kind of bug happens

vagrant obsidian
weak wasp
#

No primer for this update. Only bug fixes

limpid crypt
#

nice, 1.17.1 rc2

frigid sand
#

link is also broken

limpid crypt
marsh mural
#

heh he made a video about it, i was assuming since such a small update and just bug fixes no video

#

but eh into my pin you go

lunar saffron
#

@fleet dome I'm currently looking at fixing the stencil test mod and I'm realizing that the current implementation of the stencil stuff (i.e. "static" definition in the RenderPipeline) is basically unusable in practice because it requires buffer wrapping (i.e. copying stupid amounts of code in the case of the stencil test which renders two items) to do basically anything outside manually putting vertices into a buffer. I think it would be better to take an approach similar to how vanilla implements scissoring where RenderSystem holds a "scratch state" which is copied into the RenderPass in RenderType#draw()

#

Also, enabling stencil support while using Fabulous mode immediately crashes on entering the world because the stencil stuff isn't properly set up on some render target:

java.lang.IllegalStateException: Couldn't perform copyToTexture for texture 1 to 57: GL error 1286
    at com.mojang.blaze3d.opengl.GlCommandEncoder.copyTextureToTexture(GlCommandEncoder.java:482)
    at com.mojang.blaze3d.pipeline.RenderTarget.copyDepthFrom(RenderTarget.java:76)
    at net.minecraft.client.renderer.LevelRenderer.lambda$addParticlesPass$5(LevelRenderer.java:685)
    at com.mojang.blaze3d.framegraph.FrameGraphBuilder.execute(FrameGraphBuilder.java:73)
    at net.minecraft.client.renderer.LevelRenderer.renderLevel(LevelRenderer.java:513)
    at net.minecraft.client.renderer.GameRenderer.renderLevel(GameRenderer.java:708)
    at net.minecraft.client.renderer.GameRenderer.render(GameRenderer.java:485)
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:1267)
    at net.minecraft.client.Minecraft.run(Minecraft.java:865)
    at net.minecraft.client.main.Main.main(Main.java:240)
lunar saffron
#

Breakpointing the GL debug callback I get a GL_INVALID_FRAMEBUFFER_OPERATION error generated. Operation is not valid because a bound framebuffer is not framebuffer complete. from GlCommandEncoder#clearDepthTexture() and GlCommandEncoder#clearStencilTexture() and a GL_INVALID_FRAMEBUFFER_OPERATION error generated. Framebuffer bindings are not framebuffer complete. from GlCommandEncoder#presentTexture()

fleet dome
lunar saffron
fleet dome
#

So I modeled this after depth testing which is related

lunar saffron
# fleet dome Haven't looked at scissoring, but ultimately you will require two separate draw ...

The problem with putting it in the RenderPipeline is that it's completely static which means that for every existing RenderType you want to handle, you would need two "wrapping" RenderTypes and associated RenderPipelines to draw it, one for writing the mask and one for using the mask. A RenderPass encapsulates the specific state of a single draw, a RenderPipeline encapsulates the state used for every draw of the respective "type".

fleet dome
#

Ok sure, but how is this different from toggling the depth state? That is used just as much for special effects, really. (Drawing the same object twice with different depth settings)

#

I mean I can have a look at how painful it is, but maybe the option is making forking existing types easier πŸ˜„

lunar saffron
#

Forking existing RenderTypes is the least of the issues. The primary issue is that you end up copying render code all the way until you hit a place where you can control the buffer in order to wrap it. And yes, I agree that tricks with disabled depth test are equally painful. I would however argue that an existing system making certain tricks a pain for us doesn't mean that we should intentionally make another system (one we specifically add) a complete pain in the ass to use

gleaming pendant
#

Good thing we have a testmod lol

lunar saffron
#

Summary of the port's state (at least from what I've noticed):

  • The Neo loading overlay throws GL errors, though this would be fixed by updating FML to 6.0.14 (is there anything blocking us from doing so?)
  • Custom key binds don't save, they always get reset to their default bind on restart
  • Stencil support crashes with Fabulous mode
  • Game test registration by the test framework is still broken (throws a duplicate registration error when entering a singleplayer world in the test client)
gleaming pendant
#
  • geometry key details are still TBD
#

Just do the FML update

lunar saffron
#

Pushed

floral mesa
#
Description: Rendering overlay

java.lang.NullPointerException: Cannot invoke "java.nio.IntBuffer.position(int)" because "this.intValues" is null
    at TRANSFORMER/minecraft@25w09a/com.mojang.blaze3d.opengl.Uniform.set(Uniform.java:145) ~[%23204!/:?] {re:classloading,pl:runtimedistcleaner:A}
    at TRANSFORMER/minecraft@25w09a/com.mojang.blaze3d.opengl.GlCommandEncoder.trySetup(GlCommandEncoder.java:620) ~[%23204!/:?] {re:classloading,pl:runtimedistcleaner:A}
    at TRANSFORMER/minecraft@25w09a/com.mojang.blaze3d.opengl.GlCommandEncoder.executeDraw(GlCommandEncoder.java:554) ~[%23204!/:?] {re:classloading,pl:runtimedistcleaner:A}
    at TRANSFORMER/minecraft@25w09a/com.mojang.blaze3d.opengl.GlRenderPass.drawIndexed(GlRenderPass.java:116) ~[%23204!/:?] {re:classloading,pl:runtimedistcleaner:A}
#

known issue?

#

compiled latest Kits (after XFact's commit) and tried to launch the game, crashes shortly before the main menu

lunar saffron
#

Yeah, that's a known issue. The decompiler omitted float casts in three places in PostPass and the NeoForm patch for it in the version the port is based on it is incomplete. Later NeoForm versions have it fixed by virtue of a VineFlower update.

floral mesa
#

we're intentionally not committing that fix to Kits right now to avoid a conflict when updating to the next version, I assume?

lunar saffron
#

Basically, yes

fleet dome
#

@lunar saffron is your complaint that you can't really override the rendertype when rendering foreign geometry (such as items via guiGraphics)?

lunar saffron
#

Yes

fleet dome
#

Why didn't you just say that πŸ˜„

#

So blergh, yes, but IDK if just pulling it out into a global renderstate is so great either, you need to be REAL careful with ordering the draws then hrm

lunar saffron
fleet dome
#

I'll excuse myself by saying I have a cold πŸ˜„

lunar saffron
#

Hehehe

fleet dome
#

okay urhglrhglhrglh, so we move it to RenderState like scissor?

#

Or do we think of some other system allowing to intercept and override parts of a renderpipeline before it's applied?

lunar saffron
#

I would go for the the scissor approach

fleet dome
#
withAdaptedRenderPipeline(this::enableStencil, () -> guiGraphics.renderItem(...));
withAdaptedRenderPipeline(this::disableStencil, () -> guiGraphics.renderItem(...));
#

and something along the lines of RenderPipeline enableStencil(RenderPipeline) {}
haven't thought much further than that, but we don't really have the ability to override render attributes in any way r/n even though it could be very useful

#

Hm, ig what you also need is a RenderPipeline.builder(RenderPipeline) to make the adjustments

lunar saffron
#

The problem with a dynamic "mutator" like this is that you'd either still be storing the mutations or a modified copy of the entire RenderPipeline in some global state or, even worse, you'd be modifying the pipeline directly with no clean way to reset it.

fleet dome
#

they're immutable

#

you'd pop it into a builder, make your adjustment and build a new one, and ideally cache it using an IHM or other form of caching

lunar saffron
fleet dome
#

Well as I said, youd want the ability to do something along those lines:

#
void RenderPipeline enableStencil(RenderPipeline pipeline) {
  return RenderPipeline.builder(pipeline)
    .enableStencil(... and other settings...)
    .build();
}
lunar saffron
#

Yeah

#

Hmm, you know what, on second thought this idea doesn't seem that bad actually. The only question is which properties should be modifiable. Modifying the shaders, shader defines and uniforms could be questionable. Modifying the vertex format and vertex format mode should not be possible IMO. The rest is probably fair game unless I'm missing something

fleet dome
#

I actually think it could enable some interesting effects if you can replace the shaders πŸ˜„

lunar saffron
#

Fair

fleet dome
#

Tells you how long I haven't run this in Kits πŸ˜„

#

So I did just prototype this, let's see

#
- neotests (neotests) encountered an error while dispatching the net.neoforged.neoforge.event.RegisterGameTestsEvent event
  java.lang.IllegalStateException: Adding duplicate key 'ResourceKey[minecraft:test_environment / neotests:tests/level.block.event]' to registry

Hmmm

lunar saffron
#

Yeah, gametest registration is still broken as I mentioned earlier. I just commented out the two RegisterGameTestsEvent dispatches to get around that

fleet dome
#

Ah

#

Urgh I feel like a newb, how do I evern run that test πŸ˜„

#

Do I have to manually change the field in the code? πŸ˜…

lunar saffron
#

Set ENABLED to State.ENABLE_UI_LAYER

fleet dome
#

Yes okay, I just did heh.

#

Now the problem is... how is it supposed to look πŸ˜„

#

It looks exactly the same if I comment out my manipulator so I guess I failed πŸ˜„

lunar saffron
#

It's supposed to show a grass block outlined by a diamond block

fleet dome
#

To NSight!

#

Or well, wait, maybe I should check first if it ever calls glStencil functions πŸ˜„

#

So, current prototype:

public interface RenderPipelineManipulator {
    RenderPipeline apply(RenderPipeline renderPipeline);
}

And added this to the command encoder (this should probably be callback based)

void pushPipelineManipulator(RenderPipelineManipulator manipulator)
void popPipelineManipulator();
#

Then changed GlRenderPass:

@Override
public void setPipeline(RenderPipeline p_409823_) {
    for (var manipulator : encoder.getPipelineManipulatorStack()) {
        p_409823_ = manipulator.apply(p_409823_);
    }
#

One thing we have to be careful about is that the GL device keeps strong references to all pipelines it ever sees

lunar saffron
fleet dome
#

Weird, when trying to run the tests via the launch script, I get a RuntimeEnumExtender crash

Caused by: java.util.NoSuchElementException: No value present
        at java.base/java.util.Optional.orElseThrow(Optional.java:377) ~[?:?] {}
        at MC-BOOTSTRAP/[email protected]/net.neoforged.fml.common.asm.enumextension.RuntimeEnumExtender.findMethod(RuntimeEnumExtender.java:155) ~[loader-6.0.14.jar:6.0] {}
#

Oh, hm, maybe I just need to run build in gradle

lunar saffron
#

You've got outdated interface injections. The extensible enum injection for VertexFormatElement.Usage is gone

fleet dome
#

I am very confused. Even when commenting out all my setter code and setting the GL state directly I can'T get it to render right hm

#

Oh! The stencil attachment is missing from the FB and it behaves as if no stencil test is enabled :[

#

Chasing ghosts

lunar saffron
#

That would also explain the GL errors I saw earlier

fleet dome
#

I think we forgot to actually patch the DSA stuff for binding stencil to the fbo

#

Okay, yes.

#

Pushed the fix for the attachment

fleet dome
#

Alright, I did get it to work with the manipulator but I am unsure what to do about 1) caching (it'll memory leak right now) and 2) whether that's actually worth it πŸ˜„

#

we might just keep the GlStateManager parts and remove everything else again

lunar saffron
#

Hmm, that pipeline cache is really annoying for this πŸ€”

dark wasp
#

@tardy leaf is the radar replacing the xp bar because xp is getting reworked

haughty spade
#

isn't it a toggle?

#

at least that's what I saw in some video about it, that you can choose between xp bar and player locator

dark wasp
#

ahh I thought the xp bar only showed if you'd gained xp recently

haughty spade
#

afaik that's only IF you choose to show the player locator, and you are in a multiplayer situation

merry falcon
dark wasp
#

yes convoluted but yes harold

marsh mural
marsh mural
# dark wasp ahh I thought the xp bar only showed if you'd gained xp recently

while sure they have said this, that's also when I'm least interested and actively looking away from the xp bar

Only time I would be looking at the xp bar is when I'm out of combat planning what items to enchant

But yeah, im against the player bar in it's current form, feel it blocks the xp bar at wrong times, on larger servers with large amounts of players is going to be quite distracting and players not being able to disable it feels very wrong to me, should be players choice not some admins and under the accessibility settings if anything

fallow merlin
#

Tbf, have it display whenever it changes and or when your in a context that uses it, such as enchanting/anvil

#

Also player tracker is meh

marsh mural
#

Yeah, rn the player bar is always visible unless your sneaking or have recently earned xp which feels like the absolute opposite to when I actually want to see either the xp bar or player bar

fallow merlin
#

Ye

fleet dome
# lunar saffron Hmm, that pipeline cache is really annoying for this πŸ€”

Yup πŸ˜…
The idea for the system is still good, I think, and goes way beyond stencil effects. But I think it'd require that we introduce a client-side registry for these "manipulators" and enforce idempotency. THEN we could actually cache the manipulated pipeline as well.
That's why I ask... is it even worth it πŸ˜…
I am tempted to for now remove my extension of RenderPipeline and just ask people to use GlStateManager directly for stencil effects

fleet dome
#

@lunar saffron thoughts? Go all the way with it or revert to the absolute basics for stencil? πŸ˜…

lunar saffron
fleet dome
#

I think we can even go down one level

#

and not support it on Rendersystem, or do you think we have to?

lunar saffron
#

I think the intermediate state "holder" which the command encoder reads to set the state is a good idea instead of having people set the GL state directly

fleet dome
#

Uh I have to check that, but you don't get much from that either way

#

whether you set GL state or set global rendersystem state

#

you have to manually flush the guiGraphics, for example

#

So which intermediate state holder do you mean?

#

GlRenderPass?

lunar saffron
#

There is a scissor state object in RenderSystem which the helpers write to and the command encoder then reads from that

fleet dome
#

Ah yes, I see, it copies that to the renderpass when it is created

lunar saffron
#

Yup

fleet dome
#

Ok I'll do that

#

Ok done

#

You were on the right track. It was a good idea to mirror the scissor approach

#

Pushed

lunar saffron
#

πŸ‘Œ

fleet dome
#

The stencil clear is a bit... unclear πŸ˜› In terms of ordering

#

I think I still have to re-add the gui graphics flushes

#

since those happen outside of command encoding

lunar saffron
#

Yes, you definitely need to flush GuiGraphics before setting up the stencil. If I remember correctly it'll do a flush for you after rendering the item, so you don't need to do it yourself between the two and after the second

fleet dome
#

You still should since you don't know what the gui graphics does buffer internally

lunar saffron
#

Fair enough

lunar saffron
#

@fleet dome did you intentionally commit the disabled gametest event dispatches?
Also, with respect to the stencil stuff: one thing I'm not sure about is "patching" entire new classes into vanilla packages. I think it would be preferable to keep these in Neo packages, even if their uses are almost all patched into vanilla code

lunar saffron
#

@sterile abyss do you mind taking another look at the gametest registration stuff? When you enter a singleplayer world with the test client, you currently get a duplicate registration error (as long as the gametest registration event dispatches are not comment out of course)

fleet dome
#

And yes, I can move the stencil classes while we're at it

#

but you were fine with me just making it a @Nullable field?

#

I think having the stencil settings itself be immutable should be fine. people can just hold those in a constant and plug them in as needed

lunar saffron
#

Yeah, nullable is fine since it's immutable

fleet dome
#

Ok, I moved the stencil classes too

lunar saffron
#

πŸ‘Œ

weak lichenBOT
weak lichenBOT
weak lichenBOT
limpid crypt
#

small changelog

oblique tusk
#

<@&1067092163520909374>

#

IT BEGINS CONTINUES

warm night
#

gonna let apex do the thing but next cycle i'm stealing the template

lunar saffron
#

@oblique tusk does Snowman still need a manual kick to get going? If so, do you mind? πŸ˜„

oblique tusk
#

lemme go take a peek at it

#

wait a minute, I just realized

#

the bot didn't wake

#

this is unusual

#

@sterile abyss is the n8n workflow for New MC Versions supposed to be disabled?

sterile abyss
#

well I forgot to fix it after the incident

#

so yes

oblique tusk
#

the incident?

#

anyway, kicked Snowman into high gear

sterile abyss
#

don't you remember the incident?

oblique tusk
#

my memory's a bit faulty

real bolt
#

Queued a couple hundred runs

#

iirc n8n's cache of the version-meta got deleted so it decided that every version was new

oblique tusk
#

ah

weak wasp
#

@marsh mural

#

Basically some changes for maps, making some methods only available on the ServerLevel along with a useful debug mouse info draw call that's never used compiled out (thanks boq)

tardy leaf
#

*compiled out

marsh mural
#
Minecraft.net

Minecraft 1.21.5 Pre-Release 3

A third pre-release is out for Minecraft 1.21.5! Here's a quick rundown of 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 time. This is an unofficial update video that aims to be the most comprehensive guide possible. Of...

β–Ά Play video
marsh mural
#

dont mind me, just a little late to the party

thin cairn
fleet dome
glass wagon
#

I reran the failed jobs about 16 minutes later and they succeeded

lunar saffron
#

Is there anything blocking us from porting to snapshots beyond 25w09a? If not, I'd be down to hammer away at the rejects later tonight, just need someone to make the initial switch to pre3 because I still have no clue in that department πŸ˜…

limpid crypt
stiff imp
#

why

limpid crypt
#

Because the bug is fixed in Minecraft(?)

dark wasp
#

can you link to the exact jira bug report which fixes this

#

the bug number is in a comment in the patch, you can use that to search for it

limpid crypt
fleet dome
limpid crypt
#

I HATE MOJIRA CLOUD

dark wasp
#

same, that's why I asked you to find it for us harold

lunar saffron
limpid crypt
#

oh ok

dark wasp
#

in that case the comment should probably be updated to avoid confusing people in the future

oblique tusk
#

please

gleaming pendant
lunar saffron
#

πŸ‘Œ

gleaming pendant
#

Can you make sure that gradlew build works fine?

lunar saffron
#

Will do

gleaming pendant
#

We might want to squash and rebase already

#

Or maybe we keep that for this weekend

#

So we lock 1.21.x at the same time

lunar saffron
#

Sounds good to me

gleaming pendant
#

(well freeze)

lunar saffron
#

Patches generated and formatting shenanigans resolved, gradlew build only blows up on the :neoforge:createChangelog task with Cannot invoke "org.eclipse.jgit.lib.AnyObjectId.hashCode()" because "id" is null

gleaming pendant
#

Try pulling the tags

lunar saffron
#

No dice, same error

gleaming pendant
#

Well that sucks πŸ˜…

lunar saffron
#

Unless of course I'm being stupid and git fetch --tags doesn't do what I need it to do

gleaming pendant
#

Well, try git tag and see what it lists or sth like that

lunar saffron
#

That lists 20.2 and 20.4

gleaming pendant
#

That's not a lot but it should be enough

#

Maybe try pulling tags from the normal repository

lunar saffron
#

Ok, adding the normal repo as a remote and pulling tags from there fixes it

gleaming pendant
#

Probably some weird edge case. Maybe there is a depth limit somewhere

marsh mural
#

so prob just need to push tags from upstream to kits, to fix for future

gleaming pendant
#

@lunar saffron ready for the update to the pre?

lunar saffron
#

Yup

gleaming pendant
#

alright

#

pre3 already heh

#

maybe we should think about making the port public soon

lunar saffron
#

We can almost certainly do that when pre3 is dealt with

gleaming pendant
#
Execution failed for task ':buildSrc:compileJava'.
> Could not resolve all files for configuration ':buildSrc:compileClasspath'.
   > Could not find net.neoforged:minecraft-dependencies:1.21.5-pre3.
     Searched in the following locations:
       - https://plugins.gradle.org/m2/net/neoforged/minecraft-dependencies/1.21.5-pre3/minecraft-dependencies-1.21.5-pre3.pom
       - https://repo.maven.apache.org/maven2/net/neoforged/minecraft-dependencies/1.21.5-pre3/minecraft-dependencies-1.21.5-pre3.pom
       - https://maven.neoforged.net/releases/net/neoforged/minecraft-dependencies/1.21.5-pre3/minecraft-dependencies-1.21.5-pre3.pom
       - https://maven.neoforged.net/mojang-meta/net/neoforged/minecraft-dependencies/1.21.5-pre3/minecraft-dependencies-1.21.5-pre3.pom
     Required by:
         project :buildSrc
   > Could not find com.google.code.gson:gson:.
     Required by:
         project :buildSrc

πŸ€”

#

two questions:

  1. why does this require a manual run?
  2. how did neoform get released?
#

@sterile abyss

sterile abyss
#

because I still didn't get around to fixing the n8n workflow after the incident

gleaming pendant
#

very unfortunate

#

can you start the manual run?

#

@sterile abyss ^

lunar saffron
#

Speaking of that: should we run this for pre2 as well for completeness sake?

gleaming pendant
#

yes

#

maybe @fleet dome can do it if maty went to sleep

#

thanks πŸ™

fleet dome
#

yes I would have, but came a little late πŸ˜›

gleaming pendant
#

alright, have fun @lunar saffron

lunar saffron
#

Thank you πŸ˜„

fleet dome
#

how did you do the update again?

fleet dome
#

just run create kits branch?

#

yeah thought so .D

gleaming pendant
#

manually though

fleet dome
#

oh really?

gleaming pendant
#

ah I'm gonna remove the temporary snapshot repos

fleet dome
#

I thought we had done this automated in the past

gleaming pendant
#

which we don't currently have

fleet dome
#

but might be hallucinating

#

did we just genpatches, bump neoform, apply patches?

#

well yes, that's pretty much it

gleaming pendant
#

yeah

#

I like to follow the steps of the action, it makes it pretty much braindead πŸ˜„

fleet dome
#

yes, it should be an action too πŸ˜„

#

i always have to look up the damn property

#

the -Pupgrading, or is it -Pupdate... or -Pupdating

#

we should just make that it's own task, tbh

gleaming pendant
#

we could but it would probably be a bit messy?

fleet dome
#

what about that would be messy πŸ˜„

gleaming pendant
#

it's basically "run setup but with a different configuration for one of the tasks in the task tree"

fleet dome
#

setupForUpdate

gleaming pendant
#

sure but I don't want to create a full xxxForUpdate task tree? πŸ˜„

fleet dome
#

oh i see

#

god that's annoying

gleaming pendant
#

🀷

fleet dome
#

Maybe you could do something with taskGraph or whatever, but blergh

sterile abyss
#

we could alternatively make it a task param, at least gradle would scream at you if you get it wrong

frank sigil
#

I think it's still somewhere just not on the actions repo main branch

lunar saffron
#

Ok, I've got almost all rejects handled:

fleet dome
#

Well your hunch was right, DSA will do pretty much just what that method previously did when useStencil is used

#

applying that, how do i actually exercise copytexture hm

lunar saffron
#

By just entering the game with Fabulous mode, then it will be used through RenderTarget#copyDepthFrom()

fleet dome
#

Hm oh this is still not fixed?

net.neoforged.fml.ModLoadingException: Loading errors encountered:
    - neotests (neotests) encountered an error while dispatching the net.neoforged.neoforge.event.RegisterGameTestsEvent event
      java.lang.IllegalStateException: Adding duplicate key 'ResourceKey[minecraft:test_environment / neotests:tests/level.block.event]' to registry
lunar saffron
#

Nope, still needs maty's attention

fleet dome
#

Yes alright, switched to fabulous and it didn't crash at least

#

Ah no, it's spamming GL errors πŸ˜„

lunar saffron
#

Fun

fleet dome
#

huh funnily enough for clearStencilTexture

lunar saffron
#

That's the specific one I was sure I had gotten right kek

fleet dome
#

you were not passing useStencil=true there

#

but that alone didnt fix it

#

also what I dont understand is that the vanilla one doesnt actually set the draw framebuffer, while glclear can't really do DSA hm

lunar saffron
#

The loading overlay is also causing GL errors again:

at MC-BOOTSTRAP/org.lwjgl.opengl@3.3.3+5/org.lwjgl.opengl.GL15C.nglBufferSubData(Native Method)
at MC-BOOTSTRAP/org.lwjgl.opengl@3.3.3+5/org.lwjgl.opengl.GL15C.glBufferSubData(GL15C.java:449)
at MC-BOOTSTRAP/fml_earlydisplay@6.0.14/net.neoforged.fml.earlydisplay.SimpleBufferBuilder.finishAndUpload(SimpleBufferBuilder.java:344)
at MC-BOOTSTRAP/fml_earlydisplay@6.0.14/net.neoforged.fml.earlydisplay.SimpleBufferBuilder.draw(SimpleBufferBuilder.java:404)
at MC-BOOTSTRAP/fml_earlydisplay@6.0.14/net.neoforged.fml.earlydisplay.RenderElement.renderTexture(RenderElement.java:276)
at MC-BOOTSTRAP/fml_earlydisplay@6.0.14/net.neoforged.fml.earlydisplay.RenderElement.lambda$initializeTexture$25(RenderElement.java:268)
at MC-BOOTSTRAP/fml_earlydisplay@6.0.14/net.neoforged.fml.earlydisplay.RenderElement.render(RenderElement.java:61)
at MC-BOOTSTRAP/fml_earlydisplay@6.0.14/net.neoforged.fml.earlydisplay.DisplayWindow.lambda$paintFramebuffer$7(DisplayWindow.java:261)
at java.base/java.util.ArrayList.removeIf(ArrayList.java:1755)
at java.base/java.util.ArrayList.removeIf(ArrayList.java:1743)
at MC-BOOTSTRAP/fml_earlydisplay@6.0.14/net.neoforged.fml.earlydisplay.DisplayWindow.paintFramebuffer(DisplayWindow.java:261)

OpenGL debug message: id=1281, source=API, type=ERROR, severity=HIGH, message='GL_INVALID_VALUE error generated. Invalid offset and/or size.'

fleet dome
#

I was JUST about to paste the exact same error πŸ˜„

lunar saffron
fleet dome
#

Literally sitting on that breakpoint r/n lol

#

but the FML config to enable synchronous debug is very very useful

lunar saffron
#

Yup

#

While you dig into that, I'm gonna try to find out why block outlines seem to be broken in the test runs

fleet dome
#

Hmmm

#

Did you modify clearDepthTexture in any way? πŸ€”

lunar saffron
#

Nope

fleet dome
#

Hmhmhmhmh

#

i honestly don't understand how the vanilla one works

lunar saffron
#

In fact, that method even dropped a patch since vanilla introduced the hasDepthAspect() and hasColorAspect() methods, replacing the ones you added

fleet dome
#

What does that glDrawBuffer(0); clear; glDrawBuffer(GL_COLOR_ATTACHMENT0) actually do for clearing stencil+depth

lunar saffron
#

From the docs: glDrawBuffer, glNamedFramebufferDrawBuffer β€” specify which color buffers are to be drawn into
As far as I understand that, it disables color drawing

fleet dome
#

Yes but they're clearing depth only

#

so... why would that matter

lunar saffron
#

I have no idea

fleet dome
#

anyhow, funnily enough DSA optionally also binds the fbo to the global state

#

that is why GlStateManager._glBindFramebuffer(GlConst.GL_FRAMEBUFFER, this.drawFbo); is gone

#

so I'll remove that from the stencil clear method too

#

What confuses me, are we sure this worked with fabulous in the last snapshot? πŸ˜…

lunar saffron
#

My FramedBlocks porting experiment worked fine in Fabulous mode

glass wagon
#
Cannot instantiate local class 'MandatoryEntry' in a static context    ClientRegistryManager.java    /neoforge/main-java/net/neoforged/neoforge/registries    line 59    Java Problem

Do I need to make a bug report to ecj?

fleet dome
lunar saffron
#

No, but I can try that real quick

fleet dome
#

because idk, i think we might not be able to actually bind a combined depth+stencil texture to a depth-only attachment point

#

but from the diff with the previous version, it didn't seem like we accounted for that previously either

#

Hm yes, adding the stencil flag even for clearDepth fixes the log spam

lunar saffron
#

Your suspicion is correct, it blows up:

java.lang.IllegalStateException: Couldn't perform copyToTexture for texture 1 to 56: GL error 1286
    at com.mojang.blaze3d.opengl.GlCommandEncoder.copyTextureToTexture(GlCommandEncoder.java:482)
    at com.mojang.blaze3d.pipeline.RenderTarget.copyDepthFrom(RenderTarget.java:76)
#

The question is why there are render targets without stencil support when that should be getting propagated (unless I'm missing something)

fleet dome
#

Well I was in clear texture, actually πŸ˜„

#

Anyhow, comitting my fix for that one for now

lunar saffron
#

Let's see whether that fixes the nonsense I'm seeing right now. Basically, all texture-to-texture blitting appears to be broken, making entity outline and Fabulous mode non-functional

fleet dome
#

Alright pushed, with that I had no further error-spam in fabulous at least

lunar saffron
fleet dome
#

okay but the symptoms are?

#

oh and are you running with tests? (so stencil = on)

lunar saffron
#

Entity outlines don't render and, when you're in Fabulous mode, particles, block outlines and translucent blocks don't render.
I'm running without tests at the moment but I had also disabled specifically the stencil test mod at the beginning

fleet dome
#

You mean translucent like this?

#

Because that's in fabulous

lunar saffron
fleet dome
#

but i mean

#

install nsight, generate the launch scripts, go to town

glass wagon
fleet dome
#

under neoforge development/internal -> createClientLaunchScript

and then run nsight for build/neodev/runClient.cmd

#

(or renderdoc with child process tracking enabled)

lunar saffron
#

Let me get that set up real quick

fleet dome
#

renderdoc is easier to get since it doesnt need an nvidia account to download

lunar saffron
fleet dome
#

Oh huh, they must have changed that then

lunar saffron
#

You've got to be fucking kidding me. As soon as I attach the frame debugger it starts working screm

#

Once I run without it again, it breaks again. However, if I disable the early window, then it also works. Also, trying to capture a frame with the debugger while the early window is enabled causes the debugger to warn me about an invalid configuration but without the early window there's no warning

#

When I confirm that I want to capture regardless, then it shows the following message on top of the capture:
The following incompatibilities were seen during capture: (15.7s ago) glTexParameterIiv (pname = 0x00002801)

marsh mural
#

ooh fun neos AT file is invalid under kits
https://paste.md-5.net/odeyoyovas.sql
tried importing it into my mods workspace and port them
and test out my block placement renderer using the new render changes

lunar saffron
lunar saffron
marsh mural
#

worth me doing that while yall do render debugging or prefer to do at after everything else?

lunar saffron
#

Feel free to do it

marsh mural
#

apparently just had to run gradle generateAccessTransformers
-# imports into my mod workspace at least, with AT validation enabled

#

just pushed that change btw

lunar saffron
#

πŸ‘Œ

marsh mural
#

i assume iface injection would fail during gradle build if it had invalid entries
(injection points that dont exist or classes to inject which dont exist)
if so those should be fine, since build worked

lunar saffron
#

Not sure, would have to ask maty

marsh mural
#

so i know rendering is kinda borked at the moment but is water supposed to just not render under faboulus rn
fast/fancy it renders fine, im assuming its some transparency issue
(everything render releated seems to be transparency releated xD)

#

on a side note my placement render seems to working fine
its not correct since its using just using RenderType.entityTranslucent atm
i had a no depth variant in the past, need to figure out how to do that again

lunar saffron
#

Disable the early window in the FML config, it somehow breaks the GL state at the moment

marsh mural
#

also the game doesnt seem to be fully shutting down after i close the window
have to go into idea and kill the run

floral mesa
#

we angered the nvidia driver somehow

#

enjoy your stay

lunar saffron
lunar saffron
marsh mural
lunar saffron
#

Works fine as well. However, I have had cases regardless of the version where IDEA would still show it running until I clicked into the IDEA window in order to focus it again. Try just clicking into IDEA and then waiting

marsh mural
#

huh weird seems to be shutting down fine now, weird
you mightve been right tho, since i did just alt tab see it running and click the "kill run" button

marsh mural
#

where did the long seed parameter in ModelBlockRenderer.tesselateBlock goto?

when rendering things like stone/grass blocks in my placement renderer the rotation applied via block state is different each frame
cause i am no longer passing the see along
in 21.4 i looked up the seed via BlockState.getSeed(pos) and passed the result along into tesselateBlock
how would one go about doing this now in 21.5?

proven compass
#

doesnt vanilla grass do this as well

marsh mural
#

yeah, im trying to render the vanilla blocks
which require this seed in order for the rotation to be applied
in 21.4 i just looked up the seed from the block state and passed it along to tesselateBlock

#

but tesselateBlock no longer has a seed param in 21.5 so im unsure how to apply said seed

proven compass
#

wouldnt vanilla grass do this i mean

#

can u not look there