init.lua 989 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing)
  2. local inv = placer:get_inventory()
  3. local main = inv:get_list("main")
  4. local index = placer:get_wield_index()
  5. local item = placer:get_wielded_item():get_name()
  6. print("index: " .. item .. " size: " .. inv:get_size("main"))
  7. -- find a stack to decrease instead
  8. for i = inv:get_size("main"), 1, -1 do
  9. if index ~= i then
  10. local s = inv:get_stack("main", i)
  11. print("pos "..i..": ".. s:get_name() .. " " .. s:get_count())
  12. if item == s:get_name() then
  13. s:take_item(1)
  14. inv:set_stack("main", i, s)
  15. return true
  16. end
  17. end
  18. end
  19. if oldnode ~= nil then
  20. print("Node " .. oldnode.name .. " at " ..
  21. minetest.pos_to_string(pos) .. " replaced with " ..
  22. newnode.name .. " by " .. placer:get_player_name())
  23. else
  24. print("Node " .. newnode.name .. " at " ..
  25. minetest.pos_to_string(pos) .. " placed by " .. placer:get_player_name())
  26. end
  27. end)