From e64ef6e2546700c1b094a53fd981d26bf7567bea Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 19 Sep 2019 12:04:41 +0200 Subject: [PATCH] Prevent placement of meshhand nodes --- mods/PLAYER/mcl_meshhand/init.lua | 37 ++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/mods/PLAYER/mcl_meshhand/init.lua b/mods/PLAYER/mcl_meshhand/init.lua index 0ef9e2010..2ccbc0b92 100644 --- a/mods/PLAYER/mcl_meshhand/init.lua +++ b/mods/PLAYER/mcl_meshhand/init.lua @@ -6,18 +6,34 @@ local def = minetest.registered_items[""] if has_mcl_skins == true then --generate a node for every skin for _,texture in pairs(mcl_skins.list) do + -- This is a fake node that should never be placed in the world minetest.register_node("mcl_meshhand:"..texture, { description = "", tiles = {texture..".png"}, - inventory_image = "blank.png", + inventory_image = "wieldhand.png", visual_scale = 1, wield_scale = {x=1,y=1,z=1}, paramtype = "light", drawtype = "mesh", mesh = "mcl_meshhand.b3d", + -- Prevent placement node_placement_prediction = "", + on_construct = function(pos) + minetest.log("error", "[mcl_meshhand] Trying to construct mcl_meshhand:"..texture.." at "..minetest.pos_to_string(pos)) + minetest.remove_node(pos) + end, + on_place = function(itemstack, placer, pointed_thing) + local spos = "" + if pointed_thing.above then + spos = minetest.pos_to_string(pointed_thing.above) + end + minetest.log("error", "[mcl_meshhand] Player tried to place mcl_meshhand:"..texture.." at "..spos) + itemstack:set_count(0) + return itemstack + end, + groups = { dig_immediate = 3, not_in_creative_inventory = 1 }, range = def.range, - }) + }) end --change the player's hand to their skin mcl_skins.register_on_set_skin(function(player, skin) @@ -30,13 +46,28 @@ else minetest.register_node("mcl_meshhand:hand", { description = "", tiles = {"character.png"}, - inventory_image = "blank.png", + inventory_image = "wieldhand.png", visual_scale = 1, wield_scale = {x=1,y=1,z=1}, paramtype = "light", drawtype = "mesh", mesh = "mcl_meshhand.b3d", + -- Prevent placement node_placement_prediction = "", + on_construct = function(pos) + minetest.log("error", "[mcl_meshhand] Trying to construct mcl_meshhand:hand at "..minetest.pos_to_string(pos)) + minetest.remove_node(pos) + end, + on_place = function(itemstack, placer, pointed_thing) + local spos = "" + if pointed_thing.above then + spos = minetest.pos_to_string(pointed_thing.above ) + end + minetest.log("error", "[mcl_meshhand] Player tried to place mcl_meshhand:hand at "..spos) + itemstack:set_count(0) + return itemstack + end, + groups = { dig_immediate = 3, not_in_creative_inventory = 1 }, range = def.range, })