Iron's Spells 'n Spellbooks

Iron's Spells 'n Spellbooks

16M Downloads

[Bug] angel wings spell does not apply when wearing items overriding methods

Linguardium opened this issue ยท 6 comments

commented

Observed behaviour

wear item overriding canElytraFly
IItemExtension default implementation not used. mixin doesnt apply
Cant fly if worn item doesnt allow flying (such as out of power)

Expected behaviour

flight is enabled regardless of equipment

Steps to reproduce

wear item overriding canElytraFly
IItemExtension default implementation not used. mixin doesnt apply
Cant fly if worn item doesnt allow flying (such as out of power)

Server Type

Single Player

Crashlog

No response

Iron's Spells N Spellbooks version

verified issue in current codebase as of 11/11/2024

Forge version

neoforge 1.21.1

Other mods

N/A

Crashlog Check

  • I understand if this is a crashbug and I did not attach a crashlog, this will not be handled
commented

Just to be clear, super in this case is a default interface implementation that doesn't exist. You are indicating that you aren't going to work on an issue with your implementation. It doesn't fall to any other mods. It also is not limited to mods...

commented
commented

if an item overrides canElytraFly without respecting super, then i consider it an issue with them. other mods such as attributelib use this same method and would therefore run into the same issue with this particular mod's armor. thus, this will not be worked on from my end

commented

even though overriding it technically works in their implementation, it is still best practice to respect super, especially since modding is an ecosystem.

for example, if i had an entity with custom damage handling that omitted firing the damage event pipeline, i would be responsible for the fact other mod's logic wouldnt interact with my entity, even though my entity would work as indented in isolation.

commented

If you create an interface with a default implementation of a method, it isn't even best practice to try to call super from classes that implement the method and don't use the default implementation

These aren't child classes. It's an interface and a default implementation

commented

well it could just be fixed by moving the mixin a layer higher so it cannot be overriden