#General & Development Help
1 messages ยท Page 2 of 1
Understandable. But that's the correct one ๐
already on it
If that executes successfully, you should end up with 3 new run configurations:
i sure hope those will be named correctly
if not, i did something wrong
A problem occurred evaluating root project 'Ars-Configurare-1.19.2'.
> Could not get unknown property 'gecko_version' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
runData does your data generation (like recipe & texture.json files), runClient & runServer should be self-explanatory.
I'd suggest doing a runData first to be sure and then a runClient to see if everything works.
Then you can go wild!
Oh. The example addon might not have gotten the removal of geckolib.
I think you can check build.gradle and gradle.properties and wipe any mention of geckolib since ars bundles it's own after Bailey got fed up with breaking changes in patch versions (understandably so)
you can simply delete the implementation geckolib line
iirc nothing in the example use geckolib classes
attempt number 2
Caused by: org.gradle.internal.resolve.ModuleVersionNotFoundException: Could not find com.hollingsworth.ars_nouveau:ars_nouveau-1.19.2:3.6.0.
this uh, looks like an ars nouveau version issue
you need to take the version written in the readme https://github.com/baileyholl/Ars-Nouveau
so 3.6.0.267
attempt number 3
on this episode of "Which Dependency Errors Next?" we watch as Riku slowly goes insane
nvm it succeeded
and its all named correctly i think
3 attempts is a quite reasonable number actually...
Or my standards have just slipped ๐ค
3 is rookie numbers for minecraft modding
the only reason is because i have previous modding experience in other languages
Or general java dev work, at least in a project older than 6 months
so i can somewhat understand the syntax... at least
though i can say getting my modpack to work in the first place
I didn't want to add that sticker but it's surprisingly fitting oO
was way, way, way harder
slap over 100 mods together with the most major content mods you could find and figure out how to make them work together
at java.base/java.lang.module.Resolver.resolveFail(Resolver.java:901)
at java.base/java.lang.module.Resolver.checkExportSuppliers(Resolver.java:719)
at java.base/java.lang.module.Resolver.finish(Resolver.java:380)
at java.base/java.lang.module.Configuration.<init>(Configuration.java:140)
at java.base/java.lang.module.Configuration.resolveAndBind(Configuration.java:494)
at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.ModuleLayerHandler.buildLayer(ModuleLayerHandler.java:75)
at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.ModuleLayerHandler.buildLayer(ModuleLayerHandler.java:87)
at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.TransformationServicesHandler.discoverServices(TransformationServicesHandler.java:130)
at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.Launcher.run(Launcher.java:86)
at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.Launcher.main(Launcher.java:77)
at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26)
at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23)
at [email protected]/cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141)```
result of running runData
it returned with an exit code of 1
question is, can i ignore it or not
that happens when you don't run genIntelliJ runs after changing dependency stuff
not sure why
sigh
voice in the distance, slowly fading away
Foooooooooooooorgeeeeeeeeeee graaaaaaadleeeeeeeeeee
errrr
i ran the intellij runs thing
it did the same exact thing
so something else is wrong
shift + shift -> type invalidate caches & restart, do the thing, cross your fingers, try again
shift + shift???
double click with shift
after typing in invalidate caches in the shift + shift console it should offer you the option to do just that, do the invalidate, then let gradle import again, then let genIntelliJ run again, all while crossing your fingers and hoping the best
if you've got a devotional candle to the Omnissiah or whatever technological deity you prefer, now might be the time
well
i got a different error when running runData
but thats better than getting the same error
umh, maybe the mods.toml still have the geckolib required lines?
Will need to update that thing, it has been 4 months
and wheres that
i only know of gradle.properties and build.gradle
src\main\resources\META-INF
https://github.com/baileyholl/Ars-Nouveau-Example-Addon/blob/3a8e84a147bd200d6acaee17d5f9cfab4c555c4a/src/main/resources/META-INF/mods.toml#L63 delete this block
also
these shouldnt be "dependencies.an_addon" right?
rather they should be "dependencies.myaddon"
yes
it's written in the main mod file too, the mod id must match the id in the mods.toml
(assuming nobody deleted that comment, lmao)
I'd suggest doing an overall CTRL+SHIFT+R for an_addon with myaddon
STRG?
lol
Sorry, it's late and my brain's slipping. German for CTRL
ahhh that explains
dont worry my brain... should be slipping by now?
its 12:33 AM atm
where i live
it's only one hour difference
yeah thats fair
since im in Finland after all
do i need to do the whole invalidate thing again
Suddenly I've got a hundred questions about Finland in my head. Most importantly, if you know about Codefreeze and if you attended it or know someone who went there
(explanatory link: https://codefreeze.fi)
50/50. Try without, if it doesn't work, yes
It's usually needed only when you touch gradle stuff
If it still doesn't work we're back to candles/sacrifices/etc
and mods.toml is forge stuff
sadly i dont
however, from what i can tell, its something id probably like to attend if i ever got a chance to
Same. Just seems like it requires a lot of preparation clothing-wise that I'll never use again.
And a reasonably big part of my vacation budget ๐
that depends on your tolerance to the cold
and how long youll be spending outside
ohhhh
its in lapland
yeeeah
thats rather cold
heh...
ok yeah clearly it sorta kinda is outside
Not watching northern lights for at least half an hour to an hour when that's half my reason for traveling would feel like a waste, I think.
Also, they may claim that the husky ride's expensive as hell and no one ever did it, but if I'm going to Lapland then I'll sure as hell want to meet a bunch of good boys and girls and want to have them pull me through an amazing snow scape
yeah it is a waste
though, i must warn you
the northern lights are never truly predictable
you may not see them regardless
but its likely that you will
Back to topic though: Is it working now?
Better set up time than I had for my initial run so far, nice!
oh thank god the music wasnt distorted nightmare fuel on the client run
it was when i made an examplemod based on a tutorial
it literally blasted me with the most eerie shit ever
kay so
a few issues in the mods list
(the CR at the end)
Is your version set in gradle.properties/build? Might also not be a thing in the actually build jar just during dev mode, not sure though
seems like a CR LF where it just expects a LF, probably, might want to check your IDE settings for that.
Also just a guess though
mod version is set as 0.0.1
???
The full explanation might take a while, but there's different styles for line ending encoding.
There's (if I remember correctly) the usual windows style with is CR LF (Carriage Return Line Feed) and there's the Linux way which is just LF (Line Feed).
If minecraft expects that line to end with just LF, it might render the CR like that
so what do i add for it to be fixed
Lower right corner of your IDE should show the style of line ending for that file and you should be able to configure line endings in file -> project settings
uhh kay
its CRLF
A dev-env thing
even better than project -> settings:
Can just click it.
Sometimes I really want to high five a JetBrains Dev
why is this IDE so intuitive
it feels almost wrong
yup that fixed it
guessing this is the part where i can start doing shit
Is this the moment to shill the fact that they also make (according to rumors, I haven't done C, C++, C# in a long while) a decent C# IDE?
Guessed correctly! Good luck!
i have a very strong suspicion that yes
pretty sure i almost used it, too
or at least their intellisense or smth?
the only problem is:
how does one go wild in... modifying another mods configs
how config do
or should i even modify ars nouveau's configs or just have my own
guessing i should have my own?
Well, you obviously want values for things that aren't (yet) in Ars Nouveaus config files, so I'd probably say that having them in your own config file is probably better
now the question is
do i make separate glyph files like ars does (which i personally hate)
or just... neatly format them into one file
I haven't caught up to all previous discussion when I came home from meeting the family, depending on the config you want to do it might even be something that Bailey could be willing to take a PR on ๐คทโโ๏ธ
He. Not going to weigh in on a matter of taste and preference.
I've learned that lesson from discussing colors with actually competent artists ๐
ask if you can do thing -> bailey tells you that no, you gotta make an addon -> learn how to make an addon -> get told bailey can do it
ouch
๐
That's why I asked about the previous discussion. If it's something Bailey doesn't want in the main mod, that's what addons are for ๐
basically, i encountered an issue while making a modpack
that being that 10 glyph slots simply wasnt enough and invisible not working on all blocks is kind of a pain
so i looked for config options to change that
none were found
invisible working on all blocks sounds reasonably possible since intangible already kinda does that
even though it doesnt work on block entities (guh)
and ofcourse i want to change the 10 glyph slots
(may still lead to 3 addon devs talking at him to bloody consider the idea, him begrudingly allowing us to add it, only to then use it himself for his new armors and crafting the enchanters sword/bow/etc)
shakes fist at sky
That was a fun misunderstanding ๐
so is it possible for bailey to do it or not
yeaaaaaaahhhh that's a pretty hard limit.
does it sound reasonable enough
oh god
I would absoluetly love the 10 glyph slots to be changed but that probably won't make it
how hardcoded is it....?
specifically, i want to change it via configs
not the default amount of 10
the UI is pretty much why there is a limit
10 simply isnt enough to compete with the other mods
10 fits neatly
Not even hard coded, (although, that, too, especially UI wise, far as I can recall) but I think it's also one of the core things the mod's kind of balanced around?
there's no way to make it auto add more rows?
I mean that's a big ask but
thats why i mentioned having to work with ui code
i was gonna do exactly that
it would be really hard for an addon to change the book UI
sure, but modpack and addon makers alike should have the right to mess with it
you would have to make your own spell expansion system
depends on what you compare it to ๐
what do you mean by that?
you would have to mixin the UIs in a ton of places
I think you would have to mix-in into the Open Book UI event to override it with your own Book UI instance? At least that'd be my first try
all major content mods from tech and magic on 1.19.2
or just replace it yeah
combined
atm thats what its competing against
well, non-completely-busted content mods
but still powerful stuff
I mean, what is your goal?
Big ask. You could help So-So with porting Omega to 1.19, that bumps the power ceiling of AN by quite a lot
the addons add some pretty busted things
me who was trying to port and stopped to join the conversation
LOL
my goal is to allow extreme spells like massive conjurations that then actually do something with those blocks
at the cost of massive amounts of mana
I mean, it's not like ars doesn't compared to vanilla either, modded is just usually pretty busted
might have to change the mana system or add something to it, too, then
why not just use addons?
the focus of block shaping plus all he addons lets you do all sorts of funky things
though I strongly agree that a way to get bigger spells would be fun
goddamnit i wanted omega since it looked like itd up the ceiling
true, but that's why we're playing modded anyways, right? ๐
no no i seriously need bigger spells
ah what''s the problem with it lol
i, for example, tried to make it rain conjured mageblocks which then have lightning cast on them
I was planning that in omega but I chickened out like a boring person
but there simply werent enough slots to make it happen
It's not on 1.19, would be my guess which is why I suggested helping with the port ๐
aoe conjure -> explosion -> delay -> lightning
we have talked about ways to make bigger spells, it is mostly an interface/systems issue
I'm still considering spell cloth that you can weave together ins ome kind of loom, that can take a spell each and chain them to be like a big spell
players can do a lot with the 10 glyph limit, and this mod is really for them
and the amount of conjured was too little for a meaningful effect
its not for the playerbase that power play psi and hex
etc
Ars code supports this too I've just been to busy
๐ค I actually like that idea
it's kinda like Tea's blood scrolls but feels like a more AN way of doing things
chains 2 spells together?
ya
holy shit thats a decent idea
that sound very fun
question is, on the main mod or on an addon
that is a much easier addon to create than changing the existing book
yea make that an addon item
could also still get back to So-Sos idea for a loom, because apart from the headache that is Gecko-Animation, that sounds like an absolutely amazing, awesome idea
I... wasn't gonna animate mine
lol
I was also thinking through 3d spell related ideas with cursed contexts and stuff but so far it seems like a VERY overcomplicated and bad idea
if I ever do any animations it'll be some cursed player stuff to animate using the staff
I have big plans for the staff
though wait
(read:pipe dream)
also cool about that idea: You could probably steal most of the code required for chaining spells with items from Tome of Blood
this still wouldnt allow for big spells with the conjured blocks
since that requires the block focus
everything EXCEPT the book UI code already supports any size spell
and you cant have 2 focuses at once, can you?
not the focus idea no
Not without telling curio to add a second slot
bump up the amount of foci that can be equipped
that should be an already configurable value
that too
or a necklace if you prefer
or a thread for armor if this is in 1.19
there are a lot of options I imagine
thread for armor seems... meh
necklace seems good
however botania and such has necklaces id like to have
sooo
Thread seems like a no-brainer taken thread slot, tbh, so probably not the best idea
tier of thread could influence max glyphs it would copy from the other slot
3,6,10 or something
Like, we like threads because most choices are kinda valid and having one that feels required kinda goes against that. Which is fine, it's your addon, but at least sometimes I try my best to consider what Bailey and Goo were thinking when they did something
or not, just an idea
users are more likely to understand how to use it if it is its own item/book that they configure directly
foci and threads require invisible shenanigans that are not obvious to the user
yea thread is probably a bad idea
but aything ca be made work if you implement it well
hmm
but honestly yea a different book fits best
because think about it: the spells would end up being super different anyway
so that just makes the most sense
and it lets the other person see if someone has a 20 slot book lol
the work is already done for you for the book UI, maybe some tweaking so it only has 1 castable slot but 2/3 selectable pages on the UI
but the UI can be left untouched
on that note, it could have unique balancing
something more than just "haha more mana"
yea I recommend a book like was suggested before
you could add an exponential cost to every extra amplify glyph lol
but that's a dumb idea
you could add discounts to random utility spells to encourage people to make complex things instead of just adding more aoes and delay harms and stuff
i was thinking of adding casting times to spells depending on size
or even a sacrifice to use the spells
might require a bit of fancy logic, but making "damaging" delays cost extra while utility delays for block manipulations don't could be useful and interesting.
Time and Sacrifice are also cool ideas.
perhaps merging the idea of for example allowing invis to affect all blocks could work with this
as in, having very slightly augmented effects
on certain glyphs
though
no I just meant that each harming spell costs some percent more than the last, so you can't add harm a bunch of times and call it a day
don't touch delay it's a logic glyph
wouldnt i have to recolor the back of the book
while its being held
similarly to the other books
which add fancy new markings
also i dont know why but i feel like calling the book "Epitome"
for 1.19 with
with a Spell Damage Thread, Drygmy familiar and earth robes + bangle it's most definitely a damage-ish glyph.
Which is the application I was thinking about touching.
Having it untouched for logic use but more expensive for straight up damage spam is where the logic could be tricky
ah isnt damage spam pretty much just poison
not necessarily, just a method to say if a glyph is damaging type, and as you go through the spell you count up the number of those, and add some number to the number fo damaging spells (rounded though bc ints)
theres a whole load of damaging spells though
lightning, cut, wind shear, break, harm... the list goes on
and theres technical cases too
fair point, that's probably easier
it was just a thought
like launch + gravity
but I still think my idea is at least somewhat viable
only that it's not handled via poison but spell damage that can actually kill you ๐
just make launch half a harming spell, still gains price because it has strong effects but less so
make everythig floats until the end lol
that's my favorite strat to calculate game blancing stuff
more fractins
if i waste a sacrifice to get a spell that doesnt even kill id be pissed
anyways
a lot more viable than trying to detect "good" and "bad" delays!
Government work is ruining me, I'm already thinking far to complicated...
Thanks for the eye opener though!
yea no detecting delays seems bad, I only mentioned delay so you knew I wasn't dumb enough to forget them in an actual spell
sorry
so what should you sacrifice to disable all limits
i want there to be something that allows you to use it unlimited
in fact I think delay and redstone and interact should all have discounts
and linger and break could have no change
and harm and wind shear and lightning and explosing and stuff could have exponentially increasing cost int he way I explained
but question is, what.
that might interfere with the "MOAR BLOCK FLYING" idea though.
Eh. Let's see the new book, no need to think about unlaid eggs.
Also Cyberpunk finally finished re-downloading, hopefully I won't have corrupted sound anymore... ๐ค
and as another option, increasing cast time trades off the discounts the higher you put it, with like 30s completely removing it
IDamageEffect interface
Added recently, one of the breaking changes
well, first
i need to get to the point where i even have a damn book
and a color scheme for that book
Then a colorable color scheme for that book ๐
next up: how make book
as in, how do i even get to the part where i can modify the book
cant modify something that... doesnt exist as an item yet
i should go off the base book, no?
you'll want an item class that extends SpellBook and overrides the interaction stuff so you can make it cast the double spell
you'll register it like any other item
and I don't think you need to touch the Ars spellbooks themselves unless you mean to replace them which sounds lame
similar to C#, the hard part is how minecraft items and registering work
oh also EVERY method is virtual which is nice when modding lol
well, almost every
virtual as in?
i can just go funny override?
By default, all the instance methods in Java are considered as the Virtual function except final, static, and private methods as these methods can be used to achieve polymorphism.
there is an example item in the addon
yep you can override in your child class
so the deferred item registry is already prepared
ExampleCosmetic?
I have a bound wither entity that extends from the normal wither and overrides a bunch of targeting related logic to attack the owner's enemies isntead of just the nearest friendly
nice, so it's just the inheritance and casting logic to figure out
damnit i still havent fixed the "ExampleANAddon" file
... I've been working on trying to get my mod to complile in 1.19 and hours later I still have over 500 errors lol
I think Forge put out a remapping script, did you find and run that?
that one would surely help for the forge things
another bit you need to do is a replace geckolib imports with the ars shadowed ones
nope I never know where to find those
yea I haven't even started with that just disabled all those classes for now
I'll try that thanks
now I'll merge the changes from that with my other changes and see if it's any better
down to 446 errors it helped a bit
alex has better things to do than port the worst addon
sorry, second worst, forgot I started the new project
There's a non-zero chance that Tea's going to come in any second and fight you for the worst addon spot with ToB ๐
I can help with directions if you say which kind of errors you have
But do it now while i do the final checks for source gas
then it's time to sleep
Motoko Request
oooh cool
I only have 1 thing I don't know how to do which is set up the geckolib dependency on the shaded ars one
delete packages and reimport
if you don't have gecko in your dependencies anymore it should automatically only pick the new shaded ones
oh
that worked lol
earlier when I tried I had a bonked build.gradle with the wrong ars and I never thought to try again after fixing it
๐คฆ
for the gecko deprecation warnings, you can ignore them. Or check in Ars how they were changed
does intellij have a delete unused imports function? I have a ton that I've forgotten to clean up and it's a problem
turn on the optimize imports on the fly option
it auto cleans/imports for you
but only the files you enter
I'll try that if I ever get this to compile lol
um, how do object holders work in 1.19 and should I just go back to deferred registers?
you should use deferred registers
I see
I'll have to figure out the mixer and amplifier again then
aaand now that I'm replacing eveything with deferred registers my registry handler has over 800 errors LOL
this feels like progress but I can't tell for sure until I get rid of them all and try to launch the game
which will have to be tomorrow unfortunately
Looking at SourceManager in the API. That is not working yet is it?
wdym
SourceManager does not appear to be in use yet
It's called thru SourceUtil
Yeah... But the Ars blocks aren't in the map it has. So I'm unsure why its there, if you have to call SourceUtil anyway...
Umh, bouncing to @zealous zenith since i have no idea why it was made like that in the first place
Itโs used for moving sources from Ars Creo, what are you trying to do?
You might be seeing some of the leftover code for backwards addon compat
Just trying to move some source. Was trying to use the api code, but it appears I have to use SourceUtil instead
which is fine I supposed. Just a bit confusing
Ye itโs due for a refactor, it all changed when adding moveable source
um, I just got this error, but I never made a tag for any of these...
any idea what might be wrong
[07Jan2023 12:44:00.435] [Worker-Main-3/ERROR] [net.minecraft.tags.TagLoader/]: Couldn't load tag [arsomega:potion_extender (from main), arsomega:potion_amplifier (from main), arsomega:potion_relay (from main), arsomega:potion_bottler (from main)] as it is missing following references: arsomega:potion_extender (from main),
arsomega:potion_amplifier (from main),
arsomega:potion_relay (from main),
arsomega:potion_bottler (from main)
didnt make a tag for potion_extender?
did you delete the tag but are trying to load it in code?
I don't remember ever having such a tag
ooooh wait it's likely ars code loading it
I might've put tag instead of item in a recipe
?
just ctrl + shift + F to pull up the text search and search the string
oh, then it's possible
I was going through to see which of my recips needed fixing
you should try to use datagen for recipes
breaking tags is really bad in 1.19
but maybe it's a bit late
it cascades and breaks everything
now you can break the entire ability to mine blocks if you break the mineable tag 
pppppj
someone did in FC, probably Soaryn
lol
yeah you would have broken the ability to mine blocks
its customary for all 1.19 ports now
?
do I need to change something related to those tags again?
I also messed up all the resource locations of my rituals which is gonna take forever to fix cause I have so many ๐ฆ
unless, does intellij let me find and replace in a certain folder?
that might help lol
how
you can set a scope
nice
there's an open files option, do I do that or is there a better way of choosing them?
right click on a directory, you have the replace in files option from there
from the project tree
that seems easier
I'll remember that next time
that was so much easier than when I did like 80 glyphs by hand ๐คฆ )
only like 50 glyphs but still
you can probably use it to update the glyph models for example
since you just need to replace the same words in all the files
oh yea that part
the item model
how does the model in the book work though?
does it just use the item model?
this is embarassing, I forgot to close the place with my function before doing the find and replace
so I caused a stack overflow
oops
yep, it's the item model
so you can do layering and animated textures on glyphs
i mean, you could even in 1.18
too bad I'm so bad at art then
but you needed to toggle a bool
anyway for advanced amplify this is what i use
public static void addAugments(){
for (AbstractSpellPart spell : ArsNouveauAPI.getInstance().getSpellpartMap().values().stream().filter(s -> s instanceof AbstractEffect).toList()) {
if (spell.compatibleAugments.contains(AugmentAmplify.INSTANCE)){
spell.compatibleAugments.add(AugmentAmplifyTwo.INSTANCE);
spell.compatibleAugments.add(AugmentAmplifyThree.INSTANCE);
}
}
}
I have something like that but I have a follow up question
how on earth do I balance it limit wise
private void setup(final FMLCommonSetupEvent event) {
event.enqueueWork(() ->{
ArsNouveauRegistry.addAugments();
});
}
oh, sorry
can't someone just put 2 amplfy, 2 amplfiy 2s, and 2 amplfiy 3s? and have 6 amplify glyphs
even if you do limit them based on the amp confic
whiich also IDK how to do
so right now my advanced amplify is uncapped lol
which is obv bad
I'm hoping the amp limit can be total of any amp type
so like if you use an amp 3 you can only add 1 other amp regardless of strength
but IDK if ars is built that way
if not I'll request it that's sorta ncessary if me and TMG are to coexist on 1.19 ever
umh, no. i don't think you can do that
what do you mean
with the current code
would need something like a tag check
the limits are an hash map
based on the glyph rl
huh
wait how do limits work right now?
... where on earth is amplify added?
I don't see amplify in default augment limits
don't panic, it's still @Override
protected void addDefaultAugmentLimits(Map<ResourceLocation, Integer> defaults) {
defaults.put(AugmentAmplify.INSTANCE.getRegistryName(), 2);
}
that's so much worse
each glyph have their own map
wait no hold on
I can check the map and edit it afterwards then? if it doesn't get locked?
once they finish registering these values normally
I can add my amplify based on a copy of normal amplify if it's there
but after the config is read, like int he loading finished stage or something
yeah
for the "same default config" is easy
as long as it's not immutable or anything
it's the "can't mix amps" that's weird
ooooh yea
ok but I can just mixin the checker that reads this
and use my things there instead
the problem ofc being
then it will play bad with TMG
yea, definitely a map of tags instead of glyphs would help here
since if anyone limits AOE it should also limit my AOE types too, no?
also, quick question
where the heck does explode get the amplify limit from?
oh wait nevermind I see it
๐คฆ
dang the mixin looks hard
Might actually be not so simple
can a mixin change the value of a parameter to a different object, and have the rest of the method use that parameter instead? if you inject at head?
maybe redirect?
how does that work?
if you use mixinExtras, bundled with ars, you should be able to make them more compatible with others
needs
annotationProcessor("com.github.LlamaLad7:MixinExtras:0.1.1")
ok
also the maven { url 'https://jitpack.io' }
um, I don't see how mixin extras affects what I'm trying to do
or a redirect for that matter
what are you suggesting I do exactly?
I need to change this to count custom things as part of normal ones, and also remain compatible with other addons messing with this for some reason:
@Override
protected void validatePhrase(SpellPhrase phrase, List<SpellValidationError> errors) {
// No validation of augments without the effect present
AbstractSpellPart action = phrase.getAction();
if (action != null) {
phrase.getAugmentPositionMap().forEach((augmentTag, augments) -> {
int limit = action.getAugmentLimit(augmentTag);
if (augments.size() > limit) {
// Iterate, but skip until the limit, then mark the rest.
for (int i = limit; i < augments.size(); i++) {
errors.add(new ActionAugmentationPolicyValidationError(
augments.get(i).position,
augments.get(i).spellPart,
action,
limit
));
}
}
});
}
}
there doesn't seem to be a good way to do this but my first thought is just make a fake phrase being passed in where all my augments have the key of base ars augments because the map is different
IDK if that'll be bad for performance actually, but... I don't see how else I can remain compatible with other things that wanna do the same thing
which line were you planning to change?
... before the first one is my current idea which kinda sucks lol
the thing is, in the foreach all the logic is based on the key
so my thinking is leave that alone and just funk up the keys so my things use the keys of base ars augments instead, for only this method
is that a terrible idea?
i think you can mixin redirect on action.getAugmentLimit
check the parameter, if it's your glyph then check the instance's augment limit for amplify and return that one
I'd need to mixin the entire loop away too which is bad
yea but then they're sitll separate
oh, still thinking to tmg?
?
the foreach loop counts based on tag
so unless I modify either the loop or the tag in the augment position map, my amplifies will still use a separate counter
and I'm not mixin in the position map cause other validators might use that
so mixining to make an entire fake spell phrase with a map I can control seems best so far
forEach((augmentTag, augments) -> {
int limit = action.getAugmentLimit(augmentTag);
if (augments.size() > limit) {
see?
hmm
can't I use @warm nestdifyVariable to change the value of the argument when the function enters?
ooops why did that ping
sorry
is that even a thing on forge? I thought mixin worked the same in both loaders but I can only find examples on fabric lol
I mean there is also a fabric API but it seems less in depth
alright, time to give this a try
... are you kidding me
the spell prhase constructor has private access
do you recall how to fix that? been a while since I had to work around private constuctors
something something access transformer? I think you need to grab the exact method name through the IntelliJ Minecraft modding plugin and paste that into your Access transformer config
doesn't let me cause it's not a minecraft class
IDK if that just means I have to do it manually or if it can't be done
but the plugin can't copy the access transform stuff
I'd start to consider doing it later as a PR to Ars
boring
does @ Nullable in a parameter change the method signature?
or how does that work
that should be just a compiler thing
shouldn't
I'm trying to get the constructor via reflection but IDK what I'm doing lol
should just be a piece of syntactic sugar to tell you that it might be nullable
oh god it has a list
um
wait can I just get all constructors and then find mine and call it a day?
since it only has the one
No one does when they're fucking with reflection... shudder
until someone else reflects a new constructor there. But yeah, might be fine for your use case since there probably won't be an addon-addon? Still, PRing in a protected or public is probably easier
then I can just do a quick check if a few parameters match and pray nobody's that crazy
also make a PR
but I want to have somehting working quickly
and setting up a workspace for a PR is pain
so unless one of y'all do it I'm gonna procrastinate it for way too long
alternatively delete advanced amplify and embrace limits and restrictions
anyway this is me embracing the new limits and making advanced amplify play nicely with them
smh
ok test 1
there's a 90+% chance it blows up
it's a mess of reflection and mixins
... it's not compiling, gradle broke itself
bruh I didn't even touch it
oooh I messed up the access transforms somehow
no idea how but I did
My policy now is to never touch AT unless it's more than 3 things on different classes for something
Anyway my versions of TMG probably will skip amplify variants
for real?
I mean I'm not gonna be too disappointed by that
but what does the original author think?
You would just need to fight Derr versions
Which is the official and released for 1.19.2
Ignore the problem of amp limits from what I can see
as in, they each have separate limits?
or are they straight up unbounded
Unbound
Can't even remember if it was intended or @desert horizon simply stopped there and forgot
lol
Half right. Amp 3 is supposed to be able to break all power limiters.
aaand crash, forgot to set accessible and it's private
ok, but, like, why so many of them?
Wdym?
alex said they don't respect the amplify cap
I'm making advanced amplify share the cap of amplifies
that makes the most sense to me
erm
drat
so, well, it broke the way the book display stuff
๐ฆ
Intended to do that with 2 but didn't get there yet. 3 is supposed to disregard limits.
Well, maybe I need to stratify more.
the logic works though
it just doesn't stop you placing more
in the book
sigh
so close
Conceptually I have tiers 4 and 5 to work with. Tier 4 is intended to be power on a level with say Apotheosis, Mekanism, etc. Tier 5 is world breaking power.
what
since when
that's new I thougth amplify 2 was tier 2 and amplify 3 was tier 3
Not actually tiers, just conceptual groups
The real op mod was tmg, every one was fooled
I kept saying
Muwahahahaha
mine adds op in the form of cool new spells and options and combos
TMG just spams power everywhere
I was planning even more sophisticated things like a spread out form of linger
so that large explosions could both be more TPS friendly, AND hit a wider area
many less explosions spread out in a better way
I intend it to be possible, but expensive, to snipe single targets for one hit massive damage without an elaborate combo.
Much more expensive than the intended combo methods.
Polar Ray, my main combat spell on the AN server, is too costly to spam.
Miss shots really suck.
conceptually I feel like TMG and Omega will never play nicely together lol
Well, if you add too much mana the limits Derr though of becomes a lot less limiting
Even without counting omega damage spells
The focus of mana gives 3000 mana
What about regen rate?
Even if you have 3000 mana, that just means a bigger magazine with slower reload.
genocide in a bottle
Mana regen potion amplified
Will surely help a lot
ah shoot I put the error at the beginning instead of the end somehow
... IDK how though
๐ฆ
I'm considering adding some filters and similar myself and just marking TMG as incompatible
but that's too scummy I wouldn't actually do that
so plan B is to add a config option to rebalance TMG and have it enabled by default
and make the changes I want if TMG is loaded
or is that also a bad idea?
I feel like Omega is big enough to justify that, it's almost an overhaul of ars at this point
Maybe we need to refactor.
what do you mean
We have a few areas of overlap, either already present or in the pipe.
quite a few
Filter interface is part of core Ars API now, so not a lot to worry about there.
only in 1.19 which makes me a little sad
oh my god I DID IT!!!!
I'm so happy right now
What is the check?
I was thinking that you can check the RL string for "amplify"
it needs to be
phrase.getFirstPosition() + i + 1
So it will take all 4 the amplifies
I wasn't gonna do that that seems weird
A thought on amplify limits: is it glyph count or maximum amplify stat?
I just check for my specific amplifies and make them use the amplify limit
max amplify stat, why
Do amplify arrows break the limit?
It should
no idea never tried
๐
Playing on the server, I think I almost nailed the balance for amp2 perfectly, maybe it needs just slightly higher cost.
Anyway, when Bailey merges the splits PR remember to update the ars source.
It's almost unusable when you're fresh into tier 2, and remains a little awkward to use until you have good gear. Amp 3 is awkward to use with endgame gear.
the amplfiies in TMG are gonna drive me mad
I have no idea how to make them work with omega
So you can check how to adjust the splitting, shouldn't break anything existing
splitting?

How do your amplifies work exactly?
what changed then
Rather, what's the point of contention?
Spread like multishot now all start from same spot, instead of spawning them at different offsets that go forward
and also that I have an advanced amplify with a cost much higher than the amp 2 cost was last I checked
(whcih was a while ago)
so mixing amp 3 with my glyphs is insanity
The amp2 cost is 4x base amp cost, maybe I should bump it to 5.
It should be pretty crazy with your burst form that doubles the splits
advanced amplify is 9x cost...
Amp3 is 16x base amp cost for +4 amplify.
see the problem?
Yeah, there's a scaling difference.
huge one
Classic modpack hell, like trying to balance Mekanism with other FE mods ...
ye but as devs we have some extra control here
Hmm.
I'd need to modify amp2 to be 9x (replace advanced amplify), amp3 to be 40x, and make advanced amplify a tier four +6 amplify for 70x the cost
how does that sound?
except I was gonn ahave a tier 4 +3 amp glyph in my mod and now IDK where that would go here
Amp3 is a +4 amp glyph -.-
I was using a quadratic scale, so if amp2 was 9x then amp3 would be 81x
stay as tier four and be +8 ampklify for 100x the cost? seems super dumb but would work
that means both our mods combined would add 5 tiers of amps
I'd add a config option to not do any changes
and a config option for a less OP mode that nerfs everything after amp3 so that the max is much lower
yea but that doesn't work with my balancing
anyway that grows way too fast
I honesty think this fits best
or at least with only small tweaks
well, I was considering things like turret spells with mana values in the 18000 range
good god
I guess that might happen
but I'm not balancing omega around that
and remember my proposal moves my things after amp3 as an amp4 and amp5 instead of bieng the amp2 and amp2.5 equivalents they will be in base omega
so it can't grow as fast regardless
hmm...
Amplify ^ โพ๏ธ when?
parametric glyphs when?
legacy glyphs are another category I'm looking at...
one to make the damage ignore i-frames
augment? I'd make it an effect
which ones? most removed glyphs are potion effects which don't fit very well
I only see speed, aquatic, and regen making sense and omega adds a nerfed version of regen
that would certainly be more balanced but less fun
LOL
It's as easy to make as easy to break balance, lol
either an instant effect that resets the target's iframe timer or a 'potion' that does so for a time
Realistically it only lift the delay requirement
Oh an effect to reset the I frame timer sounds interesting
But if used as an effect it makes dots deadly
Yea but then spells stack better making it VERY OP lol
I removed the iframes on a chimera and used a few linger harm
You could see the bar dropping steadly
with the changes that have happened though I seriously have looked at using discount rings + "
go BRRRR" as a bossfight strategy ๐
Doesnโt work because I frames lol
An augment to half or even quarter damage but ignore iframes seems semi-balanced to me
I don't expect it to work in that sense, but extra hits still deal knockback if possible, and I don't expect them all to hit
Maybe a glyph could also reset the iframe timer but that would be pretty OP so would need some other limit
My hellfire resets the iframe
But requires the target to heal
It's a strategy a lot of people doesn't seem to know
I added a caster tome for it, at most it deals 40 damage iirc
Another coexistence idea: what if only your stronger effects refuse to validate against my amplify augments?
That also doesn't address the (admittedly minor) problem of wanting to add some more general utility glyphs like flatten, furrow, strip, etc.
The trouble with utility stuff is the 10 entry book limit ๐
but the idea with 
go brrr is not that you're dealing high damage, it's that you're keeping up constant pressure
axeshear, not to be confused with a hamdrill
furrow is what you do with a hoe on dirt
nah that's lame
elaborate?
ignite+focus then alternate spam
it's what i call Crazy Diamond
"It's not unfair if i heal you everytime"
as an aside, is anyone else having issues with Enigmatica 6 dying with a native exception during load?
or is it just my hardware is still busted?
how do break tools work in 1.19.2?
you mean for
itself?
no I mean in minecraft
how do I mark a block as being broken by pickaxe?
do I use the same tag as 1.18 or did it change again?
same
ok
void addPickMineable(int level, Block... blocks) {
for (Block block : blocks) {
tag(BlockTags.MINEABLE_WITH_PICKAXE).add(block);
switch (level) {
case (1) -> tag(BlockTags.NEEDS_STONE_TOOL).add(block);
case (2) -> tag(BlockTags.NEEDS_IRON_TOOL).add(block);
case (3) -> tag(BlockTags.NEEDS_DIAMOND_TOOL).add(block);
case (4) -> tag(Tags.Blocks.NEEDS_NETHERITE_TOOL).add(block);
}
}
} for a datagen for example
makes sense
tags replaced mining level?
yep, since 1.18
hmm, wonder what that's done to Tetra
probably a mixin on higher level and a tag to int converter?
those blocks that need silk + hammer 6 though
you mean the ruins?
yeah
I still haven't got my head out of 1.16 mode tbh
kinda one of those golden age releases
ok... what dependency versions should I build against for 1.19.2?
currently targeting 3.2.10.193
at least 3.6.0.267
i would say the latest, but github is offline
and maven doesn't respond either
oh btw, you like my stateless build number trick?
ooof
๐ด๐ด๐ซ!
Anyway, if in your servers GitHub work, check Ars Nouveau readme for the latest version
It will contain any push to the repo, even unreleased stuff
it seems to be working for me
base Ars doesn't have the glyph templates for all colors?
I only saw the one for augments as glyph_template.png
Maybe they only are in the example mod repo?
That template is probably the one used for the press back in the days
That was yet another different template, without a border color.
Pretty sure they are in the example repo at least
They are. I kinda meant your additional two colors.
Oh, the red one is in the tmg fork
Just thinking out loud, but at a sort of meta level to standardize things maybe the templates should be in core Ars and glyphs in general converted to layers?
It's an extra layer of work to make the models but is possible
Oh, actually
You could simply layer the color mask
Instead of the icon on the template
๐คจ
Umh, no. It wouldn't work well cause tint color is applied with code
So back at the first idea
You would make only the icon part right?
Is there any more complexity to simple layering than just adding more layer entries to the model JSON?
I was also going to layer the include/exclude and tier markings.
The glyphs in my fork of tmg are made with layers
Template + icon + allow/deny icon
Not sure if I did it with elemental filters foo
The issue with them is that's a bit more annoying to make the JSON and the texture
I'm basically redoing the work myself rather than accepting a pull... maybe I'm just pigheaded about it but ยฏ_(ใ)_/ยฏ
that way I also learn the ropes
I need to remember and remake the propagate template. I had one but screwed the file when I tried different colors
propagate? ... oh, continuation-form?
Trend started with Omega, yeah
Recast the spell as a different form
I add the ones for the forms I add
from the top or the continuation?
While omega have the vanilla ones
I assume the continuation
oh btw... I'm wondering if we should do something to the default public constructor for SpellContext specifically to deliberately break code that creates a new SpellContext and copies known properties instead of cloning
TMG is not the only mod that needs to play a little bit of catch up there
do any other addons add forms? so I can add their propagate forms as optional dependencies sometime
I think TMG adds ray and lay on hands, anything else to be aware of?
um why do my rituals show up this way? that seems wrong
how do glyph recipes work in 1.19.2?
scribing table recipes?
they take a collection of items and an xp cost
in datagen it looks like
recipes.add(get(EffectChaining.INSTANCE).withItem(ItemsRegistry.MANIPULATION_ESSENCE).withItem(Items.CHAIN, 3).withItem(Items.LAPIS_BLOCK, 1).withItem(Items.REDSTONE_BLOCK, 1).withItem(BlockRegistry.SOURCE_GEM_BLOCK, 1));
the resulting JSON unrolls the counted items
um, I've been doing them manually
I just mean, like, where do I put it?
does location still matter? did in 1.18.2
I think it's flexible? mine are under data/toomanyglyphs/recipes/
Did I hear something about glyph tags?
Useless protip for easing the 1.19.3+ port in the future, if you have a lot of items that start as "new Item.Properties().tab().etc" convert that common code to a method. 1.19.3 removed the tab part so having a common source will be faster to fix.
Ok
possibly a few new augments: stasis, stagger, and spread
https://github.com/Alexthw46/Ars-Elemental/blob/1.19.1/src/main/java/alexthw/ars_elemental/api/item/SpellPrismLens.java
It should be pretty easy to use for making compat lenses
Only thing is that it will require a dummy item when elemental is not loaded.
Not sure how I could abstract it to not require to register an item
Unless I do the registration, like Ars currently do
In that case avoiding classloading is easier
@bright shore for example for a missile lens
The abstract class simply setup the tooltip etc.
didnt realize you added datagen examples to the example mod alex
very based
rip I dont have the vazkii emotes anmyore

yeah, it's a very basic datagen. Especially for the Ars providers, i don't remember if i added the vanilla ones too
but the gradle is set to auto-merge the files, so no need of copy pasting from generated to src
it regenerates the AN ones tho
and it will also remove the files not needed
uh, if it does then maybe there's a call to super
time for a temporary reflection
nice, so i will be able to access my elemental dev world again
lmao
that damn wall spell
that was pushed last night
oh weird
well, it doesn't really copy in src
simply adds the generated folder as sources afaik
the issue is when the same file is in both paths
@scenic oak https://github.com/baileyholl/Ars-Nouveau/blob/3ac0dd16a69caed4c9944429f676f851669c4f05/src/main/java/com/hollingsworth/arsnouveau/api/spell/SpellResolver.java#L61
should have the mana check you've been looking for
I did find that, I can't find where canCast is used
You can check for that in GitHub by clicking onCast and then references:
Although it's far easier if you have the sources locally and use an actual IDE
Basically leads you to these onCast methods: https://github.com/baileyholl/Ars-Nouveau/blob/3ac0dd16a69caed4c9944429f676f851669c4f05/src/main/java/com/hollingsworth/arsnouveau/api/spell/SpellResolver.java#L95
Unfortunately I'm at school rn
Yeah, but then where are those used xd
Basically I need to find a call path from the use method from the spell book to the enoughMana function
Mana expense code is different between 1.18 and 1.19
A bit, not too much, but remember to check you are in the right branch
So for example https://github.com/baileyholl/Ars-Nouveau/blob/1.18.x/src/main/java/com/hollingsworth/arsnouveau/api/spell/SpellResolver.java
Or from where it's called:
https://github.com/baileyholl/Ars-Nouveau/blob/52347786b0f02b6502abe698a43f47fab2f58ad8/src/main/java/com/hollingsworth/arsnouveau/api/spell/ISpellCaster.java#L145
The path should be something like spellbook item use -> call ICaster use -> validate spell -> call onCastOnXXX -> check for mana
I think the validate spell also happens in onCast, at least in 1.19. Might be different for 1.18, would have to recheck and can't currently
Ah, possible, yeah
The main difference is that the checks for Mana usage are a bit different and the order too, since in 1.18 you hear the cast sound even when you have no mana
So that's either a desync or validation happening way before Mana check
Oh I found it, it's done in common so yeah, it's done on server and client (I'm pretty sure)
opens IDE
sees all the red gradle failures
"Maybe I don't want to mod today and would rather do some monster hunting!"
um, if glow particles always have an alpha of 1, why are they almost invisible when they have r,g, and b values of 1? Shouldn't they be black?
I don't understand what's happening there
???
Additive color
Start from transparent, get to 255 white
Umh, no idea on how particles actually work tbh
There are ways to make them not additive anyway
and it just... sets the color of the particle without ever converting out from additive color
I wanted to make a non additive particle similar to the magelight glow
and now I have no idea how
you would need a custom rendertype/shader
You kinda need to start by the rendertype
So back to what might be still called embers render type
oh
I gotta make a knockoff of this:
static final ParticleRenderType EMBER_RENDER = new ParticleRenderType() {
public void begin(BufferBuilder buffer, TextureManager textureManager) {
Minecraft.getInstance().gameRenderer.lightTexture().turnOnLightLayer();
RenderSystem.enableBlend();
RenderSystem.enableCull();
RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_PARTICLES);
RenderSystem.enableDepthTest();
RenderSystem.depthMask(false);
RenderSystem.blendFunc(SourceFactor.SRC_ALPHA.value, DestFactor.ONE.value);
buffer.begin(Mode.QUADS, DefaultVertexFormat.PARTICLE);
}
public void end(Tesselator tessellator) {
tessellator.end();
}
public String toString() {
return "ars_nouveau:em_rend";
}
};
with different properties?
It might be tied to the blend part
I can't tell all this rendering stuff seems like a huge rabbit hole
I wonder if defaultBlendFunc would be enough to work lol
if I implement all the other stuff the same I can test
if that helps
I've managed to 4 times in a row mess up the tile entity and not even get the renderer to load lol
awesome! that worked! just gotta reduce the randomness a lot lol
still pretty white
instead of a random number from 0 to 255 it should pick from like 200 to 255 since it's so jarring rn
this is hilarious though
looks a bit like that right now
which is too much
yea I did all this bc I wanted black magelights for the demonic light glyph
if you add black magelights next updade I will be a little sad lol
I figured not, it's very... unusual
The problem with black particles is that you can spot the pixels more easily
It kinda works for that orb cause the actual particle is small
I guess? IDK I like the black magelight honestly
an augment to make projectiles render like that would be hilarious but sounds like too much work to do ATM
Def something hard to hack in

feature