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

Версия Minecraft
1.7.10

Sainthozier

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

Как лучше всего убить моба с 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);. Просто и эффективно.

Sainthozier

Стрелочник
623
11
369
Не подходит этот метод, к сожалению. В игре очень странное поведение, моб не умирает, а тупо исчезает без всяких анимаций смерти и дроп не даёт )

UPD.
Проблема была решена заменой target.getHealth() на target.getMaxHealth() в изначальном варианте. Всем спасибо за предложенную помощь )
 
Последнее редактирование:
243
28
202
Дамаг разный бывает. Глянь в DamageSource, тебе нужен с флагами isUnblockable (setDamageBypassesArmor()) и damageIsAbsolute (setDamageIsAbsolute()), такой не режется ничем. Из ванильных подходит только дамаг от голода, но можно и свой сделать.
 
Последнее редактирование:
7,099
324
1,510
Дамаг разный бывает. Глянь в DamageSource, тебе нужен с флагами isUnblockable (setDamageBypassesArmor()) и damageIsAbsolute (setDamageIsAbsolute()), такой не режется ничем. Из ванильных подходит только дамаг от голода, но можно и свой сделать.
Режется броней из DraconicEvolution
 

Sainthozier

Стрелочник
623
11
369
Если что, то на игроков этот килл не должен распространяться. Только на мобов.
По поводу setDead() отписал выше, сейчас вижу выход из ситуации с помощью setHealth(0.0F) и выдачей дропа вручную. Но не знаю как именно выдавать(ивент юзать не хочу)
 
243
28
202
Попробуй вызвать EntityLivingBase#onDeath(), этот метод вызывается при смерти и спавнит дроп.
-----
А по поводу мгновенного убийства - в 1.12 команда /kill работает так
this.attackEntityFrom(DamageSource.OUT_OF_WORLD, Float.MAX_VALUE);. Просто и эффективно.
 
Последнее редактирование:
Сверху