minecraft-src/net/minecraft/world/item/consume_effects/RemoveStatusEffectsConsumeEffect.java
2025-07-04 02:49:36 +03:00

47 lines
1.8 KiB
Java

package net.minecraft.world.item.consume_effects;
import com.mojang.serialization.MapCodec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.Holder;
import net.minecraft.core.HolderSet;
import net.minecraft.core.RegistryCodecs;
import net.minecraft.core.registries.Registries;
import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.codec.ByteBufCodecs;
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.world.effect.MobEffect;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
public record RemoveStatusEffectsConsumeEffect(HolderSet<MobEffect> effects) implements ConsumeEffect {
public static final MapCodec<RemoveStatusEffectsConsumeEffect> CODEC = RecordCodecBuilder.mapCodec(
instance -> instance.group(RegistryCodecs.homogeneousList(Registries.MOB_EFFECT).fieldOf("effects").forGetter(RemoveStatusEffectsConsumeEffect::effects))
.apply(instance, RemoveStatusEffectsConsumeEffect::new)
);
public static final StreamCodec<RegistryFriendlyByteBuf, RemoveStatusEffectsConsumeEffect> STREAM_CODEC = StreamCodec.composite(
ByteBufCodecs.holderSet(Registries.MOB_EFFECT), RemoveStatusEffectsConsumeEffect::effects, RemoveStatusEffectsConsumeEffect::new
);
public RemoveStatusEffectsConsumeEffect(Holder<MobEffect> effects) {
this(HolderSet.direct(effects));
}
@Override
public ConsumeEffect.Type<RemoveStatusEffectsConsumeEffect> getType() {
return ConsumeEffect.Type.REMOVE_EFFECTS;
}
@Override
public boolean apply(Level level, ItemStack stack, LivingEntity entity) {
boolean bl = false;
for (Holder<MobEffect> holder : this.effects) {
if (entity.removeEffect(holder)) {
bl = true;
}
}
return bl;
}
}