diff options
author | Vitaliy <numzer0@yandex.ru> | 2020-08-24 00:30:57 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-24 00:30:57 +0300 |
commit | 9fda51b650c83aea82616055ae8814a722353bf4 (patch) | |
tree | f7132fa7ecdd856a1a6dd5d0e7201281abc81507 /mesecons_extrawires/doublecorner.lua | |
parent | 4750925eab62bc0f3513579be25ded407fecb049 (diff) | |
download | mesecons-9fda51b650c83aea82616055ae8814a722353bf4.tar mesecons-9fda51b650c83aea82616055ae8814a722353bf4.tar.gz mesecons-9fda51b650c83aea82616055ae8814a722353bf4.tar.bz2 mesecons-9fda51b650c83aea82616055ae8814a722353bf4.tar.xz mesecons-9fda51b650c83aea82616055ae8814a722353bf4.zip |
Insulated double corner (#524)
* Add insulated double corner
* Make single corner curved to match double corner
* Remove obsolete regular corner textures
Diffstat (limited to 'mesecons_extrawires/doublecorner.lua')
-rw-r--r-- | mesecons_extrawires/doublecorner.lua | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/mesecons_extrawires/doublecorner.lua b/mesecons_extrawires/doublecorner.lua new file mode 100644 index 0000000..d94e792 --- /dev/null +++ b/mesecons_extrawires/doublecorner.lua @@ -0,0 +1,91 @@ +local rotate +if minetest.global_exists("screwdriver") then rotate = screwdriver.rotate_simple end + +local doublecorner_selectionbox = { + type = "fixed", + fixed = { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, +} + +local rules = { + { + { x = 1, y = 0, z = 0 }, + { x = 0, y = 0, z = 1 }, + }, + { + { x = -1, y = 0, z = 0 }, + { x = 0, y = 0, z = -1 }, + }, +} + +local doublecorner_rules = {} +for k = 1, 4 do + doublecorner_rules[k] = table.copy(rules) + for i, r in ipairs(rules) do + rules[i] = mesecon.rotate_rules_left(r) + end +end + +local function doublecorner_get_rules(node) + return doublecorner_rules[node.param2 % 4 + 1] +end + +local doublecorner_states = { + "mesecons_extrawires:doublecorner_00", + "mesecons_extrawires:doublecorner_01", + "mesecons_extrawires:doublecorner_10", + "mesecons_extrawires:doublecorner_11", +} +local wire1_states = { "off", "off", "on", "on" } +local wire2_states = { "off", "on", "off", "on" } + +for k, state in ipairs(doublecorner_states) do + local w1 = wire1_states[k] + local w2 = wire2_states[k] + local groups = { dig_immediate = 3 } + if k ~= 1 then groups.not_in_creative_inventory = 1 end + minetest.register_node(state, { + drawtype = "mesh", + mesh = "mesecons_extrawires_doublecorner.obj", + description = "Insulated Mesecon Double Corner", + tiles = { + { name = "jeija_insulated_wire_sides_" .. w1 .. ".png", backface_culling = true }, + { name = "jeija_insulated_wire_ends_" .. w1 .. ".png", backface_culling = true }, + { name = "jeija_insulated_wire_sides_" .. w2 .. ".png", backface_culling = true }, + { name = "jeija_insulated_wire_ends_" .. w2 .. ".png", backface_culling = true }, + }, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + walkable = false, + sunlight_propagates = true, + selection_box = doublecorner_selectionbox, + groups = groups, + drop = doublecorner_states[1], + sounds = default.node_sound_defaults(), + mesecons = { + conductor = { + states = doublecorner_states, + rules = doublecorner_get_rules, + }, + }, + on_blast = mesecon.on_blastnode, + on_rotate = rotate, + }) +end + +minetest.register_craft({ + type = "shapeless", + output = "mesecons_extrawires:doublecorner_00", + recipe = { + "mesecons_extrawires:corner_off", + "mesecons_extrawires:corner_off", + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "mesecons_extrawires:corner_off 2", + recipe = { + "mesecons_extrawires:doublecorner_00", + }, +}) |