forked from VoxeLibre/VoxeLibre
Merge pull request 'Add a command to safely remove all mob objects' (#2098) from add_clearmombs_command into master
Reviewed-on: MineClone2/MineClone2#2098 Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
This commit is contained in:
commit
3a9812a2d7
|
@ -101,6 +101,29 @@ local mod_worlds = minetest.get_modpath("mcl_worlds") ~= nil
|
||||||
local mod_armor = minetest.get_modpath("mcl_armor") ~= nil
|
local mod_armor = minetest.get_modpath("mcl_armor") ~= nil
|
||||||
local mod_experience = minetest.get_modpath("mcl_experience") ~= nil
|
local mod_experience = minetest.get_modpath("mcl_experience") ~= nil
|
||||||
|
|
||||||
|
--Helper function to clear all mobs because /clearobjects removes too much
|
||||||
|
local function is_mob(o)
|
||||||
|
return o.type == "ambient" or o.type == "animal" or o.type == "monster" or o.type == "npc"
|
||||||
|
end
|
||||||
|
minetest.register_chatcommand("clearmobs",{
|
||||||
|
privs={maphack=true},
|
||||||
|
params = "<all>|<nametagged>|<range>",
|
||||||
|
description=S("Removes all spawned mobs except nametagged and tamed ones. all removes all mobs, nametagged only nametagged ones and with the range paramter all mobs in a distance of the current player are removed."),
|
||||||
|
func=function(n,param)
|
||||||
|
local p = minetest.get_player_by_name(n)
|
||||||
|
local num=tonumber(param)
|
||||||
|
for _,o in pairs(minetest.luaentities) do
|
||||||
|
if is_mob(o) then
|
||||||
|
if param == "all" or
|
||||||
|
( param == "nametagged" and o.nametag ) or
|
||||||
|
( param == "" and not o.nametag and not o.tamed ) or
|
||||||
|
( num and num > 0 and vector.distance(p:get_pos(),o.object:get_pos()) <= num ) then
|
||||||
|
o.object:remove()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end})
|
||||||
|
|
||||||
----For Water Flowing:
|
----For Water Flowing:
|
||||||
local enable_physics = function(object, luaentity, ignore_check)
|
local enable_physics = function(object, luaentity, ignore_check)
|
||||||
if luaentity.physical_state == false or ignore_check == true then
|
if luaentity.physical_state == false or ignore_check == true then
|
||||||
|
|
Loading…
Reference in New Issue