From 0a62f05132b47462ca77e786bd978799d065fd46 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Sun, 9 Feb 2025 12:12:52 +0000 Subject: [PATCH] add mob repellent --- api.lua | 11 ++++++++++- crafts.lua | 10 ++++++++++ init.lua | 5 ++++- lucky_block.lua | 3 ++- readme.MD | 3 ++- textures/mobs_repellent.png | Bin 0 -> 415 bytes 6 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 textures/mobs_repellent.png 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 0000000000000000000000000000000000000000..fa466fdb20efe77a46fccca78399daf3e1434e72 GIT binary patch literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6XVU3I`u#fOS+@4BLl<6 ze(pbstU$g(vPY0F14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>OVa#Z3+j%t%Se&PdPC$*w3Vs;(%nudZxwZtQGrp4{KNY~j4;Z@BD$ zc5U=@aSV~TEbHI6>97Ka^T*O{Q7c<>bKc(j_g`OpwzZ--XW*~824M>~%lMM_kND#) zbKl*nUOLw)bC*&6Iw7ZJ;hj2BPCLAIUc7kWdT%6)d-|^#jcYaE1`CyPtlfI(jN*l$ z?71)R`)*xs;=5a!U3k@2J#L`8uX`=$^ElwtYVCaB?~O|j4Rma4CfF{$H0!2mVnEfC zJZ29=3tuI>4|TsQ*m<-xk7-;J*?4}=b8buiZ{L}DHu3G;nQ_kt=y(QCS3j3^P6