2019-03-08 00:07:41 +00:00
local S = minetest.get_translator ( " mesecons_pistons " )
2017-07-30 22:12:21 +00:00
local PISTON_MAXIMUM_PUSH = 12
2015-06-29 17:55:56 +00:00
-- Get mesecon rules of pistons
2018-01-26 21:20:15 +00:00
local piston_rules =
2015-06-29 17:55:56 +00:00
{ { x = 0 , y = 0 , z = 1 } , --everything apart from z- (pusher side)
{ x = 1 , y = 0 , z = 0 } ,
{ x =- 1 , y = 0 , z = 0 } ,
2017-09-14 00:20:47 +00:00
{ x = 0 , y = 1 , z = 0 } ,
{ x = 0 , y =- 1 , z = 0 } }
2015-06-29 17:55:56 +00:00
local piston_up_rules =
{ { x = 0 , y = 0 , z =- 1 } , --everything apart from y+ (pusher side)
{ x = 0 , y = 0 , z = 1 } ,
2017-09-14 00:20:47 +00:00
{ x =- 1 , y = 0 , z = 0 } ,
2017-12-29 01:28:18 +00:00
{ x = 1 , y = 0 , z = 0 } ,
2017-09-14 00:20:47 +00:00
{ x = 0 , y =- 1 , z = 0 } }
2015-06-29 17:55:56 +00:00
local piston_down_rules =
{ { x = 0 , y = 0 , z =- 1 } , --everything apart from y- (pusher side)
{ x = 0 , y = 0 , z = 1 } ,
2017-09-14 00:20:47 +00:00
{ x =- 1 , y = 0 , z = 0 } ,
2017-12-29 01:28:18 +00:00
{ x = 1 , y = 0 , z = 0 } ,
2017-09-14 00:20:47 +00:00
{ x = 0 , y = 1 , z = 0 } }
2015-06-29 17:55:56 +00:00
local piston_get_rules = function ( node )
local rules = piston_rules
for i = 1 , node.param2 do
2017-07-30 22:12:21 +00:00
rules = mesecon.rotate_rules_left ( rules )
2015-06-29 17:55:56 +00:00
end
return rules
end
2018-01-26 21:20:15 +00:00
local piston_facedir_direction = function ( node )
2015-06-29 17:55:56 +00:00
local rules = { { x = 0 , y = 0 , z = - 1 } }
for i = 1 , node.param2 do
2017-07-30 22:12:21 +00:00
rules = mesecon.rotate_rules_left ( rules )
2015-06-29 17:55:56 +00:00
end
return rules [ 1 ]
end
2018-01-26 21:20:15 +00:00
local piston_get_direction = function ( dir , node )
2015-06-29 17:55:56 +00:00
if type ( dir ) == " function " then
return dir ( node )
else
return dir
end
end
2017-11-23 20:15:42 +00:00
-- Remove pusher of piston.
-- To be used when piston was destroyed or dug.
2017-11-23 19:52:33 +00:00
local piston_remove_pusher = function ( pos , oldnode )
local pistonspec = minetest.registered_nodes [ oldnode.name ] . mesecons_piston
2015-06-29 17:55:56 +00:00
2017-11-23 19:52:33 +00:00
local dir = piston_get_direction ( pistonspec.dir , oldnode )
2017-07-30 22:12:21 +00:00
local pusherpos = vector.add ( pos , dir )
2017-01-11 17:21:46 +00:00
local pushername = minetest.get_node ( pusherpos ) . name
2015-06-29 17:55:56 +00:00
2017-11-23 20:15:42 +00:00
if pushername == pistonspec.pusher then -- make sure there actually is a pusher
2017-01-11 17:21:46 +00:00
minetest.remove_node ( pusherpos )
2017-01-26 18:14:07 +00:00
core.check_for_falling ( pusherpos )
2017-02-19 19:48:56 +00:00
minetest.sound_play ( " piston_retract " , {
pos = pos ,
2018-01-09 19:39:00 +00:00
max_hear_distance = 31 ,
2017-02-19 19:48:56 +00:00
gain = 0.3 ,
2020-04-06 22:55:45 +00:00
} , true )
2015-06-29 17:55:56 +00:00
end
end
2017-11-23 20:15:42 +00:00
-- Remove base node of piston.
-- To be used when pusher was destroyed.
local piston_remove_base = function ( pos , oldnode )
local basenodename = minetest.registered_nodes [ oldnode.name ] . corresponding_piston
local pistonspec = minetest.registered_nodes [ basenodename ] . mesecons_piston
local dir = piston_get_direction ( pistonspec.dir , oldnode )
local basepos = vector.subtract ( pos , dir )
local basename = minetest.get_node ( basepos ) . name
if basename == pistonspec.onname then -- make sure there actually is a base node
minetest.remove_node ( basepos )
core.check_for_falling ( basepos )
minetest.sound_play ( " piston_retract " , {
pos = pos ,
2018-01-09 19:39:00 +00:00
max_hear_distance = 31 ,
2017-11-23 20:15:42 +00:00
gain = 0.3 ,
2020-04-06 22:55:45 +00:00
} , true )
2017-11-23 20:15:42 +00:00
end
end
2015-06-29 17:55:56 +00:00
local piston_on = function ( pos , node )
local pistonspec = minetest.registered_nodes [ node.name ] . mesecons_piston
2017-07-30 22:38:50 +00:00
local dir = piston_get_direction ( pistonspec.dir , node )
2017-07-30 22:12:21 +00:00
local np = vector.add ( pos , dir )
2020-11-13 21:59:03 +00:00
local meta = minetest.get_meta ( pos )
local success , stack , oldstack = mesecon.mvps_push ( np , dir , PISTON_MAXIMUM_PUSH , meta : get_string ( " owner " ) , pos )
2015-06-29 17:55:56 +00:00
if success then
2020-11-13 21:59:03 +00:00
minetest.set_node ( pos , { param2 = node.param2 , name = pistonspec.onname } )
minetest.set_node ( np , { param2 = node.param2 , name = pistonspec.pusher } )
2017-05-14 19:24:17 +00:00
local below = minetest.get_node ( { x = np.x , y = np.y - 1 , z = np.z } )
if below.name == " mcl_farming:soil " or below.name == " mcl_farming:soil_wet " then
minetest.set_node ( { x = np.x , y = np.y - 1 , z = np.z } , { name = " mcl_core:dirt " } )
end
2017-07-30 22:12:21 +00:00
mesecon.mvps_process_stack ( stack )
2017-07-30 22:38:50 +00:00
mesecon.mvps_move_objects ( np , dir , oldstack )
2017-02-19 19:48:56 +00:00
minetest.sound_play ( " piston_extend " , {
pos = pos ,
2018-01-09 19:39:00 +00:00
max_hear_distance = 31 ,
2017-02-19 19:48:56 +00:00
gain = 0.3 ,
2020-04-06 22:55:45 +00:00
} , true )
2015-06-29 17:55:56 +00:00
end
end
local piston_off = function ( pos , node )
local pistonspec = minetest.registered_nodes [ node.name ] . mesecons_piston
2017-01-11 17:21:46 +00:00
minetest.add_node ( pos , { param2 = node.param2 , name = pistonspec.offname } )
2015-06-29 17:55:56 +00:00
piston_remove_pusher ( pos , node )
2020-11-13 21:59:03 +00:00
if not pistonspec.sticky then
return
end
2015-06-29 17:55:56 +00:00
2020-11-13 21:59:03 +00:00
local dir = piston_get_direction ( pistonspec.dir , node )
local pullpos = vector.add ( pos , vector.multiply ( dir , 2 ) )
local meta = minetest.get_meta ( pos )
local success , stack , oldstack = mesecon.mvps_pull_single ( pullpos , vector.multiply ( dir , - 1 ) , PISTON_MAXIMUM_PUSH , meta : get_string ( " owner " ) , pos )
if success then
2017-07-30 22:38:50 +00:00
mesecon.mvps_process_stack ( pos , dir , stack )
2015-06-29 17:55:56 +00:00
end
end
local piston_orientate = function ( pos , placer )
2020-11-13 21:59:03 +00:00
mesecon.mvps_set_owner ( pos , placer )
2015-06-29 17:55:56 +00:00
-- not placed by player
if not placer then return end
-- placer pitch in degrees
2018-01-10 20:39:22 +00:00
local pitch = placer : get_look_vertical ( ) * ( 180 / math.pi )
2015-06-29 17:55:56 +00:00
2017-01-11 17:21:46 +00:00
local node = minetest.get_node ( pos )
2015-06-29 17:55:56 +00:00
local pistonspec = minetest.registered_nodes [ node.name ] . mesecons_piston
2018-01-10 20:39:22 +00:00
if pitch > 55 then
2017-01-11 17:21:46 +00:00
minetest.add_node ( pos , { name = pistonspec.piston_up } )
2018-01-10 20:39:22 +00:00
elseif pitch < - 55 then
minetest.add_node ( pos , { name = pistonspec.piston_down } )
2015-06-29 17:55:56 +00:00
end
end
-- Horizontal pistons
2017-02-22 16:13:36 +00:00
local pt = 4 / 16 -- pusher thickness
2015-06-29 17:55:56 +00:00
local piston_pusher_box = {
type = " fixed " ,
fixed = {
{ - 2 / 16 , - 2 / 16 , - .5 + pt , 2 / 16 , 2 / 16 , .5 + pt } ,
{ - .5 , - .5 , - .5 , .5 , .5 , - .5 + pt } ,
}
}
local piston_on_box = {
type = " fixed " ,
fixed = {
{ - .5 , - .5 , - .5 + pt , .5 , .5 , .5 }
}
}
-- Normal (non-sticky) ones:
local pistonspec_normal = {
offname = " mesecons_pistons:piston_normal_off " ,
onname = " mesecons_pistons:piston_normal_on " ,
dir = piston_facedir_direction ,
pusher = " mesecons_pistons:piston_pusher_normal " ,
piston_down = " mesecons_pistons:piston_down_normal_off " ,
piston_up = " mesecons_pistons:piston_up_normal_off " ,
}
2019-03-16 01:00:48 +00:00
local usagehelp_piston = S ( " This block can have one of 6 possible orientations. " )
2017-03-11 03:12:55 +00:00
2015-06-29 17:55:56 +00:00
-- offstate
minetest.register_node ( " mesecons_pistons:piston_normal_off " , {
2019-03-08 00:07:41 +00:00
description = S ( " Piston " ) ,
2020-02-19 03:54:17 +00:00
_tt_help = S ( " Pushes block when powered by redstone power " ) ,
2019-03-08 00:07:41 +00:00
_doc_items_longdesc = S ( " A piston is a redstone component with a pusher which pushes the block or blocks in front of it when it is supplied with redstone power. Not all blocks can be pushed, however. " ) ,
2017-03-11 03:12:55 +00:00
_doc_items_usagehelp = usagehelp_piston ,
2015-06-29 17:55:56 +00:00
tiles = {
2017-07-17 15:29:53 +00:00
" mesecons_piston_bottom.png^[transformR180 " ,
" mesecons_piston_bottom.png " ,
" mesecons_piston_bottom.png^[transformR90 " ,
" mesecons_piston_bottom.png^[transformR270 " ,
" mesecons_piston_back.png " ,
2015-06-29 17:55:56 +00:00
" mesecons_piston_pusher_front.png "
} ,
2019-12-13 09:20:08 +00:00
groups = { handy = 1 , piston = 1 } ,
2017-06-13 12:26:50 +00:00
paramtype = " light " ,
2015-06-29 17:55:56 +00:00
paramtype2 = " facedir " ,
2017-01-04 21:36:51 +00:00
is_ground_content = false ,
2015-06-29 17:55:56 +00:00
after_place_node = piston_orientate ,
mesecons_piston = pistonspec_normal ,
2017-02-22 16:07:24 +00:00
sounds = mcl_sounds.node_sound_stone_defaults ( ) ,
2015-06-29 17:55:56 +00:00
mesecons = { effector = {
action_on = piston_on ,
rules = piston_get_rules
2017-02-22 15:22:28 +00:00
} } ,
2020-04-17 19:40:13 +00:00
_mcl_blast_resistance = 0.5 ,
2017-02-27 16:20:51 +00:00
_mcl_hardness = 0.5 ,
2019-12-09 15:08:24 +00:00
on_rotate = function ( pos , node , user , mode )
if mode == screwdriver.ROTATE_AXIS then
minetest.set_node ( pos , { name = " mesecons_pistons:piston_up_normal_off " } )
2019-12-09 17:30:19 +00:00
return true
2019-12-09 15:08:24 +00:00
end
end ,
2015-06-29 17:55:56 +00:00
} )
-- onstate
minetest.register_node ( " mesecons_pistons:piston_normal_on " , {
drawtype = " nodebox " ,
tiles = {
2017-07-17 15:29:53 +00:00
" mesecons_piston_bottom.png^[transformR180 " ,
" mesecons_piston_bottom.png " ,
" mesecons_piston_bottom.png^[transformR90 " ,
" mesecons_piston_bottom.png^[transformR270 " ,
" mesecons_piston_back.png " ,
2015-06-29 17:55:56 +00:00
" mesecons_piston_on_front.png "
} ,
2019-12-13 09:20:08 +00:00
groups = { handy = 1 , piston = 1 , not_in_creative_inventory = 1 } ,
2015-06-29 17:55:56 +00:00
paramtype = " light " ,
paramtype2 = " facedir " ,
2017-01-04 21:36:51 +00:00
is_ground_content = false ,
2015-06-29 17:55:56 +00:00
drop = " mesecons_pistons:piston_normal_off " ,
2017-11-23 19:52:33 +00:00
after_destruct = piston_remove_pusher ,
2015-06-29 17:55:56 +00:00
node_box = piston_on_box ,
selection_box = piston_on_box ,
mesecons_piston = pistonspec_normal ,
2017-02-22 16:07:24 +00:00
sounds = mcl_sounds.node_sound_stone_defaults ( ) ,
2015-06-29 17:55:56 +00:00
mesecons = { effector = {
action_off = piston_off ,
rules = piston_get_rules
2017-02-22 15:22:28 +00:00
} } ,
2020-04-17 19:40:13 +00:00
_mcl_blast_resistance = 0.5 ,
2017-02-27 16:20:51 +00:00
_mcl_hardness = 0.5 ,
2019-12-09 15:08:24 +00:00
on_rotate = false ,
2015-06-29 17:55:56 +00:00
} )
-- pusher
minetest.register_node ( " mesecons_pistons:piston_pusher_normal " , {
drawtype = " nodebox " ,
tiles = {
" mesecons_piston_pusher_top.png " ,
" mesecons_piston_pusher_bottom.png " ,
" mesecons_piston_pusher_left.png " ,
" mesecons_piston_pusher_right.png " ,
" mesecons_piston_pusher_back.png " ,
" mesecons_piston_pusher_front.png "
} ,
paramtype = " light " ,
paramtype2 = " facedir " ,
2019-12-13 09:20:08 +00:00
groups = { piston_pusher = 1 } ,
2017-01-04 21:36:51 +00:00
is_ground_content = false ,
2017-11-23 20:15:42 +00:00
after_destruct = piston_remove_base ,
2015-06-29 17:55:56 +00:00
diggable = false ,
2019-12-09 20:25:27 +00:00
drop = " " ,
2015-06-29 17:55:56 +00:00
corresponding_piston = " mesecons_pistons:piston_normal_on " ,
selection_box = piston_pusher_box ,
node_box = piston_pusher_box ,
2017-02-17 00:56:52 +00:00
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
2020-04-17 19:40:13 +00:00
_mcl_blast_resistance = 0.5 ,
2019-12-09 15:08:24 +00:00
on_rotate = false ,
2015-06-29 17:55:56 +00:00
} )
-- Sticky ones
local pistonspec_sticky = {
offname = " mesecons_pistons:piston_sticky_off " ,
onname = " mesecons_pistons:piston_sticky_on " ,
dir = piston_facedir_direction ,
pusher = " mesecons_pistons:piston_pusher_sticky " ,
sticky = true ,
piston_down = " mesecons_pistons:piston_down_sticky_off " ,
piston_up = " mesecons_pistons:piston_up_sticky_off " ,
}
-- offstate
minetest.register_node ( " mesecons_pistons:piston_sticky_off " , {
2019-03-08 00:07:41 +00:00
description = S ( " Sticky Piston " ) ,
2020-02-19 03:54:17 +00:00
_tt_help = S ( " Pushes or pulls block when powered by redstone power " ) ,
2019-03-08 00:07:41 +00:00
_doc_items_longdesc = S ( " A sticky piston is a redstone component with a sticky pusher which can be extended and retracted. It extends when it is supplied with redstone power. When the pusher extends, it pushes the block or blocks in front of it. When it retracts, it pulls back the single block in front of it. Note that not all blocks can be pushed or pulled. " ) ,
2017-03-11 03:12:55 +00:00
_doc_items_usagehelp = usagehelp_piston ,
2015-06-29 17:55:56 +00:00
tiles = {
2017-07-17 15:29:53 +00:00
" mesecons_piston_bottom.png^[transformR180 " ,
" mesecons_piston_bottom.png " ,
" mesecons_piston_bottom.png^[transformR90 " ,
" mesecons_piston_bottom.png^[transformR270 " ,
" mesecons_piston_back.png " ,
2015-06-29 17:55:56 +00:00
" mesecons_piston_pusher_front_sticky.png "
} ,
2019-12-13 09:20:08 +00:00
groups = { handy = 1 , piston = 2 } ,
2017-06-13 12:26:50 +00:00
paramtype = " light " ,
2015-06-29 17:55:56 +00:00
paramtype2 = " facedir " ,
2017-01-04 21:36:51 +00:00
is_ground_content = false ,
2015-06-29 17:55:56 +00:00
after_place_node = piston_orientate ,
mesecons_piston = pistonspec_sticky ,
2017-02-22 16:07:24 +00:00
sounds = mcl_sounds.node_sound_stone_defaults ( ) ,
2015-06-29 17:55:56 +00:00
mesecons = { effector = {
action_on = piston_on ,
rules = piston_get_rules
2017-02-22 15:22:28 +00:00
} } ,
2020-04-17 19:40:13 +00:00
_mcl_blast_resistance = 0.5 ,
2017-02-27 16:20:51 +00:00
_mcl_hardness = 0.5 ,
2019-12-09 15:08:24 +00:00
on_rotate = function ( pos , node , user , mode )
if mode == screwdriver.ROTATE_AXIS then
minetest.set_node ( pos , { name = " mesecons_pistons:piston_up_sticky_off " } )
2019-12-09 17:30:19 +00:00
return true
2019-12-09 15:08:24 +00:00
end
end ,
2015-06-29 17:55:56 +00:00
} )
-- onstate
minetest.register_node ( " mesecons_pistons:piston_sticky_on " , {
drawtype = " nodebox " ,
tiles = {
2017-07-17 15:29:53 +00:00
" mesecons_piston_bottom.png^[transformR180 " ,
" mesecons_piston_bottom.png " ,
" mesecons_piston_bottom.png^[transformR90 " ,
" mesecons_piston_bottom.png^[transformR270 " ,
" mesecons_piston_back.png " ,
2015-06-29 17:55:56 +00:00
" mesecons_piston_on_front.png "
} ,
2019-12-13 09:20:08 +00:00
groups = { handy = 1 , piston = 2 , not_in_creative_inventory = 1 } ,
2015-06-29 17:55:56 +00:00
paramtype = " light " ,
paramtype2 = " facedir " ,
2017-01-04 21:36:51 +00:00
is_ground_content = false ,
2017-03-15 19:54:33 +00:00
drop = " mesecons_pistons:piston_sticky_off " ,
2017-11-23 19:52:33 +00:00
after_destruct = piston_remove_pusher ,
2015-06-29 17:55:56 +00:00
node_box = piston_on_box ,
selection_box = piston_on_box ,
mesecons_piston = pistonspec_sticky ,
2017-02-22 16:07:24 +00:00
sounds = mcl_sounds.node_sound_stone_defaults ( ) ,
2015-06-29 17:55:56 +00:00
mesecons = { effector = {
action_off = piston_off ,
rules = piston_get_rules
2017-02-22 15:22:28 +00:00
} } ,
2020-04-17 19:40:13 +00:00
_mcl_blast_resistance = 0.5 ,
2017-02-27 16:20:51 +00:00
_mcl_hardness = 0.5 ,
2019-12-09 15:08:24 +00:00
on_rotate = false ,
2015-06-29 17:55:56 +00:00
} )
-- pusher
minetest.register_node ( " mesecons_pistons:piston_pusher_sticky " , {
drawtype = " nodebox " ,
tiles = {
" mesecons_piston_pusher_top.png " ,
" mesecons_piston_pusher_bottom.png " ,
" mesecons_piston_pusher_left.png " ,
" mesecons_piston_pusher_right.png " ,
" mesecons_piston_pusher_back.png " ,
" mesecons_piston_pusher_front_sticky.png "
} ,
paramtype = " light " ,
paramtype2 = " facedir " ,
2019-12-13 09:20:08 +00:00
groups = { piston_pusher = 2 } ,
2017-01-04 21:36:51 +00:00
is_ground_content = false ,
2017-11-23 20:15:42 +00:00
after_destruct = piston_remove_base ,
2015-06-29 17:55:56 +00:00
diggable = false ,
2019-12-09 20:25:27 +00:00
drop = " " ,
2015-06-29 17:55:56 +00:00
corresponding_piston = " mesecons_pistons:piston_sticky_on " ,
selection_box = piston_pusher_box ,
node_box = piston_pusher_box ,
2017-02-17 00:56:52 +00:00
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
2020-04-17 19:40:13 +00:00
_mcl_blast_resistance = 0.5 ,
2019-12-09 15:08:24 +00:00
on_rotate = false ,
2015-06-29 17:55:56 +00:00
} )
--
--
-- UP
--
--
local piston_up_pusher_box = {
type = " fixed " ,
fixed = {
{ - 2 / 16 , - .5 - pt , - 2 / 16 , 2 / 16 , .5 - pt , 2 / 16 } ,
{ - .5 , .5 - pt , - .5 , .5 , .5 , .5 } ,
}
}
local piston_up_on_box = {
type = " fixed " ,
fixed = {
{ - .5 , - .5 , - .5 , .5 , .5 - pt , .5 }
}
}
-- Normal
local pistonspec_normal_up = {
offname = " mesecons_pistons:piston_up_normal_off " ,
onname = " mesecons_pistons:piston_up_normal_on " ,
dir = { x = 0 , y = 1 , z = 0 } ,
pusher = " mesecons_pistons:piston_up_pusher_normal "
}
-- offstate
minetest.register_node ( " mesecons_pistons:piston_up_normal_off " , {
tiles = {
" mesecons_piston_pusher_front.png " ,
2017-07-17 15:29:53 +00:00
" mesecons_piston_back.png " ,
" mesecons_piston_bottom.png " ,
" mesecons_piston_bottom.png " ,
" mesecons_piston_bottom.png " ,
" mesecons_piston_bottom.png " ,
2015-06-29 17:55:56 +00:00
} ,
2019-12-13 09:20:08 +00:00
groups = { handy = 1 , piston = 1 , not_in_creative_inventory = 1 } ,
2017-06-13 12:26:50 +00:00
paramtype = " light " ,
2015-06-29 17:55:56 +00:00
paramtype2 = " facedir " ,
2017-01-04 21:36:51 +00:00
is_ground_content = false ,
2015-06-29 17:55:56 +00:00
drop = " mesecons_pistons:piston_normal_off " ,
mesecons_piston = pistonspec_normal_up ,
mesecons = { effector = {
action_on = piston_on ,
rules = piston_up_rules ,
2017-02-17 00:56:52 +00:00
} } ,
2018-01-10 20:35:22 +00:00
sounds = mcl_sounds.node_sound_stone_defaults ( {
footstep = mcl_sounds.node_sound_wood_defaults ( ) . footstep
} ) ,
2020-04-17 19:40:13 +00:00
_mcl_blast_resistance = 0.5 ,
2017-02-27 16:20:51 +00:00
_mcl_hardness = 0.5 ,
2019-12-09 15:08:24 +00:00
on_rotate = function ( pos , node , user , mode )
if mode == screwdriver.ROTATE_AXIS then
minetest.set_node ( pos , { name = " mesecons_pistons:piston_down_normal_off " } )
2019-12-09 17:30:19 +00:00
return true
2019-12-09 15:08:24 +00:00
end
return false
end ,
2015-06-29 17:55:56 +00:00
} )
-- onstate
minetest.register_node ( " mesecons_pistons:piston_up_normal_on " , {
drawtype = " nodebox " ,
tiles = {
" mesecons_piston_on_front.png " ,
2017-07-17 15:29:53 +00:00
" mesecons_piston_back.png " ,
" mesecons_piston_bottom.png " ,
" mesecons_piston_bottom.png " ,
" mesecons_piston_bottom.png " ,
" mesecons_piston_bottom.png " ,
2015-06-29 17:55:56 +00:00
} ,
2019-12-13 09:20:08 +00:00
groups = { handy = 1 , piston_ = 1 , not_in_creative_inventory = 1 } ,
2015-06-29 17:55:56 +00:00
paramtype = " light " ,
paramtype2 = " facedir " ,
2017-01-04 21:36:51 +00:00
is_ground_content = false ,
2015-06-29 17:55:56 +00:00
drop = " mesecons_pistons:piston_normal_off " ,
2017-11-23 19:52:33 +00:00
after_destruct = piston_remove_pusher ,
2015-06-29 17:55:56 +00:00
node_box = piston_up_on_box ,
selection_box = piston_up_on_box ,
mesecons_piston = pistonspec_normal_up ,
2018-01-10 20:35:22 +00:00
sounds = mcl_sounds.node_sound_stone_defaults ( ) ,
2015-06-29 17:55:56 +00:00
mesecons = { effector = {
action_off = piston_off ,
rules = piston_up_rules ,
2017-02-22 15:22:28 +00:00
} } ,
2020-04-17 19:40:13 +00:00
_mcl_blast_resistance = 0.5 ,
2017-02-27 16:20:51 +00:00
_mcl_hardness = 0.5 ,
2019-12-09 15:08:24 +00:00
on_rotate = false ,
2015-06-29 17:55:56 +00:00
} )
-- pusher
minetest.register_node ( " mesecons_pistons:piston_up_pusher_normal " , {
drawtype = " nodebox " ,
tiles = {
" mesecons_piston_pusher_front.png " ,
" mesecons_piston_pusher_back.png " ,
" mesecons_piston_pusher_left.png^[transformR270 " ,
" mesecons_piston_pusher_right.png^[transformR90 " ,
" mesecons_piston_pusher_bottom.png " ,
" mesecons_piston_pusher_top.png^[transformR180 " ,
} ,
paramtype = " light " ,
paramtype2 = " facedir " ,
2019-12-13 09:20:08 +00:00
groups = { piston_pusher = 1 } ,
2017-01-04 21:36:51 +00:00
is_ground_content = false ,
2017-11-23 20:15:42 +00:00
after_destruct = piston_remove_base ,
2015-06-29 17:55:56 +00:00
diggable = false ,
2019-12-09 20:25:27 +00:00
drop = " " ,
2015-06-29 17:55:56 +00:00
corresponding_piston = " mesecons_pistons:piston_up_normal_on " ,
selection_box = piston_up_pusher_box ,
node_box = piston_up_pusher_box ,
2017-02-17 00:56:52 +00:00
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
2020-04-17 19:40:13 +00:00
_mcl_blast_resistance = 0.5 ,
2019-12-09 15:08:24 +00:00
on_rotate = false ,
2015-06-29 17:55:56 +00:00
} )
-- Sticky
local pistonspec_sticky_up = {
offname = " mesecons_pistons:piston_up_sticky_off " ,
onname = " mesecons_pistons:piston_up_sticky_on " ,
dir = { x = 0 , y = 1 , z = 0 } ,
pusher = " mesecons_pistons:piston_up_pusher_sticky " ,
sticky = true
}
-- offstate
minetest.register_node ( " mesecons_pistons:piston_up_sticky_off " , {
tiles = {
" mesecons_piston_pusher_front_sticky.png " ,
2017-07-17 15:29:53 +00:00
" mesecons_piston_back.png " ,
" mesecons_piston_bottom.png " ,
" mesecons_piston_bottom.png " ,
" mesecons_piston_bottom.png " ,
" mesecons_piston_bottom.png " ,
2015-06-29 17:55:56 +00:00
} ,
2019-12-13 09:20:08 +00:00
groups = { handy = 1 , piston = 2 , not_in_creative_inventory = 1 } ,
2017-06-13 12:26:50 +00:00
paramtype = " light " ,
2015-06-29 17:55:56 +00:00
paramtype2 = " facedir " ,
2017-01-04 21:36:51 +00:00
is_ground_content = false ,
2015-06-29 17:55:56 +00:00
drop = " mesecons_pistons:piston_sticky_off " ,
mesecons_piston = pistonspec_sticky_up ,
2018-01-10 20:35:22 +00:00
sounds = mcl_sounds.node_sound_stone_defaults ( {
footstep = mcl_sounds.node_sound_wood_defaults ( ) . footstep
} ) ,
2015-06-29 17:55:56 +00:00
mesecons = { effector = {
action_on = piston_on ,
rules = piston_up_rules ,
2017-02-22 15:22:28 +00:00
} } ,
2020-04-17 19:40:13 +00:00
_mcl_blast_resistance = 0.5 ,
2017-02-27 16:20:51 +00:00
_mcl_hardness = 0.5 ,
2019-12-09 15:08:24 +00:00
on_rotate = function ( pos , node , user , mode )
if mode == screwdriver.ROTATE_AXIS then
minetest.set_node ( pos , { name = " mesecons_pistons:piston_down_sticky_off " } )
2019-12-09 17:30:19 +00:00
return true
2019-12-09 15:08:24 +00:00
end
return false
end ,
2015-06-29 17:55:56 +00:00
} )
-- onstate
minetest.register_node ( " mesecons_pistons:piston_up_sticky_on " , {
drawtype = " nodebox " ,
tiles = {
" mesecons_piston_on_front.png " ,
2017-07-17 15:29:53 +00:00
" mesecons_piston_back.png " ,
" mesecons_piston_bottom.png " ,
" mesecons_piston_bottom.png " ,
" mesecons_piston_bottom.png " ,
" mesecons_piston_bottom.png " ,
2015-06-29 17:55:56 +00:00
} ,
2019-12-13 09:20:08 +00:00
groups = { handy = 1 , piston = 2 , not_in_creative_inventory = 1 } ,
2015-06-29 17:55:56 +00:00
paramtype = " light " ,
paramtype2 = " facedir " ,
2017-01-04 21:36:51 +00:00
is_ground_content = false ,
2017-03-15 19:54:33 +00:00
drop = " mesecons_pistons:piston_sticky_off " ,
2017-11-23 19:52:33 +00:00
after_destruct = piston_remove_pusher ,
2015-06-29 17:55:56 +00:00
node_box = piston_up_on_box ,
selection_box = piston_up_on_box ,
mesecons_piston = pistonspec_sticky_up ,
2018-01-10 20:35:22 +00:00
sounds = mcl_sounds.node_sound_stone_defaults ( ) ,
2015-06-29 17:55:56 +00:00
mesecons = { effector = {
action_off = piston_off ,
rules = piston_up_rules ,
2017-02-22 15:22:28 +00:00
} } ,
2020-04-17 19:40:13 +00:00
_mcl_blast_resistance = 0.5 ,
2017-02-27 16:20:51 +00:00
_mcl_hardness = 0.5 ,
2019-12-09 15:08:24 +00:00
on_rotate = false ,
2015-06-29 17:55:56 +00:00
} )
-- pusher
minetest.register_node ( " mesecons_pistons:piston_up_pusher_sticky " , {
drawtype = " nodebox " ,
tiles = {
" mesecons_piston_pusher_front_sticky.png " ,
" mesecons_piston_pusher_back.png " ,
" mesecons_piston_pusher_left.png^[transformR270 " ,
" mesecons_piston_pusher_right.png^[transformR90 " ,
" mesecons_piston_pusher_bottom.png " ,
" mesecons_piston_pusher_top.png^[transformR180 " ,
} ,
paramtype = " light " ,
paramtype2 = " facedir " ,
2019-12-13 09:20:08 +00:00
groups = { piston_pusher = 2 } ,
2017-01-04 21:36:51 +00:00
is_ground_content = false ,
2017-11-23 20:15:42 +00:00
after_destruct = piston_remove_base ,
2015-06-29 17:55:56 +00:00
diggable = false ,
2019-12-09 20:25:27 +00:00
drop = " " ,
2015-06-29 17:55:56 +00:00
corresponding_piston = " mesecons_pistons:piston_up_sticky_on " ,
selection_box = piston_up_pusher_box ,
node_box = piston_up_pusher_box ,
2017-02-17 00:56:52 +00:00
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
2020-04-17 19:40:13 +00:00
_mcl_blast_resistance = 0.5 ,
2019-12-09 15:08:24 +00:00
on_rotate = false ,
2015-06-29 17:55:56 +00:00
} )
--
--
-- DOWN
--
--
local piston_down_pusher_box = {
type = " fixed " ,
fixed = {
{ - 2 / 16 , - .5 + pt , - 2 / 16 , 2 / 16 , .5 + pt , 2 / 16 } ,
{ - .5 , - .5 , - .5 , .5 , - .5 + pt , .5 } ,
}
}
local piston_down_on_box = {
type = " fixed " ,
fixed = {
{ - .5 , - .5 + pt , - .5 , .5 , .5 , .5 }
}
}
-- Normal
local pistonspec_normal_down = {
offname = " mesecons_pistons:piston_down_normal_off " ,
onname = " mesecons_pistons:piston_down_normal_on " ,
dir = { x = 0 , y = - 1 , z = 0 } ,
pusher = " mesecons_pistons:piston_down_pusher_normal " ,
}
-- offstate
minetest.register_node ( " mesecons_pistons:piston_down_normal_off " , {
tiles = {
2017-07-17 15:29:53 +00:00
" mesecons_piston_back.png " ,
2015-06-29 17:55:56 +00:00
" mesecons_piston_pusher_front.png " ,
2017-07-17 15:29:53 +00:00
" mesecons_piston_bottom.png^[transformR180 " ,
" mesecons_piston_bottom.png^[transformR180 " ,
" mesecons_piston_bottom.png^[transformR180 " ,
" mesecons_piston_bottom.png^[transformR180 " ,
2015-06-29 17:55:56 +00:00
} ,
2019-12-13 09:20:08 +00:00
groups = { handy = 1 , piston = 1 , not_in_creative_inventory = 1 } ,
2017-06-13 12:26:50 +00:00
paramtype = " light " ,
2015-06-29 17:55:56 +00:00
paramtype2 = " facedir " ,
2017-01-04 21:36:51 +00:00
is_ground_content = false ,
2015-06-29 17:55:56 +00:00
drop = " mesecons_pistons:piston_normal_off " ,
mesecons_piston = pistonspec_normal_down ,
2017-02-22 16:07:24 +00:00
sounds = mcl_sounds.node_sound_stone_defaults ( ) ,
2015-06-29 17:55:56 +00:00
mesecons = { effector = {
action_on = piston_on ,
rules = piston_down_rules ,
2017-02-22 15:22:28 +00:00
} } ,
2020-04-17 19:40:13 +00:00
_mcl_blast_resistance = 0.5 ,
2017-02-27 16:20:51 +00:00
_mcl_hardness = 0.5 ,
2019-12-09 15:08:24 +00:00
on_rotate = function ( pos , node , user , mode )
if mode == screwdriver.ROTATE_AXIS then
minetest.set_node ( pos , { name = " mesecons_pistons:piston_normal_off " } )
2019-12-09 17:30:19 +00:00
return true
2019-12-09 15:08:24 +00:00
end
return false
end ,
2015-06-29 17:55:56 +00:00
} )
-- onstate
minetest.register_node ( " mesecons_pistons:piston_down_normal_on " , {
drawtype = " nodebox " ,
tiles = {
2017-07-17 15:29:53 +00:00
" mesecons_piston_back.png " ,
2015-06-29 17:55:56 +00:00
" mesecons_piston_on_front.png " ,
2017-07-17 15:29:53 +00:00
" mesecons_piston_bottom.png^[transformR180 " ,
" mesecons_piston_bottom.png^[transformR180 " ,
" mesecons_piston_bottom.png^[transformR180 " ,
" mesecons_piston_bottom.png^[transformR180 " ,
2015-06-29 17:55:56 +00:00
} ,
2019-12-13 09:20:08 +00:00
groups = { handy = 1 , piston = 1 , not_in_creative_inventory = 1 } ,
2015-06-29 17:55:56 +00:00
paramtype = " light " ,
paramtype2 = " facedir " ,
2017-01-04 21:36:51 +00:00
is_ground_content = false ,
2015-06-29 17:55:56 +00:00
drop = " mesecons_pistons:piston_normal_off " ,
2017-11-23 19:52:33 +00:00
after_destruct = piston_remove_pusher ,
2015-06-29 17:55:56 +00:00
node_box = piston_down_on_box ,
selection_box = piston_down_on_box ,
mesecons_piston = pistonspec_normal_down ,
2017-02-22 16:07:24 +00:00
sounds = mcl_sounds.node_sound_stone_defaults ( ) ,
2015-06-29 17:55:56 +00:00
mesecons = { effector = {
action_off = piston_off ,
rules = piston_down_rules ,
2017-02-22 15:22:28 +00:00
} } ,
2020-04-17 19:40:13 +00:00
_mcl_blast_resistance = 0.5 ,
2017-02-27 16:20:51 +00:00
_mcl_hardness = 0.5 ,
2019-12-09 15:08:24 +00:00
on_rotate = false ,
2015-06-29 17:55:56 +00:00
} )
-- pusher
minetest.register_node ( " mesecons_pistons:piston_down_pusher_normal " , {
drawtype = " nodebox " ,
tiles = {
" mesecons_piston_pusher_back.png " ,
" mesecons_piston_pusher_front.png " ,
" mesecons_piston_pusher_left.png^[transformR90 " ,
" mesecons_piston_pusher_right.png^[transformR270 " ,
" mesecons_piston_pusher_bottom.png^[transformR180 " ,
" mesecons_piston_pusher_top.png " ,
} ,
paramtype = " light " ,
paramtype2 = " facedir " ,
2019-12-13 09:20:08 +00:00
groups = { piston_pusher = 1 } ,
2017-01-04 21:36:51 +00:00
is_ground_content = false ,
2017-11-23 20:15:42 +00:00
after_destruct = piston_remove_base ,
2015-06-29 17:55:56 +00:00
diggable = false ,
2019-12-09 20:25:27 +00:00
drop = " " ,
2015-06-29 17:55:56 +00:00
corresponding_piston = " mesecons_pistons:piston_down_normal_on " ,
selection_box = piston_down_pusher_box ,
node_box = piston_down_pusher_box ,
2017-02-17 00:56:52 +00:00
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
2020-04-17 19:40:13 +00:00
_mcl_blast_resistance = 0.5 ,
2019-12-09 15:08:24 +00:00
on_rotate = false ,
2015-06-29 17:55:56 +00:00
} )
-- Sticky
local pistonspec_sticky_down = {
onname = " mesecons_pistons:piston_down_sticky_on " ,
offname = " mesecons_pistons:piston_down_sticky_off " ,
dir = { x = 0 , y = - 1 , z = 0 } ,
pusher = " mesecons_pistons:piston_down_pusher_sticky " ,
sticky = true
}
-- offstate
minetest.register_node ( " mesecons_pistons:piston_down_sticky_off " , {
tiles = {
2017-07-17 15:29:53 +00:00
" mesecons_piston_back.png " ,
2015-06-29 17:55:56 +00:00
" mesecons_piston_pusher_front_sticky.png " ,
2017-07-17 15:29:53 +00:00
" mesecons_piston_bottom.png^[transformR180 " ,
" mesecons_piston_bottom.png^[transformR180 " ,
" mesecons_piston_bottom.png^[transformR180 " ,
" mesecons_piston_bottom.png^[transformR180 " ,
2015-06-29 17:55:56 +00:00
} ,
2019-12-13 09:20:08 +00:00
groups = { handy = 1 , piston = 2 , not_in_creative_inventory = 1 } ,
2017-06-13 12:26:50 +00:00
paramtype = " light " ,
2015-06-29 17:55:56 +00:00
paramtype2 = " facedir " ,
2017-01-04 21:36:51 +00:00
is_ground_content = false ,
2015-06-29 17:55:56 +00:00
drop = " mesecons_pistons:piston_sticky_off " ,
mesecons_piston = pistonspec_sticky_down ,
2017-02-22 16:07:24 +00:00
sounds = mcl_sounds.node_sound_stone_defaults ( ) ,
2015-06-29 17:55:56 +00:00
mesecons = { effector = {
action_on = piston_on ,
rules = piston_down_rules ,
2017-02-22 15:22:28 +00:00
} } ,
2020-04-17 19:40:13 +00:00
_mcl_blast_resistance = 0.5 ,
2017-02-27 16:20:51 +00:00
_mcl_hardness = 0.5 ,
2019-12-09 15:08:24 +00:00
on_rotate = function ( pos , node , user , mode )
if mode == screwdriver.ROTATE_AXIS then
minetest.set_node ( pos , { name = " mesecons_pistons:piston_sticky_off " } )
2019-12-09 17:30:19 +00:00
return true
2019-12-09 15:08:24 +00:00
end
return false
end ,
2015-06-29 17:55:56 +00:00
} )
-- onstate
minetest.register_node ( " mesecons_pistons:piston_down_sticky_on " , {
drawtype = " nodebox " ,
tiles = {
2017-07-17 15:29:53 +00:00
" mesecons_piston_back.png " ,
2015-06-29 17:55:56 +00:00
" mesecons_piston_on_front.png " ,
2017-07-17 15:29:53 +00:00
" mesecons_piston_bottom.png^[transformR180 " ,
" mesecons_piston_bottom.png^[transformR180 " ,
" mesecons_piston_bottom.png^[transformR180 " ,
" mesecons_piston_bottom.png^[transformR180 " ,
2015-06-29 17:55:56 +00:00
} ,
2019-12-13 09:20:08 +00:00
groups = { handy = 1 , piston = 1 , not_in_creative_inventory = 1 } ,
2015-06-29 17:55:56 +00:00
paramtype = " light " ,
paramtype2 = " facedir " ,
2017-01-04 21:36:51 +00:00
is_ground_content = false ,
2015-06-29 17:55:56 +00:00
drop = " mesecons_pistons:piston_sticky_off " ,
2017-11-23 19:52:33 +00:00
after_destruct = piston_remove_pusher ,
2015-06-29 17:55:56 +00:00
node_box = piston_down_on_box ,
selection_box = piston_down_on_box ,
mesecons_piston = pistonspec_sticky_down ,
2017-02-22 16:07:24 +00:00
sounds = mcl_sounds.node_sound_stone_defaults ( ) ,
2015-06-29 17:55:56 +00:00
mesecons = { effector = {
action_off = piston_off ,
rules = piston_down_rules ,
2017-02-22 15:22:28 +00:00
} } ,
2020-04-17 19:40:13 +00:00
_mcl_blast_resistance = 0.5 ,
2017-02-27 16:20:51 +00:00
_mcl_hardness = 0.5 ,
2019-12-09 15:08:24 +00:00
on_rotate = false ,
2015-06-29 17:55:56 +00:00
} )
-- pusher
minetest.register_node ( " mesecons_pistons:piston_down_pusher_sticky " , {
drawtype = " nodebox " ,
tiles = {
" mesecons_piston_pusher_back.png " ,
" mesecons_piston_pusher_front_sticky.png " ,
" mesecons_piston_pusher_left.png^[transformR90 " ,
" mesecons_piston_pusher_right.png^[transformR270 " ,
" mesecons_piston_pusher_bottom.png^[transformR180 " ,
" mesecons_piston_pusher_top.png " ,
} ,
paramtype = " light " ,
paramtype2 = " facedir " ,
2019-12-13 09:20:08 +00:00
groups = { piston_pusher = 2 } ,
2017-01-04 21:36:51 +00:00
is_ground_content = false ,
2017-11-23 20:15:42 +00:00
after_destruct = piston_remove_base ,
2015-06-29 17:55:56 +00:00
diggable = false ,
2019-12-09 20:25:27 +00:00
drop = " " ,
2015-06-29 17:55:56 +00:00
corresponding_piston = " mesecons_pistons:piston_down_sticky_on " ,
selection_box = piston_down_pusher_box ,
node_box = piston_down_pusher_box ,
2017-02-17 00:56:52 +00:00
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
2020-04-17 19:40:13 +00:00
_mcl_blast_resistance = 0.5 ,
2019-12-09 15:08:24 +00:00
on_rotate = false ,
2015-06-29 17:55:56 +00:00
} )
2020-11-13 21:59:03 +00:00
mesecon.register_mvps_stopper ( " mesecons_pistons:piston_pusher_normal " )
mesecon.register_mvps_stopper ( " mesecons_pistons:piston_pusher_sticky " )
mesecon.register_mvps_stopper ( " mesecons_pistons:piston_up_pusher_normal " )
mesecon.register_mvps_stopper ( " mesecons_pistons:piston_up_pusher_sticky " )
mesecon.register_mvps_stopper ( " mesecons_pistons:piston_down_pusher_normal " )
mesecon.register_mvps_stopper ( " mesecons_pistons:piston_down_pusher_sticky " )
mesecon.register_mvps_stopper ( " mesecons_pistons:piston_normal_on " )
mesecon.register_mvps_stopper ( " mesecons_pistons:piston_sticky_on " )
mesecon.register_mvps_stopper ( " mesecons_pistons:piston_up_normal_on " )
mesecon.register_mvps_stopper ( " mesecons_pistons:piston_up_sticky_on " )
mesecon.register_mvps_stopper ( " mesecons_pistons:piston_down_normal_on " )
mesecon.register_mvps_stopper ( " mesecons_pistons:piston_down_sticky_on " )
2015-06-29 17:55:56 +00:00
--craft recipes
minetest.register_craft ( {
output = ' mesecons_pistons:piston_normal_off ' ,
recipe = {
{ " group:wood " , " group:wood " , " group:wood " } ,
2017-02-11 20:14:40 +00:00
{ " mcl_core:cobble " , " mcl_core:iron_ingot " , " mcl_core:cobble " } ,
2017-01-31 22:32:56 +00:00
{ " mcl_core:cobble " , " mesecons:redstone " , " mcl_core:cobble " } ,
2015-06-29 17:55:56 +00:00
}
} )
minetest.register_craft ( {
output = " mesecons_pistons:piston_sticky_off " ,
recipe = {
2017-02-11 21:05:14 +00:00
{ " mcl_mobitems:slimeball " } ,
2015-06-29 17:55:56 +00:00
{ " mesecons_pistons:piston_normal_off " } ,
}
} )
2017-03-21 03:27:50 +00:00
-- Add entry aliases for the Help
if minetest.get_modpath ( " doc " ) then
doc.add_entry_alias ( " nodes " , " mesecons_pistons:piston_normal_off " , " nodes " , " mesecons_pistons:piston_normal_on " )
doc.add_entry_alias ( " nodes " , " mesecons_pistons:piston_normal_off " , " nodes " , " mesecons_pistons:piston_up_normal_off " )
doc.add_entry_alias ( " nodes " , " mesecons_pistons:piston_normal_off " , " nodes " , " mesecons_pistons:piston_up_normal_on " )
doc.add_entry_alias ( " nodes " , " mesecons_pistons:piston_normal_off " , " nodes " , " mesecons_pistons:piston_down_normal_off " )
doc.add_entry_alias ( " nodes " , " mesecons_pistons:piston_normal_off " , " nodes " , " mesecons_pistons:piston_down_normal_on " )
doc.add_entry_alias ( " nodes " , " mesecons_pistons:piston_normal_off " , " nodes " , " mesecons_pistons:piston_pusher_normal " )
doc.add_entry_alias ( " nodes " , " mesecons_pistons:piston_normal_off " , " nodes " , " mesecons_pistons:piston_up_pusher_normal " )
doc.add_entry_alias ( " nodes " , " mesecons_pistons:piston_normal_off " , " nodes " , " mesecons_pistons:piston_down_pusher_normal " )
doc.add_entry_alias ( " nodes " , " mesecons_pistons:piston_sticky_off " , " nodes " , " mesecons_pistons:piston_sticky_on " )
doc.add_entry_alias ( " nodes " , " mesecons_pistons:piston_sticky_off " , " nodes " , " mesecons_pistons:piston_up_sticky_off " )
doc.add_entry_alias ( " nodes " , " mesecons_pistons:piston_sticky_off " , " nodes " , " mesecons_pistons:piston_up_sticky_on " )
doc.add_entry_alias ( " nodes " , " mesecons_pistons:piston_sticky_off " , " nodes " , " mesecons_pistons:piston_down_sticky_off " )
doc.add_entry_alias ( " nodes " , " mesecons_pistons:piston_sticky_off " , " nodes " , " mesecons_pistons:piston_down_sticky_on " )
doc.add_entry_alias ( " nodes " , " mesecons_pistons:piston_sticky_off " , " nodes " , " mesecons_pistons:piston_pusher_sticky " )
doc.add_entry_alias ( " nodes " , " mesecons_pistons:piston_sticky_off " , " nodes " , " mesecons_pistons:piston_up_pusher_sticky " )
doc.add_entry_alias ( " nodes " , " mesecons_pistons:piston_sticky_off " , " nodes " , " mesecons_pistons:piston_down_pusher_sticky " )
end