Fabric Mod

ArmorEffectsMod

Crée-moi un mode 1.20.1 pour pouvoir, avec un menu ouvrable par une touche (possibilité de la modifier dans les paramètres de mc), combiner des effets d'armure d'un maximum de modes. Par exemple, une armure en népète full enchante avec une armure d'une autre mode qui aurait la capacité si on la porte en entier de faire apparaître des mobes

src/main/java/eu/codexe/armoreffectsmod/effects/MobSpawnEffect.java
package eu.codexe.armoreffectsmod.effects;

import eu.codexe.armoreffectsmod.registry.ArmorEffect;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.mob.ZombieEntity;
import net.minecraft.util.math.BlockPos;

public class MobSpawnEffect extends ArmorEffect {
    private int spawnCounter = 0;

    public MobSpawnEffect() {
        super("mob_spawn_effect", "Mob Spawn");
    }

    @Override
    public void apply(LivingEntity entity) {
        spawnCounter = 0;
    }

    @Override
    public void remove(LivingEntity entity) {
        spawnCounter = 0;
    }

    @Override
    public boolean canStack(ArmorEffect other) {
        return !other.getId().equals("mob_spawn_effect");
    }

    public void tick(LivingEntity wearer) {
        spawnCounter++;
        if (spawnCounter >= 200) {
            spawnCounter = 0;
            BlockPos pos = wearer.getBlockPos().add(
                wearer.getRandom().nextInt(7) - 3,
                0,
                wearer.getRandom().nextInt(7) - 3
            );
            if (wearer.getWorld().getBlockState(pos).getMaterial().isReplaceable()) {
                ZombieEntity zombie = new ZombieEntity(wearer.getWorld());
                zombie.setPos(pos.getX() + 0.5, pos.getY(), pos.getZ() + 0.5);
                wearer.getWorld().spawnEntity(zombie);
            }
        }
    }
}