forked from Mirrorlandia_minetest/minetest
Add peaceful / not peaceful distinction in mobs and the only_peaceful_mobs setting
This commit is contained in:
parent
a17abae128
commit
414c614893
@ -122,6 +122,8 @@ screenH# = 600
|
|||||||
#creative_mode = false
|
#creative_mode = false
|
||||||
# Enable players getting damage and dying
|
# Enable players getting damage and dying
|
||||||
#enable_damage = false
|
#enable_damage = false
|
||||||
|
# Despawn all non-peaceful mobs
|
||||||
|
#only_peaceful_mobs = false
|
||||||
# A chosen map seed for a new map, leave empty for random
|
# A chosen map seed for a new map, leave empty for random
|
||||||
#fixed_map_seed =
|
#fixed_map_seed =
|
||||||
# Gives some stuff to players at the beginning
|
# Gives some stuff to players at the beginning
|
||||||
|
@ -1370,6 +1370,11 @@ u16 MobV2SAO::punch(const std::string &toolname, v3f dir,
|
|||||||
return 65536/100;
|
return 65536/100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MobV2SAO::isPeaceful()
|
||||||
|
{
|
||||||
|
return m_properties->getBool("is_peaceful");
|
||||||
|
}
|
||||||
|
|
||||||
void MobV2SAO::sendPosition()
|
void MobV2SAO::sendPosition()
|
||||||
{
|
{
|
||||||
m_last_sent_position = m_base_position;
|
m_last_sent_position = m_base_position;
|
||||||
@ -1388,6 +1393,7 @@ void MobV2SAO::sendPosition()
|
|||||||
|
|
||||||
void MobV2SAO::setPropertyDefaults()
|
void MobV2SAO::setPropertyDefaults()
|
||||||
{
|
{
|
||||||
|
m_properties->setDefault("is_peaceful", "false");
|
||||||
m_properties->setDefault("move_type", "ground_nodes");
|
m_properties->setDefault("move_type", "ground_nodes");
|
||||||
m_properties->setDefault("speed", "(0,0,0)");
|
m_properties->setDefault("speed", "(0,0,0)");
|
||||||
m_properties->setDefault("age", "0");
|
m_properties->setDefault("age", "0");
|
||||||
|
@ -97,6 +97,7 @@ public:
|
|||||||
std::string getStaticData();
|
std::string getStaticData();
|
||||||
InventoryItem* createPickedUpItem(){return NULL;}
|
InventoryItem* createPickedUpItem(){return NULL;}
|
||||||
u16 punch(const std::string &toolname, v3f dir);
|
u16 punch(const std::string &toolname, v3f dir);
|
||||||
|
bool isPeaceful(){return false;}
|
||||||
private:
|
private:
|
||||||
void doDamage(u16 d);
|
void doDamage(u16 d);
|
||||||
|
|
||||||
@ -157,6 +158,7 @@ public:
|
|||||||
InventoryItem* createPickedUpItem(){return NULL;}
|
InventoryItem* createPickedUpItem(){return NULL;}
|
||||||
u16 punch(const std::string &toolname, v3f dir,
|
u16 punch(const std::string &toolname, v3f dir,
|
||||||
const std::string &playername);
|
const std::string &playername);
|
||||||
|
bool isPeaceful();
|
||||||
private:
|
private:
|
||||||
void sendPosition();
|
void sendPosition();
|
||||||
void setPropertyDefaults();
|
void setPropertyDefaults();
|
||||||
|
@ -83,6 +83,7 @@ void set_default_settings(Settings *settings)
|
|||||||
settings->setDefault("strict_protocol_version_checking", "true");
|
settings->setDefault("strict_protocol_version_checking", "true");
|
||||||
settings->setDefault("creative_mode", "false");
|
settings->setDefault("creative_mode", "false");
|
||||||
settings->setDefault("enable_damage", "true");
|
settings->setDefault("enable_damage", "true");
|
||||||
|
settings->setDefault("only_peaceful_mobs", "false");
|
||||||
settings->setDefault("fixed_map_seed", "");
|
settings->setDefault("fixed_map_seed", "");
|
||||||
settings->setDefault("give_initial_stuff", "false");
|
settings->setDefault("give_initial_stuff", "false");
|
||||||
settings->setDefault("default_password", "");
|
settings->setDefault("default_password", "");
|
||||||
|
@ -1039,6 +1039,11 @@ void ServerEnvironment::step(float dtime)
|
|||||||
i.atEnd()==false; i++)
|
i.atEnd()==false; i++)
|
||||||
{
|
{
|
||||||
ServerActiveObject* obj = i.getNode()->getValue();
|
ServerActiveObject* obj = i.getNode()->getValue();
|
||||||
|
// Remove non-peaceful mobs on peaceful mode
|
||||||
|
if(g_settings->getBool("only_peaceful_mobs")){
|
||||||
|
if(!obj->isPeaceful())
|
||||||
|
obj->m_removed = true;
|
||||||
|
}
|
||||||
// Don't step if is to be removed or stored statically
|
// Don't step if is to be removed or stored statically
|
||||||
if(obj->m_removed || obj->m_pending_deactivation)
|
if(obj->m_removed || obj->m_pending_deactivation)
|
||||||
continue;
|
continue;
|
||||||
|
@ -111,6 +111,8 @@ public:
|
|||||||
/*
|
/*
|
||||||
*/
|
*/
|
||||||
virtual void rightClick(Player *player){}
|
virtual void rightClick(Player *player){}
|
||||||
|
|
||||||
|
virtual bool isPeaceful(){return true;}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Number of players which know about this object. Object won't be
|
Number of players which know about this object. Object won't be
|
||||||
|
Loading…
Reference in New Issue
Block a user