summaryrefslogtreecommitdiff
path: root/mesecons_torch
diff options
context:
space:
mode:
authorJeija <norrepli@gmail.com>2012-12-09 00:42:30 +0100
committerJeija <norrepli@gmail.com>2012-12-09 00:42:30 +0100
commitb37bdbf55cf6d3205d5dd7a2491a8bd855cbbd76 (patch)
treeffc05ac9f096fc635535701cd287d4e5ad6b5073 /mesecons_torch
parentcf6080f7237af1c55a6d80bea4725dcb5c8cb1eb (diff)
downloadmesecons-b37bdbf55cf6d3205d5dd7a2491a8bd855cbbd76.tar
mesecons-b37bdbf55cf6d3205d5dd7a2491a8bd855cbbd76.tar.gz
mesecons-b37bdbf55cf6d3205d5dd7a2491a8bd855cbbd76.tar.bz2
mesecons-b37bdbf55cf6d3205d5dd7a2491a8bd855cbbd76.tar.xz
mesecons-b37bdbf55cf6d3205d5dd7a2491a8bd855cbbd76.zip
Port a lot more (basically everything apart from gates, pistons and extrawire crossing) to the new nodedef system. There are some problems with wall button and wall lever (in the way they visually connect to wires)
Diffstat (limited to 'mesecons_torch')
-rw-r--r--mesecons_torch/init.lua146
1 files changed, 74 insertions, 72 deletions
diff --git a/mesecons_torch/init.lua b/mesecons_torch/init.lua
index d7a9596..8b9a59b 100644
--- a/mesecons_torch/init.lua
+++ b/mesecons_torch/init.lua
@@ -1,30 +1,74 @@
--MESECON TORCHES
+local torch_get_rules = function(node)
+ local rules = {
+ {x=1, y=0, z=0},
+ {x=0, y=0, z=1},
+ {x=0, y=0, z=-1},
+ {x=0, y=1, z=0},
+ {x=0, y=-1, z=0}}
+ if node.param2 == 5 then
+ rules=mesecon:rotate_rules_right(rules)
+ elseif node.param2 == 2 then
+ rules=mesecon:rotate_rules_right(mesecon:rotate_rules_right(rules)) --180 degrees
+ elseif node.param2 == 4 then
+ rules=mesecon:rotate_rules_left(rules)
+ elseif node.param2 == 1 then
+ rules=mesecon:rotate_rules_down(rules)
+ elseif node.param2 == 0 then
+ rules=mesecon:rotate_rules_up(rules)
+ end
+ return rules
+end
+
+local torch_get_input_rules = function(node)
+ local rules = {x=0, y=0, z=0}
+
+ if node.param2 == 4 then
+ rules.z = -2
+ elseif node.param2 == 2 then
+ rules.x = -2
+ elseif node.param2 == 5 then
+ rules.z = 2
+ elseif node.param2 == 3 then
+ rules.x = 2
+ elseif node.param2 == 1 then
+ rules.y = 2
+ elseif node.param2 == 0 then
+ rules.y = -2
+ end
+ return rules
+end
+
minetest.register_craft({
- output = '"mesecons_torch:mesecon_torch_on" 4',
- recipe = {
- {"group:mesecon_conductor_craftable"},
- {"default:stick"},
- }
+ output = '"mesecons_torch:mesecon_torch_on" 4',
+ recipe = {
+ {"group:mesecon_conductor_craftable"},
+ {"default:stick"},
+ }
})
minetest.register_node("mesecons_torch:mesecon_torch_off", {
- drawtype = "torchlike",
- tiles = {"jeija_torches_off.png", "jeija_torches_off_ceiling.png", "jeija_torches_off_side.png"},
- inventory_image = "jeija_torches_off.png",
- paramtype = "light",
- walkable = false,
- paramtype2 = "wallmounted",
- selection_box = {
- type = "wallmounted",
- wall_top = {-0.1, 0.5-0.6, -0.1, 0.1, 0.5, 0.1},
- wall_bottom = {-0.1, -0.5, -0.1, 0.1, -0.5+0.6, 0.1},
- wall_side = {-0.5, -0.1, -0.1, -0.5+0.6, 0.1, 0.1},
- },
- legacy_wallmounted = true,
- groups = {dig_immediate=3,not_in_creative_inventory=1, mesecon = 2},
- drop = '"mesecons_torch:mesecon_torch_on" 1',
- description="Mesecon Torch",
+ drawtype = "torchlike",
+ tiles = {"jeija_torches_off.png", "jeija_torches_off_ceiling.png", "jeija_torches_off_side.png"},
+ inventory_image = "jeija_torches_off.png",
+ paramtype = "light",
+ walkable = false,
+ paramtype2 = "wallmounted",
+ selection_box = {
+ type = "wallmounted",
+ wall_top = {-0.1, 0.5-0.6, -0.1, 0.1, 0.5, 0.1},
+ wall_bottom = {-0.1, -0.5, -0.1, 0.1, -0.5+0.6, 0.1},
+ wall_side = {-0.5, -0.1, -0.1, -0.5+0.6, 0.1, 0.1},
+ },
+ legacy_wallmounted = true,
+ groups = {dig_immediate=3,not_in_creative_inventory=1},
+ drop = '"mesecons_torch:mesecon_torch_on" 1',
+ description="Mesecon Torch",
+ mesecons = {receptor = {
+ state = mesecon.state.off,
+ rules = torch_get_rules
+ }}
})
minetest.register_node("mesecons_torch:mesecon_torch_on", {
@@ -43,9 +87,13 @@ minetest.register_node("mesecons_torch:mesecon_torch_on", {
wall_side = {-0.5, -0.1, -0.1, -0.5+0.6, 0.1, 0.1},
},
legacy_wallmounted = true,
- groups = {dig_immediate=3, mesecon = 2},
+ groups = {dig_immediate=3},
light_source = LIGHT_MAX-5,
description="Mesecon Torch",
+ mesecons = {receptor = {
+ state = mesecon.state.on,
+ rules = torch_get_rules
+ }}
})
minetest.register_abm({
@@ -53,70 +101,24 @@ minetest.register_abm({
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
- local rules=mesecon.torch_get_rules(minetest.env:get_node(pos).param2)
- local pa = mesecon.torch_get_input_rules(node.param2)
+ local node = minetest.env:get_node(pos)
+ local pa = torch_get_input_rules(node)
local postc = {x=pos.x-pa.x, y=pos.y-pa.y, z=pos.z-pa.z}
if mesecon:is_power_on(postc) then
if node.name ~= "mesecons_torch:mesecon_torch_off" then
minetest.env:add_node(pos, {name="mesecons_torch:mesecon_torch_off",param2=node.param2})
- mesecon:receptor_off(pos, rules_string)
+ mesecon:receptor_off(pos, torch_get_rules(node))
end
else
if node.name ~= "mesecons_torch:mesecon_torch_on" then
minetest.env:add_node(pos, {name="mesecons_torch:mesecon_torch_on",param2=node.param2})
- mesecon:receptor_on(pos, rules_string)
+ mesecon:receptor_on(pos, torch_get_rules(node))
end
end
end
})
-mesecon.torch_get_rules = function(param2)
- local rules=mesecon:get_rules("mesecontorch")
- if param2 == 5 then
- rules=mesecon:rotate_rules_right(rules)
- elseif param2 == 2 then
- rules=mesecon:rotate_rules_right(mesecon:rotate_rules_right(rules)) --180 degrees
- elseif param2 == 4 then
- rules=mesecon:rotate_rules_left(rules)
- elseif param2 == 1 then
- rules=mesecon:rotate_rules_down(rules)
- elseif param2 == 0 then
- rules=mesecon:rotate_rules_up(rules)
- end
- return rules
-end
-
-mesecon.torch_get_input_rules = function(param2)
- local rules = {x=0, y=0, z=0}
-
- if param2 == 4 then
- rules.z = -2
- elseif param2 == 2 then
- rules.x = -2
- elseif param2 == 5 then
- rules.z = 2
- elseif param2 == 3 then
- rules.x = 2
- elseif param2 == 1 then
- rules.y = 2
- elseif param2 == 0 then
- rules.y = -2
- end
- return rules
-end
-
-mesecon:add_rules("mesecontorch",
-{{x=1, y=0, z=0},
-{x=0, y=0, z=1},
-{x=0, y=0, z=-1},
-{x=0, y=1, z=0},
-{x=0, y=-1, z=0}})
-
-mesecon:add_receptor_node("mesecons_torch:mesecon_torch_on", nil, mesecon.torch_get_rules)
-mesecon:add_receptor_node_off("mesecons_torch:mesecon_torch_off", nil, mesecon.torch_get_rules)
-mesecon:register_effector("mesecons_torch:mesecon_torch_on","mesecons_torch:mesecon_torch_off", nil, mesecon.torch_get_input_rules)
-
-- Param2 Table (Block Attached To)
-- 5 = z-1
-- 3 = x-1