Try to fix kernel crashes
This commit is contained in:
parent
71a024649a
commit
1a861c7f15
@ -3,7 +3,7 @@
|
|||||||
TechAge
|
TechAge
|
||||||
=======
|
=======
|
||||||
|
|
||||||
Copyright (C) 2019-2022 Joachim Stolberg
|
Copyright (C) 2019-2023 Joachim Stolberg
|
||||||
|
|
||||||
AGPL v3
|
AGPL v3
|
||||||
See LICENSE.txt for more information
|
See LICENSE.txt for more information
|
||||||
@ -49,7 +49,7 @@ local function allow_metadata_inventory_put(pos, listname, index, stack, player)
|
|||||||
end
|
end
|
||||||
shared_inv.before_inv_access(pos, listname)
|
shared_inv.before_inv_access(pos, listname)
|
||||||
local inv = minetest.get_inventory({type="node", pos=pos})
|
local inv = minetest.get_inventory({type="node", pos=pos})
|
||||||
if inv:room_for_item(listname, stack) then
|
if inv and inv:room_for_item(listname, stack) then
|
||||||
return stack:get_count()
|
return stack:get_count()
|
||||||
end
|
end
|
||||||
return 0
|
return 0
|
||||||
@ -61,7 +61,7 @@ local function allow_metadata_inventory_take(pos, listname, index, stack, player
|
|||||||
end
|
end
|
||||||
shared_inv.before_inv_access(pos, listname)
|
shared_inv.before_inv_access(pos, listname)
|
||||||
local inv = minetest.get_inventory({type="node", pos=pos})
|
local inv = minetest.get_inventory({type="node", pos=pos})
|
||||||
if inv:contains_item(listname, stack) then
|
if inv and inv:contains_item(listname, stack) then
|
||||||
return stack:get_count()
|
return stack:get_count()
|
||||||
end
|
end
|
||||||
return 0
|
return 0
|
||||||
@ -141,36 +141,64 @@ minetest.register_node("techage:ta5_hl_chest", {
|
|||||||
techage.register_node({"techage:ta5_hl_chest"}, {
|
techage.register_node({"techage:ta5_hl_chest"}, {
|
||||||
on_inv_request = function(pos, in_dir, access_type)
|
on_inv_request = function(pos, in_dir, access_type)
|
||||||
pos = remote_pos(pos)
|
pos = remote_pos(pos)
|
||||||
local meta = minetest.get_meta(pos)
|
if pos then
|
||||||
return meta:get_inventory(), "main"
|
local meta = minetest.get_meta(pos)
|
||||||
|
if meta then
|
||||||
|
return meta:get_inventory(), "main"
|
||||||
|
end
|
||||||
|
end
|
||||||
end,
|
end,
|
||||||
on_pull_item = function(pos, in_dir, num, item_name)
|
on_pull_item = function(pos, in_dir, num, item_name)
|
||||||
pos = remote_pos(pos)
|
pos = remote_pos(pos)
|
||||||
local meta = minetest.get_meta(pos)
|
if pos then
|
||||||
local inv = meta:get_inventory()
|
local meta = minetest.get_meta(pos)
|
||||||
return techage.get_items(pos, inv, "main", num)
|
if meta then
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
if inv then
|
||||||
|
return techage.get_items(pos, inv, "main", num)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return false
|
||||||
end,
|
end,
|
||||||
on_push_item = function(pos, in_dir, stack)
|
on_push_item = function(pos, in_dir, stack)
|
||||||
if techage.hyperloop.is_paired(pos) then
|
if techage.hyperloop.is_paired(pos) then
|
||||||
pos = remote_pos(pos)
|
pos = remote_pos(pos)
|
||||||
local meta = minetest.get_meta(pos)
|
if pos then
|
||||||
local inv = meta:get_inventory()
|
local meta = minetest.get_meta(pos)
|
||||||
return techage.put_items(inv, "main", stack)
|
if meta then
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
if inv then
|
||||||
|
return techage.put_items(inv, "main", stack)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
end,
|
end,
|
||||||
on_unpull_item = function(pos, in_dir, stack)
|
on_unpull_item = function(pos, in_dir, stack)
|
||||||
pos = remote_pos(pos)
|
pos = remote_pos(pos)
|
||||||
local meta = minetest.get_meta(pos)
|
if pos then
|
||||||
local inv = meta:get_inventory()
|
local meta = minetest.get_meta(pos)
|
||||||
return techage.put_items(inv, "main", stack)
|
if meta then
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
if inv then
|
||||||
|
return techage.put_items(inv, "main", stack)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return false
|
||||||
end,
|
end,
|
||||||
on_recv_message = function(pos, src, topic, payload)
|
on_recv_message = function(pos, src, topic, payload)
|
||||||
if topic == "state" then
|
if topic == "state" then
|
||||||
pos = remote_pos(pos)
|
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local inv = meta:get_inventory()
|
if meta then
|
||||||
return techage.get_inv_state(inv, "main")
|
local inv = meta:get_inventory()
|
||||||
|
if inv then
|
||||||
|
return techage.get_inv_state(inv, "main")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return "error"
|
||||||
else
|
else
|
||||||
return "unsupported"
|
return "unsupported"
|
||||||
end
|
end
|
||||||
@ -178,8 +206,12 @@ techage.register_node({"techage:ta5_hl_chest"}, {
|
|||||||
on_beduino_request_data = function(pos, src, topic, payload)
|
on_beduino_request_data = function(pos, src, topic, payload)
|
||||||
if topic == 131 then -- Chest State
|
if topic == 131 then -- Chest State
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local inv = meta:get_inventory()
|
if meta then
|
||||||
return 0, {techage.get_inv_state_num(inv, "main")}
|
local inv = meta:get_inventory()
|
||||||
|
if inv then
|
||||||
|
return 0, {techage.get_inv_state_num(inv, "main")}
|
||||||
|
end
|
||||||
|
end
|
||||||
else
|
else
|
||||||
return 2, ""
|
return 2, ""
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user