printing press checks for space above.

master
NathanSalapat 2020-07-18 09:03:55 -05:00
parent 367f364f60
commit 505d29daba
2 changed files with 44 additions and 2 deletions

View File

@ -78,6 +78,47 @@ function epic.remove_front_node(pos, oldnode)
end
end
function epic.space_on_top(pos)
local above = {x = pos.x, y = pos.y + 1, z = pos.z}
local top_node = minetest.get_node(above)
print ('top node is '..(top_node.name))
local top_def = minetest.registered_nodes[top_node.name] or nil
if not top_def.buildable_to then
return false
else
minetest.set_node(above,{name='epic:empty'})
return true
end
end
function epic.remove_top_node(pos)
local above = {x = pos.x, y = pos.y + 1, z = pos.z}
local top_node = minetest.get_node(above).name
if minetest.get_item_group(top_node, 'empty_node') > 0 then
minetest.remove_node(above)
end
end
function epic.space_to_top_and_side(pos)
local node = minetest.get_node(pos)
local fdir = node.param2 % 32
local side = {x = pos.x + fdir_table[fdir+1][1], y=pos.y, z = pos.z + fdir_table[fdir+1][2]}
local top = {x = pos.x, y = pos.y + 1, z = pos.z}
local side_node = minetest.get_node(side)
local top_node = minetest.get_node(top)
print ('top node is '..(top_node.name))
print ('side node is '..(side_node.name))
local side_def = minetest.registered_nodes[side_node.name] or nil
local top_def = minetest.registered_nodes[top_node.name] or nil
if not top_def.buildable_to or not side_def.buildable_to then
return false
else
minetest.set_node(side,{name='epic:empty'})
minetest.set_node(top,{name='epic:empty'})
return true
end
end
function epic.space_for_picnic(pos, placed_node)
local node = minetest.get_node(pos)
local fdir = node.param2 % 32

View File

@ -18,8 +18,8 @@ minetest.register_node('stations:printing_press', {
fixed = {-.5, -.5, -.5, 1, .4, .5}, --base
},
groups = {oddly_breakable_by_hand=3, choppy=1},
after_place_node = function(pos, placer)
if not epic.space_to_side(pos) then
after_place_node = function(pos, placer, itemstack)
if not epic.space_to_top_and_side(pos) then
minetest.remove_node(pos)
return itemstack
else
@ -34,6 +34,7 @@ minetest.register_node('stations:printing_press', {
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
epic.remove_side_node(pos, oldnode)
epic.remove_top_node(pos)
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
if listname == 'output' then