diff options
author | the lemons <citrons@mondecitronne.com> | 2022-02-12 02:04:39 -0600 |
---|---|---|
committer | the lemons <citrons@mondecitronne.com> | 2022-02-12 02:04:39 -0600 |
commit | 06450dcc221a5c1adda4a300b7891cbdf4fbbb4e (patch) | |
tree | fff79da545a3d790d2b15b82af723935cedf957a | |
parent | a408134fea9123297cc96456df36dd341bc488dc (diff) |
reorganize
-rw-r--r-- | mods/vzxv/utils.lua | 11 | ||||
-rw-r--r-- | mods/vzxv_itemstacks/container.lua | 52 | ||||
-rw-r--r-- | mods/vzxv_itemstacks/init.lua | 2 |
3 files changed, 31 insertions, 34 deletions
diff --git a/mods/vzxv/utils.lua b/mods/vzxv/utils.lua index 022c596..c9a376e 100644 --- a/mods/vzxv/utils.lua +++ b/mods/vzxv/utils.lua @@ -54,14 +54,3 @@ function vzxv.store(data) 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 be6d7d9..8fd3bf5 100644 --- a/mods/vzxv_itemstacks/container.lua +++ b/mods/vzxv_itemstacks/container.lua @@ -33,23 +33,6 @@ local function get_container_entity(pos) return container_entities[minetest.hash_node_position(pos)] end -minetest.register_lbm { - name = "vzxv_itemstacks:load_itemstacks", - nodenames = {"group:container"}, - run_at_every_load = true, - action = function(pos) - local stack = vzxv.getstack(pos) - local entity = get_container_entity(pos) - 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, stack) - end - end, -} - local function remove_container_entity(pos) local h = minetest.hash_node_position(pos) if container_entities[h] then @@ -63,24 +46,49 @@ function vzxv.is_container(pos) return minetest.get_item_group(item, "container") end -function vzxv.set_container_items(pos, itemstack) +function vzxv.get_container_stack(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.set_container_stack(pos, stack) pos = vzxv.round_pos(pos) local entity = get_container_entity(pos) - if itemstack and not entity then + if stack and not entity then minetest.add_entity(pos, "vzxv_itemstacks:itemstack") entity = get_container_entity(pos) - elseif not itemstack and entity then + elseif not stack and entity then remove_container_entity(pos) end - vzxv.setstack(pos,itemstack) + local meta = minetest.get_meta(pos) + meta:set_string("stack",stack:to_string()) if entity then - update_container_entity(entity, itemstack) + update_container_entity(entity, stack) end end +minetest.register_lbm { + name = "vzxv_itemstacks:load_itemstacks", + nodenames = {"group:container"}, + run_at_every_load = true, + action = function(pos) + local stack = vzxv.get_container_stack(pos) + local entity = get_container_entity(pos) + 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, stack) + end + end, +} + -- containers must call this when removed function vzxv.container_destruct(pos) remove_container_entity(pos) diff --git a/mods/vzxv_itemstacks/init.lua b/mods/vzxv_itemstacks/init.lua index ce3791f..c756c3c 100644 --- a/mods/vzxv_itemstacks/init.lua +++ b/mods/vzxv_itemstacks/init.lua @@ -21,7 +21,7 @@ vzxv.mundane_block("vzxv_itemstacks:item","Item","apioform",{ function vzxv.drop(pos, stack) minetest.set_node(pos, {name="vzxv_itemstacks:item"}) - vzxv.set_container_items(pos, stack) + vzxv.set_container_stack(pos, stack) end minetest.register_chatcommand("apiate", { |