I've changed it to work with the newest version of MineTest:
Code: Select all
-- Local constants
-- This _has_ to be set to 2
local HATCH_OPENED = 2
-- This has to be != from HATCH_OPENED and is coded on 4 bits
local HATCH_CLOSED = 1
-- Local Functions
local on_hatch_punched = function(pos, node, puncher)
if (node.name ~= 'hatches:hatch_closed')
and (node.name ~= 'hatches:hatch_opened') then
return
end
local state = node.param2
-- Switch the hatch state when hit
if state == HATCH_OPENED then
node.name = 'hatches:hatch_closed'
node.param2 = HATCH_CLOSED
elseif state == HATCH_CLOSED then
node.name = 'hatches:hatch_opened'
node.param2 = HATCH_OPENED
else
print('Uninitialized node: ' .. state)
end
minetest.env:add_node(pos, {
name = node.name,
param2 = node.param2,
})
end
local on_hatch_placed = function(pos, node, placer)
if node.name ~= 'hatches:hatch_opened' then
return
end
minetest.env:add_node(pos, {
name = node.name,
param2 = HATCH_OPENED,
})
end
-- Nodes
-- As long as param2 is set to 1 for open hatches, it doesn't matter to
-- use drawtype = 'signlike'
minetest.register_node('hatches:hatch_opened', {
drawtype = 'signlike',
tile_images = {'hatch.png'},
inventory_image = 'hatch.png',
sunlight_propagates = true,
paramtype = 'light',
paramtype2 = "wallmounted",
legacy_wallmounted = true,
walkable = false,
climbable = true,
selection_box = {
type = "wallmounted",
},
material = minetest.digprop_constanttime(1.0),
drop = 'hatches:hatch_closed',
})
minetest.register_node('hatches:hatch_closed', {
description = "Hatch",
drawtype = 'raillike',
tile_images = {'hatch.png'},
inventory_image = 'hatch.png',
wield_image = "hatch.png",
paramtype = 'light',
walkable = true,
selection_box = {
type = "fixed",
fixed = {-1/2, -1/2, -1/2, 1/2, -2/5, 1/2},
},
material = minetest.digprop_constanttime(1.0),
})
-- Crafts
minetest.register_craft({
output = '"hatches:hatch_closed" 2',
recipe = {
{'"default:wood" 1', '"default:wood" 1', '"default:wood" 1'},
{'"default:wood" 1', '"default:wood" 1', '"default:wood" 1'},
},
})
-- Change the hatch state
minetest.register_on_punchnode(on_hatch_punched)
-- Reset param2 for open hatches
minetest.register_on_placenode(on_hatch_placed)
-- Mesecon Stuff:
mesecon:register_on_signal_on(on_hatch_punched)
mesecon:register_on_signal_off(on_hatch_punched)
This is based off of Jeija's modification allowing mesecons to control hatches.