#1.20.2

1 messages · Page 10 of 1

stray scroll
#

good thing most of that is just rebased commits of my cleanup branch kekw

#

pats self on back for past work

mental carbon
#

Link?

stray scroll
#

also discussing in #neogradle-dev

kindred fractal
#

nice coremods test

#

I fear the worst

rich void
#

why java 16?

kindred fractal
#

because it was never updated to 17 of course

#

but this time I won't be fooled... it builds and that's good enough for me

tacit vale
#

I got pinged in the announcement for my work, did someone actually continue the registry stuff? I haven't been able to keep up with all the recent developments

kindred fractal
#

not sure - @quiet talon what's up?

quiet talon
#

I will be continuing it when I can™️

#

Eclipse only just barely works, lol

#

been waiting on that

mental carbon
#

is writing a bash script which splits up all the test mods

kindred fractal
#

what

#

well you do you, I need to sleep... could have maybe kept that for some other time

mental carbon
#

I still have to do datagen myself

#

But most of it should be ready

thorn robin
#

how much work is ahead of the arch team to support neo 1.20.2 when it releases ResidentSleeper

#

i have mid terms in a week

tranquil salmon
#

@mental carbon NeoGradle sets the MOD_CLASSES environment variable for when running with eclipse to the build\classes\java\main directory even though eclipse compiles to the bin\main directory

#

also The project name '.settings' must not start or end with a '.'. Set the 'rootProject.name' or adjust the 'include' statement (see https://docs.gradle.org/8.1.1/dsl/org.gradle.api.initialization.Settings.html#org.gradle.api.initialization.Settings:include(java.lang.String[]) for more details).

mental carbon
mental carbon
mental carbon
#

Ah yeah I need to add an exclude there then

#

Will do in a second

tranquil salmon
mental carbon
#

Does it somehow split resources and classes?

#

Does it contain unpacked information in some way

#

How does eclipse know what sourceset in gradle goes into what .bin/ directory?

quiet talon
#

its literally

tranquil salmon
quiet talon
#

bin/main/<packages>

mental carbon
#

That literlly says 0 shits to me, with respect to how it deals with the individual sourcesets within gradle

#

Like a run can have 2 sourcesets

quiet talon
#

I don't think it does

mental carbon
#

Well I am sorry, but then you are out of luck......

quiet talon
#

all the classes for the project go into the bin folder

mental carbon
#

The source set is what drives the included files

#

You set for example that the run should be derived from sourceSet main in project A and sourceSet api in project B

#

Then it should only include those

#

And only those

quiet talon
#

it uses whatever is defined for the project

#

if you want to know exactly what that entails you might be left poking around buildship internals

#

I don't use projects with multiple sourcesets so I don't have any reference

mental carbon
#

Shit

#

That is rather annoying......

#

I will do some digging

#

No promises at the moment

#

IDEA Run in Idea is also currently not supported for the generated runs.....

quiet talon
#

I think you just need to remove the classes/java part from build\classes\java\main

mental carbon
#

I think so too

#

But as with the runs

#

I would like to have it on paper somewhere

#

So that we are not continiously guessing shit

#

I do have this

#

Maybe I can use that in the run generation

quiet talon
#

I think its always bin/main unequivocally

tranquil salmon
#

There are options in eclipse to set the output folders individually but it doesn't seem like buildship sets that

mental carbon
#

This also exists.....

tranquil salmon
mental carbon
#

Is it always bin\main?

#

regardless of the sourceset?

quiet talon
#

believe so

#

never seen it be anything else

mental carbon
#

So it is not bin\api for the api sourceset?

quiet talon
#

ah, it might be

#

the ELC project has a test srcset

#

and that one is bin/test

mental carbon
#

I think I can make that work at least

#

I mean I need some way of having the split sources

#

Else it makes 0 sense

#

I will do some digging later

#

I have some options with access

#

Might mean a refactor so that MOD_CLASSES is only generated and does not use a token

#

But that is the best I can then do

quiet talon
#

that's probably fine

#

isn't it static now?

#

now meaning fg6

mental carbon
#

It is a static system in fg6 yeah

#

But not in NF7

quiet talon
#

what exactly were you hoping to do?

#

I think you wouldn't need to run anything other than maybe main or test

mental carbon
#

For ForgeDev for example

#

The sourcesets span multiple projects

quiet talon
#

no they don't

#

each subproject gets its own /bin

mental carbon
#

Yeah I understand that

#

But I still need to resolve those for each run

#

A run can and will have sourcesets from different projects....

#

Especialy the test project

quiet talon
#

So you need to resolve what, exactly, the list of dependent source sets for a project?

mental carbon
#

No, I have a list of sourcesets

#

Related to the project they are in

#

I just need to resolve the directory

#

It is not rocket science

#

But given that a user can configure the .bin\ directory

quiet talon
#

it should always just be <project loc>/bin

mental carbon
#

I would like to figure out if I need to hardcode it, and screw them over, or if the EclipseModel gives me access to some of that information

#

The key word here is should

#

If I can't find any information on it

#

I will just hardcode it

#

But I would rather do some research and not guess

quiet talon
#

What allows you to config the bin dir location?

mental carbon
quiet talon
#

Well, yes, but based on what coeh said buildship just ignores it

mental carbon
#

At least based on the JDoc in the class

#

Maybe

#

That is what I want to test......

#

And not guess...

#

I need it on paper

quiet talon
#

lets see if anything resolves the output folder then

mental carbon
#

What I am wondering is if the user sets a different output folder

#

Is that reflected in the EclipseModel

quiet talon
#

might be the eclipse var project_classpath? let me see what that resolves to

#

Oh boy that's everything

#
Prompt: C:\Development\Github\EclipseLaunchConfigs\bin\main;C:\Development\Github\EclipseLaunchConfigs\bin\test;\EclipseLaunchConfigs\bin\default;C:\Users\Shadows\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.15.2\9353b021f10c307c00328f52090de2bdb4b6ff9c\jackson-databind-2.15.2.jar;C:\Users\Shadows\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.15.2\a6fe1836469a69b3ff66037c324d75fc66ef137c\jackson-core-2.15.2.jar;C:\Users\Shadows\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.15.2\4724a65ac8e8d156a24898d50fd5dbd3642870b8\jackson-annotations-2.15.2.jar;C:\Users\Shadows\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.dataformat\jackson-dataformat-xml\2.15.2\e7e9038dee5c1adb1ebd07d3669e0e1182ac5b60\jackson-dataformat-xml-2.15.2.jar;C:\Users\Shadows\.gradle\caches\modules-2\files-2.1\com.github.bsideup.jabel\jabel-javac-plugin\0.4.2\bdfa2f76bfb7924ba2e6b5aadac66a391b2ede0f\jabel-javac-plugin-0.4.2.jar;C:\Users\Shadows\.gradle\caches\modules-2\files-2.1\org.jetbrains\annotations\24.0.1\13c5c75c4206580aa4d683bffee658caae6c9f43\annotations-24.0.1.jar;C:\Users\Shadows\.gradle\caches\modules-2\files-2.1\com.fasterxml.woodstox\woodstox-core\6.5.1\c6e52e84fe959e69a243c83ec7d24cd889444ddf\woodstox-core-6.5.1.jar;C:\Users\Shadows\.gradle\caches\modules-2\files-2.1\org.codehaus.woodstox\stax2-api\4.2.1\a3f7325c52240418c2ba257b103c3c550e140c83\stax2-api-4.2.1.jar
#

I think we can surmise that there is nobody changing the .bin folder's location

#

given that it has been this way... literally the entire time forge has existed, lol

mental carbon
#

Question: There does not seem to be a way to get the codec from a RegistryLookup is there?

tranquil salmon
mental carbon
#

Yeah

#

Okey 😄

#

Now becomes the question, does it also contain the value set by the user

tranquil salmon
#

I think buildship resets the output location whenever the project is reimported

kindred fractal
#

what are the new equivalents of genPatches and setup?

mental carbon
#

setup = setup

#

genPatches = unpackSourcePatches

fallow sundial
kindred fractal
#

did anyone ever encounter

Execution failed for task ':forge:neoFormJoined1.20.2-20231016.095323DownloadAssets'.
> There were multiple failures while executing work items
   > A failure occurred while executing net.neoforged.gradle.common.runtime.tasks.action.DownloadFileAction
      > javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake
   > A failure occurred while executing net.neoforged.gradle.common.runtime.tasks.action.DownloadFileAction
      > javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake
   > A failure occurred while executing net.neoforged.gradle.common.runtime.tasks.action.DownloadFileAction
      > javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake
   > A failure occurred while executing net.neoforged.gradle.common.runtime.tasks.action.DownloadFileAction
      > javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake
mental carbon
#

No

kindred fractal
#

interestingly my clean sourceset is missing part of the files

tranquil salmon
#

Mine is as well

mental carbon
kindred fractal
#

look at the packages

#

net.minecraft.util for example is missing

#

or net.minecraft.level

mental carbon
#

Okey it is functionaly obviously not relevant

#

But Yeah I will check

dull bison
#

soo what is still missing

#

(from the port)

kindred fractal
#

well I expected it to be relevant if it's there 😛

#

someone needs to do the rebase

#

don't we have a todo list somewhere?

dull bison
#

yes but nobody keeps it up to date

mental carbon
#

The rebase is problematic

#

Cause we refactored so much that a normal rebase does not work

#

So we would need to do a manual cherry pick base rebased

kindred fractal
#

just cherry-pick whatever was added to 20.1, then squash everything and rebase with -X ours (or -X theirs, whichever one is correct)

#

I am trying to get forgedev to launch with the repackaged deps to make sure they still work

#

we will commit the actual repackaging after the rebase, of course, so I will "soon" be blocked by the rebase

kindred fractal
dull bison
#

hackmd

kindred fractal
mental carbon
#

My goal tonight is to get the damn directories in eclipse and idea run mode correct

kindred fractal
#

can you take some time to write down all the tasks that you know you still need to do?

#

(not necessarily right now)

#

can we move networking to post-release?

#

I'll just move it, it's not essential

#

schurli I updated the hackmd with a few items

mental carbon
#

I added my stuff

kindred fractal
#

thanks

#

seems to "work" if I click on "shorten ..."

dull bison
#

yes I had to enable command line shortening

mental carbon
#

What is actually the thing that is too long?

#

It is the legacyCp?

dull bison
#

it's because we have the legacyClasspath directly instead of in a file

mental carbon
#

Okey added that as a task

#

Trivial fix 😄

kindred fractal
#

make sure to add the empty downloadAssets directory issue too

fallow sundial
mental carbon
#

Sadly there is no way to control that

fallow sundial
mental carbon
#

At least not in the idea ext plugin

#

But I can just write the file properly

dull bison
#

yup and it needs to be set to args_file

mental carbon
#

Okey

#

But that won't work for eclipse

dull bison
#

file it is

fallow sundial
#

that's if i can figure out the name of the option

#

org.eclipse.jdt.launching.ATTR_ATTR_USE_ARGFILE

mental carbon
#

@quiet talon I guess I will need to update the lib then

kindred fractal
#

crafter!

dull bison
#

CRAFTER

fallow sundial
#

CRAFTER!

arctic sphinx
#

👀 Added field block_state to tnt entity to allow replacement of rendered block model is semi interesting

kindred fractal
#

what

#

since when do entities have json

#

oh it's probably just the nbt tag

arctic sphinx
kindred fractal
#

does the crafter seriously drop items that can't fit into it?

mossy bobcat
arctic sphinx
#

Likely useful for map makers in some way

#

Or the start of more tnt types

muted hemlock
lethal bane
#

I read that wrong for a second and thought they made TNT a BER harold

fallow sundial
#

let's see how much caching this cache does

jagged agate
#

Caches alllll of the recipes to double memory usage!

#

(Joking)

vague otter
#

i'm guessing it's for map makers yeah - have a function that replaces some arbitrary block with a tnt entity that looks like that block when the player sets off a trap

mossy bobcat
muted hemlock
#

the new white smoke particle is used by the crafter

lethal bane
#

thonk actually new particle or just the redstone dust particle with a different color?

muted hemlock
#

actually new particle

#

err

#

it's definitely a new particletype

#

it's a spritesheet particle and its class extends BaseAshSmokeParticle

#

it uses the "minecraft:generic_n" particle textures

#

so, it reuses existing particle behavior and recolors existing particle textures, but it does have its own id

dull bison
#

sooo the recipe cache caches the last 10 crafting recipes used by any crafter

jagged agate
#

Not too bad. Full automation will blow through that fast tho

#

Just make a tiny mod to bump it to 100

mental carbon
#

It should probably be a forge config value...

dull bison
#

it is static init since it is shared between all crafters

#

and the value 10 is used to create an array for the cache entries

kindred fractal
jagged agate
#

Keep it out of modloader config

#

Let a modder get the cursepoints lol

vague otter
#

dynamically size the cache by refusing to evict any recipe that's been matched in the last N ticks

#

tbh for crafters you need to cache failures too [e.g. the two iron ingots state of the iron sword automation from the demo]

#

unless those aren't evaluated when the gui isn't open

jagged agate
#

The speed of Mojang updates is exponentially faster over time. Soon, we will have minor releases every week

kindred fractal
#

hmmm so FML references some MCF classes

dull bison
#

how?

kindred fractal
#

this kind of stuff

mental carbon
#

That is really annoying

mossy bobcat
#

Can that stuff be moved to FML?

#

After all if it's FML doing the enum extending I'd expect the interface marking them as such to be an FML interface

mental carbon
#

It is in FML

#

Yeah it should be in there....

#

That is true

mental carbon
#

Yes sadly that needs to happen really early on

mossy bobcat
#

Can that be done by a service that forge provides an implementation of?

mental carbon
#

It is not actually getting a class

#

It is updating the modules

kindred fractal
#

it does get a Method object, the method is badly named

#
  • a userdev version
mossy bobcat
#

That could almost certainly be a service I'd think

kindred fractal
#

we have some binding service already

mossy bobcat
#

Or just move that whole class to forge honestly, to some degree. Not sure how modules would like that though

mossy bobcat
#

But modules might prevent that

kindred fractal
#

hard to say

#

it's impossible to easily tell what is in which layer

#

most of FML is in the mc-boot layer

mental carbon
#

Sadly the early launch window can not be in forge

mossy bobcat
#

Yeah that one makes sense

mental carbon
#

Cause it does not get loaded early enough

mossy bobcat
kindred fractal
#

nope, ILaunchHandlerService has to be in the mc-boot layer

#

however it can probably get the gametest main via Bindings

#

IExtensibleEnum can be moved to FML

#

to squash Kits we need the testmods to be working-ish

#

can we move all of them in the same subproject?

#

@dull bison do you have some time to work on testmods + squash tonight?

mental carbon
kindred fractal
#

is it worth holding up 20.2 for that? imo no

dull bison
kindred fractal
#

ok I see

mental carbon
#

Most of it can be done with a bash script

kindred fractal
#

I don't really want to be generating a mods.toml, packs.mcmeta etc for each testmod

#

that's gonna be a PITA to deal with in the future

#

splitting them by subprojects but not changing anything else won't help us test anything

#

we need a proper design/framework to orchestrate the whole thing

#

so the action plan would be:

  • move all testmods to a subproject (for now, but it is understood that once we have 20.2 out we can work on a proper test framework for #1163767536123383838 ... maty volunteers to take care of that and would be responsible for it)
  • cherry-pick new commits from 20.1
  • push this to the Kits repo as the final pre-rebase 20.2 state
  • create new branch for the rebase
  • squash the update and rebase on top of 20.1
  • add commit: update all dependencies to their net.neoforged version
  • add commit: repackage NeoForge to net.neoforged.neoforge
  • finishing touches from there if needed
#

this is all stuff I am able to do, so whoever has time should probably focus on gradle-related things, for which I am sadly not very competent? 😛

dull bison
#

and then squash and push to the main repo

kindred fractal
#

Yeah

dull bison
#

we can technically overwrite the commits in the real 20.2 branch by just force pushing the pre rebase state there

kindred fractal
#

We could but might as well keep full history?

dull bison
#

those are commits maty and I made while orion did the new toolchain and we then cherry-picked them over

kindred fractal
#

ah ok

mental carbon
#

Okey based on the kist

#

I can make some progress on the toolchain tomorrow

#

Are we close enough to a release to do it this week?

kindred fractal
#

I think so

#

I think a button is missing xD

mental carbon
#

I found another big today: the crashed loading screen

#

It uses older style buttons

#

Which try to load assets that don't exist anymore

kindred fractal
#

damn

tranquil salmon
#

the execution context for commands is stored in a ThreadLocal now for some reason

kindred fractal
#

interesting

tranquil salmon
#

new packet: ServerboundContainerSlotStateChangedPacket

mossy bobcat
#

Ah, for the crafter

tranquil salmon
#

Just noticed that I accidentally changed imports in 1 of the patches

kindred fractal
#

alright, tests are done

#

probably not the best gradle, but also not too awful I think

kindred fractal
#

quite the import change 😛

kindred fractal
#

@tranquil salmon I think I've seen a similar issue in 1.20.2 with the edit gamerules screen

#

(buttons at the bottom just missing)

#

Could that be a neoform issue then?

tranquil salmon
#

#toolchain
Did a find and replace for the issue

feral moat
#

Any idea why that issue is a thing? Like why did it decompile them as just empty lambdas

#

Given is there a chance there are a ton of other method references throughout the codebase that are now empty lambdas?

feral moat
#

Well that’s bad

#

I am guessing it is a quilt flower issue?

#

Vine flower

#

Forgot they renamed it when separating it out

#

Or whatever

#

You know what I mean

kindred fractal
#

Oh that's a lot of missing layouts

mental carbon
mental carbon
#

Jesus!

#

@tranquil salmon Did you inform jamie of that?

#

Or @gaunt breach ?

gaunt breach
#

jasmine you mean?

#

jamie is cadix, he's no longer active either

#

but yes jas knows

kindred fractal
#

jas is looking for a fix, cool

kindred fractal
#

do we keep the includeBuild for now?

mental carbon
#

No

#

Once I am happy with it

#

And got it all working

#

Including GU

#

We will do a proper build 😄

kindred fractal
#

Alright

mental carbon
#

@kindred fractal Can you move the test projects into the relevant project?

#

With their datagen?

#

I am messing with run directories again......

kindred fractal
#

I already did that

#

Datagen works too

mental carbon
#

Perfect!

#

Missed that

kindred fractal
#

It's a bit gross, especially how I replaced the forge --output, so if you have something better go for it!

mental carbon
#

Why did you remove the LB patc?

kindred fractal
#

did I not gen patches?

#

I genned patches so I could add back the MC sources to the .gitignore

#

turns out the only thing that changed was the LB patch so that's why it's there

cedar echo
#

I’ve been asked this a few times now, but I was wondering if updating a Forge world from 1.20.1 will cause any problems when updating to Neoforge for 1.20.2.

inland mesa
#

the world itself should mostly update as-is, with a few exceptions

#

however most mods don't offer upgrading, so if they make breaking changes, the save just won't work properly

#

on top of that, there's an ongoing vote from the team, to decide if the forge -> neo fork should also include renaming forge-added things to neo, and the team has majorly voted yes #project-talk message

#

so I guess the answer for you will be: yes, it's not going to work

cedar echo
#

I see

#

I assume that applies to Neoforge 1.20.1 -> 1.20.2 as well?

kindred fractal
#

yes

cedar echo
#

That being said, can I expect to be updated my mod to Neoforge 1.20.2 soon? Or are we a ways away still?

kindred fractal
#

soon™️

cedar echo
#

Yeet

mossy bobcat
kindred fractal
kindred fractal
#

what is this

#

is it intended?

fallow sundial
fallow sundial
kindred fractal
#

I think we shouldn't serialize a type when there is a default in vanilla

kindred fractal
#

i.e. we shouldn't be adding a type when the type is a forge extension and the structure is vanilla-compatible

feral moat
#

Tldr You both are saying the same thing

#

And agreed

long cobalt
#

agreed as well

dull bison
#

yall know that is a dispatch codec right?

fallow sundial
#

it doesn't have to be

#

not a direct normal "vanilla" one anyways

drowsy condor
#

my question might seem insignificant but if theres new neoforge versioning like 20.2.x, how will it look like in maven? Currently it is 1.20.1-47.1.79, will it be just 20.2.x or will it be 1.20.2-20.2.x

dull bison
#

I think I remember we decided on just 20.2.x

inland mesa
#

no the idea is that 20.2 represents the 1.20.2

#

so there's no need to prefix it

#

so the maven will just be 20.2.x

#

and once 1.21 releases, it will be 21.0.x

drowsy condor
#

great, thanks

#

by the way I either remember or I dreamt it, though I am more certain I remember that there was blogpost on mod migration to neo 20.2

#

I can't see it

dull bison
#

there can't be because we haven't even finished porting

drowsy condor
#

weird, because I certainly remember a blogpost about event buses and some thing getting deprecated until 20.3

dull bison
#

you mean #announcements message

sturdy phoenix
#

is there any delineation on breaking neo versions? ie, there's a breaking neo change between 21.0.0 and 21.0.1. I imagine it would preferably be mitigated to not introduce binary breaks between neo builds, but even still in an extreme case where it must happen, is there any set marker or is it just mentioned in the changelog?

dull bison
#

breaking versions always end in -beta

rich void
#

there's only one blogpost on the website currently, about the forking of forge to neo

drowsy condor
#

yeah and I seem to distinctly remember not long ago there was second one

#

I think it was by technici4n?

#

But I can't find it in my browser history which makes me question my sanity a bit

mossy bobcat
#

That people decided to share around as if it was official when it wasn't

#

(it was on a cloudflare pages link which publishes PRs to the website repo)

drowsy condor
#

oh huh I guess I feel relieved I didn't dream it

mossy bobcat
#

See #announcements message

drowsy condor
#

oh thank you

kindred fractal
#

I'm working on fixing the codec

#

The item predicate stuff is quite grossly done IMO 😛

mental carbon
mossy bobcat
#

I had some ideas for potential ways to make it less funky without running into issues - I can look into that again once there's a release

kindred fractal
#

What are the requirements?

#

Cause I'm gonna write a testmod as I fix this

#

So as long as we can write custom predicates and datagen them it should be ok

#

also gonna rename CodecAwareItemPredicate to CustomItemPredicate

kindred fractal
#

going to add org.gradle.configuration-cache.problems=warn for now cause I am tired of the errors

#

although no... I can wait until it's resolved, should be soon

#

IMO we don't need to give modders control over empty vs non-empty ingredient codec

#

it doesn't even handle empty tags

#

what is this dispatchUnsafe codec?

kindred fractal
#

why?

mental carbon
#

Because we literally tried that already

kindred fractal
#

it works

#

I wrote a testmod

mental carbon
#

And people complains that it was overkilll

kindred fractal
#

what's overkill? I only refactored the code to make it simpler

#

the CodecAwareItemPredicate stuff was what there was before

mental carbon
#

You changed Predicate<ItemStack> to CustomItemPredicate......

kindred fractal
#

yes because it should always have a codec

mental carbon
#

No it should not

#

That is the whole point

kindred fractal
#

if it is a vanilla ItemPredicate then the custom logic should be Optional.empty()

mental carbon
#

So you unwrapped a custom seperate obejct

#

Into the root

#

And renamed a predicate

#

Why is that logic better?

kindred fractal
#

I just renamed CodecAwareItemPredicate to CustomItemPredicate and made ItemPredicate not implement it

mental carbon
#

Yeah

kindred fractal
#

and cleaned up the codecs so that it would stop writing a type field for vanilla item predicates

mental carbon
#

We explicitly chose to write the field!

kindred fractal
#

then sorry but you are wrong 😛

mental carbon
#

Meh

#

I don't really care for that

kindred fractal
mental carbon
#

In your opinion!

kindred fractal
#

minecraft:item_predicate shouldn't even exist

mental carbon
#

We made a choice to write the type, to indicate that forge logic is involved

kindred fractal
#

no logic is involved, that's the point

#

this is a vanilla item predicate

quiet talon
#

Emitting non-vanilla data to vanilla json's shouldn't happen because we should not be diffing random stuff
I don't mind if we always write the type, but we should not modify the vanilla data at least

kindred fractal
#

it's just that forge datagens it with the extra useless type field

mental carbon
#

We don't modify the vanilla data

#

We took great pains to make sure of that

#

We just chose to write the type

#

To indicate other available options

kindred hatchBOT
#

[Reference ➤ ](#1136320550168436798 message)maybe we shouldn't seralialize a type for vanilla ingredients

#

[Reference ➤ ](#1136320550168436798 message)And agreed

kindred fractal
#

if you want other options you will see the constructor that takes a CustomItemPredicate in the MC sources and will easily understand what you need to do

mental carbon
#

I understand the code

quiet talon
#

having it be in the json always is mostly only useful for datapack authors

mental carbon
#

That was the whole point

kindred fractal
#

IMO: running minecraft datagen with forge should give identical results to running it with vanilla

mental carbon
#

We write these Jsons so that datapack makers can make modifications

mental carbon
quiet talon
#

eh, not really

kindred fractal
#

that's not how optional fields work

quiet talon
#

a schema should indicate what changes are possible

kindred fractal
#

if we really want to help modders and datapackers, we should write a document somewhere with all the format modifications that we make to the jsons

#

(which probably already exists for some things? idk)

#

but not randomly add fields with a default value

mental carbon
#

Generating schemas ia pretty Hard

quiet talon
#

hard? eh; tedious, sure

kindred fractal
#

even just a user guide would help datapackers a lot more

#

"here's the extra options you have with neoforge"

#

so IMO we must remove that type field

#

I am now doing it for ingredients (whose codecs are massively overcomplicated)

quiet talon
#

I was going to take a look at those

#

I guess i actually can now™️

kindred fractal
#

I need this done before squashing again

#

was this really necessary?

quiet talon
#

well you can fiddle with them for now, I'll give them a full pass laterish

kindred fractal
#

I really don't want to be doing this now without proper review

#

however the current code is IMO quite bad

quiet talon
#

well it was entirely done without review, lol

#

I can look at it immediately if necessary

kindred fractal
#

well it's not "necessary", but wouldn't hurt

#

I am on vc btw

mental carbon
#

Not sure when that was added

kindred fractal
#

empty codecs are only for empty arrays

mental carbon
#

It is needed because of synchronization to vanilla clients

#

Do not remove that

kindred fractal
#

what?

#

we should just register a codec directly

mental carbon
#

Read the commit message when it was added!

#

It is needed so that ingredient types which know their values ahead of time

#

Can be synced to vanilla clients

kindred fractal
mental carbon
#

from modded servers

kindred fractal
#

no that is the job of synchronizeWithContents

#

shadows can't you hear me?

mental carbon
#

Did that change?

kindred fractal
mental carbon
#

Ahh okey, that was changed at one point then

#

We use to carry information in there to sync to client

#

We originally added the type to use a dispatch codec

#

Against a registry

#

Is that a problem?

kindred fractal
#

we don't need the empty codec for modded ingredients

mental carbon
#

There is no way to know that ahead of time

kindred fractal
#

well we can't check if an ingredient is empty at parsing time

mental carbon
#

Sure you can.........

#

That is the whole point

kindred fractal
#

the only thing we can check is [] which we can implement for the compound ingredient

#

no, we cannot resolve the contents before the tags are available

mental carbon
#

Weird cause vanilla is doing this.....

kindred fractal
#

vanilla only checks for []

mental carbon
#

So

#

There can be any logic involved

#

In a modded ingredient

#

That might cause it to be empty

#

Not just tags

kindred fractal
#

if the tag is empty vanilla will still let it be an ingredient

mental carbon
#

But other components

#

Why do you limit modded ingredients to tags?

#

The whole point of that system is that an ingredient can be anything

kindred fractal
#

I'm just showing that it breaks down the moment tags are used

mental carbon
#

Yeah so?

#

Who cares

#

?

kindred fractal
#

which in turn means that all the compound, intersection etc ingredients cannot properly implement empty

#

because they can never get if the itemstack list has size 0 or not

#

e.g. an intersection between two non-intersecting tags is logically empty but you can't check that at deserialization time

quiet talon
#

aight what is this Plugin [id: 'net.neoforged.gradle.patcher', version: '[6.2.0-features-neoform_defaulted,)', apply: false] was not found in any of the following sources:

kindred fractal
#

are you on 1.20.2-ngnext?

mental carbon
#

Wrong branch

mental carbon
#

But that does not mean you need to block this out right

quiet talon
#

that'll do it, might want to flip the default then

kindred fractal
#

well the question is who's gonna use this system

mental carbon
#

You don't know

kindred fractal
#

let's be practical

mental carbon
#

That is the whole problem when working on forge APIs

kindred fractal
#

this type is super ugly to have

mental carbon
#

It is not

#

It is nice to have

kindred fractal
#

the only thing it guards against is []

mental carbon
#

It follows the paradigm vanilla has set with two codecs

#

And it is easy to understand

#

There is 0 reason to remove it

kindred fractal
#

well we could simplify to a single Codec<? extends Ingredient>

mental carbon
#

No you could not

#

Again, that would prevent modders from implementing a system very similar to the vanilla ingredient

kindred fractal
#

(for custom ingredients we could)

mental carbon
#

You do not know the usecase or implementation of the system

#

When I did that with the IngredientValues I got shot to hell for the same argumentation

#

So no

#

We are going to leave the type in place

#

Follow the same logic vanilla does

#

And if you want you can add an additional constructor which pulls them both the same

quiet talon
#

k what about this one No signature of method: build_7ovr49cm15ezonzn9tfmgmx9s.dynamicProject() is applicable for argument types: (build_7ovr49cm15ezonzn9tfmgmx9s$_run_closure1) values: [build_7ovr49cm15ezonzn9tfmgmx9s$_run_closure1@16bf8975]

kindred fractal
#

the vanilla logic only applies to the ingredient list but not to the ingredients itself

#

you need to clone neogradle

mental carbon
mental carbon
#

Not on the list

#

Act6ually

#

never mind

#

It just prevents an empty array

#

But the idea still holds

#

There can be many reasons why modders potentially have ingredients which could be empty

kindred fractal
#

ok now I remember the point I made when fabric faced the same issue some time ago

#

if the user really wants an empty ingredient, they should just use []

mental carbon
#

No it is not about the user

kindred fractal
#

there is no valid use case for a custom ingredient that is empty

mental carbon
#

It is about the ability of the modder to conditionally define the ingredient as empty

kindred fractal
#

if a custom ingredient is empty it should ALWAYS be an error

mental carbon
#

And that ability needs to be preserved

#

Cause it was part of the old serializer system

feral moat
kindred fractal
#

what does that do?

quiet talon
#

So but the thing is you probably don't want that to be empty

kindred fractal
#

vanilla will allow that regardless of the context (empty vs non empty)

mental carbon
feral moat
#

no

#

my point is

mental carbon
#

The problem is the definition of "empty ingredient"

feral moat
#

that is an example ingredient

#

that may be empty

mental carbon
#

I am arguing that it is up to the modder to define

kindred fractal
mental carbon
#

Not up to us

sly anvil
dull bison
mental carbon
#

LOL

#

Yeah that needs fixing

#

It will stick

sly anvil
#

I saw modmuss make the same mistake a few days ago, it's catching :p.

fallow sundial
#

I mean, one can easily read it as none (of the values) empty which isn't non-empty, which the ingredient actually is

#

stupid design mojank

mental carbon
#

I think the ingredient stuff is still in flight

#

But the fact that they used 2 different codecs is stupid

quiet talon
#

^

#

and that the allow-empty codec is used in a single place, lol

mental carbon
#

Yeah it is stupid AF

kindred fractal
#

yeah I fixed it already

#

Orion actually the empty vs non-empty stuff works nicely with the ingredient type now:

#

because you just use the codec(boolean) method

mental carbon
#

Yeah

#

That is even better!

#

But it is still stupid that we need to make two

#

Because mojang decided that, that was the way to communicate from the outside what is allowed as a return value and what not

#

Instead of doing a post processing step

kindred fractal
#

yeah... it is quite suboptimal

mental carbon
#

That is a polite way to describe it yes

#

I am watching just muted

kindred fractal
#

we ran some experiments

#

and the unsafe dispatch is indeed needed

#

now with javadoc 😄

mental carbon
#

@dull bison You wrote that code....

#

You could have told him that 😄

kindred fractal
#

yeah he explained to me

#

I just wanted to understand

mental carbon
#

I remember what it does with the assumeMap

kindred fractal
#

turns out that if you xmap a MapCodecCodec it becomes a normal codec... so you lose the map info and it nests the value

mental carbon
#

Right!

#

You are having fun there @kindred fractal with those?

kindred fractal
#

the more I use the system the more I understand it

#

and when you understand it, it is actually quite nice

mental carbon
#

It is still a stupendious system

#

But yeah

#

It actually works quite nice

#

After the release I have plans to refactor the ConditionalOps

#

To a "Contextual" Ops

#

So that modders can make their own Ops with custom contexts

#

Instead of everybody wrapping everybody else

kindred fractal
#

bingo, got rid of the type heh

mental carbon
#

Nice

#

Is the run system for the tests working properly?

kindred fractal
#

it's reusing the forge run configs

#

datagen is a bit messy, look at this

mental carbon
#

Yeah

#

Ahhh

#

Okey

#

I can fix that trivially

kindred fractal
#

output directory should be a property of a datagen config imo

#

because I'm sure other modders will want to override it as well?

mental carbon
#

Yeah but modders don't have that problem 😄

#

Because they get completely different types fet to them

kindred fractal
#

yeah

mental carbon
#

This is right now an interim solution

kindred fractal
#

yeah definitely

#

wasn't too bad so I rolled with it

mental carbon
#

I need to create a nice DSL for the Platform system

#

But that will take a bit of time

#

BTW I removed clean

#

It served no purpose

#

Is that the shape?

kindred fractal
#

oh nvm

mental carbon
#

Works 😄

kindred fractal
#

thanks, seems to work

#

now I just need to rename CustomItemPredicate to ICustomItemPredicate...

#

forgot that convention

mental carbon
#

Question: Why exactly that change

#

Because it feels a bit "Extra"

#

Like a predicate<ItemStack> suffices

kindred fractal
#

we need a codec to serialize it

#

that's the only reason it exists

mental carbon
#

We already had that on the ItemPredicate though.....

#

Like the new logic is no different then the old

#

You just now store it in an object

#

So I wanted to know why in that custom wrapper object

#

Instead of straight on the predicate

#

Yeah

#

Which was implemented in the ItemPredicate class

#

But why that change?

kindred fractal
#

oh yeah that's because there were two layers of alternative codec that didn't make sense to me

#

you already needed the wrapper object before

mental carbon
#

Because CodecAwareItemPredicate, was used somewhere else if I remember

#

Outisde of the context of ItemPredicate

kindred fractal
#

it wasn't

mental carbon
#

Hmm

#

Why did I do this then

kindred fractal
#

might have changed in the meanwhile

#

cause that code was in flux for some time and then nobody ever checked again

mental carbon
#

Right it was part of the trigger

#

It was a seperate interface

#

Because it came from Schurlis "ItemStackFilter" concept

#

Originally

#

But that is now gone

kindred fractal
#

ahah yeah

#

ok the MC recipes are fixed too

mental carbon
#

Can you check what InventoryChangedTrigger now does?

#

Good it is just an item predicate

#

Then we are good

kindred fractal
#

yeah

mental carbon
#

Perfect

#

Yeah then this makes more sense

kindred fractal
#

I added a testmod for this btw, so that trigger definitely works

mental carbon
#

Yeah

#

I was just checking so that I have it straight in my head

kindred fractal
#

yeah yeah all good

#

hopefully you see that it makes sense

#

and what you did for ingredients makes sense

#

so all good 😄

mental carbon
#

It makes sense

#

It is not nice

#

But it makes sense

kindred fractal
#

yeah

quiet talon
#

just shitty mojang design as usual

mental carbon
#

I need to grab a world load expert some day

#

And figure out what the fuck that of a cluster fuck is

#

And then unfuck it

#

Because I think custom mod dimensions are still fucked

kindred fractal
#

don't we have commoble in the team for a reason? 😄

#

you pushed right when I was gonna push 😄

mental carbon
#

Sorry

#

I just implemented the Runs stuff

kindred fractal
#

dw it's easy to fix

#

is the clean project gone?

#

it was useless anyway

mental carbon
#

Yeah

#

It broke with "compile with IDEA"

#

It is not really usefull to Forge dev

#

So I nuked it

kindred fractal
#

👍

mental carbon
#

People can still us eit

#

But for us it is now gone

kindred fractal
#

are other people expected to use dynamicProject and make their own platform?

mental carbon
#

If they want to yeah, once the DSL is ready

quiet talon
#

as far as eclipse goes it looks like it might mostly work, the forge project builds
NeoGradle doesn't import to eclipse correctly though - it fails to resolve anything in net.neoforged.gradle.dsl

mental carbon
#

The whole goal is to make an understandable system

#

That can be reused

mental carbon
#

Simply disable the project and you should be fine

#

In the future it will be a maven reference anyway

#

So you won't have that issue

#

It is an includeBuild for now

#

To make development a lot smoother

quiet talon
#

Launch doesn't work through, rip
Exception in thread "main" java.io.UncheckedIOException: java.io.IOException: Invalid paths argument, contained no existing paths: [C:\Development\Github\Kits\projects\forge\build\resources\main, C:\Development\Github\Kits\projects\forge\build\classes\java\main]

mental carbon
#

Yeah

#

Pull NG7

#

And reimport

#

It should regenerate the files

#

With the correct paths in there now XD

#

My mistake

quiet talon
#

Last thing, why are the runs called .Run Forge - <Target> (why the leading dot)

mental carbon
#

It hides them in the IDE

#

At least for me

#

That way you only see the actually runnable targets

#

Which are launch groups

#

And not the individual sub targets

quiet talon
#

Doesn't appear to hide them by any means

mental carbon
#

Oh he

#

That is not supposed to have a . prefixed

#

Let me double check

#

Acxtually no that is correct

#

It does not hide them in the runs panel

#

Just in the file explorer

quiet talon
#

For that you should just put them in like .eclipse

#

instead of prefixing all the run objects with .

mental carbon
#

Does that work?

quiet talon
#

yeah

mental carbon
#

With respect to the launch groups I mean

#

It was no where documented how it resolved the names

#

So I made a judgement assumption that it was based on the file name

quiet talon
#

FG6 puts the runs in .eclipse/configurations/

#

the "main" runs are at the root, but they all show

kindred fractal
#

remember to update the todo list, Orion

mental carbon
#

Okey

#

Can do that too

#

And just show them all then in the explorer

quiet talon
#

If they're in .eclipse they won't show in the file browser

#

because anything starting with . is ignored (including folders)

mental carbon
#

@quiet talon You made the lib: Do you know if I need the full path in the launch group

quiet talon
#

The full path for what

#

for the sublaunch?

kindred fractal
#

Orion, should I remove clean/build.gradle and clean/.gitignore as well?

mental carbon
#

Yeah

quiet talon
#

I think it will use the pwd if its relative, I can check rq

mental carbon
#

If you would shadows, that would be nice 😄

quiet talon
#

Actually, it might not respect paths at all, I think its just by-name resolution

#

but lets validate that...

#

No its def just by-name validation

mental carbon
#

Okey

#

I need to update the eclipse lib tomorrow

quiet talon
#

the current FG6 groups use <stringAttribute key="org.eclipse.debug.core.launchGroup.0.name" value="Apotheosis - prepareRunClient"/>

mental carbon
#

To support command line shortening

quiet talon
#

but Apotheosis - prepareRunClient is in .eclipse/configurations/

mental carbon
#

So I will push a fix for that then as well

dull bison
#

this AT line is correct right?
public net.minecraft.world.item.ItemStack <init>(Lnet/minecraft/world/level/ItemLike;ILjava/util/Optional;)V # constructor

mental carbon
#

Can somebody make a version of AT
That has a different logger setup?

kindred fractal
#

what's the problem?

mental carbon
#

The log output

#

It is not needed.....

#

No reason to waste the CPU cycles having it blare it continuously

kindred fractal
#

the transformer or the Main class?

#

(i.e. in game or toolchain side?)

mental carbon
#

Toolchain

dull bison
#

btw why isn't AT applying the new line I added when I run setup?

mental carbon
#

No clue else

#

Would need to test

dull bison
#

wdym wrong line?

mental carbon
#

@feral moat NG7 now supports multiple sourcesets with their own mods.toml in the same project

#

It works a bit different though

#

In the sense that you need to set a unique modIdentifier on the "runs" extension for each sourceSet

#

Instead of on the run

#

On the run you just reference the sourceSet

kindred fractal
#

going to go to sleep... tomorrow is repackaging day 😄

dull bison
#

we need to fix patches generating with crlf line endings on windows

feral moat
mental carbon
#
sourceSets {
   api {
      runs {
         modIdentifier "somethingUniqueAndNotTheProjectPath"
      }
   }
}


runs {
   client {
      modSource sourceSets.api
   }
   data {
      modSource sourceSets.api
   }
}
kindred fractal
#

please don't push code to Kits for a bit, I'll be doing the renaming and repackaging

inland mesa
#

use git locks to prevent pushing?

#

or wait that's per file nevermind

kindred fractal
#

I wonder why it keeps trying to load a class that doesn't exist 🤔

#

oh it's a coremod injecting it

#

damn it 😄

#

OK the package changes for both FML and Neo seem to be working

kindred fractal
#

wtf is this

#

smart but horrible

prime quest
#

It's for the versions like 1.16.2/1.16.3/1.16.4 where it was just a very small (one line) change and all mods for those versions were compatible with the others

#

So it considers them to be the same for resolving version dependencies

#

It's absolutely necessary nowadays with small bugfix minors followed by major features

stray scroll
#

i can't see the image, but I presume this is the VersionSupportMatrix at work

#

my internet is dying again

#

i have no internet, but I must screm

prime quest
#

Yes it's versionsupportmatrix

#

Literally just the code

#

In a screenshot

kindred fractal
#

that shouldn't be hardcoded in FML now that it's separate

stray scroll
#

i can now see the image

kindred fractal
#

but that's a problem for later, for now this can stay as is

prime quest
#

Yeah we should probably move the place that calls add to somewhere else

#

Maybe in NeoForgeMod constructor or something

#

Leave the class but add versions from elsewhere

kindred fractal
#

forge constructor is too late

#

but maybe in the manifest or something like that

stray scroll
#

launch plugin kek

kindred fractal
#

not possible atm, forge loads on the game layer

prime quest
#

Something static then

#

Should be early enough

#

If we put it somewhere

mental carbon
#

ServiceProvider.....

#

Like the Bindings

kindred fractal
#

Idk if the game layer is already built by then

#

Problem for later in any case

mental carbon
#

It is

#

See the Bindings Interface

#

It is in the same situation

fallow sundial
#

I think it would be better if mods could provide alternative versions for dep testing

#

maybe part of mod ID aliases thinkies

feral moat
mental carbon
#

No the value is just use to identify which source sets belong in the same secure jar

kindred fractal
#

stupid licenser

#

do I change the plugin ID to net.neoforged.licenser?

#

if I do then the tests fail because they hardcode org.cadixdev.licenser

#

meh whatever i'll change it

sly anvil
mental carbon
#

Yes

#

Actually no

#

It requires at least the common module

sly anvil
#

Ahhh, that's probably fine. Thanks!

mental carbon
#

I could give it an automatic fallback though

#

Either being the project id

#

Or some value

#

But without common

#

There is no way to group them

kindred fractal
#

apparently TC doesn't like branches named master 🤔

mental carbon
#

In what way?

#

Did you not change the main branch name in the settings.kts file?

kindred fractal
#

ah that would be it heh

#

that was it, thanks

#

hmmm, seems like it's running on java 17

#

however docker_jdk_version is set to 8

#

I could just update gradle I guess

kindred fractal
mental carbon
#

Those fields don't do anything

#

They are for legacy systems

kindred fractal
#

ah that would explain it

mental carbon
#

If you need JDK 8 you need to set a toolchain to that version

kindred fractal
#

that doesn't work because it is unable to even compile the build.gradle

#

(because the groovy asm version supports up to jdk 16)

#

which is weird to me because it would defeat the point of having toolchains?

#
* What went wrong:
Could not compile build file 'C:\Users\bruno\java\licenser\build.gradle'.
> startup failed:
  General error during semantic analysis: Unsupported class file major version 61

  java.lang.IllegalArgumentException: Unsupported class file major version 61
        at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:196)
        at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:177)
        at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:163)
        at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:284)

kindred fractal
#

I really can't

#

otherwise I need to update groovy

#

and I need to update spock to 2.0

#

etc

#

I hate this

#

although

#

the problem I finally ran into after doing all of this is that the tests were failing on old gradle versions but we don't really care anyway

mental carbon
#

I have that update locally

#

It is the first thing I did

#

Upgrade to G8,3

kindred fractal
#

I have it working on 8.4 locally now 😛

#

thanks

dull bison
#

why do we need that?

kindred fractal
#

need what?

dull bison
#

issues on licenser

kindred fractal
#

because I just opened one

#

happy to switch back to upstream at any time but we can't let it block us for now

#

(I dropped a ping to jamie a few hours ago on fabricord, maybe he fixes the issues quickly)

#

OK so I built an updated installer and I can't tell why my MC prod client instance is crashing 😄

#

I guess that fml crashes don't properly flush the log?

frail oriole
# kindred fractal wtf is this

A fun lexism because he wanted the various versions to always be in lockstep. So we had to do matching when cross version support could happen. It was a screaming nightmare

kindred fractal
#

the idea isn't too bad in theory

#

but it's a lot of hardcoding in a place where there shouldn't be 🤔

frail oriole
#

I hate everything about it personally. It's a gross hack for a problem that shouldn't exist

mossy bobcat
#

I feel like mods should leave open upper bounds on the version if they don't want to run into issues with very small changes like this. Or maybe neo could provide a user-configurable version override system, and ship default configurations for it for instances like this. Though I general I'm really iffy with neo being the one to say mods are compatible with a version they haven't declared themselves compatible with. If that minor version did break something for that particular mod, it means mods don't have a way to actually declare themselves as incompatible

frail oriole
mossy bobcat
#

Exactly

frail oriole
#

esp with the current landscape of one or two major releases a year, it's not likely to be a vague question

mossy bobcat
#

I've got mods that worked from 1.19.1 to 1.20.1. I've also had mods break on seemingly "small" updates before

#

Leaving it in modders' hands is the best option

#

If a mod says "I'm not compatible", and neo says "actually yes you are" when the mod really meant that it wasn't compatible, with absolutely no user input... that's how you get silent weird bugs and whatnot

fallow sundial
#

someone make a "i am not compatible with 1.19.2, only with 1.19.1; yes you are" communism propaganda meme

frail oriole
#

i'll admit, when a new version releases, and you know the mod is gonna be compatible, but has bad bounds, that can be frustrating

kindred fractal
#

with modern versions I don't think it would be wise to leave a large upper bound

#

(unless your mod is very small)

#

because minor releaases can bring large changes to the code

mossy bobcat
#

Yes but neither is it smart to forcibly mark mods as compatible

#

Because small changes still change something

thorn tiger
#

Doesn't Fabric have a thing where users can manually override any dependency declaration, but these overrides are clear from crash reports? I think something like that would be a good solution.

mossy bobcat
#

A better approach in my mind is to:

  • let mods be the ultimate deciders of which MC versions they're compatible with
  • provide something like Fabric's version override things so that users can change that without modifying the jar if absolutely necessary
frail oriole
#

we have that in fml

#

we had that in fml 10 years ago

#

no one ever used it 😦

dim sonnet
#

I think it's important to bare in mind that the MDK by default sets no upper bound on javafml/fancyml and sets a wide range for MC (e.g. 1.19.2's mdk allows 1.19.3 and 1.19.4)

#

Back in the 1.16 days when these workarounds were first made it was a bigger issue as it was always an exact version for MC by default in the mods.toml but that's long been solved by now

frail oriole
#

again. by lex's requirement 😦

#

the MC bound (and the forge bound) were supposed to be loose ever since FML existed

dim sonnet
#

I still think having some kind of upper bound (for MC at least) to be wise as it gives users a more helpful error message than your typical class not found or whatever crash on launch (or worse - crashing when doing specific things ingame)

frail oriole
#

i said "loose" not "non existent" 😛

dim sonnet
#

Fair 😛

#

Well anyway the bound's been loose for years now so should be fine

frail oriole
#

agree

fallow sundial
mossy bobcat
fallow sundial
#

i think the forge proj dep is broken thinkies

frail oriole
#

i'll have to look

mental carbon
frail oriole
#

it was definitely a thing i wrote

mental carbon
#

Oh no that is forge

lethal bane
fallow sundial
kindred fractal
#

don't make any change to kits

mental carbon
#

There is a problem with the caching of Execute tasks in NeoForm

fallow sundial
#

wait yeah this doesn't make sense thonk

mental carbon
#

It is fine maty

#

Don't touch it

#

As I am refactoring that entire path

fallow sundial
#

@kindred fractal #side-projects message maybe you should link a tsrg/intellij xml migration file for those changes

kindred fractal
#

well the only real change for mod developers is changing from @Cancelable to implements ICancellableEvent

fallow sundial
#

i meant the package migrations

kindred fractal
#

right

#

that will be with the rest of the package migrations in a single file

fallow sundial
#

well, good news. the test framework (without the GUI / overlay - which is separate) was ported to 1.20.2 with minimal changes (mainly sendSuccess now using a supplier and the saveddata change). on the client side it's just going to be the posestack->guigraphics

kindred fractal
#

cool

fallow sundial
#

someone ping me once kits/NG works and can be touched

dull bison
#

how do you want to touch it?

fallow sundial
#

with tests

#

and passion, obviously /s

kindred fractal
#

userdev client is working

#

I can't get userdev datagen to work but it's probably a run issue

#

my current attempt:

runs {
    client {
        modSources.add(project.sourceSets.main)
    }

    datagenClient {
        configure project.runTypes.client
        dataGenerator true

        programArguments.addAll '--mod', 'examplemod'
    }
dull bison
kindred fractal
dull bison
#

wait datagen can't even be a client

#

just remove the configure lines

kindred fractal
#

then I get Cannot query the value of property 'mainClass' because it has no value available.

dull bison
#

what is it called

#

it should be just data

fallow sundial
#

uhm. configure project.runTypes.data?

kindred fractal
#

doesn't work either

#

classpath problem I think

dull bison
kindred fractal
#

oh well I need to start wrapping up for today so I'll get ready to push NG, FML and NeoForge

mental carbon
#

You need to name the run differently

#

It is just datagen

frail oriole
#

trying to get current kits 1.20.2-ngnext to build. is that still current?

kindred fractal
#

soon it won't be

#

but yeah try to get that one to build

frail oriole
#

it's not working for me locally.

#

gradle is just failing

kindred fractal
#

what's the error you have?