- Баллы
- 76
Ку!
Сразу к делу: сам слайм не наследуется от EntityMonster, в связи с чем просто поставить ему атрибут на инит нельзя. Потратив аж 5 минут времени нашел метод collide, в нем нашел метод дамага энтити - e(EntityLiving entity).
Такой код представляет а-ля дефолт, что в принципе, совпадает с информацией с википедии.
Спустя некоторое время, я выявил, что приближенное значение можно получить по формуле damage + (damage * 0.75f) + 2, но стоит запомнить, что эта формула дает приближенные значения, как сказано выше. По-факту, она в принципе подстроена под именно возврат 15.0 дамага.
При 7.0 получается урон 8.0, при 15.0 получается 15.0, т.д.
Жду идеи по этому поводу 😉
Сразу к делу: сам слайм не наследуется от EntityMonster, в связи с чем просто поставить ему атрибут на инит нельзя. Потратив аж 5 минут времени нашел метод collide, в нем нашел метод дамага энтити - e(EntityLiving entity).
PHP:
protected void e(EntityLiving entityliving) {
int i = this.getSize();
if(this.hasLineOfSight(entityliving) && this.h(entityliving) < 0.6D * (double)i * 0.6D * (double)i && entityliving.damageEntity(DamageSource.mobAttack(this), (float)this.di())) {
this.a(SoundEffects.gY, 1.0F, (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
this.a(this, entityliving);
}
}
protected int di() {
return this.getSize();
}
Но урон, наносимый игроку, не совпадает с указанным. Я перезаписал метод di() на возвращение числа 15, но получил 8.5.При столкновении наносится урон, равный размеру слизня, кроме маленьких слизней (нулевой размер)
Спустя некоторое время, я выявил, что приближенное значение можно получить по формуле damage + (damage * 0.75f) + 2, но стоит запомнить, что эта формула дает приближенные значения, как сказано выше. По-факту, она в принципе подстроена под именно возврат 15.0 дамага.
При 7.0 получается урон 8.0, при 15.0 получается 15.0, т.д.
Жду идеи по этому поводу 😉