#General & Development Help
15795 messages · Page 16 of 16 (latest)
😗 maybe I need to brush up on this stuff
Okay so new problem. Is there an example of how to set the new particle colors for a spell projectile entity?
For example I used to just do:
projectileSpell.setColor(color);
For however I wanted an enemies spells so be colored, but I know that the new version has a lot more customization options for the spells. Is there something I could setup to take advantage of these new options for the mobs in Ars Plus?
So apparently Elemancy armor perks are not functioning properly since the addition of the light heavy armor variants, and I am hopelessly at a loss on how to fix it. 😭😭😭
I'm ngl, I've been playing with Claude to help a bit and ts is gas
One of these commits broke the perks and I don’t know which one
I’m at the point I might even be am willing to pay someone to fix this.😩
I suspect the problem has to either be an error in a registry or in ArmorSet.java
I can offer a helping hand, maybe. I'm also knee deep in the custom armor trenches so maybe I could help out a little.
I still have to update that for Elemental and not even the Weald walkers have been updated iirc, I'm probably leaning for exporting the code of a spell I made and initializing the spell from there
Because otherwise it's a bit too many jumps to set the particle timeline manually
Hmm, I’ll probably get around to it eventually on my own but lmk if you get smth figured out ig
The lack of referencing the spell color is def breaking a lot for me lol
Not sure how I’ll colour the domain shell blocks now
your easiest bet is probably copying the spell using ctrl+c in the spell book, base64 decoding it, then deserializing it in your code
you can probably just rip the ctrl+v code for that
I’ll try to keep that in mind. This is def gonna be one of those things I’m putting off for later
My git is up to date with what I have tried to do to mirror how Elemental does it, but clearly I am missing something.
I'll take a gander and compare with Elemental and my own shameless rip of the code (:P)
Making a spell style for domain
Quueeestionnn... I'm looking over the code rn, I just wanna make sure I know what I'm trying to find. By perks you mean armor set bonuses or actual perks like threads?
I'm more confused about it crashing on startup rn
Ah ok, having the schools in ArsNouveauRegistry makes it classload and init the array before the armorset holders are initialized
Main reason why it wasn't working was the fact you were using your own, empty, damage resistance map
The set bonuses. They worked in previous versions, but something changed between v1.11 and 1.12 broke them. Though I suppose checking to make sure the threads are working properly too would be a good idea
Something I’ve done in my recent tinkering to try to match Elemental caused the startup crash.
Isn’t that what line 22-32 in ArmorSet.java is?
gotta shill https://git-scm.com/docs/git-bisect
Nope, that is the roshambo
For spells only
The thing defined in the IElementalArmor defines which damage (not just spell damage) they will absorb
I made a PR anyway just to be sure
On my way to church for Easter service. Will test changes when I get back home.
Okay, so to see if I understand what you did:
you moved the dual schools into my own registry instead of being an extension of the base mod registry?
The dual schools were moved to a different class from the array of armors
Since the armor initialization loads the class where the schools are
If the class is loaded while the variable still has to be set, the array will have empty variables while the actual variables get filled
The temporary fix was to have the array filled after the variables are set, in the init perks method
So why were they working previously? (Prior to the addition of light/heavy sets)
because the array was inside the method
not outside
just like the workaround before your "cleanup" commit
Spell.fromBinaryBase64(...) this i mean
make the spell you want on your spellbook then CTRL+C
can't remember if it needs more buttons to port that over to the system's clipboard (ok no, it will work)
Oh cool, so it’d probably be best to just have a class full of static copied spells that the mobs call on
umh yeah it could work to make sure classload happens at the right time
instead of having the usual static final in the mob class
just to avoid what was happening above with Elemancy, even assuming the problem could exist
I’m just thinking it might be convenient for myself if I put them all in one place instead of crowding the entity’s class file
One problem that I am still thinking on. I previously had used the spell color to pass to the blocks that formed a domain shell and allow you to color it. Is there a way to pass a color like that with the new system?
as i said, make a spell style for domain
copy paste from mageblock probably, should have only the color property
then retrieve the color from the particle timeline of the spell
tile.setColor(spellContext.getParticleTimeline(ParticleTimelineRegistry.MAGEBLOCK_TIMELINE.get()).getColor());
if you just need a patch for testing, use the mageblock timeline as placeholder
Oki, thanks. I should’ve thought of that since that’s what I referenced in the first version of it
then make its own later
Okay, everything seems to be working now. Thank you Alex.
I DID say I would compensate whoever fixed it for me, and I am a man of my word, so what do I owe you?
https://twitchard.github.io/posts/2023-01-18-unicycles.html felt like sharing this nice article
The critical resource is not developer time, it's developer energy
this article makes me think about Hex Casting lol. Incredibly inefficient coding method that makes me happy
I'm using a SpellResolveEvent to catch when a player may be healing entities other than themselves while wearing a custom focus.
The intent is for excess healing to go back into the caster, however I'm not sure how to actually get how much the spell is healing.
Is this something I could access from the SpellResolve event or would I need to switch to, say, a LivingHeal event?
_ _
I'm already checking for the Heal glyph inside the spell and making sure that it resolves on a living entity, I just don't know how to get the heal value back.
Maybe through the spellStats and using the heal calculation?
hmm, I think your best bet is unfortunately going to be a capture mixin or whatever its called where you can intercept all of the variables at a specific line of code, and then check healVal and the entity at the same time
since the healing event isnt going to tell you what the source was from, just an amount and the entity that is being healed
makes me think we need more dynamic data/tag system for addons to manipulate things going on inside glyphs
spellstats was a poor attempt at that
id probably just check pre and post effect
i think theres events for those
then check difference in health
For the sake of learning, I'll try with a mixin first, then if I can't handle it neatly I'll try the Pre/Post events.
id recommend using WrapOperation in that case
you can target the call to heal
so there's a GL error that's been bugging me, in my add-on. but i haven't received any user reports about it. yeah because it's my fancy keyboard's scancodes are not being recognized. (edit: this is the keyboard: https://www.zsa.io/moonlander)
i'm fiddling with InputConstants.Type.KEYSYM , seems to solve the problem
hey i just sold mine to jarva a few months ago! lol
was too big for my asian hands
it being well-suited for ape-sized-hands is a big reason i bought it. 😂
i also have an ErgoDox EZ from the same builder
i now own a keychron q1 but i havent used it yet lol
laptop keyboard is more convenient most of the time
I've delved into the Mixins a little bit, but I don't think I understand how to use them to solve my issue.
I see that I can use WrapOperation to access healVal straight from the EffectHeal class, but from what I can tell, I can't then access it from outside of the Mixin. I also can't reference anything from the SpellResolveEvent inside the Mixin either because it's only working with the Heal code.
Any tips on how I may bridge those two together?
if you're trying to access a variable from outside, consider using an accessor mixin
you could for example post your own event to the bus
or set it in a publicly accessible Object2FloatMap<Player> or something
or you could set a data attachment on the player to said value
map and attachment should also let you immediately query it after the effect resolves
why dont you heal the player from inside the mixin? you get a reference to both the "shooter" and the entity the spell resolves on
my personal code style would advise you to call a static method instead of putting the action directly inside the mixins
but that could also work
Mainly because I didn't/don't know how to get the shooter and all of the event stuff inside the mixin. If I target the heal from the EffectHeal class I only have the heal value and the heal target as parameters. I don't have the event to pull the shooter from, or at least I didn't know how to get it.
you should be able to grab locals
Companion library to SpongePowered Mixin with many custom injectors for a more expressive experience. - LlamaLad7/MixinExtras
imo if given the option you should always use something from MixinExtras, normal Mixins is a bit lower level and doesnt always have the same compatibility guarantees
Mmmm, I'll try tinkering some more following your advice during my free time tomorrow/today after I wake up.
I wanted to add a Heal Event holding the healer in Sauce but I don't remember if I gave up early or faced some weird wall
Probably mostly because it's never gonna be universal and needs to be pretty specific on each of the heal() calls
i could use some codec help/direction. i have a record that contains a NonNullList<ItemStack>.
i've gotten as far as successfully persisting, and synchronizing the list of items, except:
when i make changes to a data component on an ItemStack member of the NonNullList, the data component change on that stack doesn't persist or synchronize.
for example, I'm updating some component data like this, on a vanilla music disc ItemStack:
stack.set(DataComponentRegistry.MULTI_POTION, potionData.withCharges(potionData.charges() - 1));
my hunch is that i need some fancier codec setup to make the NonNullList<ItemStack> codec include the ItemStacks' DataComponents?
im not sure what youre precisely doing, but data components are immutable
you have to make a copy of the list if you want to edit it
aye i'm copying items into the list and out. and potionData.withCharges() returns a new instance of MultiPotionContents, so that's covered too.
could you link the part where youre doing that?
i'll try to clarify: i can move items into, and out of, the container inventory. without dupe bugs, syncs betw client and server, and persists to disk. but the component data on the items in the list does not seem to be included. and sure yep 1 sec.
it's commented out in the pushed code, but this is the line: https://codeberg.org/f1337/ars-musique/src/branch/main/src/main/java/dev/f1337/ars_musique/common/items/BardsBandeau.java#L249
it looks like youre modifying the itemstack within the component directly
i refactored that a bit, moved the logic into the ContainerInventory record, to see if maybe i was linked too deep:
MultiPotionContents potionData = getStackInSlot(i).get(DataComponentRegistry.MULTI_POTION);
int newCharges = (potionData == null) ? 0 : Math.max(0, potionData.charges() - 1);
getStackInSlot(i).update(DataComponentRegistry.MULTI_POTION, new MultiPotionContents(0, PotionContents.EMPTY, MAX_USES), component -> component.withCharges(newCharges));
you should be copying all the itemstacks into a new list, editing the one there, then saving that new list
oh i am, 1 sec, i have that too
immutability is a pain in the ass
in the first link, the stream codec dupes items
in the second, quick move copies into a new list
probably does not, actually
i dont think java is aware of ItemStack#copy
actually the third is not doing what i thought
the standard is Object#clone
which ItemStack does not impl
i wouldnt be surprised if youre just getting a new list with the pointers to the same itemstacks
or if they are different itemstacks, then itemstacks with pointers to the same component map
i'll dig. that's very helpful, thank you. 🙇
you could probably map each item of the list to ItemStack::copy
ill also say that ive never seen anyone do copying implicitly inside a codec though lol
i'm so so close to having disc-with-potion-effects working. but i need to get the charges to sync. bc right now it's "1 potion charge, and the disc forever has that effect", which is, like, wildly unbalanced.
i picked that up from youtube video and accompanying code example. however, that example doesn't cover my entire use-case. that said, it did help me fix a persistence bug with the bandeau inventory at initial load.
anyway, thank you, i'll work on explicitly copying the list items, outside of the codec
if this is the case, would the two lists' hashcodes be identical? or are those not a reliable litmus test?
its more reliable to check System.identityHashCode
this ignores overrides of Object#hashCode
awesome
so i dug a bit, and found that NonNullList itself does a bunch of copying internally, and if i'm reading the source correctly (sus, tbh), your theory about "copied list of pointers" looks to be spot on. i'm not 100% on that of course.
List.copyOf(entries) is the copying NonNullList does. which eventually makes its way into ImmutableCollections: List.of(collection.toArray());
dammit didn't mean to ping. sorry, still getting used to that behavior.
based on that, it looks like the solution to my question is to replace NonNullList with my own List class, ensure items are copied, add codecs, then 🙏 that potion charges synchronize betw client and server
Update: Think I finally figured it out. There was no need for a SpellResolve event in the end, I realized if I used Inject targeting the heal (like Qther originally suggested) I could pull the original variables andjust do the heal "cashback" logic inside the Mixin. Took me a minute to understand that though. Thanks, everyone!
method = "onResolveEntity",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/world/entity/LivingEntity;heal(F)V"
)
)
private void healingCashback(EntityHitResult rayTraceResult, Level world, LivingEntity shooter, SpellStats spellStats, SpellContext spellContext, SpellResolver resolver, CallbackInfo ci, @Local(name = "healVal") float healVal){
if(!(world instanceof ServerLevel) || !(shooter instanceof Player)) return;
if(!(resolver.hasFocus(AstroItems.LESSER_SOLAR_FOCUS.asItem()) || resolver.hasFocus(AstroItems.SOLAR_FOCUS.asItem()))) return;
if(rayTraceResult.getEntity() instanceof LivingEntity target && target != shooter) {
if(target.getHealth() != target.getMaxHealth()) {
float healCashback = (target.getHealth() + healVal) % target.getMaxHealth();
shooter.heal(healCashback);
}
}
}```
BTW, it was 100% this, only happening way deeper in the code than the record w/ NonNullList. the solution ended up being leaving exactly zero pointers from outside ContainerInventory to any ItemStack in its list. then ensuring any time I needed to interact with an item from the inventory, it all happened through the ContainerInventory record. those records have some built-in change-detection (which as you already likely know, comes from Java itself)... so it all "just worked", after i replaced all external references to inventory ItemStacks with their corresponding slot indices, then used ContainerInventory::getStackInSlot(index) in their place.
i know this is probably a wild request: does anyone have any idea how Hero Of The Village works, in code?
i was tinkering with it as a hidden effect, but the Villagers don't offer discounts when it is hidden.
so maybe a better question is: does anyone have any idea how Villager discounts work?
nevermind, i found what i was looking for
Hi, I'm not sure who or where to ask this, but I'm working on an addon for Ars Nouveau for 1.20.1 - It adds color variations of all the machines/blocks/etc. To create these, I've been modifying the original textures from Ars Nouveau. I'm wondering who I need to get permission from to use/modify those assets if I plan to have the mod hosted on Curseforge.
Permission to use assets for a texture pack or an addon is not required here. Only if you want to use the assets for an outside project.
Ah cool. Thanks
why am I getting thumbs down
idk
maybe it wasnt fixed lol
If I were to put a recipe into a mod that used a material from another mod, but that other mod wasn’t present in a pack, would that cause the mod to crash? Or would it just be uncraftable?
uncraftable with error logs
to avoid the error log, wrap it in the conditional block that checks if a mod is loaded before loading the recipe json
Gonna try to add an upgraded form of the top tier Elemancy gear for use only in packs with the allthemodium stuff so it’s not overshadowed by the ATAG stuff to the point of being completely obsolete
Elemental paragon perhaps?
Right now it’s just useless to use any gear lower than the ATAG stuff due to the advanced thread slots
But I don’t want to make it a full dependency that adds that tier to packs that aren’t at the ATAG level otherwise.
So adding a tier with higher thread slots by needing the allthemodium ores to craft would make it only available IF it was in that tier of pack anyway.
I'm trying to add threads to a different mod's armor for a addon I'm working on, however I've no idea where to start, as I don't understand the code present in ars nouveau much, and what little I can read doesn't seem to lead me to what I need.
I know ars additions has its Spellweave enchant, but mixins are still hard for me, and it doesn't appear to support multiple slots for threads.
Feel free to ping me with any replies thanks in advance.
if you are in 1.21.1 you need to register it as a perk provider in the PerkRegistry
public static boolean registerPerkProvider(ItemLike item, List<List<PerkSlot>> tierList) {
itemPerkProviderMap.put(item.asItem(), tierList);
return true;
}
like how ars does it in APIRegistry:
PerkRegistry.registerPerkProvider(ItemsRegistry.BATTLEMAGE_BOOTS, Arrays.asList(
Arrays.asList(PerkSlot.ONE),
Arrays.asList(PerkSlot.ONE, PerkSlot.ONE),
Arrays.asList(PerkSlot.ONE, PerkSlot.ONE, PerkSlot.TWO)
));
PerkRegistry.registerPerkProvider(ItemsRegistry.BATTLEMAGE_HOOD, Arrays.asList(
Arrays.asList(PerkSlot.ONE),
Arrays.asList(PerkSlot.ONE, PerkSlot.ONE),
Arrays.asList(PerkSlot.ONE, PerkSlot.ONE, PerkSlot.TWO)
));
you will also need to attach the armor perk holder as a data component to the item:
.component(DataComponentRegistry.ARMOR_PERKS, new ArmorPerkHolder())
thank you for the reply, will get back to you if I have any further issues.
Thanks <3 love you
Now to find out how to make it accept higher tier threads
off to atag
Couple small questions:
do I need to put a registerPerkProvider func somewhere? I don't understand its purpose here.
I've been playing around with the things, and from what I can't make use of the added thread slots? Im gonna be honest first time modifying data components so I probably fcked up there.
I'll screenshot my relevant code pieces in case I fcked up™
Again, thanks in advance for any help provided.
(Yes, I'm aware I should've probably tested when I did that initial image, but Im a bit... happy go lucky so to speak with it)
(Also by, make use, I mean, when giving for instance the warding thread and the spell power thread, their attributes aren't being applied when wearing the armor)
yes you need to register it as thats how the data gets modified from the apparatus. You can see how ars does it as its uses its own api, just look at APIRegistry
https://github.com/baileyholl/Ars-Nouveau/blob/main/src/main/java/com/hollingsworth/arsnouveau/setup/registry/APIRegistry.java
okay thank you, will look at it.
you can do a similar pattern, or just call any of those API methods in your mod constructor. As long as it happens before item/block registration its fine:
https://github.com/baileyholl/Ars-Nouveau/blob/main/src/main/java/com/hollingsworth/arsnouveau/ArsNouveau.java#L85
next major breaking version it will likely not be required as data components make this type of registry unneeded iirc, but for now its a bit of relic
I think you mean you need the attribute from perks applied to the attribute map?
It's our armor class so we do in its method, for other armors you would have to use the event
Can't remember the name but if you look for the ones with attribute in the name you'll find it
Or double check how additions does
If I were to make an item that reads a player's max mana, it would look something along those lines, right?
player.getCapability(CapabilityRegistry.PLAYER_CAP).ifPresent(cap -> {
maxMana[0] = (float) cap.getMaxMana();
});```
and I would need to create an additonal ModEventHandler for my mod?
I am very new to this and maybe somebody can lead me in the right direction
if you only need the max mana, you can probably just query the attribute
also no idea why you used a single value array there
values passed to lambdas must be effectively final or something
id rather they just didnt use ifPresent though
Yeah but idk, I somehow kinda hate that syntax between all the possible options to do it
The max mana attribute won't track the reserved mana penalty, while the query to the capability will
There's still little difference I forgot to mention
bonus mana injected from an event will wont be counted as well
I'm back to ask for more help, please do pardon me:
So, I've made sure that my attempts are registering things are as close as I can get, my constructThreads function to add threads being within the FMLCommonSetupEvent (Like your PostInit function), my modify components function being within my primary event bus (where I init my registered items and such)
The current problem is that now, when I put the example item on the alteration table it shows up as having no perk slots, and the NBT doesn't show as having anything remotely related to perks. I've tried rewriting my modifyComponents function, but I can't seem to get it to a point where it doesn't error while also looking more like the snippet you showed. (The .component(DataComponentRegistry.ARMOR_PERKS...)
And I have tried looking at the ArsNouveau.java, and the APIRegistry.java, but I don't see anything thats comparatively out of place in my code, everything seems to be firing at the right points, everything seems to not error, but I don't get the expected outcome.
As for the ars additions stuff, I've looked at spellweave, but it seems to do everything via Mixins of the alteration table, and I don't understand the code at all.
If you guys are willing I can link you my github so you can see things yourselves, but I'm genuinely lost as to what I'm doing wrong and how to fix it.
link your code
one second 😔
here is my pitiful attempts at winning.
uhh you need to use the ars nouveau registry, not your own lol
aight
now im fucked up bro 💀
do I need to uhh
mixin into the API registry then?
no, just call the same code
PerkRegistry.registerPerkProvider(ItemsRegistry.BATTLEMAGE_BOOTS, Arrays.asList(
Arrays.asList(PerkSlot.ONE),
Arrays.asList(PerkSlot.ONE, PerkSlot.ONE),
Arrays.asList(PerkSlot.ONE, PerkSlot.ONE, PerkSlot.TWO)
));
anything in the ars api package is intended for mods to use directly, copying it like you did in your file won't achieve anything because it isn't actually wired up to the rest of the codebase like the ars registry is
okay, so I do confirm that does bring back the thread slots on the alteration table
but
the threads themselves are still nonfunctional
as in you can put threads on/off but they don't do anything?
yes
'tensura:adamantite_boots[tensura:max_existence_point=750000.0d,tensura:existence_point=225000.0d,tensura:existence_durability=225000.0d,tensura:existence_gain=0.03d,ars_nouveau:armor_perks={color:"",perkTags:{},perks:[{perk:"ars_nouveau:thread_wixie"},{perk:"ars_nouveau:thread_whirlisprig"},{perk:"ars_nouveau:thread_drygmy"}],tier:0}]'
This is the nbt courtesy of kjs
but none of the thread attributes get upticked when its worn.
and now it looks like this for code
lemme push off so you can see
which was the original issue
where the threads do exist in the slots, within the nbt, but do not actually take effect
yeah, I think you are going to unfortunately need to add more hooks, that map you added it to only backs the recipe system
I think you are going to have to mixin into the armor methods and replicate jsome of the hooks here: https://github.com/baileyholl/Ars-Nouveau/blob/main/src/main/java/com/hollingsworth/arsnouveau/common/armor/AnimatedMagicArmor.java
though, I could have sworn someone else was attaching threads to another mods armor. maybe the all the modium armor?
You could do what jarva does in additions and simply check for your own items:
https://github.com/Jarva/Ars-Additions/blob/91f102a90dc058cf40e4eac5a67a881e48b856b4/src/main/java/com/github/jarva/arsadditions/event/ModEvents.java#L149
Specifically onItemAttributeMOdifier, onItemTooltip if your tooltips arent showing, and onPlayerTick. Where he checkes for the override_perks, you should just check that the item in question is one of the ones you are trying to modify
ars really should handle all of this for you, but right now its all baked into these armor methods
thank you for your direction, I'll see what I can do.
i remember seeing an addon that allowed you to put a sword or smth in a pedestal near drygmys, then it would act like the drygmy killed it with the weapon u had in the pedestal
anyone know the name?
nvm think i found it
Ars Flavors and Delights
Hey there I am completly new to Minecraft modding and wish to know how hard it would be to start. I am currently in the 12th grade of a german school and we are supposed to choose some kind of project we´d like to program. I´m thinking of making an ars nouveau boss addon. Is it something achievable or should I find something easier?
It's absolutely achievable
I recommend kapenjoes tutorials for modding and checking out the GitHub for ars example addon
Both are great resources
I'd argue that the most time consuming part when it comes to entities is the modeling/art part more than the code
Not that making the mob act too different from existing ones is easy, but it's possible to pull off something that works even without doing complex stuff
thank you guys
Alex, how hard would it be to make the Elemancy gear have a different array of thread tiers if, and only if, All the Arcanist Gear was present in the pack?
unlikely to be difficult, I'd imagine it's a single if-statement
hey guys.. i was thinking, I'm new to mod development, even tho I work with java, never created a real mod just played around a bit.. but i wanted to create an addon for ars with curious and gecko, u guys think that is better to wait for version 26.1 ? or 26.x ?
if you wanna create an addon for ars dont wait
its going to be another while I reccon before bailey considers going up a few versions
26.1 ars nouveau is not in development yet. no plans so far and even if it does, it will take quite some time
rather than not in development, bailey has stated that they dont want to port to it, maybe a future version but 26.1 is going to be skipped
I've nearly got my 1.20 backport of the chaining lens made, though I can't seem to access the local glyph lineup of the lens. Looking at the actual implementation doesn't help as much since the whole system was overhauled it looks like, and the set spell command writes to a tag I haven't had much luck accessing either. Is there an easy way to access 'this entity/item [being the spell lens, as equipped by advanced prism] > get list<abstractspellpart>' so I can add that to the list of the incoming spell?
getSpellcaster().getSpell().recipe seems to yield nothing, as the resulting spells have no glyph properties
Umh, I don't remember the old format
Is the problem saving/accessing the spell on the lens or adding the glyphs from it to the output projectile?
primarily reading the queue of glyphs from the lens item from what I'm aware. If I add constants like in the pierce lens it works fine, but I can't get a grasp of where the glyphs are stored on the object to add them dynamically
I've done a test run where it full overrides the original spell with what's inscribed and it just casts blank spells
Tried to double check how spell parchment are coded in that version?
I think it may be in part a fundamental misunderstanding of the data structure of it; from what I understand, a lens is 'equipped' onto a prism as an item since it retains enchantments and inscriptions, so I'm referring to an item when it does its thing
yee, that's how I got inscription working
I'll look into it a lil more so I don't make any dumb questions
Remember to use the debugger version of the run and breakpoints so you can inspect the variables instead of having to spam prints everywhere
Sometimes it helps digging on what's the situation at runtime
That should help a good bit probably. I was running off of observations on what spells did when redirected and saw where I could break them to narrow my field XP
I've managed to get it working with what appears to be casting a constant recipe, casting the recipe from the spell that hit it, casting the recipe of the spell that hit it plus a constant recipe
the only last step is finding out where its recipe is located, which nothing really seems to use in their own native scripts. Getspellcaster() sounds like it should get the function that would return the recipe, but that seems to either refer to null or the spell that hits it (? looking into that with debug mode now to see what I can gleam)
get spellcaster in 1.21 might be for getting the component with the spell
But you can probably just get the nbt of the item stack and extract the spell recipe directly
I was thinkin that might be my next place to look
1.21 removed nbt tags and forced them into records with seriazable codecs, so it's more structured
also may be more generally documented which helps XD
My only prior experience with java was a mobile app for school and a small Slay the Spire mod
But with the old way you could do things more...raw
I never knew 1.21 and 1.20 were so different
The item nbt was one of the major changes
10 minutes to open gradle debug.. I think something's up with my MC XD
only in debug mode specifically
I'm convinced I've got everything needed except a way to identify the itemstack, which might be a fundamental understanding issue
This is more a general minecraft modding question, but what is the data structure for an item? I've got a dozen cursed iterative ways to scan storages but I don't know where to find item data for "this item"
I've done a lot of C# so I'm in a whole world of mindset difference
an item is a singleton and corresponds to a unique key basically, an itemstack is the instance of an item and has a compound tag which stores anything mutable about it
well, in 1.21.1 they are data components which is the same concept but only serialize to a tag when its written to the world at save time.
Thank ya much!
As one more quick and I'd hope simple question: was forge's approach to object attribution something I can search for like a getcomponent? My history is in unity so I'm used to terms of gamecomponent getobject.parent.getcomponent(type)
I can see that a lens is a form of abstractlens which is a type of item -- i'd imagine something that calls the itemstack of all item objects with the lens component would be my approach, but intellij isn't finding any convenient functions for that
I appreciate the guidance btw! It's learning a new language all over again after picking up hex casting xD
no, minecraft does not use ECS
thank you and doubly so for your patience, I'm more dense on the subject than I thought x.x
I'll try looking into more generalized examples in a general MC modding discord; I think I should have the Ars part cleared up by this point tho!
.......oooohmygoooddd
I got it.
The instant I stopped thinking in ECS structure, I noticed the shoot command has a pos that can be used to read the AP tile and then that has the itemstack find tool that I've been searching for the last 8(ish?) hours.
aand it's all in working order after that! (except config, but the objective of this server is no glyph limit, so works out)
minecraft modding is a blessing and a curse in that nothing about it is magic, just all hand rolled java
no magical engine shenangians to be found
Small question regarding the ars nouveau spell damage:
I've tried manipulating it with a onDamageEntity thing for something I'm making testing with a
spell:
doing a if (source instanceof DamageUtils.SpellDamageSource) or if (source.is(DamageTypesRegistry.GENERIC_SPELL_DAMAGE)) doesn't seem to detect the harm glyph. (For the test I'm just attempting to set the output damage to 0, for reference the code used is provided below.)
public boolean onDamageEntity(ManasSkillInstance instance, LivingEntity owner, LivingEntity target, DamageSource source, Changeable<Float> amount) {
if (source.is(DamageTypesRegistry.GENERIC_SPELL_DAMAGE)) {
Float initDamage = amount.get();
if (initDamage != null) {
amount.set(0.0F);
}
}
return true;
}```
I've checked the main mod (for the addon im making)'s function and it should work, and I've tried some of its own damage types but they dont seem to detect ars spell damage even when its treated as though its those damage types by the mod, so I'm a bit confused on how I should go forward from this.
Feel free to ping me with a reply, thanks for the help in advance.
I just finished v1 of my addon ars-prism and published it on curseforge. If anyone would be willing to help test it for bugs / critique it, I'd be really grateful. https://www.curseforge.com/minecraft/mc-mods/ars-prism
So, everything's in working order.. Almost.
The recipes aren't registering, so I'm missing a fundamental file somewhere to update that. I've added a recipe json to the resources folder alongside the other similar items, and added a listing to the apparatus provider that both follow the structure of a bangle as my template.
EDIT: typo error, was trying to add Tag: source gem lol
oh thats very interesting
Ok then, it's finally time,
I need to know how exactly one puts their own entries in an existing guidebook, the patchouli wiki regretfully has no information whatsoever about it and Im afraid of touching anything until I thoroughly understand how it works. Ive been looking through elemental's github for a general idea and while it feels simple I still need to know for sure that Im doing it right.
like how to make a datapacked guidebook?
i think it changed a bit between 1.20 and 1.21 so can't be sure how the structure is defined for patchouli
while the 1.21 ars guidebook is mostly code-defined
so its gone beyond the scope for patchouli?
well if you have an existing patchouli book then you would just follow the structure of that
in ars case there's leftovers to keep the wiki alive but they don't make a book
the ars guidebook is its own thing
if you want to create a new guidebook using patchouli you need to check a mod that still use it for their
from leftovers you should have seen that there are folders for each category with inside a file for each entry, but i think there should be a file that defines those categories and its icons for example...but we don't have as we don't want the book to show up
I love how i do something in programing thinking it would be simple
and yes I would be right save for the minor issue of actually its meant to be done another way
anyways yep Im on that
you would be talking about the wiki/ars_nouveau folder correct?
ah ic now
the actual book is now under a builder in documentation
that's just a dump used by jarva for something iirc
not something included in the mod jar
i figured that
is the documentation builder something that might have a wiki?
I am sure that I can eventually figure it out if it does with far less assistance and far less time taken out of your day, its clear that I dont think I have enough general experience with this yet anyways.
Are we in the XY problem situation?
most likely
i belived that patchouli was still being used for documentation
though i was able to easily see that this wasnt the case I now have the problem of a programming skill issue
I might need to jump ship for another project yet again and comeback to this when I actually feel confident in this not being a sunk cost fallacy.
Are you trying to create ingame ars documentation?
Yes
You can edit the existing pages with a resource pack, but yeah if you want to add new pages you'll need a custom mod, or pull-request to the base mod.
Already was the plan
The issue is that I can't quite glean how to from the code itself
It shouldn't be too much of a barrier to add new pages. If you need any help feel free to ping
The issue is my skill
It's a skill issue
Thank you however I'll keep your offer in hand
Here's the Ars Additions documentation:
https://github.com/Jarva/Ars-Additions/blob/1.21.0/src/main/java/com/github/jarva/arsadditions/setup/registry/AddonDocumentation.java
You only need basically the one-file to add documentation.
addPage(EntryBuilder.of(MACHINES, AddonItemRegistry.ADVANCED_LECTERN_REMOTE)
.withName("ars_additions.page.warp_indexes")
.withIcon(AddonItemRegistry.ADVANCED_LECTERN_REMOTE)
.withIntroPageNoIncrement("ars_additions.page1.warp_indexes")
.withCraftingPages(AddonItemRegistry.LECTERN_REMOTE)
.withCraftingPages(AddonItemRegistry.ADVANCED_LECTERN_REMOTE)
).withRelation(block(BlockRegistry.CRAFTING_LECTERN)).withRelation(item(ItemsRegistry.BOOKWYRM_CHARM));
Each of the strings are just language keys.
the EntryBuilder.of(MACHINES, ...) sets the category of the page. Then it just builds up the pages/entries
There's also this section to edit existing pages:
https://github.com/Jarva/Ars-Additions/blob/1.21.0/src/main/java/com/github/jarva/arsadditions/setup/registry/AddonDocumentation.java#L176C1-L195C6
I see it
There are a few things- fundamental things that I realize I lack however so I'm going to come back to it after trying to make another thing and come back to this in like a month
Or week depending on how quickly I can connect this code with my learnings
For example on Enchanting Apparatus entry, I add a page about wixie enchanting.
my personal recommendation is to just jump into the project and ask questions when you encounter problems
Learning by doing is, from my experience, the best way of learning
Valid
But when I say fundamental skill issue I mean I still wish to follow through the rest of kappenjoe's basic ass tutorial as I don't want to simple just do
I want to understand
That's fair, but this project doesn't require interacting with any of the fundamentals really
if it teaches you java and coding then you are making progress regardless of a modding specific tutorial
Fundamentals like how the hell you set up the workspace
I just learned that yesterday
You have IntelliJ installed?
I've got everything
Had so for a while
Typically just opening the folder/project in IntelliJ is enough to get it up and running
I mean from a Minecraft modding standpoint
Getting the mappings and everything else right
I believe though that if you can show me how to set up the basics I can get a handle on the advanced things easier
That's also just done by IntelliJ importing the project
You can use the example addon as a base
Literally just download the example addon, open it in IntelliJ and click runClient once it finishes importing
You'll have a dev environment up and running
I already did that yesterday actually
Indeed
Best way to understand how something works is to poke and prod at it
That's what I said when I got shouted at for disassembling household appliances as a child
And look how I turned out
That's what I said as I broke my mom's 4th parental controls app
Well
Not exactly
Curiosity is good
I'm a computer guy, and also the only person in my high-school that was banned from using the computers
They go hand in hand
That checks out
It appears coding shouldn't be like baking
It's a bbq
You should be fucking up
Not sure I agree with fucking up BBQ
I didn't have a better form of cooking for the analogy
don't mess up my brisket 😤
You are talking to the person who made taralli cereal
Granted I only did it in a humor filled psychotic episode (I thought it was really funny) but still
ok so basically just add this into a file under setup? forgive the ping
Yeah make a new file called AddonDocumentation.java
Correct
What's your issue?
You may need to bump the AN version in build.gradle
Latest version is listed here at the bottom:
https://github.com/baileyholl/Ars-Nouveau
just trying to understand exactly where something should go
src is short for source, which should contain all hand-written code
Show full error
Go into gradle.properties and change curios version to 9.3.1
nope
Wdym nope
curios moved repos or something
I have same repo on Additions though
should be fine then, maybe they just deleted the old versions
I had to update some of my older projects too
ok while we scratch our heads over that one current version of ars is
5.11.5 correct?
No, that's not what's written at the bottom of the link I gave you
ah
theres a .1341 in there
mb
uh
latest version for jei seems to be this one correct?
I'm going to push an update to the example addon that works
okie
ill take this current old template behind the shed and, well, yknow
unless there is a way to update my clone?
you can probably do some stuff with git to put your changes in a branch, update the 1.21.x from the example repo and then merge the changes
hi clement
technically it would be faster to redo the whole thing
but I would like to learn how to make a branch if you are willing to guide me through that
it depends on how much work you've done on the git
if you are a student / teacher one thing i could recommend is grabbing the copilot pack and prompting copilot cli to update your branch to be updated with the upstream
or claude code but that's a paid subscription...
at this time I need to save my money
let me see what i can glean from the github docs
i recommend :
git stash add . && git commit -m "checkpoint before pulling upstream"
git remote -v
in an ideal world, you should see something like :
❯ git remote -v
origin [email protected]:clcment446/tview.git (fetch)
origin [email protected]:clcment446/tview.git (push)
upstream [email protected]:ayn2op/tview.git (fetch)
upstream [email protected]:ayn2op/tview.git (push)
if you don't have the upstream links :
git remote add upstream $EXAMPLE_ADDON_LINK
then pull the changes from the example addon wiki
git fetch upstream
you'll probably have to do a merge if you modified the 1.21.x branch
git checkout main
git merge upstream/main
can use rebase / merge
rebase is "cleaner" since it brings your edits on top of the new base
or instead of doing all this you can use the github website
ah
working version
you can use the commands or the github website
unless there are major changes you should use github
less of a headache
ic
btw i have a question / need help
i've started using mixins recently, after years of putting off learning them, and i can't get them to work outside me dev env
they are present inside the jar when i use an archive explorer, but the changes aren't applied inside the game...
when i use the run-client task they are here but launching outside of the gradle task doesn't work
i updated my dependencies to use a recent version, but it still doesn't work
please somebody help me 🫠
related files / info
ars_trinkets.mixins.json :
{
"required": true,
"package": "com.c446.ars_trinkets.mixin",
"compatibilityLevel": "JAVA_21",
"refmap": "ars_trinkets.refmap.json",
"mixins": [
"AbstractCasterBonusSlotsMixin",
"AbstractCasterCastValidationMixin"
],
"minVersion": "0.8",
"client": [
"GuiSpellBookMixin"
]
}
neoforge.mods.json
[[mixins]]
config="ars_trinkets.mixins.json" # for extra glyphs.
tree src/main/resources/ -I "assets|data"
src/main/resources/
├── ars_trinkets.mixins.json
├── META-INF
│ ├── accesstransformer.cfg
│ ├── enumextensions.json
│ └── neoforge.mods.toml
└── pack.mcmeta
2 directories, 5 files
aight imma wait for that gradlie to build
do youhave a branch with these changes?
id look at the ars gradle file, you are likely just missing some strings. tbh I dont know which ones of these matter, but maybe this jar manifest one?
jar {
manifest {
attributes(["Specification-Title" : "ArsNouveau",
"Specification-Vendor" : "baileyh",
"Specification-Version" : "1", // We are version 1 of ourselves
"Implementation-Title" : project.name,
"Implementation-Version" : mod_version,
"Implementation-Vendor" : "baileyh",
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
"MixinConfigs" : "ars_nouveau.mixins.json"])
}
}
The manifest isn't required
oh thats the only mixin reference left in build.gradle these days
https://github.com/clcment446/ars-trinkets/tree/feat/dev-items
looking at my local i had forgotten to push quite a few commits
(also yes, in feat/dev-items)
I don't even ship one
yours is commented out tho
I dont see anything glaring other than that field, but if jarvas works without it then maybe its not needed
the ars project is held up by glue and copy pasted gradle snippets at this point
I don't publish any manifest, it's possible this is auto-filled by MDG
but if you explicitly put something, then it probably overrides
but if theirs is commented out wouldnt they have the same behavior as yours
or do you mean this jar declaration at all
I have no jar declaration at all
I have no idea if this is even still needed at this point
no jar block, no manifest, no attributes at all
tried to uncomment it, and the mixin still didn't apply
very sad
Check your log file to see if it says anything about your mixins
[21:42:33] [main/WARN]: Reference map 'curios.refmap.json' for curios.neoforge.mixins.json could not be read. If this is a development environment you can ignore this message
[21:42:33] [main/WARN]: Reference map 'curios.refmap.json' for curios.mixins.json could not be read. If this is a development environment you can ignore this message
[21:42:33] [main/WARN]: Reference map 'geckolib.refmap.json' for geckolib.mixins.json could not be read. If this is a development environment you can ignore this message
[21:42:33] [main/WARN]: Reference map 'ars_nouveau.refmap.json' for ars_nouveau.mixins.json could not be read. If this is a development environment you can ignore this message
[21:42:33] [main/WARN]: Reference map 'nuggets.refmap.json' for nuggets.mixins.json could not be read. If this is a development environment you can ignore this message
[21:42:33] [main/WARN]: Reference map 'ars_trinkets.refmap.json' for ars_trinkets.mixins.json could not be read. If this is a development environment you can ignore this message
[21:42:34] [main/INFO]: Initializing MixinExtras via com.llamalad7.mixinextras.service.MixinExtrasServiceImpl(version=0.5.3).
You specify refmap, are you sure you bundle a refmap?
Try copy my mixins json
There's a couple different properties
a wrapper around NeoGradle for people who don't want to mess around with advanced gradle things
ModDevGradle Logo
alright ill switch from neogradle to mdg
does it bother you if i steal borrow your gradle related files?
Go for it
dark magic at it's finest
ive had my suspicions \
I'm getting closer to understanding Gradle, looking at rolling out version libraries for AA
but build tools/automation are my bread and butter
after a soda worth of ice cream I now have about 3 hours before I crash
lets do this
just to double check
i put the file under the registry in src/main/java/com.example addon/registery?
There's an AddonDocumentation file in the new version, just edit that
ah
ty
alright one thing left to figure out
how do you get text in there?
it seems like the code is calling it in from another file but i cant find that file
also tangent but still important
where can i find the files for the enchanter's sword? i need its palete and how it was done
also interesting thing
whose skin was this? it seems to overwrite mine when i run client lol
That’s one of the default skins
Ye now fill the shoes of Dev. Whoever they were has been lost to time. Only ye remain in the eternal sandbox of dev envs.
lol
following up on this for anyone who wishes to answer
This about the spellbook documentation, right? After you add a page, you should see a translation key when you open it in game, you just add that to the translation file
why did I never think about the lang files
thank you so much
oh
wait
so these translatables are used now instead of strings to save space and let them be used in multiple places?
Sort of, yeah. Lang keys is how you'll be giving names to pretty much everything, including GUI titles, entities, and items.
There's ways to datagen them, but I've never ventured to. I just write every lang key each time I need a new one.
is there a thing i can read up on to learn how to best write them?
I believe they appear naturally in Kaupenjoe's tutorials. I largely follow whatever structure/convention is used in examples I'm working with.
called it
It's not like he dedicates copious amounts of time to lang keys (don't remember that he does, at least), but when he's registering items and such he goes over what he'll call them in passing if I recall correctly.
shoudl be in #9 then
nvm
I think i will end up just doing a ful example mod before touching this again
itll provide some much needed context
and I can work on a content mod for ars that I wanted to do anyways so Ill lose no time
It's not that complicated, u make a lang file (you can use any mod as an example), then you just define the translations like "key": "translation". And if you don't know what the key is you can easily check, since the default behaviour for when the key is not defined is to use the key as the text. So for example if you add an item but forget to name it, it's name will be something like mod_id.item_id, which is what you need to put into the lang file as a key. Same thing applies in the documentation pages, or any other instance really
Language keys are just resource pack lines
ah
that gives me a bunch of info that I can def parse
i belive the issue is that im tired
so imma sleep
That's kind of the issue cause looking through the example addon doc registry gives me absolutely nothing
Ars's registry gives me a bit more but not enough for me to even understand what I'm looking at/for. Much less being able to start writing my own
first things first omi shards that prolly get made out of crushed source gems and something else
my next creation shall be connecting source jars this´ll take a while tho
What do you mean by connecting source jars?
but with source jars
but why? this is something that has been requested a lot and something we've always pushed back on, there's no real need for it
Sometimes things don't need to be necessary to look cool ¯_(ツ)_/¯
would be funny if it only changed the visuals and didn't connect them together in any other way
but yeah, we've gotten the request of bigger source jars that connect across multiple blocks and we always ask "what are you doing with all that source?" and never get a satisfying answer
we don't do it in the base mod because we honestly want people to think more about throughput than bulk storage of source
also just general disdain for multiblocks
Disdain for having multiblocks, or disdain for programming with multiblocks?
I personally love multiblock structures in-world
well I have a disdain for multiblocks generally, I think for Bailey it was more of a "too much trouble for something we don't particularly want to do"
"I don't want to" is a valid response. Why addons are great.
but also the things I have already said above
game balance does factor into it and we already think people are too focused on source production and not enough on the spending side
but yeah, if you're doing the work, not much we can do aside from give our explanations of why we haven't done it
we do keep joking about making a bigger source jar... that walks around and destroys things like the Kool Aid Man
it must be a carticture of buffbuncle
Hmm. I like the idea of a source - monster. I should create a monster that is attracked to source and just eats it all up. (jk)
source gremlin
could be a funny way to build a boss. Need to place a huge block of 100% full source jars, then they click together and go on a rampage
I think connected jar is neat, it is visually better than 4 jars side by side. Now I don’t know why people have so many jars in the first place so I’m not going to be the one to solve it, but won’t complain if an addon does it
flexing ig
Make it scalable. I want to see someone make a 100x100x100 jar that just looms over the landscape.😜
I fear the source jar equivalent of terraria's torch god
Place 100 full source jars in s small enough space and it starts a bullet hell
I would also def encounter it if it were a thing. My spell factories and dozen remote perma-braziers chew through source like no tomorrow
Made a remote inventory request system with pneumaticraft so the braziers would toggle and I had a remote inventory terminal but handmade and ugly
Very funny walking up to mobs and watching them ash baby into xp crystals
This may seem unnecessary in the point of view of a logic thinker like most modders but as I played the mod. This was probably the thing I wanted the most. Sometimes just to have it. I'm also going for a so called omicle who will be an exotic animal like the starbuncle but his job is to walk on a treadmill or something like that and eat source and create energy by walking thus being a source to energy converter. Those 2 things will probably take me 2 weeks thats how slow I am but I think I'll be able to show some results by then.
multiblock jar code is already in sauce, it was showed in the april fools vid
rendering it as connected though...requires a ton of blockstates or a ctm system to rely on, as well as the textures
if i really try to imagine a simplified version, it would require at least 9 textures that must work as a 4 composition too
i did the rendering simply by scaling a source jar to the multiblock dimension, but another of the problem is that you can only dominion-wand the core (or the valve) so i had to make it stuck out :/
100xMaxHeightx100 👍
ah yes
Max * max * max
World Border x Max Height x World Border
is there an existing mod addon on github I can take a look at?
several
Quite a few
any recomendation?
Ars elemental
Pick your favourite addon 👍
That might be solvable... Create's implementation of multiblocks is quite interesting, a similar solution might work
probably, hexerei took it for its ctms
while having a ctm support in the addon library mod makes sense, unsure how much i want to commit into it
i think i set the limit to 9x9x9 because allowing non-perfectly-cubic shapes started to made it look so damn cursed
house-shaped source jar 
No, keep it cubical.
Pretty much all of us have our source code on GitHub
Why not make it genuinely like the connecting glass mod
Thats infinite and it just keeps getting bigger
Thats how I wanted to solve it
Will earth ever get the ban mosquitos update? The pretty much destroy my skin.
Can I actually make the code and just give it to you it doesn't have to stay in the addon. I just wish to present it later to the teacher.
you could try a PR
Bring a friend and feed them bananas
mosquitos prefer banana eaters
so curios is being difficult again, its quite strange as my own code doesnt interact with it at all so I have no clue how I would go about resolving it
U prob put it in the dependencies but didn't define a maven, or something similar
That's when u get these errors
ic
which should be impossible as it ran fine earlier today
furthermore Im using the example addon which was just updated yesterday to get around this issue
so Im a bit confused
The file might have gotten removed from the maven too
valid
If you don't use curios at all, look for the line in the dependencies block of the build.gradle file that has curios in it, and comment it out
Should begin with something like implementation or compileOnly
its the ars nov addon template
its a dependancy
You need to use it as a mod, sure, but your project dont have to directly depend on it
wait
is is supposed to be .pom or .com?
Probably com
Minecraft Mod: A flexible and expandable accessory/equipment API for users and developers. - TheIllusiveC4/Curios
i mean in my files
build.gradle
dam nothing
imma just sleep and try to catch jarva in the morning
thanks though, you are truly being a great help
maven could be down
that checks out
What do you mean by set dependencies? In Neoforge? In CurseForge? In Gradle?
Your editor hasn't imported the project fully yet
.JAVA I BESSEACH THEE
HWELP
Sounds like it's an issue with octo-studios, did you add a new repository?
Show your repositories section of build.gradle
do you guys by chance have the source jar filling image here just umm by chance?
you should be able to find the model in the github
try just remove the octo-studios repository, I don't imagine it should be needed
ok
one LOOONG second later
nothing
the same error shows up even when I take it out
and the build fails immidietly if any other repository is touched
Have you tried not importing curios? Or importing it from another maven like curse maven, or maybe even a flatDir?
ba ba bongus
I can say that not importing curios would fail spectaculaly
and for the other two I wouldnt know how to do that
for uhh curse maven you can uh one sec
go to this on any file of any curseforge mod*
and as long as you have the curseforge repository thing setup (which from the image you do)
you can compileonly/implement/runtimeonly basically wtv curseforge mod you want
flat dir is similar except it lets you use local jars you have
would look smth like this in your dependencies section of your build.gradle
(with the flatdir method being that last one, though it requires another step to work)
it seems like flatdir is already what is being used
this step here where you list the library folder as a repository
yup exactly that
Try doing curse maven just in case :P
doesnt hurt to exhaust your options
this replaces the code in the picture?
in my pic
or where exactly do I put it
uh
have no clue where that is, but probably not
should literally just be in the dependencies section of your build.gradle
dependencies {
// stuff here
}```
yep exactly that
oop
yea im out of juice for the night
did say this
taking out this
and it gets this
\
that's not the one I told you to take out
curios version?
implementation "top.theillusivec4.curios:curios-neoforge:${curios_version}+1.21.1" is what ars uses
where curios_version is set as 9.3.1
the logs here show 9.0.14
its that one
You're still using the old example addon
Not the one I updated to use the new documentation
how though
wdym, how?
talking to myself
huh
yea i appear to be werid
welp
time to redo the do
again
anyways it works like a charm now
I love having issues that dont follow occams razor
ok so Im trying to change my mod id from an_addon to what I want and it seems that there are some things im not suposed to rename
how would I go about fixing this?
wait i got it
LETS FECKING GO
indeed it is
@pallid rapids @unreal summit Thank you for your feedback the other day. I created a new addon for 1.21.1 that's more cohesive. It just makes ars blocks dyeable. nothing else. No breaking anything. I expanded it to all 16 dyeable colors and support more blocks - like ars addons blocks too. https://www.curseforge.com/minecraft/mc-mods/ars-deco
back at it again with wondering what is the best way to add in the item form of the block. following along with kappenjoe he uses a helper method, however I know that names are different there and it also doesn't seem to work where I'm trying to put it, from what I can tell it would likely work if I take out the code that adds in the block from ModRegistery and put it in its own class, though im also wondering if I can just get the line of code remotely without removing it and replacing it and add to it from there.
I am here
some more probing and i only need to understand why it cant resolve ITEMS
I got a frien currently help me
ok now another new issue has popped up
i cant make new lines
in community edition intelji
im doing new line but It just goes to the next one
ok i have a roundabout way of fixing thatr
oh wait
im in a different cursor mod
mode
how the feck do I get back to default
are you on insert or suppr mode?
the wide cursor mode ig
press fn + suppr
suppr?
the delete key
I think we all know how that will end
it goes back a space
what would the mode be called? im checking keybinds
oh wait found it
what is the insert key
ah found it
there we go
so it was in overwrite mode
ok how do I remove the .item here? i know it will mess things up if i have both items and blocks in one
any takers?
just refactor and change the .notation or right click -> add folder -> change the models.item. to models.block
what about the item directory thats also in there? Do i need to separate them into their own thing?
looks like this rn
err there is an intellij command to force those out into their own folders. Right now you have block and item inside an items folder located at models/item
if you right click block -> refactor you can rename the position to be at models
ah ic
that.. also deleted every single one of the .jsons in items/items
wait no it didn
wait yes it did
no it didnt
Bruh
lol
ok lets see if that fixed it
it didnt
my texture still isnt texturing
ah ic
ok another one
is rendertype required?
doesnt seem to be
Added Ars Deco and Ars Prism to the master addon list
Someone needs to make this individual SAD😜
whar
youll never guess what type of error it was
S Y N T A X
It SADdens me to make this happen
Jarva!
when making a custom creative mode tab kappenjoe wants me to make it in the same folder as the ModItems class
however the ModResgistery replaces the need
so where should the class for the creative mode tab go?
im also checking ars's location for the tab
bruh
why no work?
exactly the same in the tutorial so what am I missing
oh multiple problems
cant be resolved bc the class that which it is part of is static?
no wait thats private
IM FUCKING BLIND
thats one issue out
that class was suposed to return VOID
ok back to this one having a skill issue
is doing .register depricated or something?
oh wait
my location was off
ok so does this
equivilate to this?
seems like a mayhaps
new question...
so I THINK the issue is around here?
otherwise it would be in the ModRegistery class
or even this
youre registering more than once somehow
Ik
And Idk where
@mortal oak @gleaming fox Idk which is the right account now.
Can you ping me when you finish migrating to MDG? I'd like to add trinkets to ArsAddonBuilder
hi!
yes ill do so whenever i get the time to finish porting it to MDG
should be by the middle of the week
hello I am attempting to initiallize an item with custom behaviour and im running into an inconvertible types error. can someone explain why this might happen so I can narrow down what I can do to fix it?
Show the full code
I can also make a commit to the github if that would be easier
It should be a DeferredItem<MushroomWandItem>
Which tutorial?
Ah
interesting it still says there are related problems but doest bring me to where they are
hell yea
it works
thank you so much once again jarva
thinking of the future
how is a spell in an item stored? I eventually will make it so that in each crafting recipe you can put a spell on a spesific item and use that item in the crafting recipe to add the spell to the final product
Oh another thing would also be an example block to show that a class specifically for blocks isn't needed as the single register class does all the work
ok im getting the inconvertable types again but its because im using an anomynous class to add in a tooltip to a normal item which means, what do I put in the <> to fix that?
probably something like ? extends Item
no more errors! ty!
so as it turns out EventBusSubscriber.Bus is deprecated
and i don't know how exactly to go about using the newer version
im trying to set up datagen
keep using the deprecated one
no harm currently
alot of harm actually
like wont work harm
red error harm instead of yellow issue
harm
turns out though after some researsch it doesnt apear to actually be required to exist anymore
You can remove the bus part and it will auto-detect which one to use
That's what I gathered
well that pisses me off
it removed every single file in my recipes and loot tables (I didnt even tell it to touch recipes yet) and didnt write anything new
You using AI?
Also note that whatever you put in the "generated" folders get cleaned up when you runData unless it was made by the datagen
no it was the ArsProvider class already in there
it used that instead of my datagenerator
why the fuck would I take the fun out of coding
ok
so it seems that I need to go back and put my enapp recipes in that file
new version of Ars.Guide takes over 20 minutes to build and deploy 😱
I mean
its alot of code
that doesnt explain why it also removed my crafting table recipes as well though
About 10k LOC it seems (don't include the yaml or scss)