change where node metadata is set

This commit is contained in:
OgelGames 2019-11-21 18:43:42 +11:00
parent 4bb3372a8c
commit c0ed9df9e2

@ -143,6 +143,17 @@ local function register_powerbank(data)
return 0 return 0
end, end,
after_place_node = function(pos, placer, itemstack, pointed_thing)
local node_meta = minetest.get_meta(pos)
node_meta:get_inventory():set_size("main", data.charging_slots)
node_meta:set_string("owner", placer:get_player_name())
node_meta:set_string("formspec", formspec)
node_meta:set_int("EU_charge", itemstack:get_meta():get_int("charge"))
update_infotext(pos, false)
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player) on_metadata_inventory_put = function(pos, listname, index, stack, player)
local timer = minetest.get_node_timer(pos) local timer = minetest.get_node_timer(pos)
if not timer:is_started() then if not timer:is_started() then
@ -189,35 +200,24 @@ local function register_powerbank(data)
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
local pos = pointed_thing.above local pos = pointed_thing.above
local placer_name = placer:get_player_name()
if minetest.is_protected(pos, placer_name) then if minetest.is_protected(pos, placer:get_player_name()) then
return itemstack return itemstack
end end
local fake_itemstack = ItemStack({name = "powerbanks:powerbank_mk"..data.mark.."_node", count = 1})
local placed = false
fake_itemstack, placed = minetest.item_place_node(fake_itemstack, placer, pointed_thing)
if not placed then
return itemstack
end
local node_meta = minetest.get_meta(pos)
local item_meta = minetest.deserialize(itemstack:get_metadata()) or {} local item_meta = minetest.deserialize(itemstack:get_metadata()) or {}
if not item_meta.charge then if not item_meta.charge then
item_meta.charge = 0 item_meta.charge = 0
end end
local fake_itemstack = ItemStack({name = "powerbanks:powerbank_mk"..data.mark.."_node", count = 1})
fake_itemstack:get_meta():set_int("charge", item_meta.charge)
local placed = false
node_meta:get_inventory():set_size("main", data.charging_slots) fake_itemstack, placed = minetest.item_place(fake_itemstack, placer, pointed_thing)
node_meta:set_string("owner", placer_name)
node_meta:set_string("formspec", formspec)
node_meta:set_int("EU_charge", item_meta.charge)
update_infotext(pos, false)
if placed then
itemstack:clear() itemstack:clear()
end
return itemstack return itemstack
end end
}) })