]> git.lizzy.rs Git - Crafter.git/blobdiff - mods/redstone/torch.lua
Speed up redstone
[Crafter.git] / mods / redstone / torch.lua
index 61771982c455e5b67f63b0e83baefe914b691cb4..a500a60c1a13a7aefdc76634d1cba0ac1bdec95d 100644 (file)
+local minetest,vector = minetest,vector
 --get point where particle spawner is added
 local function get_offset(wdir)
-      local z = 0
-      local x = 0
-      if wdir == 4 then
-            z = 0.25
-      elseif wdir == 2 then
-            x = 0.25
-      elseif wdir == 5 then
-            z = -0.25
-      elseif wdir == 3 then
-            x = -0.25
-      end
-      return {x = x, y = 0.27, z = z}      
+       local z = 0
+       local x = 0
+       if wdir == 4 then
+               z = 0.25
+       elseif wdir == 2 then
+               x = 0.25
+       elseif wdir == 5 then
+               z = -0.25
+       elseif wdir == 3 then
+               x = -0.25
+       end
+       return {x = x, y = 0.27, z = z} 
 end
 
 --remove smoke and fire
 local function delete_ps(pos)
-      local meta = minetest.get_meta(pos)
-      minetest.delete_particlespawner(meta:get_int("psf"))
-      minetest.delete_particlespawner(meta:get_int("pss"))
+       local meta = minetest.get_meta(pos)
+       minetest.delete_particlespawner(meta:get_int("psf"))
+       minetest.delete_particlespawner(meta:get_int("pss"))
 end
 
 --add in smoke and fire
 local function create_ps(pos)
-      local dir = get_offset(minetest.get_node(pos).param2)
-      local ppos = vector.add(dir,pos)
-      local meta = minetest.get_meta(pos)
-      local psf = minetest.add_particlespawner({
-            amount = 2,
-            time = 0,
-            minpos = ppos,
-            maxpos = ppos,
-            minvel = vector.new(0,0,0),
-            maxvel = vector.new(0,0,0),
-            minacc = {x=0, y=0, z=0},
-            maxacc = {x=0, y=0, z=0},
-            minexptime = 1,
-            maxexptime = 1,
-            minsize = 3,
-            maxsize = 3,
-            collisiondetection = false,
-            vertical = true,
-            texture = "redstone_torch_animated.png",
-            animation = {type = "vertical_frames",
+       local dir = get_offset(minetest.get_node(pos).param2)
+       local ppos = vector.add(dir,pos)
+       local meta = minetest.get_meta(pos)
+       local psf = minetest.add_particlespawner({
+               amount = 2,
+               time = 0,
+               minpos = ppos,
+               maxpos = ppos,
+               minvel = vector.new(0,0,0),
+               maxvel = vector.new(0,0,0),
+               minacc = {x=0, y=0, z=0},
+               maxacc = {x=0, y=0, z=0},
+               minexptime = 1,
+               maxexptime = 1,
+               minsize = 3,
+               maxsize = 3,
+               collisiondetection = false,
+               vertical = true,
+               texture = "redstone_torch_animated.png",
+               animation = {type = "vertical_frames",
 
-                  aspect_w = 16,
-                  -- Width of a frame in pixels
+                       aspect_w = 16,
+                       -- Width of a frame in pixels
 
-                  aspect_h = 16,
-                  -- Height of a frame in pixels
+                       aspect_h = 16,
+                       -- Height of a frame in pixels
 
-                  length =  0.2,
-                  -- Full loop length
-            },
-      })
-      local pss = minetest.add_particlespawner({
-            amount = 2,
-            time = 0,
-            minpos = ppos,
-            maxpos = ppos,
-            minvel = vector.new(-0.1,0.1,-0.1),
-            maxvel = vector.new(0.1,0.3,0.1),
-            minacc = vector.new(0,0,0),
-            maxacc = vector.new(0,0,0),
-            minexptime = 1,
-            maxexptime = 2,
-            minsize = 1,
-            maxsize = 2,
-            collisiondetection = false,
-            vertical = false,
-            texture = "smoke.png",
-      })
-      meta:set_int("psf", psf)
-      meta:set_int("pss", pss)
+                       length =  0.2,
+                       -- Full loop length
+               },
+       })
+       local pss = minetest.add_particlespawner({
+               amount = 2,
+               time = 0,
+               minpos = ppos,
+               maxpos = ppos,
+               minvel = vector.new(-0.1,0.1,-0.1),
+               maxvel = vector.new(0.1,0.3,0.1),
+               minacc = vector.new(0,0,0),
+               maxacc = vector.new(0,0,0),
+               minexptime = 1,
+               maxexptime = 2,
+               minsize = 1,
+               maxsize = 2,
+               collisiondetection = false,
+               vertical = false,
+               texture = "smoke.png",
+       })
+       meta:set_int("psf", psf)
+       meta:set_int("pss", pss)
 end
 
 --reload smoke and flame on load
+--[[
 minetest.register_lbm({
-      name = "redstone:torch",
-      nodenames = {"redstone:torch_floor","redstone:torch_wall"},
-      run_at_every_load = true,
-      action = function(pos, node)
-            create_ps(pos)
-      end,
+       name = "redstone:torch",
+       nodenames = {"redstone:torch_floor","redstone:torch_wall"},
+       run_at_every_load = true,
+       action = function(pos, node)
+               create_ps(pos)
+       end,
 })
-
+]]--
 -- Item definitions
 minetest.register_craftitem("redstone:torch", {
-      description = "Redstone Torch",
-      inventory_image = "redstone_torch.png",
-      wield_image = "redstone_torch.png",
-      wield_scale = {x = 1, y = 1, z = 1 + 1/16},
-      liquids_pointable = false,
-      power = 8,
-      on_place = function(itemstack, placer, pointed_thing)
-            if pointed_thing.type ~= "node" then
-                  return itemstack
-            end
+       description = "Redstone Torch",
+       inventory_image = "redstone_torch.png",
+       wield_image = "redstone_torch.png",
+       wield_scale = {x = 1, y = 1, z = 1 + 1/16},
+       liquids_pointable = false,
+       power = 9,
+       on_place = function(itemstack, placer, pointed_thing)
+               if pointed_thing.type ~= "node" then
+                       return itemstack
+               end
 
-            local wdir = minetest.dir_to_wallmounted(vector.subtract(pointed_thing.under,pointed_thing.above))
+               local wdir = minetest.dir_to_wallmounted(vector.subtract(pointed_thing.under,pointed_thing.above))
 
-            local fakestack = itemstack
-            local retval = false
-            if wdir < 1 then
-                  return itemstack
-            elseif wdir == 1 then
-                  retval = fakestack:set_name("redstone:torch_floor")
-            else
-                  retval = fakestack:set_name("redstone:torch_wall")
-            end
-            if not retval then
-                  return itemstack
-            end
-            itemstack, retval = minetest.item_place(fakestack, placer, pointed_thing, wdir)
-            itemstack:set_name("redstone:torch")
+               local fakestack = itemstack
+               local retval = false
+               if wdir < 1 then
+                       return itemstack
+               elseif wdir == 1 then
+                       retval = fakestack:set_name("redstone:torch_floor")
+               else
+                       retval = fakestack:set_name("redstone:torch_wall")
+                       --local name = minetest.get_node(pointed_thing.under).name
+                       --local def = minetest.registered_nodes[name]
+                       --if def.drawtype == "normal" and string.match(name, "main:") then
+                       --      minetest.set_node(pointed_thing.under,{name="redstone:"..string.gsub(name, "main:", "").."_deactivator"})
+                       --end
+               end
+               if not retval then
+                       return itemstack
+               end
+               itemstack, retval = minetest.item_place(fakestack, placer, pointed_thing, wdir)
+               itemstack:set_name("redstone:torch")
 
-            if retval then
-                  minetest.sound_play("wood", {pos=pointed_thing.above, gain = 1.0})
-            end
+               if retval then
+                       minetest.sound_play("wood", {pos=pointed_thing.above, gain = 1.0})
+               end
 
-            return itemstack
-      end
+               return itemstack
+       end
 })
 
 minetest.register_node("redstone:torch_floor", {
-      inventory_image = "redstone_torch.png",
-      wield_image = "redstone_torch.png",
-      wield_scale = {x = 1, y = 1, z = 1 + 2/16},
-      drawtype = "mesh",
-      mesh = "torch_floor.obj",
-      tiles = {"redstone_torch.png"},
-      paramtype = "light",
-      paramtype2 = "none",
-      power = 8,
-      sunlight_propagates = true,
-      drop = "redstone:torch",
-      walkable = false,
-      light_source = 13,
-      groups = {choppy=2, dig_immediate=3, not_in_creative_inventory=1, attached_node=1, torch=1,redstone=1,connect_to_raillike=1},
-      legacy_wallmounted = true,
-      selection_box = {
-            type = "fixed",
-            fixed = {-1/16, -0.5, -1/16, 1/16, 2/16, 1/16},
-      },
-      on_construct = function(pos)
-            create_ps(pos)
-            redstone.update(pos)
-      end,
-      after_destruct = function(pos, oldnode)
-            redstone.update(pos,oldnode)
-      end,
-      on_destruct = function(pos)
-            delete_ps(pos)
-      end,
-      sounds = main.woodSound(),
+       inventory_image = "redstone_torch.png",
+       wield_image = "redstone_torch.png",
+       wield_scale = {x = 1, y = 1, z = 1 + 2/16},
+       drawtype = "mesh",
+       mesh = "torch_floor.obj",
+       tiles = {"redstone_torch.png"},
+       paramtype = "light",
+       paramtype2 = "none",
+       power = 9,
+       sunlight_propagates = true,
+       drop = "redstone:torch",
+       walkable = false,
+       light_source = 13,
+       groups = {choppy=2, dig_immediate=3, not_in_creative_inventory=1, attached_node=1, torch=1,redstone=1,redstone_torch=1,redstone_power=9},
+       legacy_wallmounted = true,
+       selection_box = {
+               type = "fixed",
+               fixed = {-1/16, -0.5, -1/16, 1/16, 2/16, 1/16},
+       },
+       
+       on_construct = function(pos)
+               --redstone.torch_activate(pos)
+               redstone.collect_info(pos)
+       end,
+       after_destruct = function(pos, oldnode)
+               redstone.collect_info(pos)
+       end,
+       sounds = main.woodSound(),
 })
 
 minetest.register_node("redstone:torch_wall", {
-      inventory_image = "redstone_torch.png",
-      wield_image = "redstone_torch.png",
-      wield_scale = {x = 1, y = 1, z = 1 + 1/16},
-      drawtype = "mesh",
-      mesh = "torch_wall.obj",
-      tiles = {"redstone_torch.png"},
-      paramtype = "light",
-      paramtype2 = "wallmounted",
-      sunlight_propagates = true,
-      walkable = false,
-      light_source = 13,
-      power = 8,
-      groups = {choppy=2, dig_immediate=3, flammable=1, not_in_creative_inventory=1, attached_node=1, torch=1,redstone=1,redstone_torch=1,connect_to_raillike=1},
-      drop = "redstone:torch",
-      selection_box = {
-            type = "wallmounted",
-            wall_top = {-0.1, -0.1, -0.1, 0.1, 0.5, 0.1},
-            wall_bottom = {-0.1, -0.5, -0.1, 0.1, 0.1, 0.1},
-            wall_side = {-0.5, -0.3, -0.1, -0.2, 0.3, 0.1},
-      },
-      on_construct = function(pos)
-            create_ps(pos)
-            redstone.update(pos)
-      end,
-      after_destruct = function(pos, oldnode)
-            redstone.update(pos,oldnode)
-      end,
-      on_destruct = function(pos)
-            delete_ps(pos)
-      end,
-      sounds = main.woodSound(),
+       inventory_image = "redstone_torch.png",
+       wield_image = "redstone_torch.png",
+       wield_scale = {x = 1, y = 1, z = 1 + 1/16},
+       drawtype = "mesh",
+       mesh = "torch_wall.obj",
+       tiles = {"redstone_torch.png"},
+       paramtype = "light",
+       paramtype2 = "wallmounted",
+       sunlight_propagates = true,
+       walkable = false,
+       light_source = 13,
+       power = 9,
+       groups = {choppy=2, dig_immediate=3, flammable=1, not_in_creative_inventory=1, attached_node=1, torch=1,redstone=1,redstone_torch=1,redstone_power=9},
+       drop = "redstone:torch",
+       selection_box = {
+               type = "wallmounted",
+               wall_top = {-0.1, -0.1, -0.1, 0.1, 0.5, 0.1},
+               wall_bottom = {-0.1, -0.5, -0.1, 0.1, 0.1, 0.1},
+               wall_side = {-0.5, -0.3, -0.1, -0.2, 0.3, 0.1},
+       },
+       on_construct = function(pos)
+               --redstone.torch_activate(pos)
+               redstone.collect_info(pos)
+       end,
+       after_destruct = function(pos, oldnode)
+               redstone.collect_info(pos)
+       end,
+       sounds = main.woodSound(),
 })
 
-minetest.register_craft({
-      output = "redstone:torch 4",
-      recipe = {
-            {"redstone:dust"},
-            {"main:stick"}
-      }
-})