Мгновенное убийство моба

Версия Minecraft
1.7.10

Sainthozier

Стрелочник
627
11
372
Всем привет.

Как лучше всего убить моба с 1-го удара, при этом не сетить предмету урон овер миллион?
Пробовал так:
Java:
@Override
    public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase player) {
        if (player.worldObj.isRemote) {
            return false;
        }
        if (target.canAttackWithItem() && !target.hitByEntity(player) && !target.equals(player)) {
            target.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer) player), target.getHealth());
            stack.damageItem(1, player);
            return true;
        }
        return false;
    }
Но ничего не получилось. Так же пробовал написать тоже самое в onLeftClickEntity, вроде бы работает, но айтем не ломается. Прочка доходит до 0, удар и прочка снова фулловая.
Ещё пробовал написать target.setHealth(0.0F), но тогда дропа нет.

Подскажите, пожалуйста, как правильнее всего убить моба с 1-го удара )
 
Решение
Попробуй вызвать EntityLivingBase#onDeath(), этот метод вызывается при смерти и спавнит дроп.
-----
А по поводу мгновенного убийства - в 1.12 команда /kill работает так
this.attackEntityFrom(DamageSource.OUT_OF_WORLD, Float.MAX_VALUE);. Просто и эффективно.
Попробуй просто при ударе entity.setDead да и все
 
Не подходит этот метод, к сожалению. В игре очень странное поведение, моб не умирает, а тупо исчезает без всяких анимаций смерти и дроп не даёт )

UPD.
Проблема была решена заменой target.getHealth() на target.getMaxHealth() в изначальном варианте. Всем спасибо за предложенную помощь )
 
Последнее редактирование:
Дамаг разный бывает. Глянь в DamageSource, тебе нужен с флагами isUnblockable (setDamageBypassesArmor()) и damageIsAbsolute (setDamageIsAbsolute()), такой не режется ничем. Из ванильных подходит только дамаг от голода, но можно и свой сделать.
 
Последнее редактирование:
Дамаг разный бывает. Глянь в DamageSource, тебе нужен с флагами isUnblockable (setDamageBypassesArmor()) и damageIsAbsolute (setDamageIsAbsolute()), такой не режется ничем. Из ванильных подходит только дамаг от голода, но можно и свой сделать.
Режется броней из DraconicEvolution
 
Если что, то на игроков этот килл не должен распространяться. Только на мобов.
По поводу setDead() отписал выше, сейчас вижу выход из ситуации с помощью setHealth(0.0F) и выдачей дропа вручную. Но не знаю как именно выдавать(ивент юзать не хочу)
 
Попробуй вызвать EntityLivingBase#onDeath(), этот метод вызывается при смерти и спавнит дроп.
-----
А по поводу мгновенного убийства - в 1.12 команда /kill работает так
this.attackEntityFrom(DamageSource.OUT_OF_WORLD, Float.MAX_VALUE);. Просто и эффективно.
 
Последнее редактирование:
Назад
Сверху