#General & Development Help

1 messages · Page 12 of 1

neat mango
#

var12 and tile will be the same thing

#

also use the better instanceof checks instead of manual casts

if (a instanceof Type newName) {
  newName.xyz()
}
arctic bronze
#

Trying to make my "domain entity" place down a shell of blocks. Then have the domain entity check the blocks within it's area and check to see if any have been broken and remove any from other domains with a lower "refinement"

rocky grail
#

basically your domainEntity is null

arctic bronze
#

wdym?

#

like it's never set?

rocky grail
#

usually thats what it means unless you explicitly set it to null somewhere

arctic bronze
#

ty ty got it working

arctic bronze
#

What would be the best way to make a block not targetable by break?

neat mango
#

break? as in unbreakable or the break glyph ?

arctic bronze
#

break glyph

#

Want it still breakable by hand

#

or at the very least have it require a couple amplifies (4-5)

mossy hollow
mossy hollow
#

This is the first alpha release, feel free to test it out

rocky grail
#

:)

#

um

#

lol

mossy hollow
#

Alpha for a reason, mostly because I don't know what CF count as optional

#

SSL error, will have to investigate

mossy hollow
#

Alright, it's working again now

rose lintel
#

this may be a bit of a dumb question, but is there an attribute in the main ars nouveau mod (1.20.1) that is a spell resistance attribute? the addon im working on has cataclysm integration planned and i want to give the bosses some spell resistance if possible

zealous zenith
#

I dont think so

radiant depot
#

I recall setting the tag for most spell damage sources

mossy hollow
#

Someone I know is looking to commission serverside utility mods (plugin equivalent mods: commands, chest GUIs, shops, etc.). They've spent about $3k on commissions so far, no idea how many mods that's split over. They would require the mods stay private, no source code available, ARR, etc.

If anyone would be interested feel free to send me a message.

rocky grail
#

surely most of those already exist?

#

probably mostly fabric though

unreal summit
mossy hollow
unreal summit
#

Made me glad to see that he knows what a good coder is worth, when he told me he was sinking a few thousand into hiring devs.

neat mango
#

@bailey is there anything you would change in terms of how ars nouveau code is organised ? Speaking purely based on layout and not coding practices like OOP coupling

#

oh this question is for everyone not just bailey. I want to ensure i dont make any obvious mistakes in terms of architecture

hallow owl
#

When you say layout, you mean purely how files are clustered into different java packages/namespaces?

neat mango
#

Yes

hallow owl
#

What I've seen mostly is to cluster them based on what kind of file they are. So blocks go together, items go together and so forth.
I would have loved to do a kind of feature-based architecture, making related files live together - for example if you have an EffectGlyph that spawns an entity, and that entity has some helper class exclusive to it, you'd put them in one package.
But this doesn't work to me because you would be forced to cluster files at some point, whether for textures, models, or even mixins, you can't do it in this way.

radiant depot
#

No that's horrible for mc modding in practice, if you mean spanning across different types (item, entity, rendering etc. all in same folder)

#

Just name them the same way and use the ide search features

#

There might be a breaking change in package layout with the addition of nuggets, the library bailey is moving stuff to, but we are in the middle of the version

#

There shouldn't be useless refractors now

#

Since the codebase is big, few classes could have a bit more grouping in the future tho

zealous zenith
#

ive never felt like a modded codebase really has a winning format, its all annoying lol

#

the best you can do is common/client/api (if you intend to support addons), but more often than not your common becomes a dumping ground

#

then you have blocks and tiles, which feel like they should be nested because a tile belongs to a block, but now you have a million files in one top level folder and have to scroll in your IDE forever

#

fortunately it doesnt really matter how you do it initially because you can just drag the files and folders around and its like it never happened, unless you have addons

arctic bronze
#

Can't figure out what I'm doing wrong 😭

#

Literally just copied what I did with another projectile entity

neat mango
#

the constructor doesnt match the signature that it is expecting

#

check setCustomClientFactory method's signature

arctic bronze
#
            this.customClientFactory = customClientFactory;
            return this;
        }```  Hmmm
#

my other entity looks the same, just not sure what it could even be looking for that one would have and the other wouldn't

#

I'm dumb

#

I had another constructor in the middle of my entity domain class projectile self

arctic bronze
#

Is there a way to check if an entity is in a certain gamemode?

neat mango
#

how do you create a custom event? (neoforge)

zealous zenith
#

extend one of the event classes and fire it on the event bus

neat mango
#

should you post in neoforge/game bus or create a custom bus for your mod

zealous zenith
#

just use the neoforge one

neat mango
#

got it

#

does it need to be registered?

zealous zenith
#

nope

neat mango
#

cool! thanks!

zealous zenith
#

it uses magic class instance magic

neat mango
#

I am stuck in a weird problem. I am working on ocultas and created an event that is fired whenever an entity processes an item

#

but how do I differentiate between entites that are in a jar or not

zealous zenith
#

A mob jar?

neat mango
#

yeah

zealous zenith
#

What do you need the event for?

neat mango
#

that event is for occultism side of things. its an event that is fired whenever a crusher finishes a task and generates a result itemstack. i made the event so that I can capture the result and pipe it somewhere else

zealous zenith
#

what do you need the reference to the entity for?

#

can you just fire a non-entity version of the same event?

neat mango
#

thats not the problem. I need the location. say i want to automatically pipe the result to a chest next to the mob jar

zealous zenith
#

Can’t you just fire it with the blockpos then? There is no server side entity to reference with the mob jar

#

Or is this an event occultism provides

neat mango
#

i made the event. so thats fine (working on a pr)

neat mango
zealous zenith
#

Technically yes, like the vex

neat mango
#

hm I guess this works

#

cool! thanks!

mossy hollow
#

Bailey, you should use my mod-manifest for Ars

#

bonus is that if you ever release another modrinth update, it'll tell people they're outdated when you release to CF

hallow owl
#

Anyone had any problems with GeoItem? Specifically the renderer. I'm registering it like this:

    @Override
    public void initializeClient(Consumer<IClientItemExtensions> consumer) {
        consumer.accept(new IClientItemExtensions() {
            private BlockEntityWithoutLevelRenderer renderer;

            public BlockEntityWithoutLevelRenderer getCustomRenderer() {
                if(renderer == null) {
                    renderer = new MyCustomRenderer();
                }
                return renderer;
            }
        });
    }

But I'm never seeing it call getCustomRenderer, am I missing some piece? (Forge 1.20.1)

#

Ah, seems I was missing a field in the item model json

rocky grail
#

gonna work on improving spellbook ui (like i did with controle) as a PR

rocky grail
#

autofocus and a few other things

#

currently fixing the glyph display first though

#

right now if there are no forms, there will be empty space at the start of the book

#

basically everything in here #addon-announcements message

#

and a bit more maybe

#

id like to have a way to split a spell and insert an empty space at the split

#

alternatively maybe shift+num to insert rather than replace

#

i might end up making a breaking change wrt. the way spells are constructed since i had bugs doing it the "normal way" with controle

rocky grail
rocky grail
#

it reads the symbols rather than the number

#

dont think theres a reasonable way to get it working

rocky grail
#

made it split on middle click instead

#

seems perfect

rocky grail
#

lol im making the pr i talked about in #archived-1-21-testing and i was trying to come up with a branch name

#

i wrote "feat/amethyst-golems-break-into-homes"

#

maybe i should call it "feat/amethyst-golem-burglary"

#

oh wait theres something else

#

amethyst-golem-tweaks ig

mossy hollow
#

While you're there, do you want to look into the buggy AI trying to run away all the time?

rocky grail
#

ive already taken a look a while ago, didnt see anything too suspicious but ill take another brief look

mossy hollow
#

I got another bug report of it yesterday

rocky grail
#

im fairly sure its actually not just amethyst golems

#

ive seen mob crowding in vanilla mobs for just about forever

mossy hollow
#

It's not crowding

#

They're pathfinding to 0, 0

rocky grail
#

maybe we should just have a way to sit them down

#

well i do have an idea of how to try to mitigate it at least

#

just need a good enough distribution

#

yep fixed it

mossy hollow
#

How did you fix it?

rocky grail
#
@Override
public float getWalkTargetValue(BlockPos pos, LevelReader level) {
    if (this.getHome() == null) {
        return super.getWalkTargetValue(pos, level);
    }

    double distance = pos.getCenter().distanceToSqr(this.getHome().getCenter());

    // Encourage amethyst golem to stay within 10 blocks of its home.
    // See 1/max(10, x) on a graphing calculator.
    return (float) (1.0D / Math.max(10, distance));
}
#

oh wait thats so wrong

#

shouldnt be squared distance

#

ill just bump 10 to 100

mossy hollow
#

But doesn't it have the return to home goal?

rocky grail
#

apparently its not good enough

mossy hollow
#

Are we able to improve that goal?

rocky grail
#

probably just bumping priority

#

fixed the formula, doesnt look too different tbh

#

goes a bit further on average compared to before

mossy hollow
#

That's good then

rocky grail
#

honestly id even say maybe the return home goal could be removed

rocky grail
#

already found one

#

fixed that

#

i havent tested all the glyphs but blink, pickup, and exchange are the 3 im most concerned about and they all seem to work

zealous zenith
#

does place block/break work as well?

rocky grail
#

yes and yes

#

wall and linger also work

#

for anyone who wants to test yourself, your projectile needs to be sensitive for it to teleport through portals

zealous zenith
#

for copying those values over in changeDimension, is that because its technically a new entity being created?

rocky grail
#

honestly i just copied what i did in controle because it didnt work without

#

didnt try minimizing it though

#

i know at least the spellresolver copy is necessary

#

otherwise the new entity has a null spellresolver and it dies on the next tick

rocky grail
#

minimized it

#

pierceLeft doesnt need copying

#

everything else there does

#

oh and deltamovement doesnt either

#

think i might as well undraft the PR

#

i think thats my record on open PRs to ars :p

#

3 concurrently, almost 4 but bailey merged /ars-dropless before i did x-dim stuff

rocky grail
#

hm on second thought, this makes breakamplify useless

#

yeah it literally isnt used in the code after this change

#

not sure how best to resolve that though

#

could make it amp change the default tool i guess. make the normal default an iron pickaxe, then diamond, then netherite

rocky grail
#

i undrafted it after the realisation haha

rocky grail
mossy hollow
#

Need to actually read through to code to understand what it does. I'm currently using my wife's hotspot because dumb engineers took down the internet for the whole neighbourhood

rocky grail
#

rip

mossy hollow
#

Will try review once I have internet back

rocky grail
#

but what the code would technically do is obsolete your amp shenanigans

#

just have an allthemodium pickaxe in your inventory

#

honestly im not against completely removing d?amp in break

#

there would still be a benefit in using break, that being instant mining and not using durability

#

ok i did the default tool thing, now its ready for review

#

always happy to remove amps though - i think its more balanced

#

then again, amplify does cost exactly 1 diamond pickaxe

mossy hollow
#

What's the usecase for using items from inventory?

mossy hollow
rocky grail
#

im fairly sure the intended way right now is to hold your tool in your main hand and offhand your spellbook, but if the block is tagged with mineable_with_pickaxe then you end up with a normal diamond pick

neat mango
#

@radiant depot how did you render items on tooltips?

#

I recall you doing it some time back

neat mango
#

I found your PR

rocky grail
#

im not allowed to drop a jar in #addon-announcements am i

#

curseforge and modrinth are gonna take a while considering how fresh this is

rocky grail
#

oh also because holidays are a thing rip

mossy hollow
rocky grail
#

good idea

rocky grail
#

nvm its approved on cf

arctic bronze
#

How should I add an augment to a spell within a spell projectile after that projectile has been spawned

zealous zenith
#

specifically to a projectile or to just spells in general?

arctic bronze
#

I wanted to make a method that creates a type of projectile that adds amplify instances based on how long it was alive before resolving

#
                recipe.addAll(this.spellResolver.spell.recipe);
                recipe.add(AugmentAmplify.INSTANCE);

                this.spellResolver.spell.recipe = recipe;

                iTime = age;``` tried this and similar stuff in the tick method but I keep getting: ```Caused by: java.lang.NullPointerException: Cannot read field "spell" because "this.spellResolver" is null```
zealous zenith
#

are you doing that on the client side

arctic bronze
#

uhhhhhhhhh

#

tbh idk

#

This is the file

neat mango
#

This is an interesting class com.hollingsworth.arsnouveau.common.util.EasingManager almost not changes since file creation

#

What even are quarts

hallow owl
#

I think quart is short for quartic, like t⁴

#

quadratic, cubic, quartic, quentic
English sure has a lot of names for the same thing, maybe we should call it fouric and fivic

rocky grail
#

i have vastly underestimated how slow github actions is

#

got it working

#

well, it failed partially last run

#

but its basically working

#

(publish workflow)

hallow owl
rocky grail
#

slow cpu + cpu intensive task (gradle builds) = bad time

hallow owl
#

Oh yeah. Iunno if you can get some caching for gradle builds, I only have experience with that for npm/yarn/pnpm

#

Oh yeah. Iunno if you can get some caching for gradle builds, I only have experience with that for npm/yarn/pnpm

rocky grail
#

greenest my github profile has been since i started my internship lol

#

a lot of stuff are in private repos though

zealous zenith
#

you can use a larger runner, you just have to pay for it

neat mango
#

@ashen grail do you know if there are differences between AE2 pattern providers' different forms? full block and part form

#

is the way they handle ItemHandler Capability different ?

ashen grail
#

hence querying any such capabilities with a null context isn't enough since that won't pick up any instances of that capability provided on any specific sides, only omnidirectional instances of the cap

ashen grail
#

for that reason currently (or at least previously to now) the capability lookup for Source-handling blocks doesn't work for any cable parts since Ars only ever looks it up with a null context and can only pick up full-block devices as a result

neat mango
ashen grail
#

i don't think so, normally the direction to provide is supposed to be the face that it comes from

#

so in the case of cable parts, the face of the cable bus that they're attached to

#

if the item inventory is supposed to be accessed from the north face or equivalent, then that direction should be passed as the context and then used for lookup

neat mango
#

thats confusing, so if A wants to query B, do we check for A's direction towards B or B's?

ashen grail
#

B's towards A

neat mango
#

so it does need to be flipped cool

ashen grail
#

in that sense, yes

neat mango
#

d is not flipped

ashen grail
#

though Direction in general is absolute and not relative so, again, look for the face of B that B provides the cap from

#

in this case, yeah, flipped if the lookup is done from A sitting against B

#

i've had a few pints so apologies if i'm not clear or repeating myself too much

neat mango
#

nah its all good. thanks!

neat mango
#

if yes, I will send in a PR

ashen grail
#

there was a Direction::getOpposite method for this, right?

neat mango
#

Yeah

zealous zenith
#

hm?

#

having a hard time visualizing it lol

neat mango
#

right now it is passing direction A -> B but we instead need to check if the B exports a capability towards A (B ->A)

zealous zenith
#

hm so if an inventory was north, it would be checking for a capability in that north position also to the north?

#

yeah opposite makes sense

neat mango
#

PR up

#

tested it, AE2 pattern providers now work as expected

rocky grail
#

been stuck here for a bit

#

Error: HttpError: 500 (Internal Server Error, {"error":"file_hosting_error","description":"Error while uploading file: S3 error: Error while uploading file to S3"})

#

yep modrinth issue

#

71s lol

radiant depot
#

And this is likely why Ars is not updated on Rinth the same way as curse

rocky grail
#

i mean it still worked

#

a bit less lucky and im sure itd have broken though

neat mango
rocky grail
#

review time averages 4 days and 14 minutes rn

neat mango
rocky grail
#

feels great

neat mango
#

any idea how I could make a structure check? something like nether portal

radiant depot
#

in what context, loot?

#

worldgen?

neat mango
#

no manually created

#

so I could spawn in the portal blocks

radiant depot
#

ah, you mean BlockPattern.BlockPatternMatch ?

neat mango
#

oh there is something like that?

radiant depot
#

You may take the iron golem as example, look into the carved pumpkin class

neat mango
#

this looks like but this seems to a fixed pattern

#

What do you think I should do for a more flexible size of portal

radiant depot
#

At that point you go into custom territory

#

And you can simply take the best algorithm for the task I think

neat mango
#

like what ? iterating over blocks ?

zealous zenith
#

portals have a portal helper file

mossy hollow
neat mango
#

Yeah I going through the code now that bailey mentioned the helper

#

I was kinda lost about where to look

#

nether portal code is ancient apparently and not worth referring according to neocord

zealous zenith
#

it works fine if you just want portal logic

shadow helm
#

First and foremost, thanks for all the work you did on Instrumentum 1.21 Alex.
Second: Is it just me or are codecs as clunky as they look to me?

radiant depot
#

they probably are, but what do you mean exactly?

shadow helm
#

No specific critic, just annoying to read

radiant depot
#

oh sure, it's the main reason people hate them regardless of usefulness

mossy hollow
#

Nah, I love codecs, they're so much easier to use and read for the most part

zealous zenith
#

The errors are the worst part by far, the ide errors are worthless and the runtime ones are even worse

rocky grail
#

i agree with errors being horrid

#

but usage is fine imo

zealous zenith
#

like copy pasting the 10 arg codec function so you can make an 11 arg one rooThink1

mossy hollow
neat mango
#

codecs are so freaking cool but god they are pita to debug

#

my main problem is they are no longer sequential as in control flow is hard to track

unreal summit
#

Can anyone think of a good reason why someone would NEED more than a couple amplify on a leap spell?

We’re having an issue with people using leap amplify x8 to zip around at Mach 5 and causing server issues.

mossy hollow
#

Not really no

neat mango
unreal summit
#

My 7.5m spell still doesn’t one shot some enemies

neat mango
#

but that would definitely one shot my machine

unreal summit
#

Nah. It’s just a standard Gatling

#

Not doing the weird cold snap multi propagation shenanigans

rocky grail
#

inspired from jarvas but fairly modified to suit me

#

it triggers when i create a new tag and uses that tag for the version

#

and also generates a changelog from the previous tag up to the new one

rocky grail
#

im surprisingly happy with ars unifications code quality now

#

maybe a bit too much abstraction

hallow owl
#

ars technica code is uhhh it's hmm don't read it

arctic bronze
#

How are .geo files generated? Is there a way to make an armor model in blockbench and then export a .geo.json file?

neat mango
#

Yeah blockbench + geckolib plugin

arctic bronze
#

the export option isn't showing up for me. Looking into why rn

#

thnx tho

#

I got it

neat mango
#

any idea how I can multiblocks? I need them to share a blockentity

mossy hollow
neat mango
#

oooo

#

but i am scared of ae2 code

#

okay the addon code is easy to understand to an extent

radiant depot
#

Multiblocks are a mess, everyone has its own implementation

#

And no, there can't be an Universal api for it

rocky grail
#

really hard to optimize it seems

#

i made a small improvement in ColoredProjectile by caching the color

#

but it was never really noticeable

#

i have no idea what the hell google's UnmodifiableIterator$hasNext is doing to be that slow

#

wonder how it does with lithium

#

not much better

mossy hollow
#

Any compsci people able to tell me the name of something?

I want something like an inverse debouncer, where it does something on first call and then has a cooldown until it does it again, no matter how many calls it receives in the meantime

#

Is that still a debouncer? Just different trigger?

neat mango
radiant depot
neat mango
#

i am worried whether that approach would be expensive

radiant depot
#

Depends on what the BE does and how often

#

Saving a reference would be the cheaper one

#

Even just the blockpos

neat mango
#

okay will do that

hallow owl
arctic bronze
#

Has anyone made higher level thread slots beyond tier 3?

#

Feel like that could be a pain to get working with the table but who knows. Maybe it isn't that bad

shadow helm
#

Jarva was investigating it but has been fighting the table for it, yes

arctic bronze
#

@mossy hollow any advice on how it went?

#

Just an idea I would want rn. If it just breaks too much I may just make curios

mossy hollow
#

All it needs to get working in making the rendering on the alteration table dynamic, however I suck at rendering

#

I have a janky version working, but need to fix it up

arctic bronze
#

hmm, I may give it a shot. I'll probs save it for last then

arctic bronze
#

hmmmm orrrrrr

#

I get lazy and make a "advanced alteration table" which only deals with tier 4-6 slots

mossy hollow
#

That's the plan, but I need to get it rendering

#

Advanced Alteration Table is the alternative, but I don't like the idea

arctic bronze
#

me neither but I get lazy

radiant depot
#

i asked for a more custom support at the genesis of the alteration table

#

bailey was just like bugs bunny

arctic bronze
#

lol

mossy hollow
#

Alex you any good at rendering?

arctic bronze
#

advanced alteration table is looking pr tasty rn

radiant depot
#

i may be good now, still far from god

#

one day i'll have enough insanity to look into the shader stuff

#

but maybe enough sanity to rely on lodestone

neat mango
#

lodestone is voodoo magic

radiant depot
#

need a bit more details on the problem btw

radiant depot
neat mango
#

i frequent the server just to see what crazy stuff people have been cooking

neat mango
radiant depot
#

it's a library cooked by many people that really delved a lot into it

#

i wonder if Fufo had a sudden stop or they just paused updates on it

neat mango
#

fufo never began iirc

#

they had a lot of concepts but is on pause due to irl stuff

neat mango
#

I dont think we get have access to blockentity constructor do we

mossy hollow
#

(for me it's very hard, not the rendering, but the positioning)

neat mango
#

What do you find hard in positioning ?

mossy hollow
#

getting it in the right place 😂

hallow owl
#

where flexbox when you need it

neat mango
#

is your code up somewhere?

mossy hollow
#

nah but I can push ti

#

I've gotten it closer since, but I don't have a screenshot of that

arctic bronze
mossy hollow
#

What's your thread plans? I'm making some for All The Arcanist Gear

arctic bronze
#

just making armor sets that go up to tier 6 and wanted to make some with better thread slots to go along with them.
Was gonna make the best set have a tier 6 slot which would only have the "six eyes" thread planned for it rn

mossy hollow
#

Ah, ATAG goes up to tier 6 if you're looking for comparable scaling

#

What's six eyes?

radiant depot
mossy hollow
#

Ah yeah I don't have hotswap setup

arctic bronze
#

six eyes would effectively be two free levels of the "spell efficiency" glyph and you don't suffer the drawback from the glyph. (Which now inflicts a debuff that halts mana regen based on how many spell eff glyphs you used)

mossy hollow
#

that would probably help

radiant depot
#

and also remember that the order of the transformations will heavily affect how they are applied

mossy hollow
#

got a link to set it up?

radiant depot
#

if you're using IJ you simply run debug and there's the option to rebuild and hotswap

arctic bronze
radiant depot
#

only thing that may be needed more than standard setup is Build Tools -> Gradle -> set the run with Idea

mossy hollow
#

it's quite likely I've probably clicked "don't bother me"

neat mango
#

there is also single file hotswap plugin

mossy hollow
#

ooh

radiant depot
#

it should be reloading only the affected files by default

neat mango
#

it has something to do with reloading all associated files and just a single file

#

I havent used it but thats what other people suggested

radiant depot
#

never had any issues with hotswapping speed

#

even on laptop

#

still infinitely better than not hotswapping at all

neat mango
#

not sure what though

mossy hollow
#

It does in ATAG

neat mango
#

I started an ATM10 playthrough. I guess I will see how it feels

mossy hollow
#

but it's inline with Allthemodium+ stuff

neat mango
#

those are just raw stat boosts right?

mossy hollow
#

It's primarily just stat bumps, the higher level threads are for things that I don't want accessible pre-ATM

#

There's a few more things like damage immunities

#

Unobtainium armor is immune to drowning, kinetic, fire, dragon breath, wither, levitation, and fall damage

arctic bronze
#

Wild

mossy hollow
radiant depot
#

call it Sourcefield

mossy hollow
#

Ooh, I quite like that

neat mango
#

I am in cross with OP armorsets like ATM ones. at one side, being strong is good but it also becomes boring

mossy hollow
#

They're hopefully introducing stronger bosses soon, currently yeah it's too strong

neat mango
#

before ATG, i didnt like the fact you had to abandon your armor if you want to progress in the pack

mossy hollow
#

but I want Ars to be equivalent to the best in the pack

#

because it helps people want to get into it, rather than knowing they're going to abandon it in like 2 days

neat mango
#

ATM 6 was extremely bad. all the armor stats were stupid. like 500 armor some BS like that

#

and they had a dimension where they would insta kill you if you dont have their armor

arctic bronze
mossy hollow
#

Yeah that's not good, ATM10 is much better in that regard

neat mango
#

Yep

mossy hollow
#

Can maybe introduce it as part of the shared addon library that @radiant depot was talking about

neat mango
#

especially with addons. I think irons also has their counterpart

mossy hollow
#

It does yeah

arctic bronze
#

I def won’t be making stuff that op from the sounds of it

neat mango
#

please please call it source library

mossy hollow
#

or Arcane Library

radiant depot
#

considering the mess it might be to move the common code, it may slide to 1.22 (coded before mc update drops but adopted for the 1.22 addons i mean)

#

but i might be understimating a smart refractoring with the power of a modern ide

neat mango
#

@mossy hollow would you be adding ATM alloy gear as well?

#

not sure what the use case is lol

mossy hollow
neat mango
#

oh btw you should ask them to add a quest for the books

#

the armor does have a quest

arctic bronze
neat mango
#

Yes 1.21

arctic bronze
#

sad

neat mango
#

I don't really want to have to make a 1.21 version
why

arctic bronze
#

ehhhhh I like 1.20.1 and at this point I feel like I should just wait for 1.22

#

I've heard it's a pain to go from 1.20.1 on

radiant depot
#

some stuff of ATG is in 1.20.1 too

neat mango
#

it will be much worse to go to 1.22

arctic bronze
neat mango
#

¯_(ツ)_/¯

mossy hollow
mossy hollow
radiant depot
#

i believe they meant simply adding it to their atm instance

arctic bronze
arctic bronze
mossy hollow
#

Ah right

mossy hollow
#

How do I make my ide hot reload? I have it launched with debug, how do I do the rebuild and hotswap?

rocky grail
#

but youll most likely need to set up jbr for your jdk

mossy hollow
#

I don't see a hammer icon

rocky grail
#

thats quite a different ui

#

might be in the 3 dots?

mossy hollow
#

okay I switch back to old ui

#

now I see hammer

rocky grail
#

cant believe you made additions without this

#

note that it cant do everything though

#

schema changes wont work

#

so stuff like adding/removing methods

#

adding classes

#

removing classes of course

mossy hollow
#

I made everything without it

#

Additions, Artifice, ATAG, everything I made for base Ars or Origins

radiant depot
#

right click on code while debug is active should show an option to reload and hot swap

rocky grail
#

poor crab got left out of the party

mossy hollow
#

@radiant depot how easy/hard would it be to add book thread support to an item?

radiant depot
#

Main obstacle is the

@Override
public boolean validForSlot(PerkSlot slot, ItemStack stack, Player player) {
return super.validForSlot(slot, stack, player) && stack.getItem() instanceof SpellBinder;
}

#

which i guess could be moved to a tag check

#

if the item is yours, you'd have to copy over the thread support first then the custom resolver stuff

#

if the item is a 3rd party then it's likely a mess

mossy hollow
#

I'm guessing there's no way to make a generic UI for bookthread slotting?

#

Would have to be an inventory

radiant depot
#

it uses the alteration table at the moment

#

a UI without a block would be possible, but that predates the table and the decision making

mossy hollow
neat mango
#

@mossy hollow trim on atag doesnt look any different

mossy hollow
neat mango
#

i guess its because of geckolib

#

vanilla models just work with the tag probably because it has the layers in place

mossy hollow
#

Ah right

#

Can put it on my todo list

neat mango
#

it will look ugly ootb

#

the layers might not match with the model

zealous saffron
#

Still think a set of armor that was completely invisible, except for trims, could be fun

Even if just for the cosmetic slots

rocky grail
#

so basically you want trims? lol

zealous saffron
#

I want trims on my clothing/skin

mossy hollow
#

Skin trims

zealous saffron
#

Make it enchantable too, so players can choose to have the glint (+quark color glint)

#

If it's specifically for cosmetic slots, then armor value can just be leather gear

#

Hmm. So. There's a mod that allows you to make vanilla armor invisible, but still shows trims. 1.20 only though

hallow owl
#

I have a art/dev question, related to the staff I posted in Ars Additions.
I'm using a 128x128 texture because I was basing it off the spellbook, but that texture is much larger than it needs to be, probably 90% of that texture would be empty.

Dev question: Does that have big performance implications?
Blockbench question: If yes to the above, can I somehow easily switch to e.g. a 32x32 texture, in a way I don't have to manually move all the UV boxes around?

radiant depot
#

you can resize and "optimize" (and i quote because sometimes it breaks the "use same uv for multiple cubes to save space" and duplicate the texture bits) by selecting the texture then the button to create a new

#

if it can manage to squish the texture in a smaller power of 2 it should

#

regarding performance, yes there is an impact when there are a lot of textures like that

#

but you will never get it to be noticeable to the point of the legendary Extracells Walrus

#

if you had to make 16 textures instead of using the render-time coloring, it would have been way worse

#

in practice all the textures are stitched together in a texture atlas that is always loaded in ram

rocky grail
#

i wonder what happened to it

#

is it still in ec?

radiant depot
#

I doubt it survived the ages

#

A texture that detailed was not needed

rocky grail
#

it is pretty funny looking back at it though

#

tbh i doubt its even the worst offender

#

theres probably much worse textures in modern mods

radiant depot
#

In modern mods there are some

#

Occultism

#

Corail uses a lot

rocky grail
#

yeah corail causes me great lag

#

tbh i like the mods mechanics though

#

past just the graves

#

which i do think are the best implementation ive used

#

apart from keepInventory lol

radiant depot
#

The concepts are fine but I think it's less a grave mod than it should be due to all the other content

#

It's more like what Eidolon could be

#

Unsure if Elu or Corail come up first

unreal summit
#

Hoping to start diving back into Elemancy in the next couple of weeks. Which file(s) has the code that checks for spell schools for purposes of alternate effects with foci.

And is it possible to do a statement of IF “X” OR “Y” THEN <execute code>?

rocky grail
#

alternate effects?

#

for the latter, ```java
if (conditionA || conditionB) {
// code
}

unreal summit
#

Like earth focus enabling gravity to work as a black hole

rocky grail
#

well alex hasnt merged yet

#

so great time for me to do that

unreal summit
#

So I guess my next thing to tackle is figuring out why the Elemancer armor texture isn’t loading

rocky grail
#

im guessing naming issue tbh

#

didnt raelly take a look though

rocky grail
#

need to test it lol

unreal summit
#

gravity sensitive I think. It says in the focus description in the notebook

rocky grail
unreal summit
#

I’ve used it to great effect in duels. Fought a server admin to a standstill because I was able to hold them in the air with black holes

radiant depot
#

that breaks everything else

#

the change to use resolvers was not a choice

#

it's either that or book threads can't exists

rocky grail
#

im very confused

#

ah i get what youre saying

#

ill just inline the original check to do it properly then

#

i already did that once lol

#
private static boolean checkSchool(SpellResolver resolver, SpellSchool school) {
    LivingEntity caster = resolver.spellContext.getUnwrappedCaster();
    IItemHandlerModifiable items = CuriosUtil.getAllWornItems(caster);
    if (items != null) {
        for (int i = 0; i < items.getSlots(); i++) {
            ItemStack stack = items.getStackInSlot(i);
            if (stack.getItem() instanceof ElementalFocus focus && focus.getSchool().getId().equals(school.getId())) {
                return true;
            }
        }
    }
    return false;
}
#

oh wait that doesnt check subschools

#

hm nope

#

im looking at how neg does it

radiant depot
#

turrets and neg tweak the resolver's has focus

rocky grail
#

tbh this might be something that needs changing in base ars

#

subschool has always been more or less neglected

#

for now i guess i can do something weird

radiant depot
#

you could add an alt method that checks tags instead of match item i guess?

#

but i'd say just use a mixin to wrap the calls in an OR with the respective foci

rocky grail
#

i think ill just add a || at the end of all the <elem>Check methods

#

that seems to be the easiest way forward

#

ok i did it in a way i think should work

arctic bronze
#

How hard is it to setup something similar to how starbuncles pull from a database for different variants?

Had the idea to create a "Mysterious Mage" mob that would have different colors and spells that I could add to a database as a thank you to people and let them have a variant with their choice of colour / spell

zealous zenith
#

it just parses a json file from github, you can just copy the rewards file

#

and hook up the event

arctic bronze
#

k thanks, I'll try and see how that's setup and see if I can do something similar

arctic bronze
#

...Alright, I'm gonna need someone smart for this one

arctic bronze
#

So I'm working on getting the community "mage" mob setup but ran into an issue. Is there a better way of building the spell for the mob than just parsing the string and doing a switch statement with a case for every spell component?

rocky grail
#

check out how caster tomes do it

neat mango
#

I started looking at rendering libraries/mods and i am impressed and confused simultaneously

arctic bronze
#

Is there a way to merge a client value with the server value? ``` public void mageSpawn() {
RandomSource randomSource = this.level().getRandom();

    if (!CommunityMages.mages.isEmpty()) {
        try {
            this.setIndex(randomSource.nextInt(CommunityMages.mages.size()));
            CommunityMages.ComMages communityMage = (CommunityMages.ComMages)CommunityMages.mages.get(this.getIndex());

            this.setColor(communityMage.color);
            this.setName(communityMage.name);
            this.setCooldown(communityMage.coold);
            this.setSpellData(communityMage.spell, communityMage.color);

        } catch (Exception e) {
            e.printStackTrace();
        }
    } else {
        this.setColor("white");
        this.setName("Oops");
    }
}``` This works great except that the color used for the entity texture is randomized seperately from the name/spell/cooldown
zealous zenith
#

Set it from the server side and use a packet to set the color

arctic bronze
#

ty (time to learn what a packet is)

arctic bronze
radiant depot
#

Is it set on spawn or after?

arctic bronze
#

I set it on the first tick

radiant depot
#

Is the thing saved on an entity data field?

#

(for example the drygmy & co.)

#

Since that one should sync for example

arctic bronze
#

not fully up-to-date with my WIP but that was the last "good" version

neat mango
#

I have a multiblock with one of those blocks as the master block controlling the behaviour. because of how the BEs are constructed, storing a reference to the master is kinda annoying

#

i am using a nullable field and setting it manually after

#

but this means for every call I have to do a null check. got any suggestions to improve this ?

#

I also dont like the fact that I will have to have a separate field to store if it is a master block or not

arctic bronze
#

getting a wierd error ```Caused by: java.lang.NullPointerException: Registry Object not present: ars_nouveau:fire_essence

#

idk why it would have anything to do with fire essence

arctic bronze
mossy hollow
#

Datagen you need to declare existing resources, if it's not in datagen it's probably due to not including the ars dependency properly

#

Check how All-The-Arcanist-Gear does it

#

has 1.20.1 and 1.21 versions

arctic bronze
#

found it

#

What I get for using clement as an example again lol

hallow owl
#

Any debugging tips for non-working mixins? I had a problem early on that no mixins were being loaded because of refmap issues, I think I was just missing 'remap = false'.
But now it's another issue, all mixins are working, even with runClient, but my mixins for runes are not working when the .jar is compiled.


@Mixin(RuneBlock.class)
public class RuneBlockMixin implements IWrenchable {

    @Inject(method = "use", at = @At("HEAD"), cancellable = true, remap = false)
    public void useWrench(BlockState state, Level worldIn, BlockPos pos, Player player, InteractionHand handIn, BlockHitResult hit, CallbackInfoReturnable<InteractionResult> cir) {
        ItemStack stack = player.getItemInHand(handIn);
        worldIn.playSound(null, pos.getX(), pos.getY(), pos.getZ(), SoundEvents.BAMBOO_HIT, SoundSource.BLOCKS, 0.25f, 1.0f);
        if (stack.getItem() instanceof RunicSpanner) {
            UseOnContext context = new UseOnContext(player, handIn, hit);
            InteractionResult result = onWrenched(state, context);
            cir.setReturnValue(result);
            cir.cancel();
        }
    }

    @Inject(method = "tick", at = @At("HEAD"), remap = false)
    public void testThing(BlockState state, ServerLevel worldIn, BlockPos pos, RandomSource rand, CallbackInfo ci) {
        worldIn.playSound(null, pos.getX(), pos.getY(), pos.getZ(), SoundEvents.BAMBOO_HIT, SoundSource.BLOCKS, 0.25f, 1.0f);
    }
   ...

This test part I added for tick is not even working, so it's as if the mixin is just not loading at all. But I do see it in the final jar, alongside the other mixins 🤔

radiant depot
#

is the refmap set in the mod files?

hallow owl
#

It just looks like this?

{
  "mappings": {},
  "data": {}
}
#

That seems to work for all the other mixins

radiant depot
#

in the modid.mixins
for example
"refmap": "ars_nouveau.refmap.json",

#

if it's empty it's likely because you don't have anything to be remapped

#

the other mixins work or no mixin work at all?

#

if you override a vanilla method, remap should be true (it is by default)

hallow owl
#

ohhhh that's probably what i missed then! let me try that

radiant depot
#

if you override another mod, it should be false since there is no remapping needed

#

i dunno if the remap is a bit legacy thing for neo, but forge surely still need

#

neo work on deobf code, while forge has it obfuscated

#

the nice thing about it is that in theory in neo the crash reports shouldn't have the methods written as Item.af3455n()

hallow owl
#

That did the trick

#

That does sound nice. I'm half looking forward and half dreading the conversion to neoforge haha

radiant depot
#

theorically Create will do most of the dirty work

#

and you will have to adjust to them

#

updated the example addon to act as a small port guide btw

#

uses MDG instead of NG, i prefer it tbh

hallow owl
#

Thanks a lot, I bookmarked it

hallow owl
#

i'm making another mixin for being able to modify the cooldown of relays, though i'm starting to wonder if this is a good idea or if i'm just doing it wrong

@Mixin(RelayTile.class)
public class RelayTileMixin implements IRelayTileModifier {
    @Shadow
    private BlockPos fromPos;
    @Shadow
    private BlockPos toPos;
    @Shadow
    public boolean disabled;

    private static final Field LEVEL_FIELD;
    private static final Field POSITION_FIELD;

    static {
        try {
            LEVEL_FIELD = BlockEntity.class.getDeclaredField("level");
            POSITION_FIELD = BlockEntity.class.getDeclaredField("worldPosition");

            LEVEL_FIELD.setAccessible(true);
            POSITION_FIELD.setAccessible(true);
        } catch (NoSuchFieldException e) {
            throw new RuntimeException("Failed to access BlockEntity fields via reflection", e);
        }
    }

I have to override the entire tick function because the cooldown check is hardcoded within it, and that function also needs BlockEntity fields like level and worldPosition.
Maybe for 1.21 I can make a PR to Ars Nouveau to encapsulate the cooldown check into its own function, but I think for 1.20 there's not much point right now.

#

Ohhh I can target the specific line to override with INVOKE. Mixins are crazy...

radiant depot
#

alternative to access the methods of the superclass that are not overridden in the target is to make the mixin abstract and extend the superclass of the target

#

since level() and worldposition() methods are there

#

but you may have in the mixin itself the be entity to call it

hallow owl
#

I found I could do it with Redirect instead like this, no need for the reflection

    @Redirect(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Level;getGameTime()J"), remap = false)
    private long redirectGameTime(Level level) {
        if(level.getGameTime() % 10 == 0) {
            return 20;
        }
        return 1;
    }
radiant depot
#

with mixins on the battlefield you're very unlikely to resort to reflections

mossy hollow
hallow owl
#

I pray no one else will modify that then, the alternative is rather nasty

mossy hollow
#

I'd recommend wrap operation instead

#

From mixin extras

radiant depot
#

yeah Mex basically adds the alternatives to redirect that stacks with other's in a way that doesn't conflict

#

it's bundled in ars and in neoforge

#

you just need to add the lines to use it in your env in 1.20 i believe (1.21 has it by default)

hallow owl
#

Nice, wrap operation works. I already had it in my build properties actually!

rocky grail
#

portable ritual brazier is working :D

#

need model and textures though so its not seeing the light of day

mossy hollow
rocky grail
#

shit ton of mixins

mossy hollow
#

Oof

rocky grail
#

need to refactor it a bit to store uuid

#

bigger refactor than expected because the client doesnt have a GameProfileCache

radiant depot
#

umh? the gameprofiles seemed cached to me while experimenting with allies names

#

new names take a bit to be recognized but existing ones are fast fetched

rocky grail
#

how are you storing it?

#

the only instance of GameProfileCache im seeing is in MinecraftServer

#

maybe im blind

#

i could create my own of course but that sounds like a bad idea

radiant depot
#

I use the skull tile code

rocky grail
#

ah yeah i think thatd work

#

is there a way to change the username and uuid in dev env

#

dont think "Dev" with uuid 380df991-f603-344c-a090-369bad2a924a is real

radiant depot
#

There would be a launch argument

#

programArguments.addAll '--username', secrets.getProperty("username") ?: 'Dev', secrets.getProperty("uuid") ? '--uuid' : '', secrets.getProperty("uuid") ?: ''

In the client block you can add this

#

Replace the secrets with the literals or add a secret file

rocky grail
#

tyvm

#

im just gonna default the uuid to the real uuid of Dev

radiant depot
#

I could add that block to ars so we can test diff users

rocky grail
#

unfortunately for me that doesnt work because i use mdg lol

radiant depot
#

It's still kinda fitting for the PR

rocky grail
#

ill just test on a random instance

radiant depot
#

Just look at the 1.21 branch instead of 1.20?

rocky grail
#

huh, then idk why it wasnt working

#

i adapted it to that

radiant depot
#

They should be using mdg

rocky grail
#

yippee

neat mango
#

What would be a good way to check if the entity collided with a block for the first time

zealous zenith
#

first time ever?

neat mango
# zealous zenith first time ever?

right now I am using entityInside() triggers every tick the player is colliding with the block. I want it to trigger only the first time it collides with the block

#

if the player steps out and then steps back in, it should work

radiant depot
#

is the block yours?

#

cache the entity's id or something and remove stale?

neat mango
#

Yeah its mine

neat mango
radiant depot
#

ah wait, is it for item entities?

neat mango
#

player

#

#off-topic message

#

trying to optimize the system when the player walks through the portal

radiant depot
#

seems a tile entity, so yeah you can set a timer easily

neat mango
#

but what if the player is stubborn and doesnt move out of the portal lol

radiant depot
#

the entityInside would keep resetting the timer?

#

you just need the list miss to happen as a trigger

#

if the entity's uuid is already in the list you simply retweak the value

#

Map<uuid, timer>
if !(map contains) -> do your thing once, then in any case map.put(uuid, maxtimer)
then in the be's tick for each entry of the map you tick down

rocky grail
#

for the first time possibly ever, another one of my mods has overtaken NaNny in daily downloads

#

unification popping off

radiant depot
#

AllTheMoney

rocky grail
#

not actually in ATM unfortuantely :p

#

it did get into craftoria though

#

thats the main bump for sure

#

NaNny i think is still being carried by RAD2 which is 1.16

#

which is insane to me

pallid rapids
#

RAD2 has a long tail, apparently

hallow owl
mossy hollow
#

What are you injecting into?

#

Can you send the full mixin?

#

also, make sure you jarjar mixin extras

#
dependencies {
    compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:0.4.1"))
    implementation(jarJar("io.github.llamalad7:mixinextras-forge:0.4.1")) {
        jarJar.ranged(it, "[0.4.1,)")
    }
}
radiant depot
zealous zenith
#

isnt there a way to have ars provide it?

#

something with transitive flag?

radiant depot
#

I didn't see a download so the lib was probably pulled

#

But wasn't added to compile classpath

rocky grail
#

gonna be on vacation for the next week, hope no one breaks my addons :p

shadow helm
#

Have a great vacation!

shadow helm
#

Holy.
Big update Senate, nice!

arctic bronze
neat mango
#

you should post some images :)

arctic bronze
arctic bronze
#

added 😄

zealous saffron
#

I know the mysterious mages are floating. But I love the idea of them being giants

arctic bronze
pallid rapids
#

they might be giants

neat mango
#

the first armor is so freaking cool! I love it!

radiant depot
#

luckily no overlap with my armor concepts

neat mango
#

whare you doing with armor

#

is the plan still to have 4x3 distinct sets ?

radiant depot
#

still no work on it, worked on the biomes in this winter break

neat mango
#

but will there be 12 sets ?

radiant depot
#

pretty sure will end up in commission them because they're probably not a simple design to pull

#

yeah...

neat mango
#

wasnt goo supposed to redo how sorcerer and battlemage armor look for base ars

#

because most people just used arcanist anyways because wizard hat cool

radiant depot
#

idk but a small restyle is likely needed

#

the battlemage could be actually leveraged in its semplicity to use a vanilla armor style

#

so it would be compatible with trims

#

but for sorcerer it surely won't go in that direction

radiant depot
neat mango
#

i dont think it will be enough for people to consider it though

radiant depot
#

the elemental armors would strife away from base design a lot unless the artist manage to keep an ars vibe to it, i barely manage to imagine a good way to fit it in mc style

neat mango
#

it needs some sort of ability or mechanic. say battlemage had some sort of extra magic shield

radiant depot
#

at least the heavy ones, the light ones should be easier

neat mango
#

I think you should not make 12 sets and stick with the current 4

#

so you cant be arcanist and elemental mage at the same time

radiant depot
#

but you'd be a glass cannon, a balanced or a warden of that element

neat mango
#

shouldnt that be tied to the mastery system

radiant depot
#

elemental medium is basically arcanist with an hue slapped on it on hurry and i didn't got around redesigning the details because i planned to make the other variants at some point

#

and ok, i'll keep them with very minimal changes because they're iconic

#

but since hexblades i want to make four cool sets for the elements, which would be the heavy variants

neat mango
#

if it were me, I would have made the elemental types be specializations on the same level as the existing 3 and add a gimmick to all of them. like battlemage get shields, pyro can have innate heat

radiant depot
#

it's more of a need of art cool, not a gameplay need

neat mango
#

I understand that lol

#

I would like to get some things commissioned myself but cant

zealous saffron
#

My vote was for the sorcerer to switch from a collar/down hood to a circlet. And have the circlet be changeable with trims

arctic bronze
unreal summit
#

Between Jarva’s ATAG, this update to Plus, and the revamp to Elemental armors, I think I might go ahead and kill the Ars Elemancy project.

mossy hollow
#

Maybe we can work on integrating some of the Elemancy ideas into ATAG

unreal summit
#

I would be okay with that. I like the idea of dual element specialists, and I would really like to see dual foci. (I like the idea of being a storm mage - i.e. Tempestmancer)

#

Might be best if I can just focus on artwork/modeling anyway since Qther has been doing most of the heavy lifting with coding anyway.

#

Plus, writing the book will be eating most of my time right now anyway.

neat mango
arctic bronze
#

Would someone be able to help me with smth

#

It always worked fine in my test enviroment

unreal summit
# neat mango why though? dual specialization seems cool

Because I feel like it’s going to be overshadowed with all the other armor options getting added, and I’m running into a wall as is with further development due to my inexperience with coding.

It just feels like my time and effort would be better spent in other areas that aren’t already being covered: expanding on creatures by remaking Fauna for 1.21.1, working on better models for the existing content, and I would like to get a good Ars-centric modpack “on the market”.

And I want to get the D&D book done in a reasonable amount of time as well.

arctic bronze
#

but I noticed that when I started my server I got:

19.01 02:37:46 [Server] main/ERROR Entity adamsarsplus:summoned_skeleton_m has no attributes
For every entity

Would someone know why this would be the case?

#

Seems to have trouble registering the entity attributes, but it always worked in the dev enviroment

arctic bronze
#

pls

neat mango
#

how are you registering the entity attributes?

arctic bronze
#
    public static class RegistrationHandler {

        @SubscribeEvent
        public static void registerEntityAttributes(final EntityAttributeCreationEvent event) {
            event.put(AdamsModEntities.RYAN_ENTITY.get(), RyanEntity.createAttributes().build());
            event.put(AdamsModEntities.CADE_ENTITY.get(), CadeEntity.createAttributes().build());
            event.put(AdamsModEntities.NICK_ENTITY.get(), NickEntity.createAttributes().build());
            event.put(AdamsModEntities.CAM_ENTITY.get(), CamEntity.createAttributes().build());
            event.put(AdamsModEntities.MATT_ENTITY.get(), MattEntity.createAttributes().build());
            event.put(AdamsModEntities.ADAM_ENTITY.get(), AdamEntity.createAttributes().build());
            event.put(AdamsModEntities.MAGE_ENTITY.get(), MysteriousMageEntity.createAttributes().build());
        }
    }``` This inside my mod entities class
neat mango
#

Yeah nothing seems wrong in them

arctic bronze
#

Just checked the crash report and it may be smth else

#

I changed where the the attributes were supplied and I didn't get the errors. Looks like the animations were the issue?

#

Not sure where to go from here

neat mango
#

check the class

#

ModAnimationsDefinition

arctic bronze
#

Never had any issues with it on me or my friends pc

#

For some reason it's different on a server

#

says it couldn't initialize the class. Is there something I have to do on setup?

neat mango
#

Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NoClassDefFoundError: net/minecraft/client/animation/AnimationDefinition$Builder [in thread "Server thread"]

#

you are trying to load the animation on the server

#

that class is client only

arctic bronze
#

hmmm k

arctic bronze
#

@neat mango I love you. TYSM I don't know how long that would've taken without you

neat mango
arctic bronze
unreal summit
# arctic bronze <:tears:1268715071589322784>

No crying. Chonky is looking into my remaining issues and may get it working yet.

If he can get me past the current hurdles, all that is left is the dual/quad bangle artwork and recipes and it will be good to go. And then I can focus on new textures for the armor models.

I’m not going to just destroy the work already done regardless.

unreal summit
#

In the meantime, I need a good name for the modpack I’m making

hallow owl
#

Is there a common cause for a Block having the 'wrong' block entity?
I tried for quite a while now, but I don't see what I'm missing... I can see that the block's returning the right object:

    @Override
    public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
        var tile = new PreciseRelayTile(pos, state);
        return tile;
    }

But it's still showing the regular Relay Tile here in game after I try to replace it:

    public void handleWrenching(Level world, BlockPos pos, Player player) {
        if (!world.isClientSide) {
            BlockState oldState = world.getBlockState(pos);
            BlockEntity oldBlockEntity = world.getBlockEntity(pos);

            CompoundTag oldNBT = oldBlockEntity != null ? oldBlockEntity.saveWithoutMetadata() : null;

            PreciseRelay newBlock = BlockRegistry.PRECISE_RELAY.get();
            BlockState newState = newBlock.defaultBlockState();
            newState = copyProperties(oldState, newState);

            BlockEntity newBlockEntity = new PreciseRelayTile(pos, newState);
            world.destroyBlock(pos, false);
            world.removeBlockEntity(pos);

            world.setBlock(pos, newState, Block.UPDATE_ALL);
            world.setBlockEntity(newBlockEntity);

            if (oldNBT != null) {
                newBlockEntity.load(oldNBT);
            }

            newBlockEntity.setChanged();
        }
    }

I can see that the block is indeed an ars_technica:precise_relay but if I get the data of it, it says ars_nouveau:relay for it's id, so I assume it didn't replace properly?

radiant depot
#

Any chance the constructor of the tile used is wrong?

#

And it's using super of relay that uses relay's block entity type

hallow owl
#

You got exactly what the problem was, thanks so much again Alex!! I should buy you a coffee some time...

arctic bronze
#

Caused by: java.lang.ClassCastException: class com.adamsmods.adamsarsplus.item.RegularItems cannot be cast to class net.minecraft.world.item.crafting.Ingredient (com.adamsmods.adamsarsplus.item.RegularItems is in module [email protected] of loader 'TRANSFORMER' @1015a4b9; net.minecraft.world.item.crafting.Ingredient is in module [email protected] of loader 'TRANSFORMER' @1015a4b9)

Ran into this error when I try and put items from my mod into an anvil in the repair ingredient slot. Any idea what's going on here?

#

RegularItems extends ModItem

zealous zenith
#

you are trying to cast it to an ingredient

#

can you post the code

arctic bronze
#

import com.hollingsworth.arsnouveau.common.items.ModItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;

//credits for code go to: https://github.com/dkmk100/ArsOmega/blob/37c9ba1d9c76ccde893ca12a8987bf4bdc9e4ffa/src/main/java/com/dkmk100/arsomega/items/BasicItem.java
public class RegularItems extends ModItem {
    boolean showEnch = false;
    String name;

    public RegularItems(Properties p) {
        super(p);
    }

    public RegularItems(Properties p, boolean showEnch){
        super(p);
        this.showEnch = showEnch;
    }
    @Override
    public boolean isFoil(ItemStack s){
        if(showEnch){return true;}else{return super.isFoil(s);}
    }
}```
#

RegularItem Class

zealous zenith
#

where are you casting to an ingredient?>

arctic bronze
#

🤷‍♂️

zealous zenith
#

yes

#

use Ingredient.of

#

also stop casting!

#

this is java not a spellbook

arctic bronze
#

speedkuna I know not what I do

rocky grail
#

casting is the wrong tool for most scenarios

#

main exceptions are when working with mixins or erased generic types

#

if youre doing instanceof you can put a name java if (level instanceof ServerLevel serverLevel) { // ... }

#

safer way to do it

ashen grail
#

casting is perfectly fine for something that you know extends a given class but if it's ambiguous then yes, you're better off with instanceof pattern variables

arctic bronze
zealous zenith
#

it just means an entity caused an error, but the real error is in the stacktrace

#
java.lang.NoSuchMethodError: 'void com.hollingsworth.arsnouveau.common.spell.effect.EffectKnockback.knockback(net.minecraft.world.entity.Entity, net.minecraft.world.entity.LivingEntity, float)'
#

mismatching version with ars nouveau

arctic bronze
#

ahhh

mossy hollow
#

@radiant depot are you planning on updating Eidolon? Or is it abandoned now?

radiant depot
#

yes, even talked about it a yesterday

mossy hollow
#

Ah I didn't see

#

Can you ping me when it's updated? I have some interested modpack makers

radiant depot
#

I need to somehow pull a last update for 1.20 then i can think of doing a sprint port

radiant depot
#

#general-and-help message

mossy hollow
#

Have let them know, it's for an ATM pack

rocky grail
#

has anyone ported their addon to new docs yet?

#

need a reference lol - especially if gradle stuff changed

#

im not seeing a way to even add my own docs without mixins tbh

#

PacketInitDocs#onClientReceived calls Documentation#initOnWorldReload which isnt extensible afaict

#

ah im supposed to use the doc events

#

or am i

#

it doesnt seem like i get much access to anything in those events

#

looks like alex has done it in elem

#

will refer to that

zealous zenith
#

there is an event that is fired

rocky grail
#

Cannot invoke "org.apache.lucene.ars_nouveau.search.IndexSearcher.search(org.apache.lucene.ars_nouveau.search.Query, int)" because "com.hollingsworth.arsnouveau.api.documentation.search.Search.searcher" is null thonk

#

might be my fault

#

think the NPEs im causing stop the search from initializing

rocky grail
#

id like to be able to add search tags with a higher priority
my use case is wanting my portable brazier relay to show up if you search Ritual and also before all the tablets

#

right now i can add the search tag, but the portable brazier relay ends up in the middle of the tablets

#

using withSortNum doesnt seem to help much

#

its nothing major so ill release it in this state but it would be nice to have

zealous zenith
#

Search uses the lucene weighting so sortnum won’t apply there

radiant depot
#

Elemental have docs on GitHub

rocky grail
#

now controle does too

radiant depot
#

heads up on instrumentum port, the apparatus datagen is borked because it's not doing the save that the super call would do

rocky grail
#

does anyone know how to draw lines that dont get occluded by blocks

#

trying to my stuff (prism + linkage) show an outline of its target through blocks

#

ive stolen PantomimeRenderer's box drawing but that gets occluded

#

currently have

public static void renderBlockOutline(PoseStack poseStack, BlockPos pos) {
    var mc = Minecraft.getInstance();
    var level = mc.level;
    if (level == null) {
        return;
    }
    var state = mc.level.getBlockState(pos);
    var shape = state.getShape(level, pos);

    poseStack.pushPose();
    Vec3 projectedView = Minecraft.getInstance().gameRenderer.getMainCamera().getPosition();
    poseStack.translate(-projectedView.x, -projectedView.y, -projectedView.z);
    poseStack.translate(pos.getX(), pos.getY(), pos.getZ());

    RenderType lineType = RenderType.lines();
    OutlineBufferSource buffer = mc.renderBuffers().outlineBufferSource();
    VertexConsumer lines = buffer.getBuffer(lineType);
    var color = ParticleColor.defaultParticleColor();
    LevelRenderer.renderVoxelShape(poseStack, lines, shape, 0, 0, 0, color.getRed(), color.getGreen(), color.getBlue(), 1.0F, false);

    poseStack.popPose();
}
neat mango
#

you need to draw them in a different stage. preferrably last

#

use RenderLevelStageEvent and ensure the stage is after something like TRIPWIRE_HOOK

rocky grail
#

yeah this is TRIPWIRE_HOOK already

#

or rather AFTER_TRIPWIRE_BLOCKS

#

also tried AFTER_LEVEL but that breaks it

neat mango
#

Yeah after

#

AFTER_LEVEL is too early

#

use this as reference

#

this is what draws the orange outline around EIO travel anchors

#

if you want models, its right about it

rocky grail
#

fyi this is what im getting atm

#

with AFTER_TRIPWIRE_BLOCKS

neat mango
#

that doesnt look correct

rocky grail
#
    @SubscribeEvent(priority = EventPriority.LOWEST)
    public static void onRender(RenderLevelStageEvent event) {
        if (event.getStage() == RenderLevelStageEvent.Stage.AFTER_TRIPWIRE_BLOCKS) {
            for (var task : QUEUE) {
                task.fn.accept(event.getPoseStack());
            }
        }
    }
#

meanwhile enderio has

@SubscribeEvent
public static void renderLevel(RenderLevelStageEvent event) {
    ClientLevel level = Minecraft.getInstance().level;
    LocalPlayer player = Minecraft.getInstance().player;
    if (level == null || player == null || event.getStage() != RenderLevelStageEvent.Stage.AFTER_TRIPWIRE_BLOCKS) {
        return;
    }
    //...
neat mango
#

Yeah

rocky grail
#

seems roughly equal to me

neat mango
#

It is yeah

#

oh vertexconsumer buffer

#

we dont use the regular outline buffer

neat mango
#

show me your whole code

rocky grail
#

ill push it to a branch

rocky grail
#

i assume you mean Minecraft.getInstance().renderBuffers().bufferSource().endBatch(); but that doesnt seem to fix it

#

ive also tried using Tesselator

#

that just didnt work at all

#

thanks for the help btw

#

pushed the new stuff too

#

think its a bit more minimized but still have no idea why it isnt working

neat mango
#

you are using minecraft's outline buffer. if you look at our code, we dont do that

rocky grail
#

eio's buffer is just doing

    public VertexConsumer getBuffer(@NotNull RenderType type) {
        return Minecraft.getInstance().renderBuffers().bufferSource().getBuffer(OutlineRenderType.get(type));
    }
``` though
#

seems equal

#

gosh rendering is suffering

neat mango
#

endBatch is for the font and models stuff

#

I havent looked at this code for a year now and I am feeling a bit lost. was a hard day

#

let me go ask someone

rocky grail
#

no worries i appreciate the help

#

im definitely closer than before

neat mango
#

conduit facades also use a similar system. maybe check that

#

that might be a bit more complex

#

neocord has a lot of people who can help you with rendering if you ask

rocky grail
#

i searched the history and the only success ive seen was due to a bug lmao

#

#1116211620415283201 message

#

ive also tried replicating it and it doesnt work

#

tesselator idea from someone else was also tried and it just did nothing at all

rocky grail
#

got tesselator working by copying bumblezone's homework

rocky grail
#

got it fully working now

flat gulch
#

how do people typically draw new items?

#

I guess i don't fully understand how the textures work for mc, unless adding modded blocks uses a different system to apply styling

zealous zenith
#

It works the same as a texture pack does for the most part

unreal summit
#

Well Fauna has some spawning issues, but it’s up and running in 1.21.1.

Artillery will need some fixes for recipe types to get it working again

unreal summit
#

Stumped why Artillery recipes aren’t working now

#

Also, how do I make a datapack to disable mob spawning of a particular mob?

mossy hollow
unreal summit
radiant depot
#

what recipes are those?

unreal summit
#

The turret crates and runestones for Artillery

radiant depot
#

No I mean the recipe type, also were those datagenned or handmade?

#

Cause probably the small format change in the result breaks the handmade

#

While datagenned just need a rerun and it's a self fix

unreal summit
#

They are handmade - some crafting table, some enchanting apparatus. And I’ve gone in and manually edited them, but clearly have missed something.

radiant depot
#

Compare to Elemental/Additions changes?

#

I clearly remember the change on result

unreal summit
#

Swapped the order of some stuff around and it seems to be working.

unreal summit
#

Does Google know what it is talking about here, or is it spouting gibberish?

zealous saffron
#

They usually show their source at the bottom don't they?

unreal summit
pallid rapids
#

I don't think domobspawning lets you specify mobs though?

#

that's just a bool

#

because otherwise you could just run that command on the console

#

pretty sure it's hallucinating

unreal summit
#

I'm looking to disable the Lost souls from Forbidden and Arcanus from spawning for the Expeditions pack

pallid rapids
#

that's just the vanilla gamerule that controls whether any mobs can spawn at all

#

plus I think the datapack would have to have something to tell it to run that command

unreal summit
#

and there isnt a config option to turn them down or off, so i will need a datapack and dont know the formatting

radiant depot
#

They are likely adding it using a biome modifier

unreal summit
#

they spawn EVERYWHERE

radiant depot
#

So probably have to override theirs

#

Another option is using InControl

#

It's a mod to adjust mob spawning

unreal summit
#

InControl?

#

not seeing it on CurseForge

radiant depot
unreal summit
#

ah...space between the words...curseforge search isnt very user friendly in that regard

pallid rapids
#

curseforge search REALLY isn't friendly lol

unreal summit
#

time to tinker with mob spawns...

mossy hollow
#

Using a datapack

unreal summit
#

For some reason I was under the impression that they were closed source. Think my brain was mixing up their “all rights reserved” licensing with being closed source.

unreal summit
#

Okay, so I added KubeJS to the pack, then replicated the forbidden_Arcanus code that supposedly disables the lost souls, and…nothing. They are still spawning everywhere.

What am I missing?

rocky grail
#

anyone know of a good way to check block if a block is visible to the player? doing some more performance optimization stuff

#

8 raycasts would work but would probably be slower than just rendering the block

#

this isnt for every block - for now im looking at mob jars

#

i could do a raycast per tick i suppose

rocky grail
#

that is what i did

mossy hollow
#

Could always check how block entity culling works in sodium etc.

rocky grail
#

test server was using embeddium and it was not culling

#

also tried sodium

coarse scroll
#

hello! Im trying to get higher tier thread slots on allthemodium arcanist gear or increasing the base stats of the archmage gear from adams ars plus but cant seem to figure out anyway of changing those values

mossy hollow
#

The ATM+ Arcanist Gear scales up with each tier, it's not possible to change it from a config.

severe crystal
#

hmm

severe crystal
mossy hollow
severe crystal
#

ATAG?

mossy hollow
#

All The Arcanist Gear

severe crystal
#

ohhh

severe crystal
halcyon sphinx
#

Yo. I'm making a plugin for mcreator that allow users to code in mana use into their items and stuff

#

I'm trying to sync changes made by calling methods such as setmana, addmana, and remove mana

#

But I'm not sure what to do since I'm calling these from the api inside ars nouvea

#

Can anyone here help?

#

(Worth noting to any person not aware. Mcreator isn't a minecraft server or mod it's a mod generator that allows lesser experienced modders mod java. It works similar to visual coding or block coding)

#

leme send the tester code real quick

#

im coding this for 1.20.1 forge

#

again my problem is none of the changes im making sync to the game, the second anything happens to the user all the changes revert back as if no change was made

#

am i missing something here?

#

(it worth noting i have already made the api that imports ars nouvea into mcreator)

#

example

neat mango
#

you need to sync it

halcyon sphinx
#

how

#

iv been trying to like do that lol

neat mango
halcyon sphinx
#

let me take a look at the soruce code hold please

neat mango
#

but you need it to call it on the server not from client

halcyon sphinx
#

ah ok

neat mango
#

cant help you much. we dont really support mcreator here.

halcyon sphinx
#

yea i know that

#

thats why im making support for it lul

#

all i gota do is code it manually then i can put into procedures and stuff, its just like a regular IDE right now

neat mango
#

might as well just use a regular IDE

halcyon sphinx
#

yea but thats not so much of an option for people who can't use the ide version of it (just another way of saying they don't want to learn propper minecraft coding)

#

mcreator just breaks down the code into a simpler way for people to understand

neat mango
#

it also breaks down

halcyon sphinx
#

???

#

so this is the side that most people who don't want to actually coding will see

#

then the coding is what you can also use if you just want to use mcreator to auto generate stuff for you

#

which is very useful when you don't have the time or brain power for regular coding