diff options
author | heav-4 <heavpoot@gmail.com> | 2022-02-12 07:52:23 +0000 |
---|---|---|
committer | heav-4 <heavpoot@gmail.com> | 2022-02-12 07:52:23 +0000 |
commit | 104a921c94fd85471a01fffe496534c353c1f9a7 (patch) | |
tree | 905d63fb60b87ac3830022cc6a989c61a09c7b9f | |
parent | d538e5f98487e078d877c8e8badfbfff7d1709ea (diff) |
fix itemstacks once and for all until they inevitably break
-rw-r--r-- | mods/vzxv/utils.lua | 15 | ||||
-rw-r--r-- | mods/vzxv_itemstacks/container.lua | 20 | ||||
-rw-r--r-- | mods/vzxv_itemstacks/init.lua | 2 |
3 files changed, 23 insertions, 14 deletions
diff --git a/mods/vzxv/utils.lua b/mods/vzxv/utils.lua index 6a93f33..022c596 100644 --- a/mods/vzxv/utils.lua +++ b/mods/vzxv/utils.lua @@ -40,7 +40,7 @@ function vzxv.round_pos(pos) } end --- wrap metadata +-- wrap metadata (unworking) function vzxv.meta(pos) local meta = minetest.get_meta(pos) local m = meta:to_table() @@ -48,9 +48,20 @@ function vzxv.meta(pos) return m end --- store wrapped metadata +-- store wrapped metadata (unworking) function vzxv.store(data) local meta = getmetatable(data).meta return meta:from_table(data) end +function vzxv.getstack(pos) + local meta = minetest.get_meta(pos) + local stack = meta:get_string("vzxv_stack") + if stack == "" then return false end + return ItemStack(stack) +end + +function vzxv.setstack(pos,stack) + local meta = minetest.get_meta(pos) + return meta:set_string("vzxv_stack",stack:to_string()) +end
\ No newline at end of file diff --git a/mods/vzxv_itemstacks/container.lua b/mods/vzxv_itemstacks/container.lua index 92fb721..be6d7d9 100644 --- a/mods/vzxv_itemstacks/container.lua +++ b/mods/vzxv_itemstacks/container.lua @@ -8,8 +8,8 @@ local function update_container_entity(entity, stack) collide_with_objects = false, visual = "wielditem", visual_size = {x = 0.4, y = 0.4}, - wield_item = stack.name, - satic_save = false, + wield_item = stack:get_name(), + static_save = false, } end @@ -17,7 +17,7 @@ minetest.register_entity("vzxv_itemstacks:itemstack",{ initial_properties = { physical = false, pointable = false, - satic_save = false, + static_save = false, }, on_activate = function(self) local ent = self.object @@ -38,14 +38,14 @@ minetest.register_lbm { nodenames = {"group:container"}, run_at_every_load = true, action = function(pos) - local meta = vzxv.meta(pos) + local stack = vzxv.getstack(pos) local entity = get_container_entity(pos) - if meta.stack then + if stack and not stack:is_empty() then if not entity then minetest.add_entity(pos, "vzxv_itemstacks:itemstack") entity = get_container_entity(pos) end - update_container_entity(entity, meta.stack) + update_container_entity(entity, stack) end end, } @@ -64,7 +64,7 @@ function vzxv.is_container(pos) end function vzxv.set_container_items(pos, itemstack) - local pos = vzxv.round_pos(pos) + pos = vzxv.round_pos(pos) local entity = get_container_entity(pos) if itemstack and not entity then @@ -74,12 +74,10 @@ function vzxv.set_container_items(pos, itemstack) remove_container_entity(pos) end - local meta = vzxv.meta(pos) - meta.stack = itemstack - vzxv.store(meta) + vzxv.setstack(pos,itemstack) if entity then - update_container_entity(entity, meta.stack) + update_container_entity(entity, itemstack) end end diff --git a/mods/vzxv_itemstacks/init.lua b/mods/vzxv_itemstacks/init.lua index 73e0adb..ce3791f 100644 --- a/mods/vzxv_itemstacks/init.lua +++ b/mods/vzxv_itemstacks/init.lua @@ -28,7 +28,7 @@ minetest.register_chatcommand("apiate", { params = "", func = function(name, tile) local p = minetest.get_player_by_name(name) - vzxv.drop(p:get_pos(), {name=tile,count=1,wear=0,metadata=""}) + vzxv.drop(p:get_pos(), ItemStack(tile)) return true, "beeoid" end, }) |