fixed zombie pigmen attacking player in creative mode

This commit is contained in:
Jacob M 2026-03-11 12:10:02 -04:00
parent a195ac7172
commit 909c8fd04f
3 changed files with 8 additions and 1 deletions

View file

@ -105,7 +105,7 @@ shared_ptr<Entity> PigZombie::findAttackTarget()
bool PigZombie::hurt(DamageSource *source, float dmg) bool PigZombie::hurt(DamageSource *source, float dmg)
{ {
shared_ptr<Entity> sourceEntity = source->getEntity(); shared_ptr<Entity> sourceEntity = source->getEntity();
if ( sourceEntity != nullptr && sourceEntity->instanceof(eTYPE_PLAYER) ) if ( sourceEntity != nullptr && sourceEntity->instanceof(eTYPE_PLAYER) && sourceEntity->isAttackable())
{ {
vector<shared_ptr<Entity> > *nearby = level->getEntities( shared_from_this(), bb->grow(32, 32, 32)); vector<shared_ptr<Entity> > *nearby = level->getEntities( shared_from_this(), bb->grow(32, 32, 32));
for (auto& e : *nearby) for (auto& e : *nearby)

View file

@ -195,6 +195,11 @@ bool Player::isUsingItem()
return useItem != nullptr; return useItem != nullptr;
} }
bool Player::isAttackable()
{
return !abilities.invulnerable;
}
int Player::getTicksUsingItem() int Player::getTicksUsingItem()
{ {
if (isUsingItem()) if (isUsingItem())

View file

@ -495,6 +495,8 @@ public:
void setPlayerGamePrivilege(EPlayerGamePrivileges privilege, unsigned int value); void setPlayerGamePrivilege(EPlayerGamePrivileges privilege, unsigned int value);
static void setPlayerGamePrivilege(unsigned int &uiGamePrivileges, EPlayerGamePrivileges privilege, unsigned int value); static void setPlayerGamePrivilege(unsigned int &uiGamePrivileges, EPlayerGamePrivileges privilege, unsigned int value);
virtual bool isAttackable();
bool isAllowedToUse(Tile *tile); bool isAllowedToUse(Tile *tile);
bool isAllowedToUse(shared_ptr<ItemInstance> item); bool isAllowedToUse(shared_ptr<ItemInstance> item);
bool isAllowedToInteract(shared_ptr<Entity> target); bool isAllowedToInteract(shared_ptr<Entity> target);