From 971d4f3867dc5e5b637e352234775a4cdb69f2b8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 10 Feb 2017 15:38:53 +0100 Subject: [PATCH] 3D redstone torches --- mods/mcl_torches/init.lua | 32 ++++--- .../textures/jeija_torches_off.png | Bin 165 -> 225 bytes .../textures/jeija_torches_off_ceiling.png | Bin 166 -> 0 bytes .../textures/jeija_torches_off_side.png | Bin 243 -> 0 bytes .../textures/jeija_torches_on.png | Bin 174 -> 407 bytes .../textures/jeija_torches_on_ceiling.png | Bin 174 -> 0 bytes .../textures/jeija_torches_on_inv.png | Bin 0 -> 266 bytes .../textures/jeija_torches_on_side.png | Bin 284 -> 0 bytes mods/redstone/mesecons_torch/depends.txt | 1 + mods/redstone/mesecons_torch/init.lua | 79 ++++++++---------- 10 files changed, 57 insertions(+), 55 deletions(-) delete mode 100644 mods/redstone/mesecons_textures/textures/jeija_torches_off_ceiling.png delete mode 100644 mods/redstone/mesecons_textures/textures/jeija_torches_off_side.png delete mode 100644 mods/redstone/mesecons_textures/textures/jeija_torches_on_ceiling.png create mode 100644 mods/redstone/mesecons_textures/textures/jeija_torches_on_inv.png delete mode 100644 mods/redstone/mesecons_textures/textures/jeija_torches_on_side.png diff --git a/mods/mcl_torches/init.lua b/mods/mcl_torches/init.lua index 2fedbb793..c7595c3ab 100644 --- a/mods/mcl_torches/init.lua +++ b/mods/mcl_torches/init.lua @@ -5,9 +5,9 @@ mcl_torches = {} -mcl_torches.register_torch = function(substring, description, icon, mesh_floor, mesh_wall, tiles, light, groups, sounds) - local itemstring = "mcl_torches:"..substring - local itemstring_wall = "mcl_torches:"..substring.."_wall" +mcl_torches.register_torch = function(substring, description, icon, mesh_floor, mesh_wall, tiles, light, groups, sounds, moredef) + local itemstring = minetest.get_current_modname()..":"..substring + local itemstring_wall = minetest.get_current_modname()..":"..substring.."_wall" if light == nil then light = 14 end if mesh_floor == nil then mesh_floor = "mcl_torches_torch_floor.obj" end @@ -18,7 +18,7 @@ mcl_torches.register_torch = function(substring, description, icon, mesh_floor, groups.torch = 1 groups.dig_by_water = 1 - minetest.register_node(itemstring, { + local floordef = { description = description, drawtype = "mesh", mesh = mesh_floor, @@ -63,25 +63,31 @@ mcl_torches.register_torch = function(substring, description, icon, mesh_floor, -- Prevent placement of ceiling torches return itemstack elseif wdir == 1 then - retval = fakestack:set_name("mcl_torches:torch") + retval = fakestack:set_name(itemstring) else - retval = fakestack:set_name("mcl_torches:torch_wall") + retval = fakestack:set_name(itemstring_wall) end if not retval then return itemstack end itemstack = minetest.item_place(fakestack, placer, pointed_thing, wdir) - itemstack:set_name("mcl_torches:torch") + itemstack:set_name(itemstring) return itemstack end - }) + } + if moredef ~= nil then + for k,v in pairs(moredef) do + floordef[k] = v + end + end + minetest.register_node(itemstring, floordef) local groups_wall = table.copy(groups) groups_wall.torch = 2 - minetest.register_node(itemstring_wall, { + local walldef = { drawtype = "mesh", mesh = mesh_wall, tiles = tiles, @@ -99,7 +105,13 @@ mcl_torches.register_torch = function(substring, description, icon, mesh_floor, wall_side = {-0.5, -0.5, -0.1, -0.2, 0.1, 0.1}, }, sounds = sounds, - }) + } + if moredef ~= nil then + for k,v in pairs(moredef) do + walldef[k] = v + end + end + minetest.register_node(itemstring_wall, walldef) end mcl_torches.register_torch("torch", "Torch", "default_torch_on_floor.png", diff --git a/mods/redstone/mesecons_textures/textures/jeija_torches_off.png b/mods/redstone/mesecons_textures/textures/jeija_torches_off.png index 55e99750fef97101715da030bd7eb6fba3d2de0f..df3c1220dc30d377d625ec6ee75c57445feb8c9e 100644 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ6`n4RArXg@fBgS%f7l_ZEs(v( zD&Y#_Vm^t|0~1OeBm%TKsvSO_C}ud5d$TuVG9V>rbv~z1?F~f;ZjD-wEA`KrJEDr?vPg7!NU|4i{ W(y>?HN*aM~X7F_Nb6Mw<&;$S@uuvrc literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^fuD4 zzvIi>IwvUV=;-jYWeM?!NFF+JgV3-i(Dx-lR%k!jp%z zU^qpFxT%Qwc>tBVYRmjj4>6fdk#~G-RGcOkyL?IXGy3mpuDFb%Fmbm~G|vk+c@gNK t{vVhMH&GOzw)#>!@!q;c^o<>S7y#ll{}uhitTq4u002ovPDHLkV1gF5WLE$H diff --git a/mods/redstone/mesecons_textures/textures/jeija_torches_on.png b/mods/redstone/mesecons_textures/textures/jeija_torches_on.png index 28e98a33add42e2d92cfc96be5e2de133bc0b73c..71c538c75c0f88e471b200b150c91fb9a369c058 100644 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Y)RhkE)3la zI~jf&&fa<(D8gCb5n0T@z%2~Ij105pNB{-dOFVsD*&i}-@rfC)P1o=Mnj-G$;usQf zIQh^2|MrI+nAF-B*%tFjlpa{Y>?V7_Y2C5whc;n$l7S{cN})tg(li5#A*E-zX4|DP?> z>c{f-br1v2&$nlu&B3n28?)#0EXR-r_MmyjMtuiN5*BE&>2v=7``f%g(INBsv^Tdt r9C{l*!DNBOfwhlLm&XMyk!RRs64i9$O2}4Vs4;lD`njxgN@xNA78jeY literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^fc7AeVfeeVAa``?O(O4xxQ{bTb2U%g`N__1#FYl zJU?B(Bg62Z$}UspoBYHd+j=HW5fYnJyzKis#ib%yYvn#gm^pFC71_M`WBvX4ud8## Yt5ZxqDg3lo0Xl%e)78&qol`;+0HKvXRsaA1 diff --git a/mods/redstone/mesecons_textures/textures/jeija_torches_on_ceiling.png b/mods/redstone/mesecons_textures/textures/jeija_torches_on_ceiling.png deleted file mode 100644 index 45fa2d904d45dbb4953bdcfb23904999aef963d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^fdQtmy zt9gMK2dikvn}b4$N{^jG5&`^ou6+y7bp;@6w?YsGb&SJ!)YJMH=2 zbC+58(VXP^`kW4xw)7)5>MaTLCkJg(v`o)hJL8rE>lGf63){EKYANV?9Ou11qoMxo Z+$t;mM8Si07l006@O1TaS?83{1OOpqLNEXT diff --git a/mods/redstone/mesecons_textures/textures/jeija_torches_on_inv.png b/mods/redstone/mesecons_textures/textures/jeija_torches_on_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..5af340b9a7fba0b4f1e468688698593dc9c716f7 GIT binary patch literal 266 zcmV+l0rmcgP)FNNGh5vGZ%o{-54`jQO?+CIT0Ja?J01&3X z1O88kVhEtS1OC-}!yWLizMj4gKu(0~p_uNupgPInKM4EUYyGz~QXDu3qy?D_i~}YX zxxy_U5C=>yaUa+afH?qUxwE<2z&HS8F(?EE!~t{b0>B~QWTrYWQ83^Rm|EsJu(<%{ zfC0+|Ad6wy(B4>S1Ug_^xfeY6Z4DI$&H*6H2gCu$Q2@dN<^W4QS&AG00Hgb#Hl+3# QV*mgE07*qoM6N<$g4Z@@^8f$< literal 0 HcmV?d00001 diff --git a/mods/redstone/mesecons_textures/textures/jeija_torches_on_side.png b/mods/redstone/mesecons_textures/textures/jeija_torches_on_side.png deleted file mode 100644 index 3894ecd30bbc54777aa9f4307df95ee04af571e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 284 zcmV+%0ptFOP);z+$iSVUWa diff --git a/mods/redstone/mesecons_torch/depends.txt b/mods/redstone/mesecons_torch/depends.txt index acaa92412..72327aba4 100644 --- a/mods/redstone/mesecons_torch/depends.txt +++ b/mods/redstone/mesecons_torch/depends.txt @@ -1 +1,2 @@ mesecons +mcl_torches diff --git a/mods/redstone/mesecons_torch/init.lua b/mods/redstone/mesecons_torch/init.lua index 8c901d760..efb22aed8 100644 --- a/mods/redstone/mesecons_torch/init.lua +++ b/mods/redstone/mesecons_torch/init.lua @@ -41,51 +41,34 @@ minetest.register_craft({ {"mcl_core:stick"},} }) -local torch_selectionbox = -{ - 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}, -} +mcl_torches.register_torch("mesecon_torch_off", "Mesecon Torch (off)", "jeija_torches_off.png", + "mcl_torches_torch_floor.obj", "mcl_torches_torch_wall.obj", + {"jeija_torches_off.png"}, + 0, + {dig_immediate=3, dig_by_water=1, not_in_creative_inventory=1}, + mcl_core.node_sound_wood_defaults(), + { + mesecons = {receptor = { + state = mesecon.state.off, + rules = torch_get_output_rules + }}, + drop = "mesecons_torch:mesecon_torch_on", + } +) -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", - is_ground_content = false, - selection_box = torch_selectionbox, - groups = {dig_immediate = 3, dig_by_water=1, not_in_creative_inventory = 1}, - drop = "mesecons_torch:mesecon_torch_on", - mesecons = {receptor = { - state = mesecon.state.off, - rules = torch_get_output_rules - }} -}) - -minetest.register_node("mesecons_torch:mesecon_torch_on", { - drawtype = "torchlike", - tiles = {"jeija_torches_on.png", "jeija_torches_on_ceiling.png", "jeija_torches_on_side.png"}, - inventory_image = "jeija_torches_on.png", - wield_image = "jeija_torches_on.png", - stack_max = 64, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - paramtype2 = "wallmounted", - is_ground_content = false, - selection_box = torch_selectionbox, - groups = {dig_immediate=3, dig_by_water=1}, - light_source = 7, - description="Redstone Torch", - mesecons = {receptor = { - state = mesecon.state.on, - rules = torch_get_output_rules - }}, -}) +mcl_torches.register_torch("mesecon_torch_on", "Mesecon Torch", "jeija_torches_on_inv.png", + "mcl_torches_torch_floor.obj", "mcl_torches_torch_wall.obj", + {"jeija_torches_on.png"}, + 7, + {dig_immediate=3, dig_by_water=1}, + mcl_core.node_sound_wood_defaults(), + { + mesecons = {receptor = { + state = mesecon.state.on, + rules = torch_get_output_rules + }} + } +) minetest.register_node("mesecons_torch:redstoneblock", { description = "Block of Redstone", @@ -117,7 +100,7 @@ minetest.register_craft({ }) minetest.register_abm({ - nodenames = {"mesecons_torch:mesecon_torch_off","mesecons_torch:mesecon_torch_on"}, + nodenames = {"mesecons_torch:mesecon_torch_off","mesecons_torch:mesecon_torch_off_wall","mesecons_torch:mesecon_torch_on","mesecons_torch:mesecon_torch_on_wall"}, interval = 1, chance = 1, action = function(pos, node) @@ -133,10 +116,16 @@ minetest.register_abm({ if node.name == "mesecons_torch:mesecon_torch_on" then mesecon:swap_node(pos, "mesecons_torch:mesecon_torch_off") mesecon:receptor_off(pos, torch_get_output_rules(node)) + elseif node.name == "mesecons_torch:mesecon_torch_on_wall" then + mesecon:swap_node(pos, "mesecons_torch:mesecon_torch_off_wall") + mesecon:receptor_off(pos, torch_get_output_rules(node)) end elseif node.name == "mesecons_torch:mesecon_torch_off" then mesecon:swap_node(pos, "mesecons_torch:mesecon_torch_on") mesecon:receptor_on(pos, torch_get_output_rules(node)) + elseif node.name == "mesecons_torch:mesecon_torch_off_wall" then + mesecon:swap_node(pos, "mesecons_torch:mesecon_torch_on_wall") + mesecon:receptor_on(pos, torch_get_output_rules(node)) end end })