#1.21.2 Snapshots
1 messages · Page 2 of 1
trying to debug it further is a whole host of rendering which I am woefully unable to deal with at present
Ingredients take in holder sets now? That's fun
RecipeManager#getSynchronizedRecipes is really going to screw with JEI and the like since any recipe that cannot be placed similar to the recipe book check will not be synced
Poor EmojiRecipe
JEI will either end up forcing a sync or doing something manually
Ok, that's dumb. BlockEntityType was made private and the builder was removed
At least the Type was removed
o_O
oh it's actually not bad
simpler, in fact
we just need to AT the constructor open that's all
then we will be able to simply do ```java
DeferredHolder blah blah MY_BETYPE = BETYPES.register("my_betype", () -> new BlockEntityType(MyBlockEntity::new, Set.of(block1, block2, ...)));
Take your primer: https://github.com/ChampionAsh5357/neoforged-github/blob/port/1212-or-122/primers/1.21.2/index.md
Way too long to document
wow crazy
I feel bad for anyone who updates to snapshots
furnace_minecraft_fuel
should be minecart
mojangLogo - Gets the render type for the mojang logo
what
At startup in the loading overlay
interesting
I have no idea
It honestly makes less sense since they made the runner abstract for some reason

$TicksToSave -> $PackedTicks
I've seen Packed a few times
what does it mean when something is packed?
Basically, it’s just the data with any unserializable fields
could u say it a bit more basically lol
It simplifies the codes since before they were constructed with unit values for the unserialized parts
Like, if the unpacked version has an int and a runnable, the packed version only has the int as the runnable cannot be written to disk
ah ok
and then when its retrieved does the runnable not matter
its just made from scratch?
Yep, they’re just fancy helpers more or less
For example, the runnable for the poi section just sets the chunk as dirty
ah ic
It's fixed in the next snapshot, so we could decompile the next snapshot to see if the bugs are related or not.
I wonder if there will be emisif items in the next snapshot.
Likely
The issue was assigned to Gegy
but will light_emission work for items?
bruh
getOcclusionShape, getLightBlock, propagatesSkylightDown only takes in the BlockState, not the BlockGetter or BlockPos
rip crammed blocks
That's what the whole issue is about? What would Gegy be assigned to do if not this?
Maybe the fix will be just for blocks rendered as items
Only the first one is a bit annoying, the other two were already bound to blockstate-only despite having the additional context
bruh wtf is 1.21.2, so im guessing 1.21.1 will be the LTS?
yea i saw 😅
how do you guys handle so many things changing/updating when working on a new mod. Like im working on a big mod, that will take time, but everything keeps changing, so idk if to keep updating everytime something changes so by the time the mod is "done" it will be the "latest" version available, or if i should stay on like 1.21.1 for example and just finish the mod for that version. i hope that makes sense
I usually work in bursts
I'll work a few days in a row on a mod, then pause for a while
i cant seem to stop modding lol
its how i waste my time
well
spend my time ig since it'll eventually become profitable perhaps? 
ofc ive been working on my mod for 2+ years and its not even halfway done with 1.0.0 so
could still be considered a waste
but i've been ✨ learning ✨
Wrong channel?
nah it was related to this
tho i'm 12 hours late
curious, what mc version did you start and what version you at now?

well
back when i was using mcreator
1.16.5 was latest
then i ditched mcreator, started fresh, and now we're in 1.21.1
the original release
ah i see
😅
java mod was since 22
I picked an AoA level project for my first one, did not have the forsight to see the complexity
but that is unrelated to snapshots so I will shut up now
my first project was huge and ambitious as well. now it's stuck in 1.12 because porting would be a complete rewrite that i don't have the energy for.
#mojira message we getting more minecart changes tomorrow
[Jump to referenced message](#mojira message) in #mojira
Ahh, more work!
I bet there wont be any Snapshots tommorow but instead a Snapshot on Thursday
lol ok
I don't think that's possible to do because block item models just have the block model as a parent so there's no way to distinguish between block and item models. The code could check for instanceof BlockItem, but I don't know why Mojang would purposely limit the feature like this.
We will find out tomorrow (or soon)
Ok
#mojira message redstone is affected too in today's snapshot👀
[Jump to referenced message](#mojira message) in #mojira
hmmmm
its not thursday
correct
Wednesday is snapshot day. Just because it was delayed last week doesn't mean that's a normal thing
It's been delayed before, but it's pretty uncommon
yes I know
New version detected: 24w34a.
...yes
New version detected: 24w34a.
Wouldn't be surprised if current piston bolts don't work though and would need to be modified
Dispensers are allowed to stack Minecarts again
nice
<@&1067092163520909374>
posting again doesn't make it more visible 😛
hmm
anyway imma go back to work
CoreShaders hmmmm
Framerate has been improved when using higher render distances
Significantly reduced the performance impact when turning the camera
woah new snapshot, interrupted my shapez 2 
how could you mojang /s
oh that's goood
Wonder what this means for Sodium
I wonder what the rendering changes are
Well apparently there's an octree involved
Octree class added
Was it a coincidence that it was fixed at the same time?
they seem to have done a good amount of changes to how they load the core shaders, which were the cause of those recent bugs
and also the old bug?
the two older bugs were, as far as I understand, caused by transparency/translucency sorting issues
is that related to trees?
which Mojang then attempted to fix by doing some changes in the translucency section of rendering, which was a bit bugged which caused the recently reported crashes
Yes, trees! But not TreeFeature or anything to do with tree features at all
to quote Wikipedia
An octree is a tree data structure in which each internal node has exactly eight children.
who poked Snowman, that was fast
and a "tree" is a data structure wherein you have multiple nodes, each node having a parent, which when visualized looks like a tree with a root note and all other nodes branching off that
action long says it was the automation that did it
I meant the fact it was so quick compared to previously, the past couple of snapshots have taken 40 minutes 
Octrees and quadtrees are often used for various things in games
They're data structures
out of the previous 10 snapshot decompiles, only two have taken more than 5 minutes
Though the thumbnail does appear to be an octree joke
And it's these most recent two?
24w33a and then 1.21.1-rc1
hmmm. perhaps some sort of corruption is taking place when the newer snapshot-decompile run preempts the older
I'll leave investigating that to the future me, when it happens again and I have a sample set of two that are more identical
mandatory children counts don't sound legal
Some of those children are marked empty
It's usually for 3d space optimization iirc (i.e. divide a region in 2 in each dimension to get 8 children, divide the resulting children by 2 in each dimension if it contains something that needs higher resolution, etc)
iirc when I read the code earlier, it's being used in the SectionOcclusionGraph
hmmm @stiff canyon what does rendering girl think of the shader and rendering changes
hello yes
the rendering changes don't seem too bad honestly
I like the simplification of the shader stuff
I do wonder how mojang made minecarts stay on their tracks even at such high speeds
sooo neoforge adding geometry shaders when? /s
I haven't looked thoroughly at the change, but my guess is that they build a graph of the train tracks to simplify the lookup of "where is the next track"
and that makes it a lot easier to figure out which axis you're allowed to move along
This is actually doable
Like not a joke
We can trivially allow this, if we wanted to
Mhm
But right now we don't yet
It just requires extending an enum basically
Yep
During MCF we had many tests for this laying around on different machiens
In different stages
But you know how rendering changes are in this community
It lights a fire under people
Stronger then the sun
The only issue is that geometry shaders aren't that great for performance so really you shouldn't use them unless you absolutely need them
Also BakedQuad's light_emission is now applied to all geometry, including items, which is very good. Unfortunately they still use a separate field instead of encoding the value into the vertex data but that is not the worst thing.
I don't remember it clearly, but from what I do remember it was not that bad, it was better then forcing dynamic geometry
Because it would prebake the stuff
I hate that they encode the light level into the vertex data, that makes lighting the geometry so much harder
Into the section
does the same go for compute shaders?
Mac would like to have a word
Compute shaders are doable, but less doable since they require GL 4.x
at least IIRC
There are some additional extensions you could use on 3.3
But yeah t he really good stuff only arrives with 4.2(?, for sure 4.x) but mac simply does not have it
it is my understanding that all the features made core in 4.x, were already available through (sometimes vendor-specific) extensions
Correct
including things like instancing
But for CS specifically, a bunch of stuff that was added in later 4.x versions was not available in the extensions
Instancing is core in 3.2
is it? I thought it became core in like 4.5
Or you need to do some pretty heavy lifting yourself
That might be instanced CS
Which have a different behaviour when under instanced logic
glDrawElementsInstanced is core since 3.1
honestly I haven't used opengl directly enoguh to remember
so I'll trust that I'm wrong :P
The reason why I know this is because Gander is designed to be as compatible with GL3.2 as possible 😛
I'm already having to find workarounds for features in GL4.x that I unintentionally used
sooo what would neo have to do to support actual wavy water via resource pack?
Or an extension
Yeah
Create a shader side API
So that shader pack makers and modders can actually interface with each other
And then create a replacement pipeline to make it more reasonable for those new shader features to be used
In short: alot
Instancing is available in 3.2 but attribute divisors are 3.3 and SSBOs are 4.x so the best way to use instancing in pure 3.2 is buffer textures, which are somewhat clunky
Can confirm
Did you eventually fix your uniform limit excursion issue?
I haven't figured out a solution I like yet
Yes, core shaders are still not suitable for this sort of compatibility
True true
This is the biggest thing I want to implement in Gander, and it's difficult
However, Mojang moving the alpha cutout value to the JSON means Sodium/Embeddium can actually use that value without difficult parsing of the fragment shader
Do they still completely clobber the early depth test?
you mean the neo render pipeline ;p
I haven't looked at the latest shaders
Yesn't 
There's a lot of things Gander does that wouldn't be necessary for Neo, and shortcuts that Gander takes which Neo couldn't
How did they rewrite shaders again in a single update?
Also, food properties are now overengineered and genericized like enchantments
maybe the real shader code is just the rewrites they made along the way
Well, I should be done with the primer today. Just have a few other things to work on first
Also, I'd like to question the point of Blaze3D if they are still referencing net.minecraft classes
interesting how stuff got moved from blaze3d to minecraft
Piston bug 
"now kith"
I mean, it's no longer random, that's good 
They did rename the starting orientation method from random to initial
do we want to deprecate our per-vertex lightmap stuff now or just overlay it on top of the vanilla system?
I've been wondering about that as well, mainly with the thought whether separate values are useful. The new vanilla emissivity is a single value but is used for both skylight and blocklight. We have those separated for reasons I can't remember anymore (might be documented on the PR that split them)
There was an effect I was trying to get which was only possible by maxing one of the two and having the other at zero
In that case we should probably keep it, overlayed on the vanilla system
that'll be a mess internally but yeah I agree
Shouldn't be too bad. Ours is baked in when the quad's vertex data is built, vanilla's is set in VertexConsumer#putBulkData(), so we should be able to just Math.max() the values when vanilla applies its value
Ok, primer has been updated: https://github.com/ChampionAsh5357/neoforged-github/compare/630c822...ChampionAsh5357:neoforged-github:port/1212-or-122
Main changes were shader reorganization and consumables being added, replacing use item logic. Also a few renames in the level height accessor
@stiff canyon can yell at me later about how bad the shader example is
we should 100% keep it
just do a max or something
Careful, getMaxSection -> getMaxSectionY is not just a rename
There was no activity on Mojira yesterday, was it a public holiday in Sweden?
they don't fix bugs everyday Lolo
true
https://fxtwitter.com/gegybeans/status/1826298886920560992 Maybe they're implementing the replies of this tweet
https://www.minecraft.net/en-us/article/minecraft-snapshot-24w35a
<@&1067092163520909374>
New version detected: 24w35a.

Ha get sniped
New version detected: 24w35a.
sane enough
New version detected: 24w35a.
yeee more loot table refactors
i should teach Snowblower to be smarter, one day
nah, thats easy
teach it to eat the brown snow!
Raiders must find a place to spawn no more than 96 blocks vertically above or below the village center, or a raid will not start
more raid farm nerfing
in the past the raiders would try to spawn, then immediately despawn
raid farms simply need to have spawnable spaces within the village radius
Registry.getTag() is gone
Huh
and is replaced by get() in a sub interface
Registry is a HolderLookup.RegistryLookup now
what is DependantName used for
if i had to guess for defining a dependent name 
that is alot of item transforming, feel like result should be stored in a local var
@bronze crescent your a bee guy you might like this change
looks as though hive properties are now shown in item tooltips
it's a functional interface with a resource key parameter and a generic return value
just seen it used in block properties for decription id and loot table 
neat that blocks can now override the description id without needing to override the getDecriptionId method though
also random question but i thought snowman excluded all the json files and such?
but they are showing up in the repo, was this exclusion removed at some point
yea but if they don't they need to set the id on the properties
I thought it was just assets
--exclude "**.nbt" --exclude "**.png" are yeah just textures and structures
some reason i thought the whole assets/data folders were excluded
we exclude textures and structures because those are binary files that aren't really great for diffing
moreso on the structure NBT
oh god the refactor on Blocks
what happened?
they using more factory methods it looks like
most now use register(name, properties) instead of register(name, block)
IT BEGINS
a lot of utility methods and Function<BlockBehavior.Properties, Block>
ah, slowly becomes a bootstrap class
Oh nice
TrialSpawnerConfigs - trial spawner configs are now a data registry it seems
Datapack blocks by 1.22 would be nice
They should do items at the same time tho
Cuz BlockItem
Unless it becomes a component that holds the block state
i mean there already is a component that holds a block state tbh
I think it will be 1.23
or 1.23.4 for the memes
ShaderComponent when
tele no
@Mojang please dont miss this opportunity 
I say 1.23.4 releases April 1st 2026
sounds perfect and so fitting for that version num
wind charge and ender pearls now use the cooldown components
now i can give my self pearls and charges with 0 cooldown 
Lots of fun changes
did Neoform run ?
[Jump to referenced message](#builds message) in #builds
24w35a-20240828.142833
1.21.2-dev
24w35a
Ah yes, Properties#setId, because why not
I think the person that added that was not the same working on data driven blocks
I want to kick them
It's just an extra unnecessary step
Here's your updated primer: https://github.com/ChampionAsh5357/neoforged-github/compare/86262c3...ChampionAsh5357:neoforged-github:port/1212-or-122
Few changes. Main thing is that Registry now implements the lookup and getter classes, property specifying the block id, EntityRenderer#getTextureLocation being moved to locations its actually used, EntityModel now has a super taking in the root ModelPart
setId is so shit, it basically forces people to use deferredregister.block
and factory methods 
with shit you mean awesome right?
haha no 
Why would you need deferred register?
it's not so much needing DeferredBlockRegister so much as using or making something that sets both the registry id and setId from a single string
I'm guessing Intrusive Holders are yeeted but they're not quite ready to migrate every block.getId to a registry lookup?
Ah
The ID setter maty is referring to is on the block properties and the ID set by it is used in the block constructor for determining the block's loot table, so there is nothing to look up from the registry yet
and the ID set by it is used in the block constructor for determining the block's loot table
ahhhh

wait what's this id stuff about?
blocks now need to call a setId() method in the block properties
which is stupid and redundant
wut
that seems rather pointless, but not a huge deal
since Block.Properties.of() no longer has parameters in recent versions, I would assume we'll be changing DeferredRegister.Blocks to have a registerBlock("id", Function<Block.Properties, T>) which receives the ID pre-assigned?
or we can just use the one that receives the ResourceLocation
actually we do already have such a method, kinda
eh we'll worry about it once the prereleases roll around
We already have such helpers, one with only the function and one with a function<props, t> and a properties parameter, though the latter has it's flaws as well when you need other registry objects like sound events to create the properties
yeah I don't see the point in using that helper so I have never used it :p
I guess some people really like to use method references
yeah I've had my own helpers forever and I just keep using them
Same
but like, to me registerBlock("myblock", properties -> new MyBlock(properties, other args...), Block.Properties.of()) is less readable than register("myBlock", () -> new MyBlock(Block.Properties.of(), other args ...) so ...
I generally don't use helpers, unless I end up with a lot of repetition
precisely, it's less readable if you need more params and can't just ref it
what's the ID field used for?
[Reference to](#1250828895616237761 message) #1250828895616237761 [➤ ](#1250828895616237761 message)The ID setter maty is referring to is on the block properties and the ID set by it is used in the block constructor for determining the block's loot table, so there is nothing to look up from the registry yet
What is that seriously
Who came up with that
Weren't loot tables already data driven? What happened
What are we refering to?
Block.Properties#setId
You can make a block use another block's loot table, an arbitrary table or no loot table at all. They "just" changed how these three options are specified on the properties
someone let an intern touch loot tables
I don't think the DependentName thing is necessarily a bad idea, having to set the ID on the properties for it is just really weird when they could have instead resolved this lazily like they did in the past (the loot table getter call in the Blocks static init is gone)
If they kept it lazy, then it would even allow us to remove a few patches because we could treat the DependentName like a supplier
well I for one hope they yeet setId by release because it's a very weird and annoying thing
also the name is just bad anyway
it might become implicit when it gets turned into a codec
can't wait for that
#mojira message nice
[Jump to referenced message](#mojira message) in #mojira
No, the latter. This is an incorrect horse
the name is a nice ref btw
the correct is definitely the second. pants cover the limbs closer to the butt
I presume everyone in here is familiar with xkcd and has read the whole archive
If anyone hasn't, then you are in the lucky 10000
https://xkcd.com/936/
those who don't should take the clue and do it right now
from what I remember, using works has not real benefit
the point there is that 1 word has the same entropy as 3-4 characters of password, so you just need 4 or 5 words to match an okay password, and it's much easier to remember than a weird combination of letters and symbols
but it's important to remember that it needs to be multiple words in order for it to be worth
if you have 2 words it's a trash password
the issue is many websites have stupid requirements
Also useful to have random numbers between the reviews
8-15 characters, must contain 1 lowercase, 1 uppercase, 1 number, 1 symbol
just let me have a 50+ character passphrase instead!
I still use this to base my passwords on
I also do check them with https://www.bennish.net/password-strength-checker/ (which uses zxcvbn)
4SGKBb9yHW4kEb&xXJVt*b@dmiEQqCk5MMXSWbCdb2X*@re8fwRBQ8A8TYFj8ay6k2YEFQ5AwXnZxivGV2ZMeH9&v4Z3uMfP!NK*3oDdSR#7JD#3siRqRDiZL3S%%*wb
password! 
chance to remember it: 0
don't need to remember when you have a password manager
also, unless reusing the same password, I wouldn't be able to remember all of them anyways
I have no need to remember it!
I just generated one, to test that website
explicit is the new meta
deal with it
What?
which way should the pants go
what if both are incorrect?
Now the big question is:
Is that sheep they come across dyed or natural?
that scares me
I assume natural since vanilla has a chance to spawn a pink sheep naturally
nvm I misunderstood the question
thats looks like me when I am tired!!
you're in the minecraft movie?
This could be a serious plot point you know
Did someone dye it
Snappy's out

No changelog yet seemingly
It's not on mdcfe yet
but Ater also posted the MC link 😛
Hi everyone! In the most exciting Minecraft-related news of the day, we have a new movi- I mean snapshot coming your way!
anyway
time to mute this channel until I am home
Yah, I got sniped lol
New version detected: 24w36a.
This week we are adding support for custom equipment with Data Packs and Resource Packs.
New version detected: 24w36a.
It's hilarious to me that this is the commit message for that particular repo every time a new snapshot comes out 
New version detected: 24w36a.
Overridable item model, nice
I think a new version may of been detected
No longer a double unique ID
finally, I can make sticks into elytra
I think you broke the cache with stopping the action that was in mid commit push
It's now has 191 to decomp 
?
wow that really fancy tooltip mod is now out of business...
Ah wait, it was automatically cancelled because of n8n 
ohhh
This action was part way through https://github.com/neoforged/Snowman/actions/runs/10704300128
As well as our tooltip color event
All equippable items with an equipment model defined support rendering trims, based on the trim component
wow
However the retrigger caused this action https://github.com/neoforged/Snowman/actions/runs/10704314760/job/29677008592 to start, stopping the older one
However it's seemed to of also killed the cache so it's downloading and generating everything
They really are making a game engine
You're late
50/191 
piglin_safe_armor nice.
wait item_model is a thing now, what
So people can make items look like different items o.o
map makers eatin' GOOD tonight
oof
i blame n8n and, by extension, maty
Known Issues
Ender Pearls will not teleport you to the right location
fantastic /j
You could do that before as well, but it involved a custom RP with an override using the custom model data, which was significantly more painful than this
inb4 all the custom items in a modpack are sticks, forever
no u
Apparently the armor material registry has been removed. Short life as a registry
i'll prepare the funeral this evening /j
Please please send live clicking in predicates like with the keys
Perhaps it's a Dynamic Registry now?
bats_spawnable_on: Blocks that bats can spawn on
I always assumed bats spawned in the air
Nah they need blocks
phantoms spawn in the air
phantoms are just fugly bats
player vultures
Ender Pearls will not teleport you to the right location
"why am I in ohio"
it seems to be doubling the coordinates of the player on teleport
Apparently there is some weirdness if you are over by the world border
funnily enough this actual removes a feature, afaik you can now no longer have a vanilla item with a custom model that falls back to a vanilla model if the resource pack is not installed. (I have not verified this but what I heard)
Did they remove the custom model data component?
No
All of its properties are now covered by data components. ArmorMaterial still exists though to specify the data in one place and then use a utility method to apply the necessary default components to the Item.Properties
What data component is responsible for the defense and such?
Attributes
Specifically Attributes.ARMOR for defense and Attributes.ARMOR_TOUGHNESS and Attributes.KNOCKBACK_RESISTANCE for toughness and knockback resistance respectively. Durability is stored in the generic durability data component, enchantment value in the associated data component that was introduced in an earlier snapshot, target slot, equipment sound and model ID in the equippable data component and the repair ingredient in the repairable data component
Hm. I thought that the attributes data component was applied when the player was holding the item, ie for swords?
ah, it has a slot field
We're so close to data driven items
They made the elytra data driven like what else is there
registering new items lol
Nah that's the easy part
I meant like what's hardcoded in vanilla that needs to be converted
not exactly lol
trident behaviour
not if they want it to be actually reloadable
Dynamic registries are not /reloadable
(Assuming that's the kind of reloadability maty is referring to)
well i more meant reloadable as in synced and per world but yeah that too
item colours and model properties are still a thing
so there's still work to be done
Well, it's likely going to be finished tomorrow
I just spent an hour trying to understand how the ITEM_MODEL data component worked
All because I missed an annoying substring
But yeah, armor materials are official dead now
Only kept around as a delegate to data components
I am happy there is a EquipmentModelProvider though
Even though its completely useless since it only reads the bootstrapped values!
I wonder how trim overrides work then with armor materials? Did that get reverted back to how it worked before?
Trim entity model overrides
Not, item model overrides
Does anyone know if generally this brings us closer or further to bedrocks capabilities?
Trim is a data component as well, so it renders on top of the armor layers
Technically, this means that any equipment model can have a trim
For any layer type
They should do something like mcaddon files
Instead of folders
Or even allowing zip folders is fine
Right, but I'm talking about a specific element in the trim material object. The map of armor material -> string
But in a shared directory so you don't have to split up resource and data packs
Now that they work together
It's just a resource location
It's basically the registry system but without the backed registry
it uses the equipment model id
... well the loot table registries are
Are loot tables a proper registry or their own thing like recipes?
there's four kinds of Registries
- static registries, registered in java (blocks/items/mapcodecs)
- worldgen registries, loaded from datapacks, not reloadable (biomes, dimensiontypes, trims)
- reloadable registries, loaded from datapacks and reloadable (loot tables, maybe recipes eventually)
- the dimension registry (it's a special bunny)
isn't the dimension registry a normal worldgen one in vanilla and neo makes it special?
no
Its special because its filled from a combination of level.dat / world presets (which is a different worldgen registry), and datapacks.
Having had to mess with it a bit: the dimension registry is fucked up in so many ways
isn'T that equippable component actually bad since it means items cannot be dual-use (equippable in two slots)
That seems like an extremely uncommon situation
is custom modelled gear now possible in Vanilla?
Plus, items with more than one possible slot would cause all sorts of issues -- what slot would it go into when right clicking?
(Since that's part of what the component handles)
...Now, the elytra stuff being a component is awesome
... the first one?
Can you give an actual example of why someone would want such an item? It seems very niche and I imagine in most such cases someone could just make some easy way to switch what slot the item goes on
i am thinking more along the lines of trinkets, maybe
you can shove a wireless terminal in many slots 😛
Ah, yeah -- stuff like trinkets should probably not use the vanilla system then 
Oh wait, mainhand is a slot... yeah I can totally see stuff that would make sense in both mainhand and offhand
Shields are offhand
Offhand only ?
Like, not making it mainhand doesn't mean you can't put it in mainhand
offhand/mainhand are special i suppose
It just means that it won't "auto equip" in mainhand, as it were
Which for shields is sensible
(It also means, presumably, that mobs won't try to hold a shield in their main hand -- which is probably good, as zombies trying to bash people's faces in with shields would, though entertaining, probably not be great design)
shouldnt this link point to the first 1.21.2 snapshot
instead of the latest
so they can just click next for the rest of them
It all gets bundled together after release, I’m just using it as a method to say that I’ve updated the primer
ah
Is custom modelled armor now possible in vanilla?
Yep, model is passed in as a parameter
Yeah the model for the armor is an entity model, so not customizable
Animations first hopefully
The fact that the PR to Neo for it has 3 hearts should say something about people wanting that
Cuz how r u gonna animate a json entity model in java
Well yeah
We can want the world
Takes time to get there
We're getting json everything eventually
Perhaps that is Minecraft 2.0
Everything is JSON addable and they stop adding things to vanilla
Datapacks reign supreme
Equipment model for netherite armour in the new snapshot: p_371586_.accept(NETHERITE, onlyHumanoid("diamond"));
Yeah they were rushed fs
Slicedlime showed all the issues
Some of them seem to be easy fixes
i wonder why they were rushed
And because of that trying to register a data map on it will crash the game in the world creation screen because the vanilla dimensions are added to the registry after Neo tries to load data maps
But it works fine server side
I’d like a solution to that actually, would it make sense to delay data map loading when on the client in the create world screen? Or maybe just delaying the loading of data maps for the dimension registry until after world creation
Seems like they made enderpearls use the teleport position as a relative position
which would explain why it doubles the coordinates of the player on use
Movie
Ok, I'm honestly digging all the data component changes, but they suck to write about
and now items have the id parameter too!
What's it for?
The default item name. All items store their name in the ITEM_NAME component now
Even more than that
The id also helps determine the default model location and the description id
Although the model location boggles the brain on how they're choosing to go about it
Ignore the fact that I repeated description id
Right, the model uses it as well, forgot about that. The description ID is basically the item name
Yep, I realized that a bit too late
I feel like I'm learning a whole bunch of minecraft features writing the primer
Didn't know that llamas can wear wool carpets
Same 
as in resloc id?
ResourceKey yep
Yep
interesting
Doesn't map one-to-one because of mojang special casing, even though it can technically refer to two models at once
Because reasons
huh, a full key? what's the parent key usually?
So it's a DataComponent<ResourceLocation> that they just prefix with models/item/
Nope
It just stores something like minecraft:apple
And the ModelDiscovery strips the location by removing the item
So, technically, the model location could be either models/apple.json or models/item/apple.json as they would both refer to the same item model location
hmm
interesting
So if you pass minecraft:apple it will check both locations?
will it prefer the one in item if both exist?
Based on what I could tell, it only checks the item location
But even if it were to load both locations, it would just store whatever is last
Which just happens to be the item location
And it wouldn't be hard to have it load both with a separate special model
So, just things to be weary of
I guess now that tool tip stuff is more visible and transparent, Jade and other related mods are dead? Especially the bee hive/nest info.
wdym by dead? 
why would jade be dead? some of the tooltip customization mods maybe
as RP can now customize default tooltip style or data components can customize on per item basis
but jade shows detailed info in world, why would the above mean jade is dead?
they just need to update the mod once the full release is out?
I was thinking this snapshot and 1.21.2 will put an end to the reliance on those indefinately. I guess Jade and mods like that do so much more (all the f3 info?).
there's more to those mods than just the visible F3 info
like showing the internal capacity (energy, items, fluids, etc.) of blocks, custom info (for example, the block camo of a Framed Block from FramedBlocks), and others
@round perch , how does extensible enums handle enums with abstract methods? I'm assuming it'll need to be made default?
Yeah, I kept the old approach where the method would be made non-abstract and a custom functional interface is added which is passed as a parameter to the enum constructor for modded entries
Cool
zip with mcaddon extension imo
see then people would confuse compatible with java and bedrock
so it needs to have a different extension
for java
The
SimpleJsonResourceReloadListenerhas been rewritten to use codecs instead of pureGson.
🎺 another thing I can yeet from databuddy
The constructor is now protected
nevermind
hmm? that makes sense no? so that it acts like an abstract class
it shouldn't need to be extended!
SimpleJsonResourceReloadListener only handles the prepare phase, the apply phase is still left to be implemented for post-processing and other checks
I still wonder why BlockEntityTypes is now private.
some very interesting things I'm seeing in the primer
https://github.com/neoforged/.github/pull/8/commits/f3376a6b3a1f51870251290995b367e175f30d92#diff-ec4d8ed0a6d5e495022c95c9528e9351bde294a15dfa742cd5154ab8f268a3faR2124 makes me think they're going to "advancement-ify" the tutorial in some way, making it data driven
the RGB codec in ExtraCodecs is handy
and the DataComponentPredicate stuff is pretty interesting as well
It does get a little annoying, admittedly.
Especially with how long the advancement toasts linger.
yes
but it can be one datapack
modrinth does not need to be flooded with hundreds
that do the same thing
Or better yet, a world creation option.
real
The tutorial is supposed to only show once per instance
modrinth generally takes down duplicates I thought?
Only blatant copies
Not multiple people making the same thing
But anyway, the tutorial progress is stored in options.txt, so you'll never see it more than once on a single instance unless you delete options.txt
how is it different from just Codec.INT?
It's Codec.withAlternative(Codec.INT, VECTOR3F, ...)
The same thing already exists in 1.21.1 for ARGB with a vec4f
yep, allows for better user experience with the vector than with a gross integer
I'm still salty that plain JSON doesn't support hex literals for ints
yeah 😔
wait, seriously?
wtf
my god, does Douglas Crockford just hate comfort features?
Yeeesss!!!! Sorry for ping, I've just been using data buddy for a while and this is so nice.
I wonder if json reload listeners will ever catch up to Placebo's DynamicRegistry
How does that differ from the reloadable datapack registries used for loot tables?
Well for one it doesn't rely on vanilla's registry system, so no mess of trying to pass a registry access to every corner of the world
On top of that, it has DynamicHolder, which is retained by the registry and can unbind and rebind to new references as they are loaded
and it has automatic network sync, which is nice
Ah, nice
any frog tweets yet?
haven't seen a frog but CF made a tweet that isn't horribly cringy https://fixupx.com/CurseForge/status/1833873742230868092
going thru some stuff rn, dont text🫤
yo curseforge mentioned me
I imagine a intern had to make that
and I feel sorry for them\
[Jump to referenced message](#minecraft-updates message) in #minecraft-updates
This is a new version. Changes listed from 24w36a.
Links:
client | client_mappings | server | server_mappings
com.mojang:jtracy: (none) ->1.0.29com.mojang:logging:1.2.7->1.3.8
jtracy 🤔
New version detected: 24w37a.
what is jtrace?
why do you think anyone knows 
Looks like java bindings for https://github.com/wolfpld/tracy
<@&1067092163520909374>

Ender Pearls will now also load chunks when thrown.
oh hey, minecraft.net now respects browser's dark mode
oh boy
So Etho’s ender porters should work again
(I figured that out from the sources, at https://libraries.minecraft.net/com/mojang/jtracy/1.0.29/jtracy-1.0.29-sources.jar, and the license in the natives)
so vanilla chunkloader are now easy to do
Ender Pearls will now also load chunks when thrown.
nice!
oh great, loot function changes (again)
Ender Pearls now unload when a player logs out, and reappear whenever that player logs back in, similar to how mounts currently behave
Oh my gosh
How do I unsubscribe to pings from this thread
that means you can leave an ender pearl on a teleport station indefinitely
EPs loading chunks is going to ruin speedrunners
and no one can mess it up while you are offline
removed the snapshot alarm role from you
no worries, speedrunners will remain on 1.16.1 indefinitely anyway /hj
Thanks
via id:customize would've been the regular way
but giga took it into his own hands
was quicker
Wait this means you can now remotely start/stop ticking chunks using an alt account
I screm, Snowblower is generating 271 again
I mean, if you want to spend an extra $30 then you can yes
brewing_fuel: Items that can be used as fuel in a Brewing Stand
LETS FUCKING GOOOO
N8N killed the cache again 
Chickens laying eggs is now controlled by a loot table found at gameplay/chicken_lay
nice.
huh
I can already see the datapacks for that
@hoary cipher meme
no no, kinder surprise eggs
Chickens mod:
and a lot of generalization with the tags!
ooo, Totem of Undying effects are datapackable now
and you can make armor resistant to any effect 👀
what does 271 indicate 
15:30:35.246 INFO net.neoforged.snowblower.Generator -- [61, 271] Generating 21w03a
15:30:44.859 DEBUG net.neoforged.snowblower.Generator -- Committing files
15:30:47.782 INFO net.neoforged.snowblower.Generator -- [62, 271] Generating 21w05a
15:30:57.405 DEBUG net.neoforged.snowblower.Generator -- Committing files
hi :>
N8N keeps firing 3 times, killing the older jobs, one of which got far enough to load the cache (so it was solely just pushing old commits), when that job got killed it also killed the cache, so regenerating time 
I'm 🤏 this close to adding a sleep 10s step
though really, it should be fixed in n8n if possible
You may need a longer sleep
, iirc last week it was about a minute after
bundle special-casing in GuiGraphics 
ender pearl chunk loading ?!!!!!
...screm
WHAT
240/271 
you are alive!!
24w36a: https://www.minecraft.net/en-us/article/minecraft-snapshot-24w36a
There's also a new snapshot already!
Merch: https://phoenixsc.store/
Cape: https://store.badlion.net/shop/PhoenixSC
This channel is powered by Shockbyte server hosting --
Receive a 25% discount on you...
Funny how that thumbnail is so regular to me because I always make and test armor without adding in the textures first
There's a new "Create Test World" button on the title screen that makes a Redstone Ready flat world with creative, and disables weather cycle, daylight cycle, and mob spawning
I was wondering what that was about when I saw it in the Snowman diff.
Also, I
at the limitations of the GH app, Minecraft diff is too large to display and after 50 files it's cut off
Clientbound player rotation is now sent as a full float instead of being locked to 256 discrete steps
best button ever
Not sure how much I like the game capturing the screen every tick
Huh
did they implement microsoft recall?
Well you have to do --tracy to enable Tracy support
True, and it can only capture the current screen
That's fine then lol
Also, this snapshot has been alot of reversing the previous snapshot
Ah yes, you know how pointless limiting StreamCodec#composite to six parameters when they add one to accept seven
Does it even capture the entire screen? Or just the MC window? The former seems extremely weird to me
They added integration with Tracy which is a frame profiler and it supports associating screenshots with captured frame data, that's the screenshots Champ is talking about
Yep
If I'm not mistaken, a data component also controls per-item slot highlighting now too?
Which means people can "disable" items with a visual now :D
I haven't even gotten there yet...
Death protection is a data component too
I feel like this version is just gonna be the great component migration
is it a data component? I thought it was just hardcoded
Oh. Misread and combined a component import plus code.. derp
But hey Mojang if you're listening that'd be pretty dope
Making slots disabled via an item tag or something
They could use that in the enchanting table, for example, to disable non-enchanting items and lapis/fuel
Or make things like the smithing table dynamic, f.e. once you put a netherite upgrade in it disables all the non-armor/etc
DataPackReloadCookie and InitialWorldCreationOptions are both new..
Boat Type changes again!
They more or less existed before
🚣♂️
What did they change? Can't look at the diff because I'm on the road and GH mobile sucks
Oh hey, WRITABLE_BOOK_CONTENT is a thing now, and just having that means it can open the book editing screen... nice
Basically made the boat item a supplier and removed the planks
Nice little #is(Items.FILLED_MAP) => #has(DataComponents.MAP_ID) in a couple spots..
Might be able to turn a stick into a map, lol
Commands appear to check feature flags now.. (GameRules)
That's awesome, allows us to nuke some patches in and around that enum
Shearing now takes in an itemstack in the attempt, passing it to the item behavior...
More shearable things via dispenser I suppose?
FriendlyByteBuf now has read and write methods for ChunkPos 
Granted it's just a small wrapper around long, but still
Surprising probably nobody, TagKey now has a stream codec method (wrapping ResLoc)
Relatively short one today, nothing that interesting except cleanup and enderpearls/tracy stuff: https://github.com/neoforged/.github/pull/8/commits/7b057631e19c81f49df08e27e47b3855d9504986
Was Equippable#builder always a thing?
Looks like a few things changed in Item around it
Okay yeah Equippable.Builder is new, nice
ChunkPos.CODEC and ChunkPos.STREAM_CODEC finally exist \o/
LOOTR will be happy: BrushableBlockEntity#brush now passes the player and brush itemstack to the loot table (unpackLootTable and brushingCompleted)
StateHolder now uses a Ref2ObjectArrayMap internally, nice
BlockState properties are now slightly more strict, as getPossibleValues is a List instead of a Collection...
I'm pretty sure that's been the case for a while
Foliage/Trees changed again
for what field? cus it's existed for values for a long time
ah, for the neighbors? I saw apple say in fabricord that it got changed from a Table to Map<Property, T[]>
yes
Hmm, I'm curious how they calculate the index into that array 🤔
Aight, hit the end. Bunch of nice little things added here, tho
Property#getInternalIndex by the looks of it
That at least sounds a bit better than a List#indexOf() 😅
I assume that's the enum property. Where does the max usable ordinal come from?
I think this is for the case where the property only includes some of the enum values and not all of them
That feels like something that could be done faster with an array in the property that maps from ordinal to index
likely, yeah
A heap dump suggests that it's actually quite a decent improvement in terms of memory (vanilla 1.21.1 vs 24w37a):
- 1.21.1: 26.686 blockstates at 2.56 MB shallow/42.08 MB retained
- 24w37a: 26.686 blockstates at 2.78MB shallow/15.27 MB retained

What's shallow vs retained?
To quote YourKit's docs:
Shallow size of an object is the amount of memory allocated to store the object itself, not taking into account the referenced objects. Shallow size of a regular (non-array) object depends on the number and types of its fields. Shallow size of an array depends on the array length and the type of its elements (objects, primitive types). Shallow size of a set of objects represents the sum of shallow sizes of all objects in the set.
Retained size of an object is its shallow size plus the shallow sizes of the objects that are accessible, directly or indirectly, only from this object. In other words, the retained size represents the amount of memory that will be freed by the garbage collector when this object is collected.
The root type is BlockState for these values
Oh neat
The log4j file in mojang's logging library hasn't been updated but the one in the version json has been updated to output to tracy
I wouldn't say roots; just that the retained size is the maximum possible amount of memory that could be freed if the object and everything it references can be collected
#mojira message yo, the "too expensive" bug is fixed
[Jump to referenced message](#mojira message) in #mojira
The visual bug may have been fixed by them removing Too Expensive entirely
That would be nice
unlikely, that feature is their way to make people want to get Mending :P
and then you can't add mending, because it's too expensive
does mojang not datagen their lang keys?
ah no the lang key is fine, the typo was in code
I suspect they have developer strings, but the actual lang files are done by translation teams
that said, LanguageProvider is not vanilla
ahh
so maybe they don't datagen them at all
I think en_us is made by the devs
Then that's used as the basis for translators for other languages to use
they use crowdin
MC-276588: Boat with chest inventory names no longer are suffixed with 'with Chest'
wow focusing on the right things
Just as notice, I'm traveling wednesday for an anniversary, so I will be late on the snapshot primer
what do you guys think about starting kits this week?
🤷
i see no reason why not
I'd like to split NeoForge and convert it to a new in-repo plugin at some point before the release of MC 1.21.2
That doesn't prevent us from already starting to port; we can do that later, it's mostly independent
(and splitting NeoForge will make rebasing annoying, so it's best done late, e.g. in the prerelease cycle)
why would it be discussed in private
It's about splitting sources and patches between client and common
because I was not sure about it being a previously undiscussed outside facing change or just an internal change, since it is just an internal change it's fine
it will be outside-facing at some point, but the first step is to split neoforge internally
(it will require tweaks to some APIs to eliminate client-only references from common code)
I'm personally a +1 on inlining NG into Neodev and starting to carve off/maintain only the required bits. Means the plugin code can be optimized.
User/Mod dev can still be run with the two gradle plugins independent of Neodev
193 reject files for 24w37a including 15 files for which the class is gone
8 of the removed classes are client side, 6 are in the item package, and the last 1 is the ChunkSerializer class
that's not what we are talking about tho
also moving neodev into neo should be as easy as copying the platform plugin from ng into buildSrc and would not require a rewrite just to use MDG instead of NG just because the MDG devs want to do so
I would recommend not completely overhauling NeoForge's build system while porting to a new Minecraft version. It'll just create more work and will be more hassle for everyone. The best time to change it is when we're not making breaking changes
the best time would be in a version that the community happens to decide they won't use, but given mojang's recent announcement we don't know which versions will be good candidates
I think most mod and modpack developers will stick with 1.21.1
In any case, we should have a solid target to test against, because if we change the build system, it COULD introduce subtle bugs, and dealing with those while also porting will just lead to burnout
don't ask me how I know
I don't think so, the only times a version did stick is when minecraft or the modloader introduce so much breaking change that the idea of rewriting from scratch doesn't seems too bad
Then why was 1.20.1 so popular?
because of the forge/neoforge split and the unknown about the future, modders were wary about the longevity of neoforge
1.20.1 was popular because 1.19.3/.4 were a mess, and 1.20.2 was a mess too
people decided not to update to "tech & preview" updates
also, neoforge did bring a few breaking changes in (almost?) each 1.20 minor
1.20/1.20.1 -> feature bump (stable)
1.20.2 -> tech update (unstable)
1.20.3/.4 -> content preview update (unstable)
1.20.5/.6 -> content preview update (unstable)
1.21/1.21.1 -> feature bump (stable)
if they continued the same way as before, 1.21.2 would be a tech update, released before the minecraft live so it wouldn't include any content previews, but it would include many breaking changes in the code
but the recent announcement means we have no idea what 1.21.2 will be
or even if there will be a 1.21.2 -- they could delay it, announce a few new mobs and features, and call it 1.22
I mean go ahead and give it a go
they did, yes
I kinda disagree; accidental breaking changes will be better received if the version is experimental anyway 😄
- get we free testing by the people porting to snapshots
what's also not clear is that you say it will "create more work"; more work for whom? if it's for people porting to new snapshots, they are already volunteering to do extra work 😄
we have to do split sources during a BC window anyway
I currently have no time to do something that isn't absolutely necessary as I need to plan my trip to Stockholm
so let the people who have time do things the way they think is best? 😉
inlining NG platform into neodev will make it unmaintainable because of how coupled it is to the rest of NG
Hopefully this is the way mojang is going with more frequent updates going in the future and won't step on too many modder's toes then.
Other people are saying this is like the really old days in Minecraft's infancy like the alpha and beta with new stuff to mess with every few days, months, weeks?
they were already doing that before the announcement, so that means it's changing
Oh great...
I expect they will release full versions 2-4 times a year instead, with less features each
So like the 1.7 1.8 1.9 etc in fast succession like years ago?
they just don't want to commit to a schedule wnymore
time to institute a coffee ration
yeah like that sorta
NF team members who help port get a smol coffee subsidy /j
I started back in 1.14.x so it was not as fast as early MC, but not like 1.16+
1.15 and 1.16 came rather quick compared to 1.17 and later.
1.15 was a december update, they tried to have two updates a year, and it kinda didn't work
I think they just don't want to add features they didn't announce in a "live"
so they will have two announcement videos a year and then release the features piecewise in the months after
we'll see what happens
We have a frog post
<@&1067092163520909374> https://www.minecraft.net/en-us/article/minecraft-snapshot-24w38a
Oooo
New version detected: 24w38a.
imma go mute this channel until I am home
New version detected: 24w38a.
New version detected: 24w38a.
How many times is it going to say that
crafting_transmute recipe type
let's go
New Item Component
crafting_transmute recipe type
this sounds interesting
wait, that's not what I need 
Why didn't they just do dyeing with bundles like how they have with other leather stuff?
I don't understand what they mean by New Item Component
Snowman seems stuck waiting for a runner
Oh, it’s for crafting
Also it did the triple restart again
So it’s either the component stores a recipe or a possible item that can be modified through some parameter, or that the recipe just copies the components
No idea what, and I won’t be able to diff until tomorrow

Enabled hardcore mode for Realms
realms didn't allow hardcore until now?!
crafting_transmute recipe type
New crafting recipe type has been introduced: crafting_transmute When matched, output will copy the input item stack, changing the item type but preserving all stack components
nice!!
I think they just accidentally some word



