Files

96 lines
4.4 KiB
Go
Raw Permalink Normal View History

2026-07-09 08:33:57 +08:00
package entity
import (
"github.com/df-mc/dragonfly/server/item"
"github.com/df-mc/dragonfly/server/item/enchantment"
"github.com/df-mc/dragonfly/server/world"
)
type (
// AttackDamageSource is used for damage caused by other entities, for
// example when a player attacks another player.
AttackDamageSource struct {
// Attacker holds the attacking entity. The entity may be a player or
// any other entity.
Attacker world.Entity
}
// VoidDamageSource is used for damage caused by an entity being in the
// void.
VoidDamageSource struct{}
// SuffocationDamageSource is used for damage caused by an entity
// suffocating in a block.
SuffocationDamageSource struct{}
// DrowningDamageSource is used for damage caused by an entity drowning in
// water.
DrowningDamageSource struct{}
// FallDamageSource is used for damage caused by falling.
FallDamageSource struct{}
// GlideDamageSource is used for damage caused by gliding into a block.
GlideDamageSource struct{}
// LightningDamageSource is used for damage caused by being struck by
// lightning.
LightningDamageSource struct{}
// ProjectileDamageSource is used for damage caused by a projectile.
ProjectileDamageSource struct {
// Projectile and Owner are the world.Entity that dealt the damage and
// the one that fired the projectile respectively.
Projectile, Owner world.Entity
}
// ExplosionDamageSource is used for damage caused by an explosion.
ExplosionDamageSource struct{}
)
func (FallDamageSource) ReducedByArmour() bool { return false }
func (FallDamageSource) ReducedByResistance() bool { return true }
func (FallDamageSource) Fire() bool { return false }
func (FallDamageSource) AffectedByEnchantment(e item.EnchantmentType) bool {
return e == enchantment.FeatherFalling
}
func (FallDamageSource) IgnoreTotem() bool { return false }
func (GlideDamageSource) ReducedByArmour() bool { return false }
func (GlideDamageSource) ReducedByResistance() bool { return true }
func (GlideDamageSource) Fire() bool { return false }
func (GlideDamageSource) IgnoreTotem() bool { return false }
func (LightningDamageSource) ReducedByArmour() bool { return true }
func (LightningDamageSource) ReducedByResistance() bool { return true }
func (LightningDamageSource) Fire() bool { return false }
func (LightningDamageSource) IgnoreTotem() bool { return false }
func (AttackDamageSource) ReducedByArmour() bool { return true }
func (AttackDamageSource) ReducedByResistance() bool { return true }
func (AttackDamageSource) Fire() bool { return false }
func (AttackDamageSource) IgnoreTotem() bool { return false }
func (VoidDamageSource) ReducedByResistance() bool { return false }
func (VoidDamageSource) ReducedByArmour() bool { return false }
func (VoidDamageSource) Fire() bool { return false }
func (VoidDamageSource) IgnoreTotem() bool { return true }
func (SuffocationDamageSource) ReducedByResistance() bool { return false }
func (SuffocationDamageSource) ReducedByArmour() bool { return false }
func (SuffocationDamageSource) Fire() bool { return false }
func (SuffocationDamageSource) IgnoreTotem() bool { return false }
func (DrowningDamageSource) ReducedByResistance() bool { return false }
func (DrowningDamageSource) ReducedByArmour() bool { return false }
func (DrowningDamageSource) Fire() bool { return false }
func (DrowningDamageSource) IgnoreTotem() bool { return false }
func (ProjectileDamageSource) ReducedByResistance() bool { return true }
func (ProjectileDamageSource) ReducedByArmour() bool { return true }
func (ProjectileDamageSource) Fire() bool { return false }
func (ProjectileDamageSource) AffectedByEnchantment(e item.EnchantmentType) bool {
return e == enchantment.ProjectileProtection
}
func (ProjectileDamageSource) IgnoreTotem() bool { return false }
func (ExplosionDamageSource) ReducedByResistance() bool { return true }
func (ExplosionDamageSource) ReducedByArmour() bool { return true }
func (ExplosionDamageSource) Fire() bool { return false }
func (ExplosionDamageSource) AffectedByEnchantment(e item.EnchantmentType) bool {
return e == enchantment.BlastProtection
}
func (ExplosionDamageSource) IgnoreTotem() bool { return false }