diff --git a/api.lua b/api.lua index 9f8c15e..ffeb643 100644 --- a/api.lua +++ b/api.lua @@ -18,7 +18,7 @@ end -- Global table mobs = { - mod = "redo", version = "20250204", + mod = "redo", version = "20250209", spawning_mobs = {}, translate = S, node_snow = has(minetest.registered_aliases["mapgen_snow"]) or has("mcl_core:snow") or has("default:snow") or "air", @@ -3717,6 +3717,15 @@ function mobs:spawn_specific(name, nodes, neighbors, min_light, max_light, inter end end + -- is mob repellent nearby + if #minetest.find_nodes_in_area( + {x = pos.x - 16, y = pos.y - 16, z = pos.z - 16}, + {x = pos.x + 16, y = pos.y + 16, z = pos.z + 16}, + {"mobs:mob_repellent"}) > 0 then +--print("--- mob repellent nearby") + return + end + -- change position to node above pos.y = pos.y + 1 diff --git a/crafts.lua b/crafts.lua index 5c10d91..e5c8499 100644 --- a/crafts.lua +++ b/crafts.lua @@ -25,6 +25,16 @@ sound_helper("node_sound_water_defaults") sound_helper("node_sound_snow_defaults") sound_helper("node_sound_glass_defaults") +-- mob repellent node + +minetest.register_node("mobs:mob_repellent", { + description = S("Mob Repellent"), + tiles = {"mobs_repellent.png"}, + is_ground_content = false, + groups = {handy = 1, cracky = 3}, + sounds = mobs.node_sound_stone_defaults() +}) + -- helper function to add {eatable} group to food items function mobs.add_eatable(item, hp) diff --git a/init.lua b/init.lua index 61d2ba8..ce5b474 100644 --- a/init.lua +++ b/init.lua @@ -1,4 +1,6 @@ +local S = minetest.get_translator("mobs") + -- peaceful player privilege minetest.register_privilege("peaceful_player", { @@ -9,13 +11,14 @@ minetest.register_privilege("peaceful_player", { -- fallback node minetest.register_node("mobs:fallback_node", { - description = "Fallback Node", + description = S("Fallback Node"), tiles = {"mobs_fallback.png"}, is_ground_content = false, groups = {handy = 1, crumbly = 3, not_in_creative_inventory = 1}, drop = "" }) + local path = minetest.get_modpath("mobs") dofile(path .. "/api.lua") -- mob API diff --git a/lucky_block.lua b/lucky_block.lua index 8c95b5b..c271303 100644 --- a/lucky_block.lua +++ b/lucky_block.lua @@ -15,7 +15,8 @@ lucky_block:add_blocks({ {"dro", {"mobs:protector"}, 1}, {"dro", {"mobs:fence_wood"}, 10}, {"dro", {"mobs:fence_top"}, 12}, - {"lig"} + {"lig"}, + {"dro", {"mobs:mob_repellent"}, 1} }) -- pint sized rune, use on tamed mob to shrink to half-size diff --git a/readme.MD b/readme.MD index dbbf636..da27a32 100644 --- a/readme.MD +++ b/readme.MD @@ -19,8 +19,9 @@ https://forum.minetest.net/viewtopic.php?f=11&t=9917 - **Shears**. Used to right-click sheep and return 1-3 wool. - **Protection Rune**. Protects tamed mobs from being harmed by other players. - **Mob Fence and Fence Top**. Stops mobs escaping or glitching throughfences. +- Add mobs:mob_repellent block to stop mobs spawning within 16 node radius. -**Lucky Blocks**: 12 +**Lucky Blocks**: 13 ## Changelog diff --git a/textures/mobs_repellent.png b/textures/mobs_repellent.png new file mode 100644 index 0000000..fa466fd Binary files /dev/null and b/textures/mobs_repellent.png differ