From 80d136125ef8f17af85d0045800d5e761ace3229 Mon Sep 17 00:00:00 2001 From: Jeija Date: Sat, 22 Nov 2014 20:49:54 +0100 Subject: Fix bug in mesecon.find_receptor that caused false turnoffs and rewrite lever + switch --- mesecons_walllever/init.lua | 66 ++++++++++++++++----------------------------- 1 file changed, 23 insertions(+), 43 deletions(-) (limited to 'mesecons_walllever') diff --git a/mesecons_walllever/init.lua b/mesecons_walllever/init.lua index 89ca88d..bd71871 100644 --- a/mesecons_walllever/init.lua +++ b/mesecons_walllever/init.lua @@ -1,16 +1,9 @@ -- WALL LEVER -- Basically a switch that can be attached to a wall -- Powers the block 2 nodes behind (using a receiver) -minetest.register_node("mesecons_walllever:wall_lever_off", { +mesecon.register_node("mesecons_walllever:wall_lever", { + description="Lever", drawtype = "nodebox", - tiles = { - "jeija_wall_lever_tb.png", - "jeija_wall_lever_bottom.png", - "jeija_wall_lever_sides.png", - "jeija_wall_lever_sides.png", - "jeija_wall_lever_back.png", - "jeija_wall_lever_off.png", - }, inventory_image = "jeija_wall_lever_off.png", wield_image = "jeija_wall_lever_off.png", paramtype = "light", @@ -21,29 +14,34 @@ minetest.register_node("mesecons_walllever:wall_lever_off", { type = "fixed", fixed = { -8/16, -8/16, 3/16, 8/16, 8/16, 8/16 }, }, + sounds = default.node_sound_wood_defaults(), + on_punch = function (pos, node) + if(mesecon.flipstate(pos, node) == "on") then + mesecon.receptor_on(pos, mesecon.rules.buttonlike_get(node)) + else + mesecon.receptor_off(pos, mesecon.rules.buttonlike_get(node)) + end + minetest.sound_play("mesecons_lever", {pos=pos}) + end +},{ + tiles = { "jeija_wall_lever_tb.png", "jeija_wall_lever_bottom.png", + "jeija_wall_lever_sides.png", "jeija_wall_lever_sides.png", + "jeija_wall_lever_back.png", "jeija_wall_lever_off.png", + }, node_box = { type = "fixed", fixed = {{ -6/16, -6/16, 6/16, 6/16, 6/16, 8/16 }, -- the base "slab" { -5/16, -3/16, 5/16, 5/16, 3/16, 6/16 }, -- the lighted ring area - { -4/16, -2/16, 4/16, 4/16, 2/16, 5/16 }, -- the raised bit that the lever "sits" on + { -4/16, -2/16, 4/16, 4/16, 2/16, 5/16 }, -- the raised bit { -2/16, -1/16, 3/16, 2/16, 1/16, 4/16 }, -- the lever "hinge" { -1/16, -8/16, 4/16, 1/16, 0, 6/16 }} -- the lever itself. }, - groups = {dig_immediate=2, mesecon_needs_receiver = 1}, - description="Lever", - on_punch = function (pos, node) - minetest.swap_node(pos, {name = "mesecons_walllever:wall_lever_on", param2 = node.param2}) - mesecon.receptor_on(pos, mesecon.rules.buttonlike_get(node)) - minetest.sound_play("mesecons_lever", {pos=pos}) - end, - sounds = default.node_sound_wood_defaults(), mesecons = {receptor = { rules = mesecon.rules.buttonlike_get, state = mesecon.state.off - }} -}) -minetest.register_node("mesecons_walllever:wall_lever_on", { - drawtype = "nodebox", + }}, + groups = {dig_immediate = 2, mesecon_needs_receiver = 1} +},{ tiles = { "jeija_wall_lever_top.png", "jeija_wall_lever_tb.png", @@ -52,37 +50,19 @@ minetest.register_node("mesecons_walllever:wall_lever_on", { "jeija_wall_lever_back.png", "jeija_wall_lever_on.png", }, - inventory_image = "jeija_wall_lever_on.png", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - walkable = false, - light_source = LIGHT_MAX-7, - selection_box = { - type = "fixed", - fixed = { -8/16, -8/16, 3/16, 8/16, 8/16, 8/16 }, - }, node_box = { type = "fixed", fixed = {{ -6/16, -6/16, 6/16, 6/16, 6/16, 8/16 }, -- the base "slab" { -5/16, -3/16, 5/16, 5/16, 3/16, 6/16 }, -- the lighted ring area - { -4/16, -2/16, 4/16, 4/16, 2/16, 5/16 }, -- the raised bit that the lever "sits" on + { -4/16, -2/16, 4/16, 4/16, 2/16, 5/16 }, -- the raised bit { -2/16, -1/16, 3/16, 2/16, 1/16, 4/16 }, -- the lever "hinge" { -1/16, 0, 4/16, 1/16, 8/16, 6/16 }} -- the lever itself. }, - groups = {dig_immediate = 2, not_in_creative_inventory = 1, mesecon_needs_receiver = 1}, - drop = "mesecons_walllever:wall_lever_off 1", - description="Lever", - on_punch = function (pos, node) - minetest.swap_node(pos, {name = "mesecons_walllever:wall_lever_off", param2 = node.param2}) - mesecon.receptor_off(pos, mesecon.rules.buttonlike_get(node)) - minetest.sound_play("mesecons_lever", {pos=pos}) - end, - sounds = default.node_sound_wood_defaults(), mesecons = {receptor = { rules = mesecon.rules.buttonlike_get, state = mesecon.state.on - }} + }}, + groups = {dig_immediate = 2, mesecon_needs_receiver = 1, not_in_creative_inventory = 1} }) minetest.register_craft({ -- cgit v1.2.3