#General & Development Help
1 messages · Page 9 of 1
but that's also the only thing that keeps the dual focus thing alive
while vanilla foci are resolver based
so it's simpler to test on them first and then adjust elemental code later
at least for the thread route
a custom item would have an easier implementation for sure
I thought foci were checked via the caster, so a spellbook with a custom caster should work
only the vanilla ones are
Ah right
i can swap, but custom caster would kill dual focus mechanic atm
ah no, that wasn't the problem
the problem is that i work with school checks
by "retrieving" the school
while ars checks are like "does it have itemstack x?"
and i have at least two items to check for
trying to be short, every spell-wise instance of
SpellSchool focus = ISchoolFocus.hasFocus(player);
switch (focus.getId()) {
....
}
would need to become
boolean hasWater = resolver.hasFocus(MajorFocus) || resolver.hasFocus(MinorFocus)
boolean hasFire = ...
if (hasWater)...
if (hasFire)....
i need to check which checks could be kept in the old ways
is there an easy way to load a chunk temporarily just so that i can interact with an entity that is in that chunk?
im thinking about the scenario "i left my entity sitting somewhere 10 thousand blocks away from where i am. Now i want to interact with it in some way (get the entity instance)"
You can force load a chunk, interact with the entity and then unload the chunk, at least that's how I'd do it, you can check the source of the forceload command in IntelliJ to figure out how
so, i swapped for glyph events but anything that doesn't have a resolver to hook to is doomed to stay as it is
which means stuff like fire damage swapping or similar side buffs
you are a genius, it worked, ty 🙂
Genius is overselling it, but glad it worked
are ars screens all client sided ? (without server side menus)
The terminal maybe?
Otherwise they are not container so they shouldn't need a ss menu
@radiant depot when you get a moment can you add Ars Additions to #addon-index pls 😄
how do i store a reference to a given ItemStack in forge 1.19? Like, i want an entity to be bound to an ItemStack, so when the entity does something, the item will be notified. I have already done the opposite (the item talk to to the entity) using the entity UUID as a reference to the entity. Is there something like that for the ItemStack? Does it have some kind of unique identifier that i can store in nbt and then use for retrieving that given ItemStack later on?
A reference to a specific itemstack that can end up anywhere: not really afaik.
Saving a copy of the itemstack inside an entity yeah, pretty normal
you could use the inventory slots of the entity for fast prototype, for example
hmmm... i need something that would allow for persistence
if i save a copy of the itemstack inside the entity, upon closing the game that refence would be lost, no?
and then i would have to re-bind the item whenever i enter the game again
So you still mean case 1
I don't think it's possible at all since even if an itemstack have an uuid you would have no means to retrieve it since that item could be anywhere
I'd just use an event system, like how sourcelinks work, propagate an event out from the entity and have item stacks register a listener for the bound entity uuid when they load
Yeah, have a middleman that syncs them based on a shared id
And then all you need is to save the entity uuid in the item nbt
hmmm, indeed that could solve the problem. I was thinking about doing what alex suggested and store a copy of the item in the entity and then the persistence would be done by automatically re-binding the item to the entity using the item's tick event but i think creating a custom event would be a nice opportunity for me to learn how to create custom events in forge as i have never done that
ty for the suggestions, guys 🙂
You'd only store the item directly in the entity if you for example want to "equip" it
you really need a soft reference here
The item can be dropped, stored in a chest, destroyed
Some processes even copy the itemstack and destroy the original
Am I okay to make an addon thread for Ars.Guide? To get feedback and post updates
Ya
ah, i didn't know that. What could i use as a soft reference then?
The mechanism that Jarva said
Entity and Item share an id, entity broadcast updates and item only reads those from its entity
Or
Entity pushes updated state to a separate data structure, item fetch updated state from it once in a while
but the problem is that i would have to store that Id in the NBT for persistence, and i think nbt is stored inside an ItemStack not an Item, right?
as each item has its own nbt
ok, i think my brain is braining now. So i would have to create a custom event, the entity would then broadcast that event and my itemstack would listen to that event and read it only if it matches the id of the entity attached to that item
but inside that event listener, how would i get a reference to the itemstack so that i can determine if it should read the event payload or not?
should the entity pass the itemstack in the event?
that would require that first approach of having a copy of the itemstack in the entity, no?
like this, where would i get that "ItemStack wand" from?
you really cant obtain references to itemstacks like that, they have to be searched for on an entity or some location you expect it to be
That's why I suggested this, I have no idea how you would be able either
I mean, I have one but it will still fail in some cases
Aka save owner uuid too and scan its inventory for the wand
But fails if the wand is not on the owner player
ah, thats a sad limitation then 😦
maybe i could write to the world where the item is?
do entity blocks like chests have uuid that i can use to retrieve them later on?
Unsure honestly, my Occam razor would have been use position in that case
Since usually blockentities are retrieved from level by xyz
Anyway, the only lead I can think of is using item's InventoryTick
only works in the players inventory
Does it stop in chests completely?
yesir
according to my trusty system.out.print it stops calling it once you put the item inside a chest
What is the end goal anyway? What needs to change on the itemstack?
Probably won't help knowing, but ynk
The idea:
a wand represents a titan. The wand controls the titan and also serves as a way of monitoring the titan
the part of the wand controlling the titan is already solved by the item using the UUID of the entity to talk to it
now the part of the wand monitoring the titan (like showing the health of the titan or any current effect that the titan has active) would be done by the titan talking to the item (wand)
for example, when the titan dies, the wand should be destroyed or something like that
or when the titan is below a certain threshold, the wand would play a certain animation to show that the titan is in danger
each wand has its own titan, so if you have 4 wands, you should be able to control and monitor 4 different titans, each with its respective wand
Emh, so those are all things that need the wand on the player inventory
but for example, if the titan died, the wand should be destroyed regardless of being in the player's inventory
otherwise you could just use a chest as a way to not lose your wand upon titan death
What if it gets updated asap it get into someone inventory?
You're free to seek a way to update it while in chests
But since mc itself has some limitations, consider allowing a disclaimer on syncing only while in inventory
could be a workaround, but i think it would be kind of weird, you open your chest and you see the wand there. Then you move it into your inventory and it disappears (gets updated and thus destroyed)
i will try to use the idea of storing where the wand is using the level nbt and then try to work something out from there
and try to band aid the edge cases
A chat message to explain why it disappeared will be needed either way
Just saying cause players are users
thats true, hmmmm
well, we got many ideas here already, ill go implement some of them and test and see what happens
maybe if i mix together everything that we talked about here i can get somewhere nice
the code prob won't look nice but i have these disclaimers for that reason already haha
Where is the item model predicate for the source jar defined?
"predicate": {
"ars_nouveau:source": 0.01
},
Ah, I was looking to check how it's controlled
Found it, it's in ClientHandler in the setup code
My IDE isn't picking up the AT and I can't find a gradle task to verify the AT, what am I doing wrong
was it Forge or Architectury that has the verify AT gradle task
#1019655534900678737 message
@radiant depot How do your animated items work? Is it the mcmeta or the .gif?
Mcmeta
Does AbstractRitual#onEnd get called when the ritual brazier is broken?
I'm trying to find a way to make sure my ritual cleans up after itself 😄
I doubt it
Alright, will need to make a PR for this one then
Can we get a post tag for 1.20 in #1019655289873641555 ?
done
Is there anyway to determine if a spell was cast with Reactive from the glyph?
Umh, maybe the casting item?
There is one included in the spell context
If reactive is coded as it should, you would be able to check it
It uses a Reactive caster, but I couldn't find a way to get the actual caster
No I mean the literal "casting item"
It's either in the resolver or in the context
Why were shards changed into tokens?
Too easy to confuse them, especially for colorblinds
yeah thats understandable
The drygmy mistaken for starbies are a lot
when working on Ars, I press debug on IntelliJ and it doesn't kill my old instance automatically, is this the forge experience?
I guess?
you need to restart the debug from the debug console if you want exactly that
hmm, will have to check that
I keep starting a new instance and then I end up with 5 instances running because it didn't close the old ones
Mine prompts me to kill the older one
Hmm, that's what I get on my Archloom ones, but not on Ars itself
iirc its an intellij popup that you can dismiss forever
maybe its a setting you can reenabel
where does the spell cost check happens? I also want to trigger the "not enough mana" overlay
found it. NotEnoughManaPacket
A question. is it ok to make my assets ARR because I wanna safe them but the problem is I retextured magebloom for new variants.
you can make the textures that you made ARR but the ones that you took from other sources and modified, those need to be licensed like they were originally
Derivative works must be licensed under the GPL and be subject to all of its restrictions. Unlike works licensed under the MIT or the BSD License, works derivative of work licensed under the GPL (or the original work itself) may not be made proprietary or otherwise limited in their distribution.
https://github.com/baileyholl/Ars-Nouveau/blob/main/license.txt
Not without express permission
Repository for the Ars Nouveau minecraft mod. https://www.curseforge.com/minecraft/mc-mods/ars-nouveau - baileyholl/Ars-Nouveau
does anyone here have any plans of making a « bridge » mod between iron’s spellbooks and AN mana?
(asking for a future project)
is there a way to license my armors with ARR without licensing the items?
Only if you didn't build on existing Ars assets for them
If so, you can probably make it clear in your license & folder structure that specific parts of this repository are not covered by ARR but GPL instead
I'm no lawyer though, just a Software Dev with a passing interest in licenses because I don't want to get sued into oblivion by actual lawyers for violating a license
the armor sets are different
The armor sets should be fine to stay ARR as long as you didn't use code from Ars or the assets in them
The seeds, fibers, magebloom and sourcegems would have to be LGPL
hmm
the project is LPGL I only wanna have the armor assets ARR
Extending the armor should be fine under LGPL, but if you've directly copied and pasted code to reuse it then that would be LGPL
Assets you should be fine to have ARR
They look entirely original
It'll just be a dual license project, LGPL for everything but armor assets
(except the recolors)
I mean purely the armor assets
Obviously not the stuff mentioned here ^
I have done it for Epic Samurais as well but. I dont know how I can only make the armors ARR
Just specify the file paths and say which assets are original and all covered by ARR
add it your readme as well
and mention which assets you are exactly talking about. "Assets" is a general term. You need to specifically mention textures etc
after working on 1.20.2+, coming back to 1.20.1 is painful. CODECs are so much nicer than writing serializers manually
1.20.5 added StreamCodecs which make networking also streamlined
mojang what
not a record?
I'm more talking about this.z = y
Probably just an error of whoever made the method
ChunkPos don't have y
But the instinct for pos is to start with xy
Yeah, it threw me off when I was working with them, I saw they took in a y but chunkpos.y wasn't working
@Override
public boolean canConsumeItem(ItemStack stack) {
if (getWorld() == null) return super.canConsumeItem(stack);
if (!ServerConfig.SERVER.chunkloading_radius_incremental.get()) return super.canConsumeItem(stack);
ResourceLocation item = ResourceLocation.tryParse(ServerConfig.SERVER.chunkloading_radius_increment_item.get());
if (item == null) return super.canConsumeItem(stack);
ResourceKey<Item> key = ResourceKey.create(Registries.ITEM, item);
Optional<? extends Holder<Item>> optional = getWorld().holderLookup(Registries.ITEM).get(key);
if (optional.isEmpty()) return super.canConsumeItem(stack);
Item i = optional.get().get();
return stack.is(i);
}
is this the simplest way of converting an item string to an item?
it seems convoluted
ForgeRegistries.ITEMS.get(..) ?
Wasn't aware that existed but it'll go in Neoforge right?
Maybe it is not get but a longer method name, but it's even in 1.19
Yeah but in new Neoforge versions it'll be gone but this won't be (hopefully)
I'd guess some kind of replacement would be there?
I may have forgotten to implement the save and load functions for my Ender Source Jar saved data, I have no idea how it's working rn lmao
I think it's taking the source of the first jar loaded when the chunk loads
nah it still there
Neoforge changed how registeries work internally. methods have changed but all the functionality is still there
DeferredRegistry and Registries in general are nicer to work with
are licenses that important?
yes
very very important
they define how much of your work people can steal borrow
it's theorically the only legal tool to protect your work online
in practice you really need to screw over to have someone calling lawyers to enforce their license rights and not simply ask you to remove the bad stuff
For whover is maintaining Aura Glyph, I suggest checking the helix particle of 
It should be possible to use them, by adjusting radius to show the (horizontal) area that is being affected
noted
i just figured out how to create a pseudo custom dust particle
that took way too long
for some reason, my caster tool casts its spell when trying to put it on the scribes table and I can't figure out why
has anyone else had this problem?
oh right it's cause I bypass the normal casting checks so that I can validate myself so that I can ignore validation errors relating to too many amplify augments because I add extra amplify augments beyond the limits
should be an easy fix
does Ars Nouveau use Caelus API for elytra behaviour ? It doesnt seem to jarjarred or added as dependency in the manifest
its only compiled against in the buildscript
It's optional dependency, if Caelus is loaded Ars checks on tick if the player has the glide effect and then sets the player flying
ah that makes sense. caelus stuff is probably for compat if its loaded
another question is why are glyphs stored in a regular map and not a registry ?
A forge registry?
yes. a deferred one maybe
They are tied to items and have to be registered in mod init
What do you want the forge registry for?
I just reading through the code and checking how it all works
I am working on my own mod (not an addon) and was using Ars as a reference for architecture and code design
can I use the glyph textures as temporary textures? atleast till I get a proof of concept working ?
Sure
thanks a lot!
is the spell validation done only on client side or does server verify it also ? if its client only, were there any problems with it ?
There's crafting validation which I think is client side but there's also a few things validated at cast time, which is done on the server
I don't recall which is which but there's a class called something along the lines of default or basic spell validator or something idk which uses a compound validator of the other main validators and is used by most things that validate spells, and it takes a Boolean for whether this is at crafting time
IIRC
I am mostly concerned about players trying to exploit stuff it is only client sided
It depends on the config option, there's one to enforce validation at cast time
Wasnt there a feature that lets you drag and reorganize glyphs in a spell ?
was this it ? Why do i remember a drag and drop ui
Press the number on the pad while hovering on a glyph
No drag and drop cause it would be way harder, this was just few minutes
What's the best way for addons to insert augment behaviour into other glyphs? I'm guessing it's going to need mixins
for the behaviour yes
you have the events but usually it's just on specific triggers
Yeah makes sense
Is there a way to detect when an item is being put into a container?
There should be something on the lines of that, but unsure if it covers everything
And if it was an event or just a possible mixin hook
I think it's a mixin, I haven't found any events for it, I was thinking of adding a mixin to Inventory#add
why my textures have no transparency? The texture itself has transparent pixels I have no idea what I've done wrong
I've checked block properties, blockstates, textures, models, etc. and found nothing
Solved thanks to NeoForge discord, didn't realise I needed a render type
Is there a way I can add my item as a related chapter to a pre-exiting entry in Patchouli?
I'm guessing I just need to generate an overriding page?
does patchouli support overriding pages? I thought you could only add to an existing category, not any of its entries
You can override an entry in 1.20 because they use assets and usual resource overriding
Talking to them in the discord, it's possible to do it at runtime from the client, which may be what I do
interesting
needing to dynamically update pages was a main reason to make our own book
I'll let you know if I get it working
Mixed news
Good news is there's an event for when a books contents are loaded
Bad news is that they never actually call the event
Good news it's easy to add a small mixin to trigger the event at the appropriate time
Bad news the actual page entries are protected so you need an accessor to access them.
Good news, once you have the accessor it's possible to edit the pages
Can do, what was wanted to be dynamically updated?
I mean, speaking for me it would be nice to add the focus effects directly on the pages.
Unsure on if base Ars needs it
But it's worth integrating into base Ars for anyone who can need it instead of only in an addon
For sure, makes sense
It's unfortunately processed on the client, would that be an issue?
well, nobody will open the book on serverside 😛
I mean accessing the data you need in the book
it's more like a problem for datapacking
or to be more precise, server-only datapacks
usually modpacks have the same data on both
That's true
isn't data synced anyway?
I have no idea
a ton of stuff is sent from server to clients
private static ResourceLocation WORN_NOTEBOOK = new ResourceLocation(ArsNouveau.MODID, "worn_notebook");
@SubscribeEvent
public static void updateBookContents(BookContentsReloadEvent event) {
ResourceLocation bookId = event.getBook();
if (!bookId.equals(WORN_NOTEBOOK)) return;
Book wornNotebook = BookRegistry.INSTANCE.books.get(WORN_NOTEBOOK);
Map<ResourceLocation, BookEntry> entries = wornNotebook.getContents().entries;
BookEntry storageLectern = entries.get(new ResourceLocation(ArsNouveau.MODID, "machines/storage_lectern"));
if (storageLectern == null) return;
List<BookPage> pages = storageLectern.getPages();
Optional<BookPage> relationsPage = pages.stream().filter(page -> page instanceof PageRelations).findFirst();
if (relationsPage.isEmpty()) return;
PageRelationsAccessor relations = (PageRelationsAccessor) relationsPage.get();
relations.getEntries().add(entries.get(new ResourceLocation(ArsNouveau.MODID, "machines/warp_indexes")));
}
this is what it ends up looking like to edit a page btw
How is ars nouveau published? the GH workflow was last run 6 months ago so it cannot be that
Manually
Do you want someone to update the publish?
There was a point in time where it broke
Mine should be updated enough to work AE/E:R
But there are probably still deprecated warnings
It doesn’t really save much time because I still have to write the change log on both websites
I maintain a changelog.md file for mine and when publishing, the workflow fetches the correct text from it the file and uses that on for GH, CF and modrinth release
would you like such an approach ?
I use the GitHub workflow for publishing Ars Additions
I think you forgot to do modrinth release for 4.10
tbh the modrinth page could use a bit of love. it doesnt have the same description as CF and the license is wrong (GPL3 instead of LGPL3) 😅
I’ve pretty much given up on modrinth lol
Yeah I can understand that. but given that there are users there already #general-and-help message, I think we shouldnt leave them hanging
No? The action have a field for changelogs
I should probably keep the changelog.md too
Instead of looking at commits to remember what I added, lol
Yeah I'm probably going to do the same adaptation
Does anyone know if it's possible to make a conditional recipe based on a config value? I implemented an ICondition to check the config, but it seems the recipe loads before the config does, so I'm unsure what else to try
configs should be loaded well before the world when the recipes load
or did you put them in the server config?
Likely server config
Oh right, so what's my option for server then?
It seems like it's working on server boot too
Ye but not if the user has a different common config since it’s not synced
If the client needs info on that flag then it has a chance of not being active
I don't think it should matter because it's just used for whether a recipe is active
I will need to test
You can also call a method to just force load your config during mod init
That works for common at least, I wonder if it works for server
Ah interesting
how the heck do I get my cube to sit on it's point
like I can get it from one angle
but the other angle sucks
like surely 45 degrees should do it
ok i remember fighting this on multiple occasions and im trying to remember the fix lol
#blockbench #3dmodeling #3dmodel #animation #modeltips #modelingtips #animatingtips
Sorry for the long break! I've been at war with my editing software.
I will make some entertainment and MCC content soon.
This is a short tutorial on how to rotate a cube to make it balanced on its side.
it's not as simple as 45
the one time a square betrays us is rotating it onto its corner
X axis at 45
Z axis at 35.26
make sure the pivot is in the right place
yeah with pivot in center
Apparently this is the math for you geometry buffs
If the square is 1x1x1, then the right angle of the second rotation should be arctan(1/sqrt(2)) ≈ 35.2644, so the right rotation angles should be 45 / 35.2644 / 0
ty, will take a look
ah shit, but now it's going to be really hard to rotate right?
it shouldn't be
Just make sure the animation is set to global and not local
Or even easier, rotate the cube itself to where you want it and and then stuff it into a bone with no rotations. Then you animate the bone
I also don't mind making the animation for you if you'd like. Unless you prefer to learn on your own
this was much easier, thank you
I want to try learn, I'm not great on this so I'm hoping to atleast become basically able
i'm happy to help any way i can
Bailey feel free to hit me up if Goo doesn't have any capacity to work on design stuff
rest of my portfolio:
will you make a model of nook
next request
penguins are birds so this counts
Can I request a balloon snake?
May need a bit more practice for that one, I'll give it a try tomorrow
I'll accept a straight line
that's just a photograph
@rugged urchin, do you have any Ars style button textures? Thinking of ways I can make this look better
I think all of the buttons we have are like parchment themed for the spell book and bookwyrm UIs
May just get some Sourcestone buttons
maybe I'm blind but how on earth can this be 6.149...?
something something maybe it returns the squared dist?
Maybe, I just switched it to player.blockPosition().distToCenterSqr(...)
and it works
All this to prevent people abusing it with scryers eye
Asking generally, but I suspect Alex might know as he does a lot of conditional stuff, is there any way to add a structure to a template pool based on a condition? I want to add Ars Elemental compat to Ars Additions with a Flashing Ruined Warp Portal
I'm trying to add some new augments to the compatible augments of all the spells that would be compatible with similar effects ie add AOE II to all spells compatible with AOE. I was using TooManyGlyphs AugmentCompatibilityValidatorMixin as an example but I'm getting an error when I use the same target
a runtime error or just the IDE warning?
says: Method/field descriptor is required for member reference in @At target
Not sure, are you on an older version? I didn’t think tmg was fully up to date
I thought this version was but I'll try and scout around for other examples. I know ars omega does somthing similar but that would be out of date. Any idea of what add ons to look for?
Not Enough Gylphs might have that stuff but I’m not sure
Alex may have left them out
Unsure why you're getting the error, but I'd recommend using WrapOperation instead of Redirect
I'll give it a try. Learning Java as I go but I'll try and get it to work
If you have TMG in your dev environment that could be causing issues due to multiple redirects, so that's another potential cause
hmm, could I run into issues with incompatibility between the add-ons?
If you use redirect yes
you have METHOD="*" which will not work with @AT
but yeah not a good idea to you use redirects
not a good idea honestly, especially while using mixins. mixins require atleast basic understanding of how control flow and operations work.
learning java while doing simple modding is fine. Mixins are higher level
you can avoid the mixin btw, it's just derringer that preferred that approach
Omega have alternate AoEs too btw, you could also check their way
Thanks, I’ll look into it tomorrow. I was trying to find where greater aoe was added to the compatibility but decided to call it a night
Learning Java while doing mixins is fine, I'd possibly agree if it was learning programming at all, but if you understand most of the language constructs, mixins aren't too bad to learn with
I'm speaking from experience, I never touched Java before I started modding Minecraft, and my first mod had mixins
The non-mixin way is to add the additional augments in post init
Iterate the glyph map, if a glyph is compatible with AOE, add your Aoes
getting meaningful logs and understanding them when using mixins is harder than regular api stuff which is why I wont recommend it. It is possible yes, but if regular apis do it, then do that
It'll still require mixins for the augment implementation though
we could add a method to the GlyphRegistry that adds an augment to an exisiting glyph during registration
Again, there's the way
Elemental adds augments without mixins
And the any augment based on spellstats it's easy to implement
Amps, Duration, Aoe, Speed
They only need to increase the stat and if the glyph is coded to use them it will be pretty smooth
What wouldn't work is with explicit augment checks
Like

Goo, how does one make animations transition properly into each other?
I have an open, spin and close animation
geckolib will lerp it for you if you chain them
ooh, that's perfect
that should be perfect then, how about handling lighting on spinning objects?
what is going on with that cube
ya
it's because I have an inverted cube there too
to render inside texture
it's just clipping on the preview because I had it set to the wrong project type
oh ok
I've been trying to get ArsOmega's method for adding compatibility to work but it gets mad with the getSpellpartMap function. Did something get changed between the versions? not sure what's wrong here
That worked! Thanks
Are the files in the cache using a specific format of UUID?
The datagen cache?
Yea
They are generated when you run the run data command
Got pretty much everything working for my first batch of glyphs except the spell tier. Is there something besides overriding the default spelltier in the glyph file that needs to be setup?
Sorry for asking so many questions but is there a way to reference the total spell cost from a glyph? Like for example instead of a flat value an effect costs mana equal to 10% of the current spell cost?
There isn’t anything like that no
I think there is a forge even that lets you modify the spell cost, you could do it there
Override the default tier method iirc
public SpellTier defaultTier() {
return SpellTier.THREE;
}``` This is what I have
Tiers are a config thing
You need to delete the configs in your test environment to see if this changed the default value
But that looks like it should work
I'm trying to make a version of the lingering spell but the 'level' variable from the EntityLingeringSpell class is giving errors that:" 'level' has private access in 'net.minecraft.world.entity.Entity" I believe that actual version the class uses is from the ars nouveau ChangeableBehavior class but it doesn't want to use that one. Is there a work around?
Just use level() if you are in an entity class
Ars uses an access transformer to make it public
Thought that wasn't working only to realize that was working it just creates a new error lol
Trying to create a version of linger but it crashes when the spell resolves. It may be the issue but it's probably something else but I noticed that the blacklist .json gets removed when I ise runData
Not really sure where I should start looking
all entities need a renderer attached
the ClientHandler class has an example on registering them
k thanks
What's the Java-style solution to this? I have 3 status for an operation, pending, success and failure, which I'd usually make an enum, however I need to associate a BlockPos with the status if it's a success, no data needed for the other two statuses. Should I just make a class to track it? Feels a bit overkill
Feels like overkill, is the way to go though if you want to associate 2 values with each other.
Well, you could use a pre-defined tupel class, too.
But that's one of the things with Java where I miss JS/TS and just being able to create an object an use it
you can always make a record
quick and painless classes
idk if it's the right use, but Pair exists too
sealed records yes
switch pattern matching makes this very easy to understand. I dont think we have that fully in java 17 though
What would I use if I wanted to redefine how the spell cost is calculated? Wanted to add a glyph that would reduce the cost of a spell by a multiplicative %. Would look like: Newcost = Cost * R ^ X. 'R' being the percent remaining from reduction and X being the number of that glyph present.
Looking like I can't avoid mixins
did you look into SpellCostCalcEvent? That would be my first guess for a cost multiplier
I'll take a look thanks
from what I can tell I'd want to edit the getCost method. Just trying to figure out the diffrence between @Inject amd @Redirect. If I could just add some code where I wanted that would be fine but I'm not sure how I could get the exact spot. Just trying to figure out if there's a way to just replace the whole thing. Is that what Redirect is doing?
You shouldn’t be using a mixin for this, the spell cost event lets you modify the spell cost based on whatever you like
hmm I guess I'll look into events then. It's kinda hard to figure out how to use it properly, I don't see it on gitHub but it's in my external libraries
It's very possible I'm misinterpreting this but is the SpellCostCalcEvent used when creating a spell or just when it resolves? I'd like the discount to take place before the spell is cast so you can cast the spell if it's too expensive without the glyph / see how much it's going to cost
It gets called before to see if you can cast and later when the mana is expended
Noticed that when I was changing the mana cost of one of my glyphs that it didn't actually change in the runClient. Is there something I need to run to re-initialize these values?
you have to delete the configs, they are just config defaults
continuing conversation from yesterday, there are plans to rework how transfer works in neo. could potentially fix lag because of large inventories
There was the intention but it's kinda a problem loop on how to do the retrieval api
retrieval api? what does that mean?
I mean like, proper implementation from the storage handler on how to supply an item when asked
extraction?
What would the retriever ask? For a predicate? But then you can't use maps. Stacks? Then you're limiting
Stuff like that, extract is a more fitting word yeah
For a predicate? But then you can't use maps
Why wouldn't this work ?
how should i go about creating a temporary light source ?
map.keys.filter{predicate} would work no ?
The lights from the jar o light are temporary I think. Maybe those can help?
It would still iterate through all no?
oh, i didn’t know that there was an item like that. Many thanks
hm. this is an interesting problem
how do you store data without needing to iterate over them
A stack request would be fine
How do I get my geckolib block to render in item form?
initialize item on the blockitem iirc?
Ah I need to use RendererBlockItem right?
check the ars turrets just to be sure
I got it working using the RendererBlockItem
@rugged urchin can I use your art? 👉 👈
lol sure, but what am i looking at exactly?
minecraft painting of your snoozebuncle
i love how it's a pixelated version of pixel art
I'm unsure if I want the 16x16 version or the 32x32 and have it be bigger
like a 2x2
32x32
I proposed paintings to Goo for main mod but they ended in infinite 
Not sure when, but surely after the family xmas art
oh yeah, were were considering making the redbubble store art into paintings
32x32 to put it over your 2x2 fireplace
Want to check if I'm okay to include a custom named Starbuncle as part of the loot in my new Warp Nexus tower, wanted to have a chance of the scribes table spawning with a Starbuncle charm on it named by the people who have helped with the mod, wouldn't include the adopter text so that it's distinct from the Starbuncle Adopters and they would never spawn naturally, would be just two special Starbuncles that have a chance to be obtained in the towers
Yeah that's fine
is there an easy way to "disable" (or at least compensate) the dig speed penaulty that the player gets when they are riding an entity? I wanted the dig speed when riding the entity be the same as the regular dig speed
if anyone know somewhere that has something similar to this implemented
Stable footing enchantment from apotheosis?
oh, thats exactly what i needed, ty
Oh let me know how that works out, I'm working on a summoning addition to Ars and I want to add a utility mount that would benefit from that specific use case.
I'm having issues with using paintings inside my worldgen structures. I have a 2x2 painting that randomizes it's placement originating from any square in that 2x2, example attached. Anyone know how I can fix this? I want the painting to always be on the blocks below where it is on the first image.
Turns out to be a vanilla bug, fixed with a mixin to StructureTemplate
So what do I need to do to implement a form on a Turret? Is it just checking for fake player?
Add it to the map with the targeting logic
Ah the turret behaviour map?
Ya
Kinda unrelated but how would I add Ars Nouveau as a dependency on the curse forge site? Would I have to wait for the upload to get approved
If you click on the file there is an option to edit it
They usually provide a reason, it should be in your notifications
nevermind I just saw that
What was the reason?
I uploaded a .jar instead of a .zip
Wha
You shouldn't need to upload a zip
Are you sure you've submitted it as a mod?
Not a modpack
I picked "Addon"
Ah I don't think that'll be the correct section
whoops
I'm going crazy with geckolib3, backporting from 1.20.1 to 1.19.2 and for some reason my tile entity in my renderer is null, and I have no idea why.
@Override
public void renderEarly(WarpNexusTile animatable, PoseStack poseStack, float partialTick, MultiBufferSource bufferSource, VertexConsumer buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
try {
if (animatable.getBlockState().getBlock() != AddonBlockRegistry.WARP_NEXUS.get()) return;
if (animatable.getBlockState().getValue(WarpNexus.HALF) != DoubleBlockHalf.LOWER) return;
renderItem(animatable, poseStack, partialTick, bufferSource, buffer, packedLight, packedOverlay, red, green, blue, alpha);
} catch (Exception e) {
e.printStackTrace();
}
}
java.lang.NullPointerException: Cannot invoke "com.github.jarva.arsadditions.block.tile.WarpNexusTile.getBlockState()" because "this.animatable" is null
Anyone encountered this before?
nevermind, don't code sleep deprived
what does the wrappedCaster mean for the spellContext? Just noticed that when I tried implementing the swap target effect it wasn't working as intended
it worked out pretty well. The way apotheosis implements it is by overidding the breakSpreed event
like this
That’s surprisingly simple, thanks!
yeah i was also surprised. I though it woud use some mixin magic or something like that
does anyone know of a simple example of a gui implementation? (a Screen) im struggling out here ;-;
You could take a look at the new nexus screen I made for Ars Additions
It's pretty basic
i think i im opening my screen in the wrong way. Im using Minecraft.getInstance().setScreen() but when the screen opens i get Cannot invoke "net.minecraft.client.Minecraft.getNarrator()" because "this.minecraft" is null
im calling it from an Item class like this
That looks fine to me, maybe make sure it's definitely on the client, where do you call openWandScreen?
That's being called on the server
You may be able to use NetworkHooks for it, but you need to tell the client to open the menu
Hey there,
So I have maybe simple... maybe not at all question 
Currently working on ad addon (Will spoil what it is as it's cursed later on), and I'm curious how the AbstractRitual#canStart() is supposed to work 
In theory on the client side, I don't have access to a lot of stuff, but when set to true on client and false on the server, it "executes" the ritual on the client, but not on the server Oo
It's hard to find an example, as in the Ars itself it seems to be not used, and the only one I found just returns true on the client side?
So I'm a bit confused here. Thanks in advance 
I've started work on a repository that clones and produces build for every addon it's set up to do so, should hopefully allow a single repository for all assets for a given MC version
Will solve the issue with needing to publish generated assets to GitHub
@radiant depot any idea why NEG fails to build? https://github.com/Jarva/ArsAddonBuilder/actions/runs/9036465599/job/24833404299
that's a full blown error on mc classes
no idea
and to be fair neg doesn't even seem to be the only one, tmg and base ars fail too
Yeah, NEG failed first, TMG looks similar, Ars failed due to assets failing to download which is fine
for all i know, could be tied to still have the lexforge buildscript instead of neo one
otherwise some kind of clash with tmg ?
ok no, elemental still have traces too but builds
They all build on separate runners, so can't be a conflict, TMG is on 1.19.2 because it doesn't actually have 1.20.1 published on GitHub
I want to add spellbow’s 3d model..
but i dont know how is is
Customdata is not working… help me..
Version is 1.16.5
The bow is made with geckolib so it has its own rules
you probably can only override the model entirely, not conditional like other items
so basically make a 3d model in blockbench in geckolib format then wrap it in a texturepack to override it (same folder path and file names, the usual asset swapping)
afaik that's it
it doesn't use the same system as other items, but uses another mod that handles custom models + animations
Okay Thank you!!
@rugged urchin I think these were overlooked on the archwood retexture, seems to just be doors and trapdoors now
Ooh yeah we will try to remember when we get back lol
does anyone know of a library/utility/helper/something that can easily generate blockpos for terrain features? Like, if i wanted to make a spell that generates a ravine, is there a tool that can generate the coords for every block that would need to be "eroded" to form that shape?
oh well, looks like there isn't ;-; time to learn how to use noise then, i guess
How is the mana regen buff from the mana regen effect applied?
does anyone know how to disable the dark shade that minecraft applies to entity models when their eyes are inside blocks?
https://www.curseforge.com/minecraft/mc-mods/nofog maybe this could help?
hmm, i dont think that is gonna help :/ What i meant is this dark effect that is applied when the eyes of the entity is inside a block. The entity looks fine when it is not inside blocks, but when there is a block at the origin of that blue line (the eyes, i believe) the entity gets darkened
I am trying to make an addon that adds a ton of spell sounds
how do I add a spell sound?
here
ofc you will also need to create classes and modify things
can you walk me through it?
Do you have any experience making mods?
barely any
I've made a simple mod a while ago that just adds a few items and blocks
I can get it fast if I have stuff to base on though
You should be able to just clone the example addon, it already registers a new spell sound so you can use that as a base
how do I test the mod?
You can use the gradle task runClient
Gradle tasks can be ran using gradlew, ./gradlew runClient
You may have an easier time developing with Intellij, the community edition is free to use
I believe we all use Intellij here, some version of it anyway, I haven't used vscode for Java before
It may be possible, but it's never been needed
I think I used intellij for that mod but again it was a while ago
I don't know where that mod is, it's probably on an old computer
I'm assuming I install this too?
https://plugins.jetbrains.com/plugin/8327-minecraft-development
Yeah it's useful to have
I just remembered I've figured out how to mod mods with 7zip too, could I just take an existing mod, gut it and leave just the stuff I need, and go from there?
(half joking because I will do it if it is easier)
just use intellij
alrighty
I figured as much lol
alright I finally have all the stuff set up
I am still trying to figure out how to get it to run Minecraft
When you open the project it should import it
And then on the right hand side you can see gradle tasks
Wooo
For spell sounds,
basically just add the sound files, make the sound jsons (Minecraft wiki for help on that) and then in code register the sound object and then the spell sound based on how it's done in the example
so that's why I couldn't find sound files in the example mod
they were .jsons and not .wav or .ogg lol
what's the path to where the sounds are stored?
Repository for the Ars Nouveau minecraft mod. https://www.curseforge.com/minecraft/mc-mods/ars-nouveau - baileyholl/Ars-Nouveau
assets/modid/sounds
for the ogg files that's the path
while the jsons are defined simply in assets/modid/sounds.json
where a sound entry is made of one or multiple sound files references
it should randomly pick one of them when trying to play that sound type
the example is basically "random between all the default ones"
I am trying to change the mod ID and failing miserably
the game will run but the test glyph is showing as a missing texture
did you change the assets folder name too?
yeah
the sound is working just fine though
it shows up in the sound menu and plays the sounds
did you edit the json files which contain the texture location?
the console should log an error/warn right before you get to the main screen, when it's asset related
lol, beautiful.
remember to check how the pitch changes behave, just for fun
Lmao
If you're going to release it make sure you have the rights to use those sounds
Yeah, you're not going to be able to post stuff that you don't legally have the rights to use
Look for copyright free sounds
is this a rule for curseforge and modrinth or something else?
asking because I've seen so many mods for Minecraft and other games use copyrighted assets, so I just want to know where the line is for Ars addons
They may get away with it, until they don't and then it gets taken down
Chances for it to be noticed in short time is very very low
this is me just messing with a sound effects generator
none of the base sounds have a ton of power in them
Is there any way to determine if an entity is a boss without having a custom tag or individual class check?
Ah there's forge:bosses
This is why we had to have a sound designer make all of our current sounds
You can technically use the sounds without much issue if you were just somehow locally adding them for just your personal use, but mods/addons distribute the sounds, especially since we are open source which is where you get into the copyright territory.
what sort of features could I add in a sound based addon other than more sounds?
I am calling it Ars Suono
I mean it's a pretty niche focus, but maybe you could add some stuff that interacts with echo shards or sculk sensors?
No idea but there's an easy way to find out
I'm trying to but I can't figure out what the names of the sounds are
GOT IT
is there a way to get sounds to play when the spell resolves?
I want to add an option in the spell sound picker to change the resolve sound
A specific sound? Sure, probably not what you mean tho
But the spell sound picker is limited to what it can do
The tricky part of adding a niche glyph that simply plays a sound is the fact that we don't have a good way to let the player choose a sound dynamically
I don’t want to add a glyph for that, I just want a sound you choose in the sound picker to play when the spell resolves
if you mean the same spell sound that the spell already plays I imagine that's easy
if you mean a different one then you face the problem that spells don't store extra data so that would be pretty tricky
unless you mean the menu opens each time you cast the glyph LOL
If I were to take this sound and change it a ton, would that be considered a transformative work and therefore perfectly fine to use in my mod? Because I would at the very least like a reference to the magikoopa sound lol
I want to say it depends on what the license the magikoopa sound is under but idk for sure
and Nintendo is a rough beast to play with
how do you pack everything into a .jar file once you are done?
run the build task
where does the file end up when it is done?
I don't think it worked
in the builds/libs folder
nice thx
How can I update an ImmutableMap, I know I shouldn't be able to but I need to in order to register a new EntitySubPredicate type, in 1.20.1 it doesn't have a registry :S
Replace it
It's final and I can't get the access transformer to work 😦
If it's something that other people might wanna replace, you can check if it's still immutable
I do something like that in Eidolon I think
For signs
Do you have a link?
In my case it was Accessor time
Port of an 1.16.5 magic mod to 1.19+. Contribute to Alexthw46/Eidolon-Repraised development by creating an account on GitHub.
Ah, validBlocks is immutable?
Yeah
Yeah, have shutdown my PC for tonight but will give it a go tomorrow
Needed for this
#1129621147256881272 message
folks what is happening
package com.github.jarva.arsadditions.mixin;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
import vazkii.patchouli.client.book.BookEntry;
import vazkii.patchouli.client.book.BookPage;
import java.util.List;
@Mixin(BookEntry.class)
public interface BookEntryAccessor {
@Accessor("realPages")
List<BookPage> getRealPages();
}
It's probably something really dumb, but I'm so confused
have to cast it as an object first
thanks, why did I not have to do that for other accessors?
you should have had to
PageRelationsAccessor relationsAccessor = (PageRelationsAccessor) relations; this worked fine 
Well with this working I can demo my Patchouli client editing util that I'm building up:
@SubscribeEvent
public static void updateBookContents(BookContentsReloadEvent event) {
ResourceLocation bookId = event.getBook();
if (!bookId.equals(WORN_NOTEBOOK)) return;
BookUtil.addRelation(
new ResourceLocation(ArsNouveau.MODID, "machines/storage_lectern"),
new ResourceLocation(ArsNouveau.MODID, "machines/warp_indexes")
);
BookPage wixiePage = BookUtil.newTextPage(
"ars_additions.page.wixie_enchanting_apparatus",
"ars_additions.page1.wixie_enchanting_apparatus"
);
BookUtil.addPage(new ResourceLocation(ArsNouveau.MODID, "automation/wixie_charm"), wixiePage, true, page -> {
if (page instanceof PageText text) {
PageTextAccessor textAccessor = (PageTextAccessor) text;
String title = textAccessor.getTitle();
if (title == null) return false;
return title.equals("ars_nouveau.potion_crafting");
}
return false;
});
}
Using this to add relations and modify existing entries to add extra pages
publishing a mod to curseforge is so much work ç.ç
uh
does anyone know if i where alteration table files that determines what can be put in and can't is/what has thread slots?
If you're asking if they can be added via datapack, answer is no
The alteration table takes what has slots, and slots are defined in code
They slots be added to anything via code but a lot of perks won't work because they need explicit code to support them.
So, if I wanted to infuse a sword into a thread I’d have to make it a “thread” and tell it to mimic the attributes of the sword in the main hand
Thoughts on the idea of a little JiJ analytics mod? Would aim to be compatible with any version, and tracks when item ids are crafted or items are used to give mod developers a better understanding of what features are popular
Would be like bstats but for mods
google analytics in minecraft
Basically, but fully anonymous and opt out in config
@mossy hollow I heard you like gradle plugins
replacement for FG/NG indev
Goo my artist has complained that "the dominion wand is too pretty i cant make it fancier" for my advanced dominion wand
Lmao that was one Rid had done
uh, appears Identity is kinda discountinued but a fork exists
it's a mess to swap midver, but seems like morph glyph for 1.21 will have to
the magic of java generics
I have just made my first custom forge registry and it's honestly so confusing
Turns out my first custom forge registry didn't even work 
registry? broke. abusing the recipe system? woke
My recipe needs a registry
For the source spawner, I'm building a system to modify NBT tags, and I need a registry for all my TagModifiers
Going to post this here, little system I've implemented for my new charm mechanic, makes processing charm events super easy, proud of the little abstraction
https://github.com/Jarva/Ars-Additions/blob/1.20.1/src/main/java/com/github/jarva/arsadditions/common/item/curios/Charm.java#L159-L184
Can someone familiar with model animations in blockbench answer a question?
Is there a way to have the (X,y,z) of a bone reset every second. I tried using math.random(low,high) and it works but it shifts way too fast.
Are you using geckolib or the normal blockbench animator?
Geckolib
What do you mean by reset?
You familiar with the displacer beast from D&D?
I have a “displaced” image that I want to move randomly around
This is what it does using math.random()
I want to slow down how frequently it “jumps”
Ahh. Just divide it I guess?
Hmm no that would just make it jump smaller not slower
You may have to use several key frames and split the time so it only jumps every 1 second
Is there a command to just “set” the position to a random value instead of continually calculate it? Then I could just set a new key frame at whatever interval.
I’m not too familiar with molang but I thought you could do that with a key frame that calls random and then inmediately after you put a key frame with nothing for the position
sneak peek
need to add a few more functions to this then recipes & textures then thatll be 1.0.0
earliest im getting this done is like end of this week though
textures are gonna be really really bad
what are you making?
take a guess from the screenshot
all info about that block can be guessed from just that screenshot :)
hint ||spell turret is Projectile -> Conjure Magelight||
answer ||spell prism that warps the projectile to an entity, currently only works with players, need to add dominion wand integration||
anyway gotta sleep, gotta wake up for work
This is just like the Ars Additions reliquary but as a block
(the block form is currently in progress)
I wanted to make a warping prism lens but setting a destination would be a mess as the advanced spell prism already have a wand interaction
Yeah my plan was to have a custom turret that shoots into a reliquary
didnt even know that existed, i think ill probably keep working on mine though
i have other ideas than just that prism too anyway
also it being a spell prism rather than a custom turret would increase compat with stuff like ars elementals infused turrets
ive had 0 success in getting runClient to work after 1.12 regardless of mod loaders
send help i hate having to build and drag the artifact
and yes ive (unsuccessfully) run genIntellijRuns Task 'genIntellijRuns' not found in root project
always happens
wonder if its a linux issue
It definitely doesn't happen on windows, so maybe. Starbuncle.Java is a Linux only boy though, he might have ideas
Or he's just going to shill Archloom instead of Forgegradle again 😝
gradle is the reason i hate developing for the jvm
I have 0 issues with it, works out of the box for me on Forgegradle and Archloom
using intellij
it would be an issue with your dev environment if so
yeah doesnt work
Gradle bad
true
Not a gradle problem
gradle still bad though
Are you running it inside intellij? What errors do you get? What java version you using for gradle?
disagree, I enjoy it as a build tool, much better than a lot of alternatives
tried both in and on the terminal
using java 17
ill try graal 17 but i doubt itll do anything
yeah
Java 17 which distro
whatever the heck "Project SDK 17" is
probably oracle
I'm using corretto, actually corretto 19 for gradle
Maybe try corretto
I use corretto for all my java installs
Temurin is also decent
What linux distro?
hi on endeavour
your beard isn't long enough, that's why it's failing
gonna do a hail mary and just try gradle 8.5 w/ jdk 21 lmao
Need to also convince others in your company to switch to fully functional programming
Then make stack overflow posts
Only then will gradle work
I'm trying to convince my company to ditch Scala
it's working but now they use typescript 🤢
i would like my team to switch to rust but im not gonna
are you on intellij?
~ ➜ z nouveau
Ars-Nouveau 1.20 ➜ chmod +x ./gradlew; ./gradlew runClient
Configuration on demand is an incubating feature.
Path for java installation '/usr/lib/jvm/java-17-openjfx' (Common Linux Locations) does not contain a java executable
Path for java installation '/usr/lib/jvm/java-11-graalvm' (Common Linux Locations) does not contain a java executable
Path for java installation '/usr/lib/jvm/java-11-graalvm' (Common Linux Locations) does not contain a java executable
Path for java installation '/usr/lib/jvm/java-17-openjfx' (Common Linux Locations) does not contain a java executable
> Configure project :
MixinGradle is skipping eclipse integration, extension not found
FAILURE: Build failed with an exception.
* What went wrong:
Task 'runClient' not found in root project 'Ars-Nouveau'.
* Try:
> Run gradlew tasks to get a list of available tasks.
> 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.
* Get more help at https://help.gradle.org
BUILD FAILED in 1s
yes
build works
completions work
why is it using systemjdk. intellij should download and do its own thing
well this was from my terminal
anyway ive tried basically all the jdks i have
none worked
so now im trying 21
and nope
Task 'runClient' not found in root project 'Ars-Controle'.
* Try:
> Run gradle tasks to get a list of available tasks.
> For more on name expansion, please refer to https://docs.gradle.org/8.5/userguide/command_line_interface.html#sec:name_abbreviation in the Gradle documentation.
> 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.
> Get more help at https://help.gradle.org.
Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
For more on this, please refer to https://docs.gradle.org/8.5/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
BUILD FAILED in 3m 18s```
what does archlinux-java report?
Download jdk inside intellij
Available Java environments:
java-17-graalvm-ee (default)
java-17-openjdk
java-21-graalvm-ee
java-8-graalvm
java-8-jre/jre
java-8-openjdk
you need to use 17-openjdk. tried that?
yep
that is weird
can be configured through idea too
That's because gradle 9 is too new
but yeah just download inside intellij
currently trying that
Task 'runClient' not found in root project 'Ars-Controle'.
* Try:
> Run gradle tasks to get a list of available tasks.
> 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.```
on corretto 17
That's ran through the intellij gradle UI or terminal?
Won't be a difference with that
no difference from graalvm 17 btw
This is weird, show a screenshot of your project layout?
or openjdk 17
my project layout is the addon template
it also just doesnt work with the ars nouveau repo
That's really strange, for some reason your project isn't detecting the gradle tasks
Did anything fail to import?
When it imports your gradle project
is your gradle setup to use the wrapper or the global install?
wrapper, i dont even have a global install anymore
eh i kinda cant be bothered until i figure this out
iteration is just so horrendously bad without runClient
Does genIntellijRuns work?
nope
Task 'genIntellijRuns' not found in root project 'Ars-Controle'.
* Try:
> Run gradle tasks to get a list of available tasks.
> 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.
If you open the gradle tab in IntelliJ do they appear?
yep
prepareRuns works but doesnt fix anything
10:36:10 PM: Executing 'prepareRuns'...
Configuration on demand is an incubating feature.
> Configure project :
MixinGradle is skipping eclipse integration, extension not found
> Task :downloadMcpConfig
> Task :extractSrg UP-TO-DATE
> Task :createSrgToMcp UP-TO-DATE
> Task :downloadMCMeta UP-TO-DATE
> Task :downloadAssets UP-TO-DATE
> Task :extractNatives UP-TO-DATE
> Task :makeSrcDirs
> Task :prepareRuns
Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
See https://docs.gradle.org/7.3/userguide/command_line_interface.html#sec:command_line_warnings
BUILD SUCCESSFUL in 2s
7 actionable tasks: 2 executed, 5 up-to-date
10:36:13 PM: Execution finished 'prepareRuns'.
fwiw gen(Eclipse|Intellij|VSCode)Runs dont work
run(Server|Data|Client) also dont work
prepareRun(Server|Data|Client) dont work either
thats everything in forgegradle runs
Could try purging all things gradle and reimporting the project but I’m not really sure, haven’t seen that error in my time of dealing with gradle spaghetti
Gradle has a habit of inventing new errors when it thinks you should have a bad day
i mean i dont see what else i could purge except my global install
which i already purged
and its not like it only doesnt work in this project
There is a local gradle cache iirc
oh actually thats a lie, i just remembered it working with loom
but forge/architectury i never figured out
neoforge i havent tried yet
gosh if this works i might know why this happened
Architectury uses loom
Ars Additions and Ars Artifice use Forgeloom
the reason would likely be a previous massive skill issue from about a year ago
well, its still running
we'll see if it works
called it
not yet
I'm ready for it 😄
hi ready for it 😄, im qther
do you have some vencord plugin or something for that
at this point its actually probably 2 years ago
nah
can you even make custom plugins without it being on the central repo? never looked into it tbh
ye
not that i ever needed one :p
not that I'd ever use vencord
i definitely do not use vesktop to get better performance
been stuck on listLibraries for like 5 minutes now
still stuck on listLibraries
oh finally got past
got notified with my audio crackling
linux audio is so good /s
Are there other alternatives than Maven?
Ant has been dead for 15 years now, hasn't it?
(Apart from certain German Bureaucratic Institutions)
tbh the only build tool i can truly say i enjoy for any language ive ever used is cargo (for rust)
the worst one is either gradle or cabal
though im pretty sure my cabal experience is a skill issue
well actually i could probably pick any c++ build tool and have a worse experience with it
ok you win @mossy hollow
now the big reveal
1-3 years ago (its been so long i forgot) i accidentally created a file named '~'
you can guess what happened next
lmfao
As far as worst go, webpack. Hands down, even C with make files was more fun.
Maven's potentially slow, but at least it's predictable. I've seen some dynamically scripted Gradle things that I'd like to forget.
whats webpack for again
Well... fun times!
Ant still exists but mainly Gradle, Maven and Bazel for Java
well thats enough dealing with java for today, tomorrow ill try setting up hot reloading then actually get some stuff done
web, mainly frontend
really need to figure out patchouli
ah i generally try not to touch the web
I'd recommend it
currently doing an api at work though so i guess that counts
recommend not touching web*
yeah i also recommend not touching web
especially frontend if anything
backend is at least mostly figured out
meanwhile a new frontend framework comes out every 10 seconds
Touch all the web things. Lose your sanity and join the dark side
I did 4 years as a lead frontend developer, I managed to escape
the only web framework i enjoyed and can reasonably recommend is sveltekit
not another one of you
and even then i dont really build websites unless necessary
Ars wiki is sveltekit, and so is BlockPrints
sveltekit good
Ehhh. Slowed down a lot. React's 11 years old and still the market share lead
waiting for the next version though
This guy gets it! 😁
yeah but react also has "non-breaking" changes which make the ecosystem complete hell
Nothing against Astro though, it's excellent.
theres still widely used packages using classes for react
Astro god tier
A challenging work environment you mean. 😁
tbh if i had the idea to make Ars.Guide id probably have gone for https://github.com/rust-lang/mdBook
its definitely not as pretty
but it does work
ars has datagen for patchouli you can use
my website & blog are written with sveltekit btw, dont have any other websites though
well theres a game on my github.io page thats written with leptos, but i cant recommend that until wasm code splitting
Astro allows me to have richer components on the client though, so I can do forms and fancy stuff like the animations
yeah that makes sense but im lazy as hell
blocks are hard
think i screwed up my tile or something because now it crashes when i place a block
ill have to continue tomorrow but i have no clue where the heck this could have happened
using /setblock gives An unexpected error occurred trying to execute that command but no further details in logs
thanks mojang
its also partially set because i can then use /data get and receive the same error
or place a block in where i set it and crash
didnt know that mobs could aggro on turrets
lol probably on the fake player
i was gonna use crouched use of dominion wand to clear my prism but it appears changing strictness takes priority so i guess the only way to clear the prism is breaking it now
ill probably also add another item to remotely change the destination
how do i even mess up this way
did you register the block texture and is it actually where you expect? I remember doing a "this should work" and Bailey doing a "Your texture is in /blocks, you tell minecraft it's in /block"
Yeah, you need to tell the block which texture to use somehow, but it's been ages and I'm not sure where and how anymore
dont see anything about it in the ars repo
ah got it
needs assets/{modid}/blockstates
even though my block has no state
oh creepers can also aggro them and cause your turrets to blow up
how fun
and now, the reason i wanted to make this block, automatic potions!
just realised that the pedestal is useless xd
looks like i failed at making the data of the block persistent
fixed by abusing getPersistentData()
pretty sure its abuse at least
but it works so i wont bother fixing it
Is there a class in ars nouveau that allows you to cast spells on a player using the server?
