@@ -609,14 +609,26 @@ LL_TYPE_INSTANCE_HOOK(
609609) {
610610 IF_LISTENED (EVENT_TYPES ::onEffectAdded) {
611611 if (isServerThread () && isPlayer ()) {
612- if (!CallEvent (
613- EVENT_TYPES ::onEffectAdded,
614- PlayerClass::newPlayer (reinterpret_cast <Player*>(this )),
615- String::newString (MobEffect::mMobEffects ()[effect.mId ]->mComponentName ->getString ()),
616- Number::newNumber (effect.mAmplifier ),
617- Number::newNumber (effect.mDuration ->mValue )
618- )) {
619- return ;
612+ if (getEffect (effect.mId )) {
613+ if (!CallEvent (
614+ EVENT_TYPES ::onEffectUpdated,
615+ PlayerClass::newPlayer (reinterpret_cast <Player*>(this )),
616+ String::newString (MobEffect::mMobEffects ()[effect.mId ]->mComponentName ->getString ()),
617+ Number::newNumber (effect.mAmplifier ),
618+ Number::newNumber (effect.mDuration ->mValue )
619+ )) {
620+ return ;
621+ }
622+ } else {
623+ if (!CallEvent (
624+ EVENT_TYPES ::onEffectAdded,
625+ PlayerClass::newPlayer (reinterpret_cast <Player*>(this )),
626+ String::newString (MobEffect::mMobEffects ()[effect.mId ]->mComponentName ->getString ()),
627+ Number::newNumber (effect.mAmplifier ),
628+ Number::newNumber (effect.mDuration ->mValue )
629+ )) {
630+ return ;
631+ }
620632 }
621633 }
622634 }
@@ -701,4 +713,5 @@ void InteractEntityEvent() { static ll::memory::HookRegistrar<InteractEntityHook
701713void AddEffectEvent () { static ll::memory::HookRegistrar<AddEffectHook> reg; }
702714void RemoveEffectEvent () { static ll::memory::HookRegistrar<RemoveEffectHook> reg; }
703715void BlockInteractedEvent () { static ll::memory::HookRegistrar<BlockInteractedHook> reg; }
716+ void EffectUpdateEvent () { AddEffectEvent (); }
704717} // namespace lse::events::player
0 commit comments