mirror of
https://github.com/joe7575/techpack.git
synced 2024-11-26 00:53:44 +01:00
bug fixes in almost all item processing nodes
This commit is contained in:
parent
5fb6462231
commit
d9b6a96941
@ -135,6 +135,10 @@ minetest.register_node("smartline:button", {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
after_dig_node = function(pos)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
|
end,
|
||||||
|
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
@ -174,6 +178,10 @@ minetest.register_node("smartline:button_active", {
|
|||||||
|
|
||||||
on_timer = switch_off,
|
on_timer = switch_off,
|
||||||
|
|
||||||
|
after_dig_node = function(pos)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
|
end,
|
||||||
|
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
|
@ -64,6 +64,10 @@ minetest.register_node("smartline:display", {
|
|||||||
lcdlib.update_entities(pos)
|
lcdlib.update_entities(pos)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
after_dig_node = function(pos)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
|
end,
|
||||||
|
|
||||||
on_timer = on_timer,
|
on_timer = on_timer,
|
||||||
on_place = lcdlib.on_place,
|
on_place = lcdlib.on_place,
|
||||||
on_construct = lcdlib.on_construct,
|
on_construct = lcdlib.on_construct,
|
||||||
|
@ -44,8 +44,11 @@ minetest.register_node(NODE_NAME, {
|
|||||||
on_timer = function(pos,elapsed)
|
on_timer = function(pos,elapsed)
|
||||||
return wh.on_timer(Box, pos,elapsed)
|
return wh.on_timer(Box, pos,elapsed)
|
||||||
end,
|
end,
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
can_dig = function(pos)
|
||||||
wh.on_dig(Box, pos, node, puncher, pointed_thing)
|
return wh.can_dig(Box, pos)
|
||||||
|
end,
|
||||||
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
wh.after_dig_node(Box, pos, oldnode, oldmetadata, digger)
|
||||||
end,
|
end,
|
||||||
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||||
return wh.allow_metadata_inventory_put(Box, pos, listname, index, stack, player)
|
return wh.allow_metadata_inventory_put(Box, pos, listname, index, stack, player)
|
||||||
@ -55,6 +58,7 @@ minetest.register_node(NODE_NAME, {
|
|||||||
allow_metadata_inventory_move = wh.allow_metadata_inventory_move,
|
allow_metadata_inventory_move = wh.allow_metadata_inventory_move,
|
||||||
|
|
||||||
on_rotate = screwdriver.disallow,
|
on_rotate = screwdriver.disallow,
|
||||||
|
drop = "",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
@ -100,8 +104,11 @@ minetest.register_node(NODE_NAME.."_defect", {
|
|||||||
wh.after_place_node(Box, pos, placer, itemstack)
|
wh.after_place_node(Box, pos, placer, itemstack)
|
||||||
Box.State:defect(pos, M(pos))
|
Box.State:defect(pos, M(pos))
|
||||||
end,
|
end,
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
can_dig = function(pos)
|
||||||
wh.on_dig(Box, pos, node, puncher, pointed_thing)
|
return wh.can_dig(Box, pos)
|
||||||
|
end,
|
||||||
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
wh.after_dig_node(Box, pos, oldnode, oldmetadata, digger)
|
||||||
end,
|
end,
|
||||||
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||||
return wh.allow_metadata_inventory_put(Box, pos, listname, index, stack, player)
|
return wh.allow_metadata_inventory_put(Box, pos, listname, index, stack, player)
|
||||||
@ -125,10 +132,11 @@ tubelib.register_node(NODE_NAME,
|
|||||||
local meta = M(pos)
|
local meta = M(pos)
|
||||||
meta:set_string("push_dir", side)
|
meta:set_string("push_dir", side)
|
||||||
local num = wh.numbers_to_shift(Box, meta, item)
|
local num = wh.numbers_to_shift(Box, meta, item)
|
||||||
if num then
|
if num > 0 then
|
||||||
item:set_count(num)
|
item:set_count(num)
|
||||||
return tubelib.put_item(meta, "shift", item)
|
return tubelib.put_item(meta, "shift", item)
|
||||||
end
|
end
|
||||||
|
return true
|
||||||
end,
|
end,
|
||||||
on_pull_stack = function(pos, side)
|
on_pull_stack = function(pos, side)
|
||||||
return tubelib.get_stack(M(pos), "main")
|
return tubelib.get_stack(M(pos), "main")
|
||||||
|
@ -44,8 +44,11 @@ minetest.register_node(NODE_NAME, {
|
|||||||
on_timer = function(pos,elapsed)
|
on_timer = function(pos,elapsed)
|
||||||
return wh.on_timer(Box, pos,elapsed)
|
return wh.on_timer(Box, pos,elapsed)
|
||||||
end,
|
end,
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
can_dig = function(pos)
|
||||||
wh.on_dig(Box, pos, node, puncher, pointed_thing)
|
return wh.can_dig(Box, pos)
|
||||||
|
end,
|
||||||
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
wh.after_dig_node(Box, pos, oldnode, oldmetadata, digger)
|
||||||
end,
|
end,
|
||||||
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||||
return wh.allow_metadata_inventory_put(Box, pos, listname, index, stack, player)
|
return wh.allow_metadata_inventory_put(Box, pos, listname, index, stack, player)
|
||||||
@ -55,6 +58,7 @@ minetest.register_node(NODE_NAME, {
|
|||||||
allow_metadata_inventory_move = wh.allow_metadata_inventory_move,
|
allow_metadata_inventory_move = wh.allow_metadata_inventory_move,
|
||||||
|
|
||||||
on_rotate = screwdriver.disallow,
|
on_rotate = screwdriver.disallow,
|
||||||
|
drop = "",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
@ -100,8 +104,11 @@ minetest.register_node(NODE_NAME.."_defect", {
|
|||||||
wh.after_place_node(Box, pos, placer, itemstack)
|
wh.after_place_node(Box, pos, placer, itemstack)
|
||||||
Box.State:defect(pos, M(pos))
|
Box.State:defect(pos, M(pos))
|
||||||
end,
|
end,
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
can_dig = function(pos)
|
||||||
wh.on_dig(Box, pos, node, puncher, pointed_thing)
|
return wh.can_dig(Box, pos)
|
||||||
|
end,
|
||||||
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
wh.after_dig_node(Box, pos, oldnode, oldmetadata, digger)
|
||||||
end,
|
end,
|
||||||
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||||
return wh.allow_metadata_inventory_put(Box, pos, listname, index, stack, player)
|
return wh.allow_metadata_inventory_put(Box, pos, listname, index, stack, player)
|
||||||
@ -125,10 +132,11 @@ tubelib.register_node(NODE_NAME,
|
|||||||
local meta = M(pos)
|
local meta = M(pos)
|
||||||
meta:set_string("push_dir", side)
|
meta:set_string("push_dir", side)
|
||||||
local num = wh.numbers_to_shift(Box, meta, item)
|
local num = wh.numbers_to_shift(Box, meta, item)
|
||||||
if num then
|
if num > 0 then
|
||||||
item:set_count(num)
|
item:set_count(num)
|
||||||
return tubelib.put_item(meta, "shift", item)
|
return tubelib.put_item(meta, "shift", item)
|
||||||
end
|
end
|
||||||
|
return true
|
||||||
end,
|
end,
|
||||||
on_pull_stack = function(pos, side)
|
on_pull_stack = function(pos, side)
|
||||||
return tubelib.get_stack(M(pos), "main")
|
return tubelib.get_stack(M(pos), "main")
|
||||||
|
@ -44,8 +44,11 @@ minetest.register_node(NODE_NAME, {
|
|||||||
on_timer = function(pos,elapsed)
|
on_timer = function(pos,elapsed)
|
||||||
return wh.on_timer(Box, pos,elapsed)
|
return wh.on_timer(Box, pos,elapsed)
|
||||||
end,
|
end,
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
can_dig = function(pos)
|
||||||
wh.on_dig(Box, pos, node, puncher, pointed_thing)
|
return wh.can_dig(Box, pos)
|
||||||
|
end,
|
||||||
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
wh.after_dig_node(Box, pos, oldnode, oldmetadata, digger)
|
||||||
end,
|
end,
|
||||||
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||||
return wh.allow_metadata_inventory_put(Box, pos, listname, index, stack, player)
|
return wh.allow_metadata_inventory_put(Box, pos, listname, index, stack, player)
|
||||||
@ -55,6 +58,7 @@ minetest.register_node(NODE_NAME, {
|
|||||||
allow_metadata_inventory_move = wh.allow_metadata_inventory_move,
|
allow_metadata_inventory_move = wh.allow_metadata_inventory_move,
|
||||||
|
|
||||||
on_rotate = screwdriver.disallow,
|
on_rotate = screwdriver.disallow,
|
||||||
|
drop = "",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
@ -100,8 +104,11 @@ minetest.register_node(NODE_NAME.."_defect", {
|
|||||||
wh.after_place_node(Box, pos, placer, itemstack)
|
wh.after_place_node(Box, pos, placer, itemstack)
|
||||||
Box.State:defect(pos, M(pos))
|
Box.State:defect(pos, M(pos))
|
||||||
end,
|
end,
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
can_dig = function(pos)
|
||||||
wh.on_dig(Box, pos, node, puncher, pointed_thing)
|
return wh.can_dig(Box, pos)
|
||||||
|
end,
|
||||||
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
wh.after_dig_node(Box, pos, oldnode, oldmetadata, digger)
|
||||||
end,
|
end,
|
||||||
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||||
return wh.allow_metadata_inventory_put(Box, pos, listname, index, stack, player)
|
return wh.allow_metadata_inventory_put(Box, pos, listname, index, stack, player)
|
||||||
@ -125,10 +132,11 @@ tubelib.register_node(NODE_NAME,
|
|||||||
local meta = M(pos)
|
local meta = M(pos)
|
||||||
meta:set_string("push_dir", side)
|
meta:set_string("push_dir", side)
|
||||||
local num = wh.numbers_to_shift(Box, meta, item)
|
local num = wh.numbers_to_shift(Box, meta, item)
|
||||||
if num then
|
if num > 0 then
|
||||||
item:set_count(num)
|
item:set_count(num)
|
||||||
return tubelib.put_item(meta, "shift", item)
|
return tubelib.put_item(meta, "shift", item)
|
||||||
end
|
end
|
||||||
|
return true
|
||||||
end,
|
end,
|
||||||
on_pull_stack = function(pos, side)
|
on_pull_stack = function(pos, side)
|
||||||
return tubelib.get_stack(M(pos), "main")
|
return tubelib.get_stack(M(pos), "main")
|
||||||
|
@ -147,7 +147,7 @@ end
|
|||||||
|
|
||||||
function techpack_warehouse.numbers_to_shift(self, meta, item)
|
function techpack_warehouse.numbers_to_shift(self, meta, item)
|
||||||
-- check cache
|
-- check cache
|
||||||
local number = meta:get_string("number")
|
local number = meta:get_string("tubelib_number")
|
||||||
local item_name = item:get_name()
|
local item_name = item:get_name()
|
||||||
if not Cache[number] then
|
if not Cache[number] then
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
@ -191,7 +191,7 @@ function techpack_warehouse.allow_metadata_inventory_put(self, pos, listname, in
|
|||||||
if listname == "input" and item_name == stack:get_name() then
|
if listname == "input" and item_name == stack:get_name() then
|
||||||
return math.min(stack:get_count(), self.inv_size - main_stack:get_count())
|
return math.min(stack:get_count(), self.inv_size - main_stack:get_count())
|
||||||
elseif listname == "filter" and item_name == main_stack:get_name() then
|
elseif listname == "filter" and item_name == main_stack:get_name() then
|
||||||
local number = M(pos):get_string("number")
|
local number = M(pos):get_string("tubelib_number")
|
||||||
Cache[number] = nil
|
Cache[number] = nil
|
||||||
return 1
|
return 1
|
||||||
elseif listname == "shift" then
|
elseif listname == "shift" then
|
||||||
@ -202,7 +202,7 @@ end
|
|||||||
|
|
||||||
function techpack_warehouse.on_metadata_inventory_put(pos, listname, index, stack, player)
|
function techpack_warehouse.on_metadata_inventory_put(pos, listname, index, stack, player)
|
||||||
if listname == "input" then
|
if listname == "input" then
|
||||||
local number = M(pos):get_string("number")
|
local number = M(pos):get_string("tubelib_number")
|
||||||
Cache[number] = nil
|
Cache[number] = nil
|
||||||
minetest.after(0.5, move_to_main, pos, index)
|
minetest.after(0.5, move_to_main, pos, index)
|
||||||
end
|
end
|
||||||
@ -213,7 +213,7 @@ function techpack_warehouse.allow_metadata_inventory_take(pos, listname, index,
|
|||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
if listname == "main" then
|
if listname == "main" then
|
||||||
local number = M(pos):get_string("number")
|
local number = M(pos):get_string("tubelib_number")
|
||||||
Cache[number] = nil
|
Cache[number] = nil
|
||||||
local inv = M(pos):get_inventory()
|
local inv = M(pos):get_inventory()
|
||||||
local list = inv:get_list("main")
|
local list = inv:get_list("main")
|
||||||
@ -224,11 +224,11 @@ function techpack_warehouse.allow_metadata_inventory_take(pos, listname, index,
|
|||||||
return num
|
return num
|
||||||
end
|
end
|
||||||
elseif listname == "filter" then
|
elseif listname == "filter" then
|
||||||
local number = M(pos):get_string("number")
|
local number = M(pos):get_string("tubelib_number")
|
||||||
Cache[number] = nil
|
Cache[number] = nil
|
||||||
return 1
|
return 1
|
||||||
elseif listname == "shift" then
|
elseif listname == "shift" then
|
||||||
local number = M(pos):get_string("number")
|
local number = M(pos):get_string("tubelib_number")
|
||||||
Cache[number] = nil
|
Cache[number] = nil
|
||||||
return stack:get_count()
|
return stack:get_count()
|
||||||
end
|
end
|
||||||
@ -243,7 +243,7 @@ function techpack_warehouse.on_receive_fields(self, pos, formname, fields, playe
|
|||||||
if minetest.is_protected(pos, player:get_player_name()) then
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local number = M(pos):get_string("number")
|
local number = M(pos):get_string("tubelib_number")
|
||||||
Cache[number] = nil
|
Cache[number] = nil
|
||||||
self.State:state_button_event(pos, fields)
|
self.State:state_button_event(pos, fields)
|
||||||
end
|
end
|
||||||
@ -264,7 +264,7 @@ function techpack_warehouse.on_timer(self, pos, elapsed)
|
|||||||
local meta = M(pos)
|
local meta = M(pos)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
if not inv:is_empty("shift") then
|
if not inv:is_empty("shift") then
|
||||||
local number = meta:get_string("number")
|
--local number = meta:get_string("tubelib_number")
|
||||||
local player_name = meta:get_string("player_name")
|
local player_name = meta:get_string("player_name")
|
||||||
local offs = meta:get_int("offs")
|
local offs = meta:get_int("offs")
|
||||||
local push_dir = meta:get_string("push_dir")
|
local push_dir = meta:get_string("push_dir")
|
||||||
@ -295,10 +295,14 @@ function techpack_warehouse.on_timer(self, pos, elapsed)
|
|||||||
return self.State:is_active(meta)
|
return self.State:is_active(meta)
|
||||||
end
|
end
|
||||||
|
|
||||||
function techpack_warehouse.on_dig(self, pos, node, puncher, pointed_thing)
|
function techpack_warehouse.can_dig(self, pos)
|
||||||
local inv = M(pos):get_inventory()
|
local inv = M(pos):get_inventory()
|
||||||
if inv:is_empty("main") and inv:is_empty("shift") then
|
return inv:is_empty("main") and inv:is_empty("shift")
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
end
|
||||||
tubelib.remove_node(pos)
|
|
||||||
|
function techpack_warehouse.after_dig_node(self, pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
|
if oldnode.name == self.node_name then -- not for defect nodes
|
||||||
|
self.State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -88,6 +88,7 @@ tubelib.register_node("tubelib:blackhole", {}, {
|
|||||||
on_recv_message = function(pos, topic, payload)
|
on_recv_message = function(pos, topic, payload)
|
||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
if topic == "state" then
|
if topic == "state" then
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
return meta:get_int("disappeared")
|
return meta:get_int("disappeared")
|
||||||
else
|
else
|
||||||
return "not supported"
|
return "not supported"
|
||||||
|
@ -151,6 +151,13 @@ local function get_dest_node(pos, side)
|
|||||||
return spos, in_side, Name2Name[node.name] or node.name
|
return spos, in_side, Name2Name[node.name] or node.name
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function item_handling_node(name)
|
||||||
|
local node_def = name and tubelib_NodeDef[name]
|
||||||
|
if node_def then
|
||||||
|
return node_def.on_pull_item or node_def.on_push_item or node_def.is_pusher
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
-- API helper functions
|
-- API helper functions
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
@ -219,6 +226,11 @@ end
|
|||||||
-- Function determines and returns the node position number,
|
-- Function determines and returns the node position number,
|
||||||
-- needed for message communication.
|
-- needed for message communication.
|
||||||
function tubelib.add_node(pos, name)
|
function tubelib.add_node(pos, name)
|
||||||
|
print("tubelib.add_node", S(pos))
|
||||||
|
if item_handling_node(name) then
|
||||||
|
print("Tube:after_place_node")
|
||||||
|
Tube:after_place_node(pos)
|
||||||
|
end
|
||||||
-- store position
|
-- store position
|
||||||
local number = get_number(pos)
|
local number = get_number(pos)
|
||||||
Number2Pos[number] = {
|
Number2Pos[number] = {
|
||||||
@ -230,14 +242,21 @@ end
|
|||||||
|
|
||||||
-- Function removes the node from the tubelib lists.
|
-- Function removes the node from the tubelib lists.
|
||||||
function tubelib.remove_node(pos)
|
function tubelib.remove_node(pos)
|
||||||
|
print("tubelib.remove_node", S(pos))
|
||||||
local number = get_number(pos)
|
local number = get_number(pos)
|
||||||
|
local name
|
||||||
if Number2Pos[number] then
|
if Number2Pos[number] then
|
||||||
|
name = Number2Pos[number].name
|
||||||
Number2Pos[number] = {
|
Number2Pos[number] = {
|
||||||
pos = pos,
|
pos = pos,
|
||||||
name = nil,
|
name = nil,
|
||||||
time = minetest.get_day_count() -- used for reservation timeout
|
time = minetest.get_day_count() -- used for reservation timeout
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
if item_handling_node(name) then
|
||||||
|
print("Tube:after_dig_node")
|
||||||
|
Tube:after_dig_node(pos)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -345,19 +345,16 @@ minetest.register_node("tubelib:distributor", {
|
|||||||
|
|
||||||
on_receive_fields = on_receive_fields,
|
on_receive_fields = on_receive_fields,
|
||||||
|
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
can_dig = function(pos, player)
|
||||||
if minetest.is_protected(pos, puncher:get_player_name()) then
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
return
|
return false
|
||||||
end
|
|
||||||
local meta = M(pos)
|
|
||||||
local inv = meta:get_inventory()
|
|
||||||
if inv:is_empty("src") then
|
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
|
||||||
tubelib.remove_node(pos) -- <<=== tubelib
|
|
||||||
end
|
end
|
||||||
|
local inv = M(pos):get_inventory()
|
||||||
|
return inv:is_empty("src")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos) -- <<=== tubelib
|
||||||
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
@ -448,6 +445,18 @@ minetest.register_node("tubelib:distributor_defect", {
|
|||||||
|
|
||||||
on_receive_fields = on_receive_fields,
|
on_receive_fields = on_receive_fields,
|
||||||
|
|
||||||
|
can_dig = function(pos, player)
|
||||||
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
local inv = M(pos):get_inventory()
|
||||||
|
return inv:is_empty("src")
|
||||||
|
end,
|
||||||
|
|
||||||
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos) -- <<=== tubelib
|
||||||
|
end,
|
||||||
|
|
||||||
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
||||||
allow_metadata_inventory_take = allow_metadata_inventory_take,
|
allow_metadata_inventory_take = allow_metadata_inventory_take,
|
||||||
allow_metadata_inventory_move = allow_metadata_inventory_move,
|
allow_metadata_inventory_move = allow_metadata_inventory_move,
|
||||||
|
@ -46,6 +46,7 @@ local function read_state(itemstack, user, pointed_thing)
|
|||||||
local counter = tubelib.send_request(number, "counter", nil)
|
local counter = tubelib.send_request(number, "counter", nil)
|
||||||
local aging = tubelib.send_request(number, "aging", nil)
|
local aging = tubelib.send_request(number, "aging", nil)
|
||||||
if state and counter and aging then
|
if state and counter and aging then
|
||||||
|
if type(counter) ~= "number" then counter = "unknown" end
|
||||||
minetest.chat_send_player(user:get_player_name(), "[Tubelib] state ="..state..", counter = "..counter..", aging = "..aging)
|
minetest.chat_send_player(user:get_player_name(), "[Tubelib] state ="..state..", counter = "..counter..", aging = "..aging)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -301,16 +301,17 @@ minetest.register_node("tubelib_addons1:autocrafter", {
|
|||||||
inv:set_size("output", 1)
|
inv:set_size("output", 1)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
can_dig = function(pos, player)
|
||||||
local inv = M(pos):get_inventory()
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
if inv:is_empty("dst") and inv:is_empty("src") then
|
return false
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
|
||||||
tubelib.remove_node(pos)
|
|
||||||
autocrafterCache[minetest.hash_node_position(pos)] = nil
|
|
||||||
end
|
end
|
||||||
|
local inv = M(pos):get_inventory()
|
||||||
|
return inv:is_empty("dst") and inv:is_empty("src")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
autocrafterCache[minetest.hash_node_position(pos)] = nil
|
||||||
|
tubelib.remove_node(pos)
|
||||||
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
@ -385,13 +386,17 @@ minetest.register_node("tubelib_addons1:autocrafter_defect", {
|
|||||||
State:defect(pos, meta)
|
State:defect(pos, meta)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
can_dig = function(pos, player)
|
||||||
local inv = M(pos):get_inventory()
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
if inv:is_empty("dst") and inv:is_empty("src") then
|
return false
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
|
||||||
tubelib.remove_node(pos)
|
|
||||||
autocrafterCache[minetest.hash_node_position(pos)] = nil
|
|
||||||
end
|
end
|
||||||
|
local inv = M(pos):get_inventory()
|
||||||
|
return inv:is_empty("dst") and inv:is_empty("src")
|
||||||
|
end,
|
||||||
|
|
||||||
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
autocrafterCache[minetest.hash_node_position(pos)] = nil
|
||||||
|
tubelib.remove_node(pos)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
||||||
|
@ -100,20 +100,18 @@ minetest.register_node("tubelib_addons1:chest", {
|
|||||||
meta:set_string("infotext", "Tubelib Protected Chest "..number)
|
meta:set_string("infotext", "Tubelib Protected Chest "..number)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
can_dig = function(pos,player)
|
can_dig = function(pos, player)
|
||||||
if minetest.is_protected(pos, player:get_player_name()) then
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
local meta = minetest.get_meta(pos)
|
local inv = minetest.get_meta(pos):get_inventory()
|
||||||
local inv = meta:get_inventory()
|
|
||||||
return inv:is_empty("main")
|
return inv:is_empty("main")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
|
||||||
tubelib.remove_node(pos)
|
tubelib.remove_node(pos)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
||||||
allow_metadata_inventory_take = allow_metadata_inventory_take,
|
allow_metadata_inventory_take = allow_metadata_inventory_take,
|
||||||
|
|
||||||
|
@ -72,6 +72,10 @@ minetest.register_node("tubelib_addons1:detector", {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
|
end,
|
||||||
|
|
||||||
on_rotate = screwdriver.disallow,
|
on_rotate = screwdriver.disallow,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
@ -97,6 +101,10 @@ minetest.register_node("tubelib_addons1:detector_active", {
|
|||||||
on_timer = switch_off,
|
on_timer = switch_off,
|
||||||
on_rotate = screwdriver.disallow,
|
on_rotate = screwdriver.disallow,
|
||||||
|
|
||||||
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
|
end,
|
||||||
|
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
light_source = 2,
|
light_source = 2,
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
|
@ -188,17 +188,18 @@ minetest.register_node("tubelib_addons1:fermenter", {
|
|||||||
State:node_init(pos, number)
|
State:node_init(pos, number)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
-- the fermenter needs 'on_dig' to be able to remove the upper node
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
on_dig = function(pos, node, puncher, pointed_thing)
|
||||||
local meta = M(pos)
|
local meta = M(pos)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
if inv:is_empty("dst") and inv:is_empty("src") then
|
if inv:is_empty("dst") and inv:is_empty("src") then
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
minetest.node_dig(pos, node, puncher, pointed_thing)
|
||||||
minetest.remove_node({x=pos.x, y=pos.y+1, z=pos.z})
|
minetest.remove_node({x=pos.x, y=pos.y+1, z=pos.z})
|
||||||
tubelib.remove_node(pos)
|
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
@ -219,7 +220,7 @@ minetest.register_node("tubelib_addons1:fermenter", {
|
|||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("tubelib_addons1:fermenter_defect", {
|
minetest.register_node("tubelib_addons1:fermenter_defect", {
|
||||||
description = "Tubelib Fermenter",
|
description = "Tubelib Fermenter defect",
|
||||||
inventory_image = "tubelib_addons1_fermenter_inventory.png",
|
inventory_image = "tubelib_addons1_fermenter_inventory.png",
|
||||||
tiles = {
|
tiles = {
|
||||||
-- up, down, right, left, back, front
|
-- up, down, right, left, back, front
|
||||||
@ -254,15 +255,19 @@ minetest.register_node("tubelib_addons1:fermenter_defect", {
|
|||||||
State:defect(pos, M(pos))
|
State:defect(pos, M(pos))
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
-- the fermenter needs 'on_dig' to be able to remove the upper node
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
on_dig = function(pos, node, puncher, pointed_thing)
|
||||||
local meta = M(pos)
|
local meta = M(pos)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
if inv:is_empty("dst") and inv:is_empty("src") then
|
if inv:is_empty("dst") and inv:is_empty("src") then
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
minetest.node_dig(pos, node, puncher, pointed_thing)
|
||||||
minetest.remove_node({x=pos.x, y=pos.y+1, z=pos.z})
|
minetest.remove_node({x=pos.x, y=pos.y+1, z=pos.z})
|
||||||
tubelib.remove_node(pos)
|
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
|
end,
|
||||||
|
|
||||||
on_rotate = screwdriver.disallow,
|
on_rotate = screwdriver.disallow,
|
||||||
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
||||||
|
@ -100,7 +100,7 @@ minetest.register_node("tubelib_addons1:funnel", {
|
|||||||
on_timer = scan_for_objects,
|
on_timer = scan_for_objects,
|
||||||
on_rotate = screwdriver.disallow,
|
on_rotate = screwdriver.disallow,
|
||||||
|
|
||||||
can_dig = function(pos,player)
|
can_dig = function(pos, player)
|
||||||
if minetest.is_protected(pos, player:get_player_name()) then
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
@ -109,11 +109,10 @@ minetest.register_node("tubelib_addons1:funnel", {
|
|||||||
return inv:is_empty("main")
|
return inv:is_empty("main")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
|
||||||
tubelib.remove_node(pos)
|
tubelib.remove_node(pos)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
||||||
allow_metadata_inventory_take = allow_metadata_inventory_take,
|
allow_metadata_inventory_take = allow_metadata_inventory_take,
|
||||||
|
|
||||||
|
@ -136,17 +136,17 @@ minetest.register_node("tubelib_addons1:grinder", {
|
|||||||
inv:set_size('dst', 9)
|
inv:set_size('dst', 9)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
can_dig = function(pos, player)
|
||||||
local meta = M(pos)
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
local inv = meta:get_inventory()
|
return false
|
||||||
if inv:is_empty("dst") and inv:is_empty("src") then
|
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
|
||||||
tubelib.remove_node(pos)
|
|
||||||
end
|
end
|
||||||
|
local inv = M(pos):get_inventory()
|
||||||
|
return inv:is_empty("dst") and inv:is_empty("src")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rotate = screwdriver.disallow,
|
on_rotate = screwdriver.disallow,
|
||||||
@ -225,15 +225,18 @@ minetest.register_node("tubelib_addons1:grinder_defect", {
|
|||||||
State:defect(pos, meta)
|
State:defect(pos, meta)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
can_dig = function(pos, player)
|
||||||
local meta = M(pos)
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
local inv = meta:get_inventory()
|
return false
|
||||||
if inv:is_empty("dst") and inv:is_empty("src") then
|
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
|
||||||
tubelib.remove_node(pos)
|
|
||||||
end
|
end
|
||||||
|
local inv = M(pos):get_inventory()
|
||||||
|
return inv:is_empty("dst") and inv:is_empty("src")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
|
end,
|
||||||
|
|
||||||
on_rotate = screwdriver.disallow,
|
on_rotate = screwdriver.disallow,
|
||||||
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
||||||
allow_metadata_inventory_move = allow_metadata_inventory_move,
|
allow_metadata_inventory_move = allow_metadata_inventory_move,
|
||||||
|
@ -325,20 +325,17 @@ minetest.register_node("tubelib_addons1:harvester_base", {
|
|||||||
State:node_init(pos, number)
|
State:node_init(pos, number)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
can_dig = function(pos, player)
|
||||||
if minetest.is_protected(pos, puncher:get_player_name()) then
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
return
|
return false
|
||||||
end
|
|
||||||
local meta = M(pos)
|
|
||||||
local inv = meta:get_inventory()
|
|
||||||
if inv:is_empty("main") then
|
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
|
||||||
tubelib.remove_node(pos)
|
|
||||||
end
|
end
|
||||||
|
local inv = M(pos):get_inventory()
|
||||||
|
return inv:is_empty("main")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rotate = screwdriver.disallow,
|
on_rotate = screwdriver.disallow,
|
||||||
@ -389,16 +386,16 @@ minetest.register_node("tubelib_addons1:harvester_defect", {
|
|||||||
State:defect(pos, meta)
|
State:defect(pos, meta)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
can_dig = function(pos, player)
|
||||||
if minetest.is_protected(pos, puncher:get_player_name()) then
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
return
|
return false
|
||||||
end
|
|
||||||
local meta = M(pos)
|
|
||||||
local inv = meta:get_inventory()
|
|
||||||
if inv:is_empty("main") then
|
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
|
||||||
tubelib.remove_node(pos)
|
|
||||||
end
|
end
|
||||||
|
local inv = M(pos):get_inventory()
|
||||||
|
return inv:is_empty("main")
|
||||||
|
end,
|
||||||
|
|
||||||
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rotate = screwdriver.disallow,
|
on_rotate = screwdriver.disallow,
|
||||||
|
@ -137,7 +137,7 @@ minetest.register_node("tubelib_addons1:liquidsampler", {
|
|||||||
},
|
},
|
||||||
|
|
||||||
after_place_node = function(pos, placer)
|
after_place_node = function(pos, placer)
|
||||||
local number = tubelib.add_node(pos, "ttubelib_addons1:liquidsampler")
|
local number = tubelib.add_node(pos, "tubelib_addons1:liquidsampler")
|
||||||
State:node_init(pos, number)
|
State:node_init(pos, number)
|
||||||
local meta = M(pos)
|
local meta = M(pos)
|
||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
@ -148,17 +148,17 @@ minetest.register_node("tubelib_addons1:liquidsampler", {
|
|||||||
inv:set_size("dst", 28)
|
inv:set_size("dst", 28)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
can_dig = function(pos, player)
|
||||||
local meta = M(pos)
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
local inv = meta:get_inventory()
|
return false
|
||||||
if inv:is_empty("dst") and inv:is_empty("src") then
|
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
|
||||||
tubelib.remove_node(pos)
|
|
||||||
end
|
end
|
||||||
|
local inv = M(pos):get_inventory()
|
||||||
|
return inv:is_empty("dst") and inv:is_empty("src")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rotate = screwdriver.disallow,
|
on_rotate = screwdriver.disallow,
|
||||||
@ -238,13 +238,16 @@ minetest.register_node("tubelib_addons1:liquidsampler_defect", {
|
|||||||
State:defect(pos, meta)
|
State:defect(pos, meta)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
can_dig = function(pos, player)
|
||||||
local meta = M(pos)
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
local inv = meta:get_inventory()
|
return false
|
||||||
if inv:is_empty("dst") and inv:is_empty("src") then
|
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
|
||||||
tubelib.remove_node(pos)
|
|
||||||
end
|
end
|
||||||
|
local inv = M(pos):get_inventory()
|
||||||
|
return inv:is_empty("dst") and inv:is_empty("src")
|
||||||
|
end,
|
||||||
|
|
||||||
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rotate = screwdriver.disallow,
|
on_rotate = screwdriver.disallow,
|
||||||
|
@ -304,19 +304,16 @@ minetest.register_node("tubelib_addons1:quarry", {
|
|||||||
State:node_init(pos, number)
|
State:node_init(pos, number)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
can_dig = function(pos, player)
|
||||||
if minetest.is_protected(pos, puncher:get_player_name()) then
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
return
|
return false
|
||||||
end
|
|
||||||
local meta = M(pos)
|
|
||||||
local inv = meta:get_inventory()
|
|
||||||
if inv:is_empty("main") then
|
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
|
||||||
tubelib.remove_node(pos)
|
|
||||||
end
|
end
|
||||||
|
local inv = M(pos):get_inventory()
|
||||||
|
return inv:is_empty("main")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
@ -401,16 +398,16 @@ minetest.register_node("tubelib_addons1:quarry_defect", {
|
|||||||
State:defect(pos, M(pos))
|
State:defect(pos, M(pos))
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
can_dig = function(pos, player)
|
||||||
if minetest.is_protected(pos, puncher:get_player_name()) then
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
return
|
return false
|
||||||
end
|
|
||||||
local meta = M(pos)
|
|
||||||
local inv = meta:get_inventory()
|
|
||||||
if inv:is_empty("main") then
|
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
|
||||||
tubelib.remove_node(pos)
|
|
||||||
end
|
end
|
||||||
|
local inv = M(pos):get_inventory()
|
||||||
|
return inv:is_empty("main")
|
||||||
|
end,
|
||||||
|
|
||||||
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rotate = screwdriver.disallow,
|
on_rotate = screwdriver.disallow,
|
||||||
|
@ -171,18 +171,19 @@ minetest.register_node("tubelib_addons1:reformer", {
|
|||||||
local number = tubelib.add_node(pos, "tubelib_addons1:reformer")
|
local number = tubelib.add_node(pos, "tubelib_addons1:reformer")
|
||||||
State:node_init(pos, number)
|
State:node_init(pos, number)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
-- the reformer needs 'on_dig' to be able to remove the upper node
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
on_dig = function(pos, node, puncher, pointed_thing)
|
||||||
local meta = M(pos)
|
local meta = M(pos)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
if inv:is_empty("dst") and inv:is_empty("src") then
|
if inv:is_empty("dst") and inv:is_empty("src") then
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
minetest.node_dig(pos, node, puncher, pointed_thing)
|
||||||
minetest.remove_node({x=pos.x, y=pos.y+1, z=pos.z})
|
minetest.remove_node({x=pos.x, y=pos.y+1, z=pos.z})
|
||||||
tubelib.remove_node(pos)
|
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
@ -203,7 +204,7 @@ minetest.register_node("tubelib_addons1:reformer", {
|
|||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("tubelib_addons1:reformer_defect", {
|
minetest.register_node("tubelib_addons1:reformer_defect", {
|
||||||
description = "Tubelib Reformer",
|
description = "Tubelib Reformer defect",
|
||||||
inventory_image = "tubelib_addons1_reformer_inventory.png",
|
inventory_image = "tubelib_addons1_reformer_inventory.png",
|
||||||
tiles = {
|
tiles = {
|
||||||
-- up, down, right, left, back, front
|
-- up, down, right, left, back, front
|
||||||
@ -238,16 +239,20 @@ minetest.register_node("tubelib_addons1:reformer_defect", {
|
|||||||
State:defect(pos, M(pos))
|
State:defect(pos, M(pos))
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
-- the reformer needs 'on_dig' to be able to remove the upper node
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
on_dig = function(pos, node, puncher, pointed_thing)
|
||||||
local meta = M(pos)
|
local meta = M(pos)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
if inv:is_empty("dst") and inv:is_empty("src") then
|
if inv:is_empty("dst") and inv:is_empty("src") then
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
minetest.node_dig(pos, node, puncher, pointed_thing)
|
||||||
minetest.remove_node({x=pos.x, y=pos.y+1, z=pos.z})
|
minetest.remove_node({x=pos.x, y=pos.y+1, z=pos.z})
|
||||||
tubelib.remove_node(pos)
|
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
|
end,
|
||||||
|
|
||||||
on_rotate = screwdriver.disallow,
|
on_rotate = screwdriver.disallow,
|
||||||
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
||||||
allow_metadata_inventory_move = allow_metadata_inventory_move,
|
allow_metadata_inventory_move = allow_metadata_inventory_move,
|
||||||
|
@ -115,6 +115,10 @@ for idx,color in ipairs(tColors) do
|
|||||||
switch_node(pos, "", clicker)
|
switch_node(pos, "", clicker)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
after_dig_node = function(pos)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
|
end,
|
||||||
|
|
||||||
paramtype = 'light',
|
paramtype = 'light',
|
||||||
light_source = minetest.LIGHT_MAX,
|
light_source = minetest.LIGHT_MAX,
|
||||||
groups = {choppy=2, cracky=1, not_in_creative_inventory=1},
|
groups = {choppy=2, cracky=1, not_in_creative_inventory=1},
|
||||||
|
@ -83,6 +83,10 @@ local function register_lamp(tbl)
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
after_dig_node = function(pos)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
|
end,
|
||||||
|
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
light_source = minetest.LIGHT_MAX,
|
light_source = minetest.LIGHT_MAX,
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
]]--
|
]]--
|
||||||
|
|
||||||
local function join_to_string(tbl)
|
local function join_to_string(tbl)
|
||||||
t = {}
|
local t = {}
|
||||||
for key,_ in pairs(tbl) do
|
for key,_ in pairs(tbl) do
|
||||||
t[#t + 1] = key .. " "
|
t[#t + 1] = key .. " "
|
||||||
end
|
end
|
||||||
|
@ -26,7 +26,7 @@ local STANDBY_TICKS = 4
|
|||||||
local CYCLE_TIME = 2
|
local CYCLE_TIME = 2
|
||||||
|
|
||||||
local function formspec(self, pos, meta)
|
local function formspec(self, pos, meta)
|
||||||
local filter = minetest.deserialize(meta:get_string("filter"))
|
local filter = minetest.deserialize(meta:get_string("filter")) or {false,false,false,false}
|
||||||
return "size[10.5,8.5]"..
|
return "size[10.5,8.5]"..
|
||||||
default.gui_bg..
|
default.gui_bg..
|
||||||
default.gui_bg_img..
|
default.gui_bg_img..
|
||||||
@ -329,20 +329,17 @@ minetest.register_node("tubelib_addons3:distributor", {
|
|||||||
|
|
||||||
on_receive_fields = on_receive_fields,
|
on_receive_fields = on_receive_fields,
|
||||||
|
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
can_dig = function(pos, player)
|
||||||
if minetest.is_protected(pos, puncher:get_player_name()) then
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
return
|
return false
|
||||||
end
|
|
||||||
local meta = M(pos)
|
|
||||||
local inv = meta:get_inventory()
|
|
||||||
if inv:is_empty("src") then
|
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
|
||||||
tubelib.remove_node(pos)
|
|
||||||
end
|
end
|
||||||
|
local inv = M(pos):get_inventory()
|
||||||
|
return inv:is_empty("src")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
||||||
@ -415,11 +412,11 @@ minetest.register_node("tubelib_addons3:distributor_defect", {
|
|||||||
after_place_node = function(pos, placer)
|
after_place_node = function(pos, placer)
|
||||||
local meta = M(pos)
|
local meta = M(pos)
|
||||||
local number = tubelib.add_node(pos, "tubelib_addons3:distributor")
|
local number = tubelib.add_node(pos, "tubelib_addons3:distributor")
|
||||||
|
local filter = {false,false,false,false}
|
||||||
|
meta:set_string("filter", minetest.serialize(filter))
|
||||||
State:node_init(pos, number)
|
State:node_init(pos, number)
|
||||||
meta:set_string("player_name", placer:get_player_name())
|
meta:set_string("player_name", placer:get_player_name())
|
||||||
|
|
||||||
local filter = {false,false,false,false}
|
|
||||||
meta:set_string("filter", minetest.serialize(filter))
|
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
inv:set_size('src', 8)
|
inv:set_size('src', 8)
|
||||||
inv:set_size('yellow', 6)
|
inv:set_size('yellow', 6)
|
||||||
@ -432,6 +429,18 @@ minetest.register_node("tubelib_addons3:distributor_defect", {
|
|||||||
|
|
||||||
on_receive_fields = on_receive_fields,
|
on_receive_fields = on_receive_fields,
|
||||||
|
|
||||||
|
can_dig = function(pos, player)
|
||||||
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
local inv = M(pos):get_inventory()
|
||||||
|
return inv:is_empty("src")
|
||||||
|
end,
|
||||||
|
|
||||||
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
|
end,
|
||||||
|
|
||||||
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
||||||
allow_metadata_inventory_take = allow_metadata_inventory_take,
|
allow_metadata_inventory_take = allow_metadata_inventory_take,
|
||||||
allow_metadata_inventory_move = allow_metadata_inventory_move,
|
allow_metadata_inventory_move = allow_metadata_inventory_move,
|
||||||
|
@ -59,6 +59,17 @@ local function aging(pos, meta)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function after_dig_node(pos, oldnode, oldmetadata, digger)
|
||||||
|
local inv = minetest.get_inventory({type="player", name=digger:get_player_name()})
|
||||||
|
local cnt = oldmetadata.fields.tubelib_aging and tonumber(oldmetadata.fields.tubelib_aging) or 0
|
||||||
|
local is_defect = cnt > AGING_LEVEL1 and math.random(AGING_LEVEL2 / cnt) == 1
|
||||||
|
if is_defect then
|
||||||
|
inv:add_item("main", ItemStack("tubelib_addons3:pushing_chest_defect"))
|
||||||
|
else
|
||||||
|
inv:add_item("main", ItemStack("tubelib_addons3:pushing_chest"))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local function set_state(meta, state)
|
local function set_state(meta, state)
|
||||||
local number = meta:get_string("number")
|
local number = meta:get_string("number")
|
||||||
meta:set_string("infotext", "HighPerf Pushing Chest "..number..": "..state)
|
meta:set_string("infotext", "HighPerf Pushing Chest "..number..": "..state)
|
||||||
@ -161,17 +172,18 @@ minetest.register_node("tubelib_addons3:pushing_chest", {
|
|||||||
minetest.get_node_timer(pos):start(2)
|
minetest.get_node_timer(pos):start(2)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
can_dig = function(pos,player)
|
can_dig = function(pos, player)
|
||||||
if minetest.is_protected(pos, player:get_player_name()) then
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
local meta = minetest.get_meta(pos);
|
local meta = minetest.get_meta(pos)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
return inv:is_empty("main") and inv:is_empty("shift")
|
return inv:is_empty("main") and inv:is_empty("shift")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
after_dig_node(pos, oldnode, oldmetadata, digger)
|
||||||
|
tubelib.remove_node(pos)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
||||||
@ -181,6 +193,7 @@ minetest.register_node("tubelib_addons3:pushing_chest", {
|
|||||||
on_timer = shift_items,
|
on_timer = shift_items,
|
||||||
on_rotate = screwdriver.disallow,
|
on_rotate = screwdriver.disallow,
|
||||||
|
|
||||||
|
drop = "",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
@ -217,17 +230,16 @@ minetest.register_node("tubelib_addons3:pushing_chest_defect", {
|
|||||||
set_state(meta, "empty")
|
set_state(meta, "empty")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
can_dig = function(pos,player)
|
can_dig = function(pos, player)
|
||||||
if minetest.is_protected(pos, player:get_player_name()) then
|
if minetest.is_protected(pos, player:get_player_name()) then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
local meta = minetest.get_meta(pos);
|
local inv = minetest.get_meta(pos):get_inventory()
|
||||||
local inv = meta:get_inventory()
|
|
||||||
return inv:is_empty("main") and inv:is_empty("shift")
|
return inv:is_empty("main") and inv:is_empty("shift")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_dig = function(pos, node, puncher, pointed_thing)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
minetest.node_dig(pos, node, puncher, pointed_thing)
|
tubelib.remove_node(pos)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
||||||
@ -265,6 +277,8 @@ tubelib.register_node("tubelib_addons3:pushing_chest",
|
|||||||
return "empty"
|
return "empty"
|
||||||
end
|
end
|
||||||
return meta:get_string("state")
|
return meta:get_string("state")
|
||||||
|
elseif topic == "aging" then
|
||||||
|
return minetest.get_meta(pos):get_int("tubelib_aging")
|
||||||
else
|
else
|
||||||
return "not supported"
|
return "not supported"
|
||||||
end
|
end
|
||||||
@ -298,10 +312,6 @@ tubelib.register_node("tubelib_addons3:pushing_chest",
|
|||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
return tubelib.put_item(meta, "main", item)
|
return tubelib.put_item(meta, "main", item)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_recv_message = function(pos, topic, payload)
|
|
||||||
return "unsupported"
|
|
||||||
end,
|
|
||||||
on_node_load = function(pos)
|
on_node_load = function(pos)
|
||||||
minetest.get_node_timer(pos):start(2)
|
minetest.get_node_timer(pos):start(2)
|
||||||
end,
|
end,
|
||||||
|
Loading…
Reference in New Issue
Block a user