Skip to content

Commit 07a4dc7

Browse files
committed
make PotionEffectType Taggable
1 parent fa3e0d5 commit 07a4dc7

2 files changed

Lines changed: 28 additions & 1 deletion

File tree

src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/effect/MobEffectMixin_API.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,25 @@
2525
package org.spongepowered.common.mixin.api.minecraft.world.effect;
2626

2727
import 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;
2832
import net.minecraft.world.effect.MobEffect;
2933
import 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;
3037
import org.spongepowered.asm.mixin.Implements;
3138
import org.spongepowered.asm.mixin.Interface;
3239
import org.spongepowered.asm.mixin.Interface.Remap;
3340
import org.spongepowered.asm.mixin.Mixin;
3441
import org.spongepowered.asm.mixin.Shadow;
42+
import org.spongepowered.common.SpongeCommon;
3543
import 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))
3949
public 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

Comments
 (0)