summaryrefslogtreecommitdiff
path: root/api.lua
diff options
context:
space:
mode:
Diffstat (limited to 'api.lua')
-rw-r--r--api.lua21
1 files changed, 17 insertions, 4 deletions
diff --git a/api.lua b/api.lua
index 317a8ba..9f93eaa 100644
--- a/api.lua
+++ b/api.lua
@@ -3,7 +3,7 @@
mobs = {}
mobs.mod = "redo"
-mobs.version = "20180122"
+mobs.version = "20180126"
-- Intllib
@@ -53,8 +53,11 @@ end
-- Load settings
local damage_enabled = minetest.settings:get_bool("enable_damage")
+local mobs_spawn = minetest.settings:get_bool("mobs_spawn") ~= false
local peaceful_only = minetest.settings:get_bool("only_peaceful_mobs")
local disable_blood = minetest.settings:get_bool("mobs_disable_blood")
+local mobs_drop_items = minetest.settings:get_bool("mobs_drop_items") ~= false
+local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false
local creative = minetest.settings:get_bool("creative_mode")
local spawn_protected = minetest.settings:get_bool("mobs_spawn_protected") ~= false
local remove_far = minetest.settings:get_bool("remove_far_mobs")
@@ -356,6 +359,9 @@ end
-- drop items
local item_drop = function(self, cooked)
+ -- no drops if disabled by setting
+ if not mobs_drop_items then return end
+
-- no drops for child mobs
if self.child then return end
@@ -981,7 +987,8 @@ end
-- find and replace what mob is looking for (grass, wheat etc.)
local replace = function(self, pos)
- if not self.replace_rate
+ if not mobs_griefing
+ or not self.replace_rate
or not self.replace_what
or self.child == true
or self.object:getvelocity().y ~= 0
@@ -1114,7 +1121,7 @@ local smart_mobs = function(self, s, p, dist, dtime)
self.path.following = false
-- lets make way by digging/building if not accessible
- if self.pathfinding == 2 then
+ if self.pathfinding == 2 and mobs_griefing then
-- is player higher than mob?
if s.y < p1.y then
@@ -2849,6 +2856,11 @@ end
function mobs:spawn_specific(name, nodes, neighbors, min_light, max_light,
interval, chance, aoc, min_height, max_height, day_toggle, on_spawn)
+ -- Do mobs spawn at all?
+ if not mobs_spawn then
+ return
+ end
+
-- chance/spawn number override in minetest.conf for registered mob
local numbers = minetest.settings:get(name)
@@ -3153,7 +3165,8 @@ end
-- make explosion with protection and tnt mod check
function mobs:boom(self, pos, radius)
- if minetest.get_modpath("tnt") and tnt and tnt.boom
+ if mobs_griefing
+ and minetest.get_modpath("tnt") and tnt and tnt.boom
and not minetest.is_protected(pos, "") then
tnt.boom(pos, {