Неуязвимость моего моба.1.17.2

Версия Minecraft
1.17.2
API
Forge
Подскажите, как реализовать неуязвимость? Нашел 1 метод в классе Entity прописал к себе, но ничего не получилось.
 
Java:
public class Radiced extends PigZombie implements IAnimatable {

    public static final EntityDataAccessor<Integer> STATE = SynchedEntityData.defineId(Radiced.class, EntityDataSerializers.INT);
    private boolean invulnerable;

    private int lifeTicks = 50;

    private final AnimationFactory factory = new AnimationFactory(this);

    private <E extends IAnimatable> PlayState predicate(AnimationEvent<E> event) {
        event.getController().setAnimation(new AnimationBuilder().addAnimation("lightning", true));
        return PlayState.CONTINUE;
    }
    @Override
    public void registerControllers(AnimationData data) {
        data.addAnimationController(new AnimationController<Radiced>
        this, "controller", 0, this::predicate));
    }

    @Override
    public AnimationFactory getFactory() {
        return this.factory;
    }

    public Radiced(EntityType<? extends PigZombie> p_i48549_1_, Level p_i48549_2_) {
        super(p_i48549_1_, p_i48549_2_);
    }

    public static AttributeSupplier.Builder createAttributes() {
        return Mob.createMobAttributes()
            .add(Attributes.MAX_HEALTH, 1000.0D)
            .add(Attributes.MOVEMENT_SPEED, 0.0D)
            .add(Attributes.ATTACK_DAMAGE, 25.0D)
            .add(Attributes.FOLLOW_RANGE, 45.0D)
            .add(Attributes.SPAWN_REINFORCEMENTS_CHANCE);
    }


    @Override
    public boolean doHurtTarget(Entity entityIn) {
        if (!super.doHurtTarget(entityIn)) {
            return false;
        } else {
        if (entityIn instanceof LivingEntity) {
           ((LivingEntity)entityIn).addEffect(new MobEffectInstance(MobEffects.CONFUSION, 140));
           } return true;
        }
    }

    @Override
    protected void defineSynchedData() {
        super.defineSynchedData();
        this.entityData.define(STATE, 0);
    }

    @Override
    protected void registerGoals() {
        super.registerGoals();
        this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true));
        this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Monster.class, false));
        this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, FlyingMob.class, false));
        this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Animal.class, false));
    }


    public boolean isInvulnerableTo(DamageSource p_20122_) {
        return this.isRemoved() || this.invulnerable && p_20122_ != DamageSource.OUT_OF_WORLD && !p_20122_.isCreativePlayer();
    }

    public boolean isInvulnerable() {
        return this.invulnerable;
    }

    public void setInvulnerable(boolean p_20332_) {
        this.invulnerable = p_20332_;
    }
    @Nullable
    @Override
    protected SoundEvent getHurtSound(@Nonnull DamageSource damageSourceIn) {
        this.playSound(SoundEvents.GHAST_HURT, 0.0F, 0.0F);
        return null;
    }

    @Nullable
    @Override
    protected SoundEvent getDeathSound() {
        this.playSound(SoundEvents.LIGHTNING_BOLT_IMPACT, 7.0F, 1.0F);
        return null;
    }

    @Nullable
    @Override
    protected SoundEvent getAmbientSound() {
        this.playSound(SoundEvents.LIGHTNING_BOLT_THUNDER, 7.0F, 1.0F);
        return null;
    }

    public void tick() {
        super.tick();
            if (--this.lifeTicks < 0) {
                this.remove(RemovalReason.DISCARDED);
            }
    }

    @Override
    public boolean isBaby() {
        return false;
    }

    @Override
    public boolean isPushable() {
        return false;
    }

    @Override
    protected void pushEntities() {}
}
вот оно.
 
private boolean invulnerable;
Зачем ты скопировал это из класса Entity? Делать это бессмысленно и это ничего не дает. Если нужна неуязвимость, тебе нужно либо вызвать setInvulnerable(true) из конструктора, либо переопределить isInvulnerable и isInvulnerableTo, чтобы они всегда возвращали true. Разница в том, что первая опция позволяет игроку переопределить ее, например, с помощью команды data.
 
Зачем ты скопировал это из класса Entity? Делать это бессмысленно и это ничего не дает. Если нужна неуязвимость, тебе нужно либо вызвать setInvulnerable(true) из конструктора, либо переопределить isInvulnerable и isInvulnerableTo, чтобы они всегда возвращали true. Разница в том, что первая опция позволяет игроку переопределить ее, например, с помощью команды data.
Точно, Я даже забыл, что могу так сделать, Спасибо!.
 
Сверху