2015-06-29 19:55:56 +02:00
-- WALL BUTTON
-- A button that when pressed emits power for 1 second
-- and then turns off again
mesecon.button_turnoff = function ( pos )
2017-01-11 18:21:46 +01:00
local node = minetest.get_node ( pos )
2015-06-29 19:55:56 +02:00
if node.name == " mesecons_button:button_stone_on " then --has not been dug
mesecon : swap_node ( pos , " mesecons_button:button_stone_off " )
minetest.sound_play ( " mesecons_button_pop " , { pos = pos } )
local rules = mesecon.rules . buttonlike_get ( node )
mesecon : receptor_off ( pos , rules )
elseif node.name == " mesecons_button:button_wood_on " then --has not been dug
mesecon : swap_node ( pos , " mesecons_button:button_wood_off " )
minetest.sound_play ( " mesecons_button_pop " , { pos = pos } )
local rules = mesecon.rules . buttonlike_get ( node )
mesecon : receptor_off ( pos , rules )
end
end
local boxes_off = { - 4 / 16 , - 2 / 16 , 8 / 16 , 4 / 16 , 2 / 16 , 6 / 16 } -- The button
local boxes_on = { - 4 / 16 , - 2 / 16 , 8 / 16 , 4 / 16 , 2 / 16 , 7 / 16 } -- The button
2017-03-11 03:38:08 +01:00
local buttonuse = " Rightclick the button to push it and send a redstone impulse. "
2015-06-29 19:55:56 +02:00
minetest.register_node ( " mesecons_button:button_stone_off " , {
drawtype = " nodebox " ,
tiles = { " default_stone.png " } ,
2017-03-02 16:58:32 +01:00
wield_image = " default_stone.png^[mask:mesecons_button_wield_mask.png " ,
wield_scale = { x = 1 , y = 1 , z = 1 } ,
2015-06-29 19:55:56 +02:00
paramtype = " light " ,
paramtype2 = " facedir " ,
2017-01-04 22:36:51 +01:00
is_ground_content = false ,
2015-06-29 19:55:56 +02:00
walkable = false ,
sunlight_propagates = true ,
selection_box = {
type = " fixed " ,
fixed = boxes_off
} ,
node_box = {
type = " fixed " ,
fixed = boxes_off -- the button itself
} ,
2017-02-27 01:52:24 +01:00
groups = { handy = 1 , pickaxey = 1 , attached_node = 1 , dig_by_water = 1 } ,
2015-06-29 19:55:56 +02:00
description = " Stone Button " ,
2017-03-11 03:38:08 +01:00
_doc_items_longdesc = " A stone button is a redstone component made out of stone which gives a short impulse to a redstone component behind it when it pushed. " ,
_doc_items_usagehelp = buttonuse ,
2017-02-05 17:57:33 +01:00
on_rightclick = function ( pos , node )
2015-06-29 19:55:56 +02:00
mesecon : swap_node ( pos , " mesecons_button:button_stone_on " )
mesecon : receptor_on ( pos , mesecon.rules . buttonlike_get ( node ) )
minetest.sound_play ( " mesecons_button_push " , { pos = pos } )
minetest.after ( 1 , mesecon.button_turnoff , pos )
end ,
2017-02-11 18:46:23 +01:00
sounds = mcl_sounds.node_sound_stone_defaults ( ) ,
2015-06-29 19:55:56 +02:00
mesecons = { receptor = {
state = mesecon.state . off ,
rules = mesecon.rules . buttonlike_get
2017-02-22 16:22:28 +01:00
} } ,
_mcl_blast_resistance = 2.5 ,
2017-02-27 01:52:24 +01:00
_mcl_hardness = 0.5 ,
2015-06-29 19:55:56 +02:00
} )
minetest.register_node ( " mesecons_button:button_stone_on " , {
drawtype = " nodebox " ,
tiles = { " default_stone.png " } ,
2017-03-02 16:58:32 +01:00
wield_image = " default_stone.png^[mask:mesecons_button_wield_mask.png " ,
wield_scale = { x = 1 , y = 1 , z = 0.5 } ,
2015-06-29 19:55:56 +02:00
paramtype = " light " ,
paramtype2 = " facedir " ,
2017-01-04 22:36:51 +01:00
is_ground_content = false ,
2015-06-29 19:55:56 +02:00
walkable = false ,
sunlight_propagates = true ,
selection_box = {
type = " fixed " ,
fixed = boxes_on
} ,
node_box = {
type = " fixed " ,
fixed = boxes_on -- the button itself
} ,
2017-02-27 01:52:24 +01:00
groups = { handy = 1 , pickaxey = 1 , not_in_creative_inventory = 1 , attached_node = 1 , dig_by_water = 1 } ,
2015-06-29 19:55:56 +02:00
drop = ' mesecons_button:button_stone_off ' ,
description = " Stone Button " ,
2017-03-02 19:53:53 +01:00
_doc_items_create_entry = false ,
2017-02-11 18:46:23 +01:00
sounds = mcl_sounds.node_sound_stone_defaults ( ) ,
2015-06-29 19:55:56 +02:00
mesecons = { receptor = {
state = mesecon.state . on ,
rules = mesecon.rules . buttonlike_get
2017-02-22 16:22:28 +01:00
} } ,
_mcl_blast_resistance = 2.5 ,
2017-02-27 01:52:24 +01:00
_mcl_hardness = 0.5 ,
2015-06-29 19:55:56 +02:00
} )
minetest.register_node ( " mesecons_button:button_wood_off " , {
drawtype = " nodebox " ,
tiles = { " default_wood.png " } ,
2017-03-02 16:58:32 +01:00
wield_image = " default_wood.png^[mask:mesecons_button_wield_mask.png " ,
wield_scale = { x = 1 , y = 1 , z = 1 } ,
2015-06-29 19:55:56 +02:00
paramtype = " light " ,
paramtype2 = " facedir " ,
2017-01-04 22:36:51 +01:00
is_ground_content = false ,
2015-06-29 19:55:56 +02:00
walkable = false ,
sunlight_propagates = true ,
selection_box = {
type = " fixed " ,
fixed = boxes_off
} ,
node_box = {
type = " fixed " ,
fixed = boxes_off -- the button itself
} ,
2017-02-27 01:52:24 +01:00
groups = { handy = 1 , axey = 1 , attached_node = 1 , dig_by_water = 1 } ,
2017-01-12 00:27:26 +01:00
description = " Wooden Button " ,
2017-03-11 03:38:08 +01:00
_doc_items_longdesc = " A wooden button is a redstone component made out of wood which gives a short impulse to a redstone component behind it when it pushed. " ,
_doc_items_usagehelp = buttonuse ,
2017-01-12 00:30:28 +01:00
on_rightclick = function ( pos , node )
2015-06-29 19:55:56 +02:00
mesecon : swap_node ( pos , " mesecons_button:button_wood_on " )
mesecon : receptor_on ( pos , mesecon.rules . buttonlike_get ( node ) )
minetest.sound_play ( " mesecons_button_push " , { pos = pos } )
minetest.after ( 1 , mesecon.button_turnoff , pos )
end ,
2017-02-11 18:46:23 +01:00
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
2015-06-29 19:55:56 +02:00
mesecons = { receptor = {
state = mesecon.state . off ,
rules = mesecon.rules . buttonlike_get
2017-02-22 16:22:28 +01:00
} } ,
_mcl_blast_resistance = 2.5 ,
2017-02-27 01:52:24 +01:00
_mcl_hardness = 0.5 ,
2015-06-29 19:55:56 +02:00
} )
minetest.register_node ( " mesecons_button:button_wood_on " , {
drawtype = " nodebox " ,
tiles = { " default_wood.png " } ,
2017-03-02 16:58:32 +01:00
wield_image = " default_wood.png^[mask:mesecons_button_wield_mask.png " ,
wield_scale = { x = 1 , y = 1 , z = 0.5 } ,
2015-06-29 19:55:56 +02:00
paramtype = " light " ,
paramtype2 = " facedir " ,
2017-01-04 22:36:51 +01:00
is_ground_content = false ,
2015-06-29 19:55:56 +02:00
walkable = false ,
sunlight_propagates = true ,
selection_box = {
type = " fixed " ,
fixed = boxes_on
} ,
node_box = {
type = " fixed " ,
fixed = boxes_on -- the button itself
} ,
2017-02-27 01:52:24 +01:00
groups = { handy = 1 , axey = 1 , not_in_creative_inventory = 1 , attached_node = 1 , dig_by_water = 1 } ,
2015-06-29 19:55:56 +02:00
drop = ' mesecons_button:button_wood_off ' ,
2017-01-12 00:27:26 +01:00
description = " Wooden Button " ,
2017-03-02 19:53:53 +01:00
_doc_items_create_entry = false ,
2017-02-11 18:46:23 +01:00
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
2015-06-29 19:55:56 +02:00
mesecons = { receptor = {
state = mesecon.state . on ,
rules = mesecon.rules . buttonlike_get
2017-02-22 16:22:28 +01:00
} } ,
_mcl_blast_resistance = 2.5 ,
2017-02-27 01:52:24 +01:00
_mcl_hardness = 0.5 ,
2015-06-29 19:55:56 +02:00
} )
minetest.register_craft ( {
output = ' mesecons_button:button_stone_off ' ,
recipe = {
2017-01-31 23:32:56 +01:00
{ ' mcl_core:stone ' } ,
2015-06-29 19:55:56 +02:00
}
} )
minetest.register_craft ( {
output = ' mesecons_button:button_wood_off ' ,
recipe = {
{ ' group:wood ' } ,
}
} )
2017-01-10 06:43:07 +01:00
minetest.register_craft ( {
type = " fuel " ,
recipe = ' mesecons_button:button_wood_off ' ,
burntime = 5 ,
} )
2017-03-21 04:27:50 +01:00
-- Add entry aliases for the Help
if minetest.get_modpath ( " doc " ) then
doc.add_entry_alias ( " nodes " , " mesecons_button:button_wood_off " , " nodes " , " mesecons_button:button_wood_on " )
doc.add_entry_alias ( " nodes " , " mesecons_button:button_stone_off " , " nodes " , " mesecons_button:button_stone_on " )
end