summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorheav-4 <heavpoot@gmail.com>2022-02-12 07:52:23 +0000
committerheav-4 <heavpoot@gmail.com>2022-02-12 07:52:23 +0000
commit104a921c94fd85471a01fffe496534c353c1f9a7 (patch)
tree905d63fb60b87ac3830022cc6a989c61a09c7b9f
parentd538e5f98487e078d877c8e8badfbfff7d1709ea (diff)
fix itemstacks once and for all until they inevitably break
-rw-r--r--mods/vzxv/utils.lua15
-rw-r--r--mods/vzxv_itemstacks/container.lua20
-rw-r--r--mods/vzxv_itemstacks/init.lua2
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,
})