From 33234e0f48fc46317330bbba7ced87d8f853e67b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 26 Sep 2019 13:42:10 +0200 Subject: [PATCH] Restrict placement of villages to server op --- mods/village/locale/template.txt | 1 + mods/village/locale/village.de.tr | 1 + mods/village/mapgen.lua | 10 ++++++++++ 3 files changed, 12 insertions(+) diff --git a/mods/village/locale/template.txt b/mods/village/locale/template.txt index fa62887..b3610ba 100644 --- a/mods/village/locale/template.txt +++ b/mods/village/locale/template.txt @@ -3,3 +3,4 @@ Village Entity Spawner= Village Spawner= Mapgen Village Spawner= (Has chance of not spawning village)= +You need the “server” privilege to use this.= diff --git a/mods/village/locale/village.de.tr b/mods/village/locale/village.de.tr index 9ea72f9..227d3d2 100644 --- a/mods/village/locale/village.de.tr +++ b/mods/village/locale/village.de.tr @@ -3,3 +3,4 @@ Village Entity Spawner=Dorf-Entity-Erzeuger Village Spawner=Dorf-Erzeuger Mapgen Village Spawner=Kartengenerator-Dorf-Erzeuger (Has chance of not spawning village)=(Könnte das Dorf evtl. nicht erzeugen) +You need the “server” privilege to use this.=Sie brauchen das „server“-Privileg, um dies benutzen zu können. diff --git a/mods/village/mapgen.lua b/mods/village/mapgen.lua index 7ff6c39..653fb6a 100644 --- a/mods/village/mapgen.lua +++ b/mods/village/mapgen.lua @@ -21,6 +21,14 @@ local shortseed = bitwise_and(mapseed, 0xFFFFFF) -- Nodes +local place_priv = function(itemstack, placer, pointed_thing) + if not minetest.get_player_privs(placer:get_player_name()).server then + minetest.chat_send_player(placer:get_player_name(), minetest.colorize("#FF0000", S("You need the “server” privilege to use this."))) + return itemstack + end + return minetest.item_place(itemstack, placer, pointed_thing) +end + minetest.register_node( "village:entity_spawner", { @@ -39,6 +47,7 @@ minetest.register_node( drop = "", groups = {dig_immediate = 3, not_in_creative_inventory = 1}, sounds = default.node_sound_defaults(), + on_place = place_priv, on_timer = function(pos, elapsed) -- Wait until some objects are nearby ... local objs_around = minetest.get_objects_inside_radius(pos, 12) @@ -79,6 +88,7 @@ minetest.register_node( sounds = default.node_sound_dirt_defaults(), drop = "", + on_place = place_priv, on_construct = function(pos) minetest.remove_node(pos)