#General & Development Help

1 messages · Page 9 of 1

radiant depot
#

For elemental it's pretty complex as it's still interface based

#

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

mossy hollow
#

I thought foci were checked via the caster, so a spellbook with a custom caster should work

radiant depot
#

only the vanilla ones are

mossy hollow
#

Ah right

radiant depot
#

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

radiant depot
#

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

loud widget
#

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)"

mossy hollow
#

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

radiant depot
#

which means stuff like fire damage swapping or similar side buffs

loud widget
mossy hollow
#

Genius is overselling it, but glad it worked

neat mango
#

are ars screens all client sided ? (without server side menus)

radiant depot
#

The terminal maybe?

#

Otherwise they are not container so they shouldn't need a ss menu

mossy hollow
#

@radiant depot when you get a moment can you add Ars Additions to #addon-index pls 😄

loud widget
#

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?

radiant depot
#

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

loud widget
#

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

radiant depot
#

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

mossy hollow
#

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

radiant depot
#

Yeah, have a middleman that syncs them based on a shared id

mossy hollow
#

And then all you need is to save the entity uuid in the item nbt

loud widget
#

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 🙂

radiant depot
#

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

mossy hollow
#

Am I okay to make an addon thread for Ars.Guide? To get feedback and post updates

zealous zenith
#

Ya

loud widget
radiant depot
#

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

loud widget
#

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

radiant depot
#

Read item as itemstack here

#

I can edit if that helps

loud widget
#

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?

zealous zenith
#

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

radiant depot
#

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

loud widget
#

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?

radiant depot
#

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

loud widget
#

only works in the players inventory

radiant depot
#

Does it stop in chests completely?

loud widget
#

yesir

#

according to my trusty system.out.print it stops calling it once you put the item inside a chest

radiant depot
#

What is the end goal anyway? What needs to change on the itemstack?

#

Probably won't help knowing, but ynk

loud widget
#

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

radiant depot
#

Emh, so those are all things that need the wand on the player inventory

loud widget
#

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

radiant depot
#

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

loud widget
#

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

radiant depot
#

A chat message to explain why it disappeared will be needed either way

#

Just saying cause players are users

loud widget
#

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

mossy hollow
#

Where is the item model predicate for the source jar defined?

"predicate": {
  "ars_nouveau:source": 0.01
},
radiant depot
#

you mean in code?

#

Client events or something

mossy hollow
#

Ah, I was looking to check how it's controlled

#

Found it, it's in ClientHandler in the setup code

mossy hollow
#

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

radiant depot
#

Try clean then rebuild and regen runs?

#

Pretty annoying, I know

mossy hollow
#

was it Forge or Architectury that has the verify AT gradle task

radiant depot
#

Explicit? Probably Arch

#

I don't remember that name in my envs

mossy hollow
#

Yeah it'll be arch then

#

sad times

lyric shale
#

#1019655534900678737 message

mossy hollow
#

@radiant depot How do your animated items work? Is it the mcmeta or the .gif?

radiant depot
#

Mcmeta

mossy hollow
#

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 😄

zealous zenith
#

I doubt it

mossy hollow
#

Alright, will need to make a PR for this one then

mossy hollow
#

Can we get a post tag for 1.20 in #1019655289873641555 ?

radiant depot
#

done

mossy hollow
#

Is there anyway to determine if a spell was cast with Reactive from the glyph?

radiant depot
#

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

mossy hollow
#

It uses a Reactive caster, but I couldn't find a way to get the actual caster

radiant depot
#

No I mean the literal "casting item"

#

It's either in the resolver or in the context

mossy hollow
#

Ah the casterTool

#

That could work ty

neat mango
#

Why were shards changed into tokens?

radiant depot
#

Too easy to confuse them, especially for colorblinds

neat mango
#

yeah thats understandable

radiant depot
#

The drygmy mistaken for starbies are a lot

mossy hollow
#

when working on Ars, I press debug on IntelliJ and it doesn't kill my old instance automatically, is this the forge experience?

radiant depot
#

I guess?

#

you need to restart the debug from the debug console if you want exactly that

mossy hollow
#

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

zealous zenith
#

Mine prompts me to kill the older one

mossy hollow
#

Hmm, that's what I get on my Archloom ones, but not on Ars itself

zealous zenith
#

iirc its an intellij popup that you can dismiss forever

#

maybe its a setting you can reenabel

neat mango
#

where does the spell cost check happens? I also want to trigger the "not enough mana" overlay

neat mango
#

found it. NotEnoughManaPacket

wide swan
#

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.

neat mango
#

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

shadow helm
#

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

GitHub

Repository for the Ars Nouveau minecraft mod. https://www.curseforge.com/minecraft/mc-mods/ars-nouveau - baileyholl/Ars-Nouveau

gleaming fox
#

does anyone here have any plans of making a « bridge » mod between iron’s spellbooks and AN mana?

#

(asking for a future project)

wide swan
mossy hollow
shadow helm
#

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

wide swan
mossy hollow
#

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

wide swan
#

the project is LPGL I only wanna have the armor assets ARR

mossy hollow
#

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

neat mango
mossy hollow
#

I mean purely the armor assets

mossy hollow
wide swan
#

I have done it for Epic Samurais as well but. I dont know how I can only make the armors ARR

mossy hollow
#

Just specify the file paths and say which assets are original and all covered by ARR

wide swan
#

you mean in the file? directly beneath the line?

#

I wanna be 100% safe ^^

neat mango
#

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

mossy hollow
#

mojang what

zealous zenith
#

not a record?

mossy hollow
#

I'm more talking about this.z = y

radiant depot
#

Probably just an error of whoever made the method

#

ChunkPos don't have y

#

But the instinct for pos is to start with xy

mossy hollow
#

Yeah, it threw me off when I was working with them, I saw they took in a y but chunkpos.y wasn't working

mossy hollow
#
@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

radiant depot
#

ForgeRegistries.ITEMS.get(..) ?

mossy hollow
#

Wasn't aware that existed but it'll go in Neoforge right?

radiant depot
#

Maybe it is not get but a longer method name, but it's even in 1.19

mossy hollow
#

Yeah but in new Neoforge versions it'll be gone but this won't be (hopefully)

radiant depot
#

I'd guess some kind of replacement would be there?

mossy hollow
#

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

neat mango
#

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

steep spruce
#

are licenses that important?

gleaming fox
#

yes

#

very very important

#

they define how much of your work people can steal borrow

radiant depot
#

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

radiant depot
#

For whover is maintaining Aura Glyph, I suggest checking the helix particle of self

#

It should be possible to use them, by adjusting radius to show the (horizontal) area that is being affected

gleaming fox
#

noted

gleaming fox
#

i just figured out how to create a pseudo custom dust particle

#

that took way too long

bright shore
#

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

neat mango
#

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

mossy hollow
neat mango
#

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 ?

zealous zenith
#

A forge registry?

neat mango
#

yes. a deferred one maybe

zealous zenith
#

They are tied to items and have to be registered in mod init

#

What do you want the forge registry for?

neat mango
#

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 ?

zealous zenith
#

Sure

neat mango
#

thanks a lot!

neat mango
#

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 ?

bright shore
#

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

neat mango
#

I am mostly concerned about players trying to exploit stuff it is only client sided

mossy hollow
#

It depends on the config option, there's one to enforce validation at cast time

neat mango
#

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

radiant depot
#

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

mossy hollow
#

What's the best way for addons to insert augment behaviour into other glyphs? I'm guessing it's going to need mixins

radiant depot
#

for the behaviour yes

#

you have the events but usually it's just on specific triggers

mossy hollow
#

Yeah makes sense

mossy hollow
#

Is there a way to detect when an item is being put into a container?

radiant depot
#

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

mossy hollow
#

I think it's a mixin, I haven't found any events for it, I was thinking of adding a mixin to Inventory#add

mossy hollow
#

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

mossy hollow
#

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?

zealous zenith
#

does patchouli support overriding pages? I thought you could only add to an existing category, not any of its entries

mossy hollow
zealous zenith
#

interesting

#

needing to dynamically update pages was a main reason to make our own book

mossy hollow
#

I'll let you know if I get it working

mossy hollow
#

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

radiant depot
#

Well, now PR all that into Ars

mossy hollow
#

Can do, what was wanted to be dynamically updated?

radiant depot
#

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

mossy hollow
#

For sure, makes sense

#

It's unfortunately processed on the client, would that be an issue?

radiant depot
#

well, nobody will open the book on serverside 😛

mossy hollow
#

I mean accessing the data you need in the book

radiant depot
#

it's more like a problem for datapacking

#

or to be more precise, server-only datapacks

#

usually modpacks have the same data on both

mossy hollow
#

That's true

radiant depot
#

isn't data synced anyway?

mossy hollow
#

I have no idea

radiant depot
#

a ton of stuff is sent from server to clients

mossy hollow
#
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

neat mango
#

How is ars nouveau published? the GH workflow was last run 6 months ago so it cannot be that

zealous zenith
#

Manually

radiant depot
#

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

zealous zenith
#

It doesn’t really save much time because I still have to write the change log on both websites

neat mango
#

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 ?

mossy hollow
#

I use the GitHub workflow for publishing Ars Additions

neat mango
#

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) 😅

zealous zenith
#

I’ve pretty much given up on modrinth lol

neat mango
#

Yeah I can understand that. but given that there are users there already #general-and-help message, I think we shouldnt leave them hanging

radiant depot
#

Instead of looking at commits to remember what I added, lol

mossy hollow
#

Yeah I'm probably going to do the same adaptation

mossy hollow
#

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

zealous zenith
#

configs should be loaded well before the world when the recipes load

#

or did you put them in the server config?

radiant depot
#

Likely server config

mossy hollow
#

Ah yeah, do I need it in common config then?

#

Yeah that worked, I feel dumb

zealous zenith
#

It won’t work on a server like that tho

#

Only single player

mossy hollow
#

Oh right, so what's my option for server then?

mossy hollow
#

It seems like it's working on server boot too

zealous zenith
#

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

mossy hollow
#

I don't think it should matter because it's just used for whether a recipe is active

#

I will need to test

zealous zenith
#

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

mossy hollow
#

Ah interesting

mossy hollow
#

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

rugged urchin
#

ok i remember fighting this on multiple occasions and im trying to remember the fix lol

#

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

radiant depot
#

make sure the pivot is in the right place

rugged urchin
#

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

mossy hollow
#

ty, will take a look

#

ah shit, but now it's going to be really hard to rotate right?

rugged urchin
#

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

mossy hollow
#

I want to try learn, I'm not great on this so I'm hoping to atleast become basically able

rugged urchin
#

i'm happy to help any way i can

mossy hollow
#

rest of my portfolio:

zealous zenith
#

will you make a model of nook

mossy hollow
#

next request

radiant depot
#

birb

#

small bird models are more complex than they should

mossy hollow
#

penguins are birds so this counts

gilded lintel
#

Can I request a balloon snake?

mossy hollow
#

May need a bit more practice for that one, I'll give it a try tomorrow

gilded lintel
#

I'll accept a straight line

rugged urchin
mossy hollow
#

@rugged urchin, do you have any Ars style button textures? Thinking of ways I can make this look better

rugged urchin
#

I think all of the buttons we have are like parchment themed for the spell book and bookwyrm UIs

mossy hollow
#

May just get some Sourcestone buttons

mossy hollow
#

maybe I'm blind but how on earth can this be 6.149...?

radiant depot
#

something something maybe it returns the squared dist?

mossy hollow
#

Maybe, I just switched it to player.blockPosition().distToCenterSqr(...)

#

and it works

#

All this to prevent people abusing it with scryers eye

mossy hollow
#

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

arctic bronze
#

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

zealous zenith
#

a runtime error or just the IDE warning?

arctic bronze
#

says: Method/field descriptor is required for member reference in @At target

zealous zenith
#

Not sure, are you on an older version? I didn’t think tmg was fully up to date

arctic bronze
#

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?

zealous zenith
#

Not Enough Gylphs might have that stuff but I’m not sure

#

Alex may have left them out

mossy hollow
arctic bronze
#

I'll give it a try. Learning Java as I go but I'll try and get it to work

mossy hollow
#

If you have TMG in your dev environment that could be causing issues due to multiple redirects, so that's another potential cause

arctic bronze
#

hmm, could I run into issues with incompatibility between the add-ons?

mossy hollow
#

If you use redirect yes

neat mango
#

but yeah not a good idea to you use redirects

neat mango
#

learning java while doing simple modding is fine. Mixins are higher level

radiant depot
#

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

arctic bronze
#

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

mossy hollow
#

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

radiant depot
#

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

neat mango
#

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

mossy hollow
#

It'll still require mixins for the augment implementation though

neat mango
#

we could add a method to the GlyphRegistry that adds an augment to an exisiting glyph during registration

radiant depot
#

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 explosion dampen

mossy hollow
#

Goo, how does one make animations transition properly into each other?

#

I have an open, spin and close animation

zealous zenith
#

geckolib will lerp it for you if you chain them

mossy hollow
#

ooh, that's perfect

zealous zenith
#

or rather, they transition back to their starting state

#

unless you set it not to

mossy hollow
#

that should be perfect then, how about handling lighting on spinning objects?

rugged urchin
#

what is going on with that cube

mossy hollow
#

what do you mean

#

oh the texture

rugged urchin
#

ya

mossy hollow
#

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

rugged urchin
#

oh ok

arctic bronze
#

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

radiant depot
#

A bit of internal refract

#

Try glyph registry class

arctic bronze
#

That worked! Thanks

arctic bronze
#

Are the files in the cache using a specific format of UUID?

zealous zenith
#

The datagen cache?

arctic bronze
#

Yea

zealous zenith
#

They are generated when you run the run data command

arctic bronze
#

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?

arctic bronze
#

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?

zealous zenith
#

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

radiant depot
arctic bronze
#
    public SpellTier defaultTier() {
        return SpellTier.THREE;
    }``` This is what I have
bright shore
#

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

arctic bronze
#

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?

zealous zenith
#

Just use level() if you are in an entity class

#

Ars uses an access transformer to make it public

arctic bronze
#

Thought that wasn't working only to realize that was working it just creates a new error lol

arctic bronze
#

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

zealous zenith
#

all entities need a renderer attached

#

the ClientHandler class has an example on registering them

arctic bronze
#

k thanks

mossy hollow
#

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

shadow helm
#

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

radiant depot
#

you can always make a record

#

quick and painless classes

#

idk if it's the right use, but Pair exists too

neat mango
#

sealed records yes

#

switch pattern matching makes this very easy to understand. I dont think we have that fully in java 17 though

radiant depot
#

we'll have java 21 next mc ver

#

so at last the pattern matchers

arctic bronze
#

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.

arctic bronze
#

Looking like I can't avoid mixins

zealous zenith
#

did you look into SpellCostCalcEvent? That would be my first guess for a cost multiplier

arctic bronze
#

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?

zealous zenith
#

You shouldn’t be using a mixin for this, the spell cost event lets you modify the spell cost based on whatever you like

arctic bronze
#

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

radiant depot
#

It gets called before to see if you can cast and later when the mana is expended

arctic bronze
#

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?

zealous zenith
#

you have to delete the configs, they are just config defaults

neat mango
#

continuing conversation from yesterday, there are plans to rework how transfer works in neo. could potentially fix lag because of large inventories

radiant depot
#

There was the intention but it's kinda a problem loop on how to do the retrieval api

neat mango
#

retrieval api? what does that mean?

radiant depot
#

I mean like, proper implementation from the storage handler on how to supply an item when asked

neat mango
#

extraction?

radiant depot
#

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

neat mango
#

For a predicate? But then you can't use maps
Why wouldn't this work ?

gleaming fox
#

how should i go about creating a temporary light source ?

neat mango
#

map.keys.filter{predicate} would work no ?

shadow helm
radiant depot
gleaming fox
neat mango
#

how do you store data without needing to iterate over them

zealous zenith
#

A stack request would be fine

mossy hollow
#

How do I get my geckolib block to render in item form?

radiant depot
#

initialize item on the blockitem iirc?

mossy hollow
#

Ah I need to use RendererBlockItem right?

radiant depot
#

check the ars turrets just to be sure

mossy hollow
#

I got it working using the RendererBlockItem

mossy hollow
#

@rugged urchin can I use your art? 👉 👈

rugged urchin
#

lol sure, but what am i looking at exactly?

mossy hollow
#

minecraft painting of your snoozebuncle

rugged urchin
#

i love how it's a pixelated version of pixel art

mossy hollow
#

I'm unsure if I want the 16x16 version or the 32x32 and have it be bigger

#

like a 2x2

#

32x32

radiant depot
#

I proposed paintings to Goo for main mod but they ended in infinite delay

#

Not sure when, but surely after the family xmas art

rugged urchin
#

oh yeah, were were considering making the redbubble store art into paintings

#

32x32 to put it over your 2x2 fireplace

mossy hollow
#

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

rugged urchin
#

Yeah that's fine

loud widget
#

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

arctic bronze
loud widget
spark mantle
radiant depot
mossy hollow
#

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.

mossy hollow
#

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?

zealous zenith
#

Add it to the map with the targeting logic

mossy hollow
#

Ah the turret behaviour map?

zealous zenith
#

Ya

arctic bronze
#

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

zealous zenith
#

If you click on the file there is an option to edit it

arctic bronze
#

thanks

#

Dang, the file I uploaded got rejected. Is there somewhere I can see why?

mossy hollow
#

They usually provide a reason, it should be in your notifications

arctic bronze
#

nevermind I just saw that

mossy hollow
#

What was the reason?

arctic bronze
#

I uploaded a .jar instead of a .zip

mossy hollow
#

Wha

#

You shouldn't need to upload a zip

#

Are you sure you've submitted it as a mod?

#

Not a modpack

arctic bronze
#

I picked "Addon"

mossy hollow
#

Ah I don't think that'll be the correct section

arctic bronze
#

whoops

mossy hollow
#

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

arctic bronze
#

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

loud widget
spark mantle
loud widget
#

yeah i was also surprised. I though it woud use some mixin magic or something like that

loud widget
#

does anyone know of a simple example of a gui implementation? (a Screen) im struggling out here ;-;

mossy hollow
#

You could take a look at the new nexus screen I made for Ars Additions

#

It's pretty basic

loud widget
#

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

mossy hollow
#

That looks fine to me, maybe make sure it's definitely on the client, where do you call openWandScreen?

loud widget
#

from a C2S packet

#

like this

#

and inside my screen all i have is this

mossy hollow
#

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

loud widget
#

a

#

oh well, it worked now haha

#

thank you

#

my hero

vivid trellis
#

Hey there,
So I have maybe simple... maybe not at all question nkogigle
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 hmm_cat
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? mlembig So I'm a bit confused here. Thanks in advance KibzL

mossy hollow
#

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

mossy hollow
radiant depot
#

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

mossy hollow
#

Yeah, NEG failed first, TMG looks similar, Ars failed due to assets failing to download which is fine

radiant depot
#

for all i know, could be tied to still have the lexforge buildscript instead of neo one

#

otherwise some kind of clash with tmg ?

radiant depot
mossy hollow
lethal cosmos
#

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

radiant depot
#

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)

lethal cosmos
#

Ah.. bow has own model so customdata can’t add more models

#

Right????

radiant depot
#

afaik that's it

#

it doesn't use the same system as other items, but uses another mod that handles custom models + animations

lethal cosmos
#

Okay Thank you!!

mossy hollow
#

@rugged urchin I think these were overlooked on the archwood retexture, seems to just be doors and trapdoors now

rugged urchin
#

Ooh yeah we will try to remember when we get back lol

loud widget
#

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?

loud widget
#

oh well, looks like there isn't ;-; time to learn how to use noise then, i guess

arctic bronze
#

How is the mana regen buff from the mana regen effect applied?

loud widget
#

does anyone know how to disable the dark shade that minecraft applies to entity models when their eyes are inside blocks?

gleaming fox
loud widget
#

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

gleaming fox
#

ah, that

#

i have no idea

orchid garden
#

I am trying to make an addon that adds a ton of spell sounds

#

how do I add a spell sound?

gleaming fox
#

here

#

ofc you will also need to create classes and modify things

orchid garden
#

can you walk me through it?

mossy hollow
#

Do you have any experience making mods?

orchid garden
#

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

mossy hollow
#

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

orchid garden
#

how do I test the mod?

mossy hollow
#

You can use the gradle task runClient

orchid garden
#

I am using VS Code

#

are gradle tasks in the IDE or in the files somewhere?

mossy hollow
#

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

orchid garden
#

alright

#

I wish we could just add sounds with datapacks it sounds so much easier iamdespair

mossy hollow
#

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

orchid garden
#

I don't know where that mod is, it's probably on an old computer

mossy hollow
#

Yeah it's useful to have

orchid garden
#

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)

gleaming fox
#

just use intellij

orchid garden
#

alrighty

gleaming fox
#

it’s easier than using other workaround ways

#

(speaking from experience)

orchid garden
#

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

mossy hollow
#

When you open the project it should import it

#

And then on the right hand side you can see gradle tasks

orchid garden
#

import what?

#

wait I might have found it

#

GOT IT

mossy hollow
#

Wooo

radiant depot
# orchid garden can you walk me through it?

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

orchid garden
#

they were .jsons and not .wav or .ogg lol

#

what's the path to where the sounds are stored?

radiant depot
#

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"

orchid garden
#

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

radiant depot
#

did you change the assets folder name too?

orchid garden
#

yeah

#

the sound is working just fine though

#

it shows up in the sound menu and plays the sounds

gleaming fox
#

did you edit the json files which contain the texture location?

radiant depot
#

the console should log an error/warn right before you get to the main screen, when it's asset related

orchid garden
#

it didn't change the strings in the files, that's why

#

I fixed it

orchid garden
#

does anyone have any suggestions?

radiant depot
#

lol, beautiful.
remember to check how the pitch changes behave, just for fun

rugged urchin
#

Lmao

orchid garden
#

I am gonna add a ton of different sounds to this addon

#

mostly from games and such

mossy hollow
#

If you're going to release it make sure you have the rights to use those sounds

orchid garden
#

is that required?

#

I already stole like 20 sounds from Terraria

mossy hollow
#

Yeah, you're not going to be able to post stuff that you don't legally have the rights to use

orchid garden
#

frick

#

I hate copyright law

mossy hollow
#

Look for copyright free sounds

orchid garden
#

I'm gonna ask Redigit if I can use the terraria sounds

#

he's chill he might let me

orchid garden
neat mango
#

everywhere

#

stealing is not cool

orchid garden
#

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

mossy hollow
#

They may get away with it, until they don't and then it gets taken down

radiant depot
#

Chances for it to be noticed in short time is very very low

orchid garden
#

fiiiiiiiiine I'll make my own sounds

#

I just remembered what happened on GMod

orchid garden
#

none of the base sounds have a ton of power in them

mossy hollow
#

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

rugged urchin
#

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.

orchid garden
#

what sort of features could I add in a sound based addon other than more sounds?

#

I am calling it Ars Suono

mossy hollow
#

I mean it's a pretty niche focus, but maybe you could add some stuff that interacts with echo shards or sculk sensors?

orchid garden
#

hmm

#

do spells already trigger sculk sensors?

mossy hollow
#

No idea but there's an easy way to find out

orchid garden
#

I wonder if I can add sounds from Minecraft

radiant depot
#

yeah

#

just reference them from the sound.json

#

like the example did with ars ones

orchid garden
#

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

radiant depot
#

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

orchid garden
#

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

bright shore
#

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

orchid garden
#

hmm

orchid garden
# orchid garden HECK YEAH

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

rugged urchin
#

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

orchid garden
#

how do you pack everything into a .jar file once you are done?

zealous zenith
#

run the build task

orchid garden
#

where does the file end up when it is done?

orchid garden
#

I don't think it worked

zealous zenith
#

in the builds/libs folder

orchid garden
#

nice thx

mossy hollow
#

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

radiant depot
#

Replace it

mossy hollow
#

It's final and I can't get the access transformer to work 😦

radiant depot
#

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

mossy hollow
#

Do you have a link?

radiant depot
#

In my case it was Accessor time

mossy hollow
#

Ah, validBlocks is immutable?

radiant depot
#

Yeah

mossy hollow
#

Will give it a go, thank you

#

Can I use an accessor with a static field?

radiant depot
#

Dunno

#

Good old "let's find out in live"

#

Mixins are fast to add, unlike ATs

mossy hollow
#

Yeah, have shutdown my PC for tonight but will give it a go tomorrow

#

Needed for this
#1129621147256881272 message

mossy hollow
#

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

zealous zenith
#

have to cast it as an object first

mossy hollow
#

thanks, why did I not have to do that for other accessors?

zealous zenith
#

you should have had to

mossy hollow
#

PageRelationsAccessor relationsAccessor = (PageRelationsAccessor) relations; this worked fine THONK

mossy hollow
#

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

loud widget
#

publishing a mod to curseforge is so much work ç.ç

severe crystal
#

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?

radiant depot
#

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.

severe crystal
#

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

mossy hollow
#

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

neat mango
#

google analytics in minecraft

mossy hollow
#

Basically, but fully anonymous and opt out in config

neat mango
#

@mossy hollow I heard you like gradle plugins

#

replacement for FG/NG indev

mossy hollow
#

Goo my artist has complained that "the dominion wand is too pretty i cant make it fancier" for my advanced dominion wand

rugged urchin
#

Lmao that was one Rid had done

radiant depot
#

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

mossy hollow
#

Folks, am I going crazy

#

Fixed but no idea how

zealous zenith
#

the magic of java generics

mossy hollow
#

I have just made my first custom forge registry and it's honestly so confusing

mossy hollow
#

Turns out my first custom forge registry didn't even work NotLikeThis

zealous zenith
#

registry? broke. abusing the recipe system? woke

mossy hollow
#

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

mossy hollow
unreal summit
#

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.

zealous zenith
#

Are you using geckolib or the normal blockbench animator?

unreal summit
#

Geckolib

zealous zenith
#

What do you mean by reset?

unreal summit
#

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”

zealous zenith
#

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

unreal summit
#

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.

zealous zenith
#

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

rocky grail
#

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

zealous zenith
#

what are you making?

rocky grail
#

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

mossy hollow
#

(the block form is currently in progress)

radiant depot
#

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

mossy hollow
#

Yeah my plan was to have a custom turret that shoots into a reliquary

rocky grail
#

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

rocky grail
#

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

shadow helm
#

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 😝

rocky grail
#

gradle is the reason i hate developing for the jvm

mossy hollow
#

I have 0 issues with it, works out of the box for me on Forgegradle and Archloom

#

using intellij

rocky grail
#

aaaaa

#

im gonna clone ars nouveau, open it, and i guarantee it doesnt work

mossy hollow
#

it would be an issue with your dev environment if so

rocky grail
#

yeah doesnt work

zealous zenith
#

Gradle bad

rocky grail
#

true

mossy hollow
#

Not a gradle problem

rocky grail
#

gradle still bad though

mossy hollow
#

Are you running it inside intellij? What errors do you get? What java version you using for gradle?

mossy hollow
rocky grail
#

using java 17

#

ill try graal 17 but i doubt itll do anything

#

yeah

mossy hollow
#

Java 17 which distro

rocky grail
#

probably oracle

mossy hollow
#

I'm using corretto, actually corretto 19 for gradle

rocky grail
#

also tried openjdk

#

didnt work either

mossy hollow
#

Maybe try corretto

#

I use corretto for all my java installs

#

Temurin is also decent

#

What linux distro?

rocky grail
#

arch

#

well, endeavour but theyre basically the same

mossy hollow
#

skill issue

#

I'm on endeavour

rocky grail
#

hi on endeavour

mossy hollow
#

your beard isn't long enough, that's why it's failing

rocky grail
#

gonna do a hail mary and just try gradle 8.5 w/ jdk 21 lmao

zealous zenith
#

Need to also convince others in your company to switch to fully functional programming

#

Then make stack overflow posts

#

Only then will gradle work

mossy hollow
#

I'm trying to convince my company to ditch Scala

#

it's working but now they use typescript 🤢

rocky grail
#

i would like my team to switch to rust but im not gonna

neat mango
#

are you on intellij?

rocky grail
#

yep

#

currently in the middle of my hail mary

neat mango
#

what does the error log say ?

#

is the project import even succeeding ?

rocky grail
#
~  ➜  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
rocky grail
#

build works

#

completions work

neat mango
#

why is it using systemjdk. intellij should download and do its own thing

rocky grail
#

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```
neat mango
#

what does archlinux-java report?

mossy hollow
#

Download jdk inside intellij

rocky grail
#
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
neat mango
#

you need to use 17-openjdk. tried that?

mossy hollow
rocky grail
neat mango
#

that is weird

rocky grail
#

can be configured through idea too

mossy hollow
#

but yeah just download inside intellij

rocky grail
#

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

mossy hollow
#

That's ran through the intellij gradle UI or terminal?

rocky grail
#

intellij

#

trying temurin, probably wont work

#

yep exact same message

mossy hollow
#

Won't be a difference with that

rocky grail
#

no difference from graalvm 17 btw

mossy hollow
rocky grail
#

or openjdk 17

#

my project layout is the addon template

#

it also just doesnt work with the ars nouveau repo

mossy hollow
#

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

rocky grail
#

nope

#

yeah idk i guess ill just have to deal with this horrible developer experience

zealous zenith
#

is your gradle setup to use the wrapper or the global install?

rocky grail
#

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

zealous zenith
#

Does genIntellijRuns work?

rocky grail
#

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.
zealous zenith
#

If you open the gradle tab in IntelliJ do they appear?

rocky grail
#

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

zealous zenith
#

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

rocky grail
#

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

zealous zenith
#

There is a local gradle cache iirc

rocky grail
#

it doesnt work in any project!

#

oh true

#

ill mv ~/.gradle

rocky grail
#

but forge/architectury i never figured out

#

neoforge i havent tried yet

#

gosh if this works i might know why this happened

mossy hollow
#

Ars Additions and Ars Artifice use Forgeloom

rocky grail
#

well, its still running

#

we'll see if it works

rocky grail
#

not yet

mossy hollow
#

I'm ready for it 😄

rocky grail
#

hi ready for it 😄, im qther

mossy hollow
#

do you have some vencord plugin or something for that

rocky grail
rocky grail
#

can you even make custom plugins without it being on the central repo? never looked into it tbh

mossy hollow
#

ye

rocky grail
#

not that i ever needed one :p

mossy hollow
#

not that I'd ever use vencord

rocky grail
#

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

shadow helm
rocky grail
#

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

mossy hollow
#

lmfao

rocky grail
#

my whole .cargo got deleted

#

.gradle probably got partially deleted

shadow helm
#

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.

rocky grail
#

whats webpack for again

shadow helm
#

Well... fun times!

mossy hollow
rocky grail
#

well thats enough dealing with java for today, tomorrow ill try setting up hot reloading then actually get some stuff done

mossy hollow
rocky grail
#

really need to figure out patchouli

rocky grail
mossy hollow
#

I'd recommend it

rocky grail
#

currently doing an api at work though so i guess that counts

mossy hollow
#

recommend not touching web*

rocky grail
#

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

shadow helm
#

Touch all the web things. Lose your sanity and join the dark side

mossy hollow
#

I did 4 years as a lead frontend developer, I managed to escape

rocky grail
#

the only web framework i enjoyed and can reasonably recommend is sveltekit

mossy hollow
#

not another one of you

rocky grail
#

and even then i dont really build websites unless necessary

mossy hollow
#

Ars wiki is sveltekit, and so is BlockPrints

rocky grail
#

sveltekit good

shadow helm
rocky grail
#

waiting for the next version though

shadow helm
rocky grail
shadow helm
#

Nothing against Astro though, it's excellent.

rocky grail
#

theres still widely used packages using classes for react

mossy hollow
#

Astro god tier

shadow helm
rocky grail
#

its definitely not as pretty

#

but it does work

zealous zenith
#

ars has datagen for patchouli you can use

rocky grail
#

well theres a game on my github.io page thats written with leptos, but i cant recommend that until wasm code splitting

mossy hollow
rocky grail
#

yeah that makes sense but im lazy as hell

rocky grail
#

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

rocky grail
#

didnt know that mobs could aggro on turrets

zealous zenith
#

lol probably on the fake player

rocky grail
#

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

rocky grail
#

how do i even mess up this way

shadow helm
#

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"

rocky grail
#

i need to register it? xd

#

the most confusing part is that the item works fine

shadow helm
#

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

rocky grail
#

dont see anything about it in the ars repo

#

ah got it

#

needs assets/{modid}/blockstates

#

even though my block has no state

rocky grail
#

how fun

#

and now, the reason i wanted to make this block, automatic potions!

#

just realised that the pedestal is useless xd

rocky grail
#

looks like i failed at making the data of the block persistent

rocky grail
#

fixed by abusing getPersistentData()

#

pretty sure its abuse at least

#

but it works so i wont bother fixing it

azure pulsar
#

Is there a class in ars nouveau that allows you to cast spells on a player using the server?