minetest-mods / 3d_armor

Visible player armor & wielded items for minetest
Other
17 stars 39 forks source link

Implements item groups soulbound and cursed #105

Closed kyrahabattoir closed 1 year ago

kyrahabattoir commented 1 year ago

Soulbound armors respawn with their owner. Cursed armors cannot be unequipped by the player. (disabled in creative mode)

fluxionary commented 1 year ago

i like these features. but, i've recently worked on some code that integrated my bones fork w/ 3d_armor. i feel like the new parts of the on_dieplayer code should be exposed somehow, so that i don't have to replicate the new code line-for-line.

BuckarooBanzay commented 1 year ago

i feel like the new parts of the on_dieplayer code should be exposed somehow

Moving the parts to a global armor.on_dieplayer(...) function would be nice i guess

Everything else LGTM :+1:

kyrahabattoir commented 1 year ago

I'll see what I can do! (I don't actually understand what you guys want me to do... haha)

fluxionary commented 1 year ago

I'll see what I can do! (I don't actually understand what you guys want me to do... haha)

basically, when storing armor in bones, the bones mod shouldn't be checking whether the armor is cursed or soulbound or whatnot. i don't have a simple proposal for how to do that though. perhaps such an API can be added in a future PR. if you can't figure it out, don't worry :)

kyrahabattoir commented 1 year ago

Yeah this is how I understood it, like... Ideally I suppose you could have a method on the 3d_armor that can be called by bones on death that will clean up the armors that shall be dropped and return it as an itemstack list to bones.

The problem with this approach is that if bones isn't present, it won't be called.

Alternatively, it could do the cleanup regardless and store an itemstack list for bones to collect "at its leasure" but then it's like... do we hold this data indefinitely in the event that it never gets collected?

BuckarooBanzay commented 1 year ago

ok then, i guess this is good enough :tm: :)

perhaps such an API can be added in a future PR

:+1: