Implement anvil fall damage (#5312)

This commit is contained in:
IvanCraft623
2023-03-27 14:17:08 -05:00
committed by GitHub
parent 04197d6b80
commit bea878e9e9
7 changed files with 76 additions and 2 deletions

View File

@ -46,6 +46,7 @@ class EntityDamageEvent extends EntityEvent implements Cancellable{
public const MODIFIER_TOTEM = 8;
public const MODIFIER_WEAPON_ENCHANTMENTS = 9;
public const MODIFIER_PREVIOUS_DAMAGE_COOLDOWN = 10;
public const MODIFIER_ARMOR_HELMET = 11;
public const CAUSE_CONTACT = 0;
public const CAUSE_ENTITY_ATTACK = 1;
@ -63,6 +64,7 @@ class EntityDamageEvent extends EntityEvent implements Cancellable{
public const CAUSE_MAGIC = 13;
public const CAUSE_CUSTOM = 14;
public const CAUSE_STARVATION = 15;
public const CAUSE_FALLING_BLOCK = 16;
private float $baseDamage;
private float $originalBase;

View File

@ -25,6 +25,7 @@ namespace pocketmine\event\player;
use pocketmine\block\BlockTypeIds;
use pocketmine\entity\Living;
use pocketmine\entity\object\FallingBlock;
use pocketmine\event\entity\EntityDamageByBlockEvent;
use pocketmine\event\entity\EntityDamageByEntityEvent;
use pocketmine\event\entity\EntityDamageEvent;
@ -155,6 +156,19 @@ class PlayerDeathEvent extends EntityDeathEvent{
case EntityDamageEvent::CAUSE_MAGIC:
return KnownTranslationFactory::death_attack_magic($name);
case EntityDamageEvent::CAUSE_FALLING_BLOCK:
if($deathCause instanceof EntityDamageByEntityEvent){
$e = $deathCause->getDamager();
if($e instanceof FallingBlock){
if($e->getBlock()->getTypeId() === BlockTypeIds::ANVIL){
return KnownTranslationFactory::death_attack_anvil($name);
}else{
return KnownTranslationFactory::death_attack_fallingBlock($name);
}
}
}
break;
case EntityDamageEvent::CAUSE_CUSTOM:
break;