From 72aa634181be2cffcb75604dc41522df74272871 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20P=C3=A9rez-Cerezo?= Date: Mon, 17 Jul 2017 10:30:34 +0200 Subject: Added unrenting tool --- init.lua | 40 ++++++++++++++++++++++++++++++++-------- textures/mailbox_unrent.png | Bin 0 -> 228 bytes 2 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 textures/mailbox_unrent.png diff --git a/init.lua b/init.lua index 96b0532..5f48dc8 100644 --- a/init.lua +++ b/init.lua @@ -35,20 +35,35 @@ function mailbox.get_formspec(pos, owner, fs_type) end end +function mailbox.unrent (pos, player) + local meta = minetest.get_meta(pos) + local node = minetest.get_node(pos) + node.name = "mailbox:mailbox_free" + minetest.swap_node(pos, node) -- preserve Facedir + -- minetest.swap_node(pos, {name = "mailbox:mailbox" }) + mailbox.after_place_free(pos, player) +end + +-- function mailbox.get_free_formspec(pos, player, owner) +-- local xbg = default.gui_bg .. default.gui_bg_img .. default.gui_slots +-- -- local spos = pos.x .. "," ..pos.y .. "," .. pos.z +-- fsp="size[5,3]"..xbg +-- if owner and player == owner then +-- "" -- text field to enter starting letters +-- fspec=fspec.."field[2,0.5;4,1;name;Restrict usernames;default]" +-- end +-- -- Button to rent +-- end + minetest.register_on_player_receive_fields(function(player, formname, fields) if not formname:match("mailbox:mailbox_") then return end if fields.unrent then local pos = minetest.string_to_pos(formname:sub(17)) - local meta = minetest.get_meta(pos) local inv = meta:get_inventory() if inv:is_empty("mailbox") then - local node = minetest.get_node(pos) - node.name = "mailbox:mailbox_free" - minetest.swap_node(pos, node) -- preserve Facedir - -- minetest.swap_node(pos, {name = "mailbox:mailbox" }) - mailbox.after_place_free(pos, player) + mailbox.unrent(pos, player) else minetest.chat_send_player(player:get_player_name(), "Your mailbox is not empty!") end @@ -91,7 +106,7 @@ mailbox.after_place_free = function(pos, placer, _) local meta = minetest.get_meta(pos) local player_name = placer:get_player_name() - -- meta:set_string("owner", player_name) + meta:set_string("owner", player_name) meta:set_string("infotext", "Free Mailbox, right-click to claim") end @@ -100,7 +115,10 @@ mailbox.on_rightclick = function(pos, _, clicker, _) local meta = minetest.get_meta(pos) local player = clicker:get_player_name() local owner = meta:get_string("owner") - + if clicker:get_wielded_item():get_name() == "mailbox:unrenter" then + mailbox.unrent(pos, clicker) + return + end if player == owner then local spos = pos.x .. "," .. pos.y .. "," .. pos.z minetest.show_formspec(player, "mailbox:mailbox_" .. spos, mailbox.get_formspec(pos, owner, 1)) @@ -207,6 +225,12 @@ minetest.register_node("mailbox:letterbox", { allow_metadata_inventory_put = mailbox.allow_metadata_inventory_put, }) +minetest.register_tool("mailbox:unrenter", { + description = "Unrenter", + inventory_image = "mailbox_unrent.png", +}) + + minetest.register_craft({ output = "mailbox:mailbox", recipe = { diff --git a/textures/mailbox_unrent.png b/textures/mailbox_unrent.png new file mode 100644 index 0000000..b0e3321 Binary files /dev/null and b/textures/mailbox_unrent.png differ -- cgit v1.2.3