diff options
-rw-r--r-- | technic/tools/spray_painter.lua | 50 |
1 files changed, 47 insertions, 3 deletions
diff --git a/technic/tools/spray_painter.lua b/technic/tools/spray_painter.lua index f68dfd5..0c139a3 100644 --- a/technic/tools/spray_painter.lua +++ b/technic/tools/spray_painter.lua @@ -19,16 +19,21 @@ minetest.register_node ("technic:paint_layer", { -- }, drop = "", groups = {attached_node = 1}, + paramtype = "light", paramtype2 = "wallmounted", -- on_place = minetest.rotate_node, }) - local function spray_paint(itemstack, user, pointed_thing) if pointed_thing.type ~= "node" then return itemstack end + + local target = minetest.get_node_or_nil(pointed_thing.above) + if not target or target.name ~= "air" then + return itemstack + end local meta = minetest.deserialize(itemstack:get_metadata()) if not meta or not meta.charge or @@ -42,8 +47,47 @@ local function spray_paint(itemstack, user, pointed_thing) return end --- minetest.place_node(pointed_thing.above, {name = "technic:paint_layer"}) - minetest.rotate_node(ItemStack({name = "technic:paint_layer"}), user, pointed_thing) + minetest.chat_send_all("below: " .. minetest.serialize(pointed_thing.under)) + minetest.chat_send_all("above: " .. minetest.serialize(pointed_thing.above)) +-- minetest.swap_node(pointed_thing.above, {name = "default:dirt"}) +-- minetest.swap_node(pointed_thing.under, {name = "default:cobble"}) + local rrr = vector.subtract(pointed_thing.under, pointed_thing.above) + minetest.chat_send_all(minetest.serialize(rrr)) + local xxx = minetest.dir_to_wallmounted(rrr) + minetest.chat_send_all(minetest.serialize(xxx)) +-- local t = {x = pointed_thing.above.x, y = pointed_thing.above.y, z = pointed_thing.above.z} +-- minetest.chat_send_all("--->" .. minetest.serialize(t)) +-- minetest.place_node(t, {name = "technic:paint_layer", param2 = xxx}) + minetest.swap_node(pointed_thing.above, {name = "technic:paint_layer", param2 = xxx}) + +-- minetest.rotate_node(ItemStack({name = "technic:paint_layer"}), user, pointed_thing) + +-- local player_pos = user:getpos() +-- local player_name = user:get_player_name() +-- local dir = user:get_look_dir() +-- +-- local start_pos = vector.new(player_pos) +-- -- Adjust to head height +-- start_pos.y = start_pos.y + 1.6 +-- local last_air = {} +-- for pos in technic.trace_node_ray(start_pos, dir, 5) do +-- local node = minetest.get_node_or_nil(pos) +-- minetest.chat_send_all(minetest.serialize(pos) .. node.name) +-- if not node then +-- break +-- end +-- if node.name == "air" then +-- last_air.x = pos.x +-- last_air.y = pos.y +-- last_air.z = pos.z +-- else +-- minetest.chat_send_all("---------> " .. minetest.serialize(last_air)) +-- minetest.place_node(last_air, {name = "default:dirt"}) +-- break +-- end +-- minetest.chat_send_all(minetest.serialize(last_air)) +-- +-- end if not technic.creative_mode then technic.set_RE_wear(itemstack, meta.charge - spray_painter_charge_per_application, spray_painter_max_charge) |