summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthe lemons <citrons@mondecitronne.com>2022-02-12 02:04:39 -0600
committerthe lemons <citrons@mondecitronne.com>2022-02-12 02:04:39 -0600
commit06450dcc221a5c1adda4a300b7891cbdf4fbbb4e (patch)
treefff79da545a3d790d2b15b82af723935cedf957a
parenta408134fea9123297cc96456df36dd341bc488dc (diff)
reorganize
-rw-r--r--mods/vzxv/utils.lua11
-rw-r--r--mods/vzxv_itemstacks/container.lua52
-rw-r--r--mods/vzxv_itemstacks/init.lua2
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", {