2525package org .spongepowered .common .mixin .api .minecraft .world .effect ;
2626
2727import net .kyori .adventure .text .Component ;
28+ import net .minecraft .core .Holder ;
29+ import net .minecraft .core .Registry ;
30+ import net .minecraft .core .registries .Registries ;
31+ import net .minecraft .tags .TagKey ;
2832import net .minecraft .world .effect .MobEffect ;
2933import org .spongepowered .api .effect .potion .PotionEffectType ;
34+ import org .spongepowered .api .registry .DefaultedRegistryType ;
35+ import org .spongepowered .api .registry .RegistryTypes ;
36+ import org .spongepowered .api .tag .Tag ;
3037import org .spongepowered .asm .mixin .Implements ;
3138import org .spongepowered .asm .mixin .Interface ;
3239import org .spongepowered .asm .mixin .Interface .Remap ;
3340import org .spongepowered .asm .mixin .Mixin ;
3441import org .spongepowered .asm .mixin .Shadow ;
42+ import org .spongepowered .common .SpongeCommon ;
3543import org .spongepowered .common .adventure .SpongeAdventure ;
3644
45+ import java .util .Collection ;
46+
3747@ Mixin (MobEffect .class )
3848@ Implements (@ Interface (iface = PotionEffectType .class , prefix = "potionEffectType$" , remap = Remap .NONE ))
3949public abstract class MobEffectMixin_API implements PotionEffectType {
@@ -51,4 +61,21 @@ public abstract class MobEffectMixin_API implements PotionEffectType {
5161 public Component asComponent () {
5262 return SpongeAdventure .asAdventure (this .shadow$getDisplayName ());
5363 }
64+
65+ @ Override
66+ public DefaultedRegistryType <PotionEffectType > registryType () {
67+ return RegistryTypes .POTION_EFFECT_TYPE ;
68+ }
69+
70+ @ Override
71+ public Collection <Tag <PotionEffectType >> tags () {
72+ return this .registryType ().get ().tags ().filter (this ::is ).toList ();
73+ }
74+
75+ @ Override
76+ public boolean is (final Tag <PotionEffectType > tag ) {
77+ final Registry <MobEffect > registry = SpongeCommon .vanillaRegistry (Registries .MOB_EFFECT );
78+ final Holder .Reference <MobEffect > holder = registry .createIntrusiveHolder ((MobEffect ) (Object ) this );
79+ return holder .is (((TagKey <MobEffect >) (Object ) tag ));
80+ }
5481}
0 commit comments