2021-06-27 21:19:58 -07:00
-- generate the simple fence-based streetlights
2019-05-30 03:43:06 -07:00
local enable_digilines = minetest.get_modpath ( " digilines " )
ilights.player_channels = { } -- last light source channel name that was set by a given player
if enable_digilines then
minetest.register_on_player_receive_fields ( function ( player , formname , fields )
if not player then return end
if fields.channel and fields.channel ~= " " and formname == " simple_streetlights:set_channel " then
local playername = player : get_player_name ( )
minetest.chat_send_player ( playername , " *** The light source on all streetlights placed from now on will have the channel set to \" " .. fields.channel .. " \" " )
ilights.player_channels [ playername ] = fields.channel
end
end )
function ilights . digiline_on_use ( itemstack , user , pointed_thing )
if user and user : get_player_control ( ) . sneak then
local name = user : get_player_name ( )
2021-02-24 23:49:07 -08:00
local form = " formspec_version[4] " ..
" size[8,4] " ..
" button_exit[3,2.5;2,0.5;proceed;Proceed] " ..
" field[1.75,1.5;4.5,0.5;channel;Channel for future streetlights;] "
2019-05-30 03:43:06 -07:00
minetest.show_formspec ( name , " simple_streetlights:set_channel " , form )
end
end
end
local digiline_wire_node = " digilines:wire_std_00000000 "
2019-05-02 23:22:32 -07:00
local poles_tab = {
2021-06-27 21:19:58 -07:00
-- material name, mod name, node name, optional base, optional height, top section
2019-05-02 23:22:32 -07:00
{ " wood " , " default " , " default:fence_wood " } ,
{ " junglewood " , " default " , " default:fence_junglewood " } ,
2021-06-28 20:22:21 -07:00
{ " brass " , " homedecor_fences " , " homedecor:fence_brass " } ,
2019-05-02 23:22:32 -07:00
{ " wrought_iron " , " homedecor_fences " , " homedecor:fence_wrought_iron " } ,
2021-06-27 21:19:58 -07:00
{ " steel " , " gloopblocks " , " gloopblocks:fence_steel " }
2019-05-02 23:22:32 -07:00
}
2018-11-03 10:48:04 -07:00
2019-05-02 23:22:32 -07:00
local lights_tab = {
-- light name, mod name, node name, optional param2
{ " meselamp " , " default " , " default:meselamp " } ,
{ " ilight " , " ilights " , " ilights:light " } ,
{ " glowlight_cube " , " homedecor_lighting " , " homedecor:glowlight_small_cube " }
}
for _ , pole in ipairs ( poles_tab ) do
2021-06-27 21:19:58 -07:00
local matname = pole [ 1 ]
local matmod = pole [ 2 ]
local matnode = pole [ 3 ]
local basenode = pole [ 4 ]
local height = pole [ 5 ]
local topnodes = pole [ 6 ]
2019-05-02 23:22:32 -07:00
if minetest.get_modpath ( matmod ) then
for _ , light in ipairs ( lights_tab ) do
local lightname = light [ 1 ]
local lightmod = light [ 2 ]
local lightnode = light [ 3 ]
local lightparam2 = light [ 4 ] or 0
2019-05-30 03:43:06 -07:00
if enable_digilines then
updated digistuff, homedecor, roads, moreblocks, moretrees, quartz,
rgblightstone, simple streetlights, steel, technic, titanium, plantlife,
unified inventory, and worldedit.
Add tenplus1's bakedclay and cblocks mods
2019-06-18 12:11:50 -07:00
local def = table.copy ( minetest.registered_nodes [ matnode ] )
2019-05-30 03:43:06 -07:00
local dl_overlay
if def.drawtype == " fencelike " then
dl_overlay = " simple_streetlights_pole_digiline_overlay_fl.png "
else
dl_overlay = " simple_streetlights_pole_digiline_overlay_cnb.png "
end
for i , t in ipairs ( def.tiles ) do
def.tiles [ i ] = t .. " ^ " .. dl_overlay
end
def.description = def.description .. " (digilines conducting) "
def.digiline = {
wire = {
rules = {
{ x = 0 , y = 0 , z =- 1 } ,
{ x = 0 , y = 0 , z = 1 } ,
{ x = 1 , y = 0 , z = 0 } ,
{ x =- 1 , y = 0 , z = 0 } ,
{ x = 0 , y =- 1 , z = 0 } ,
{ x = 0 , y = 1 , z = 0 } ,
{ x = 0 , y =- 2 , z = 0 }
}
}
}
def.drop = {
items = {
{ items = { matnode .. " _digilines " } } ,
}
}
2019-05-31 12:06:42 -07:00
def.palette = nil -- if the coloredwood mod exists and loads first, it'll create these
def.groups . ud_param2_colorable = nil -- settings, which we don't want in the cloned node.
2019-05-30 03:43:06 -07:00
minetest.register_node ( " : " .. matnode .. " _digilines " , def )
minetest.register_craft ( {
output = matnode .. " _digilines " ,
type = " shapeless " ,
recipe = {
matnode ,
digiline_wire_node ,
}
} )
end
2019-05-02 23:22:32 -07:00
if minetest.get_modpath ( lightmod ) then
minetest.register_tool ( " simple_streetlights:spawner_ " .. matname .. " _ " .. lightname , {
description = " Streetlight spawner ( " .. matname .. " pole, " .. lightname .. " ) " ,
inventory_image = " simple_streetlights_inv_pole_ " .. matname .. " .png " ..
" ^simple_streetlights_inv_light_source_ " .. lightname .. " .png " ,
use_texture_alpha = true ,
tool_capabilities = { full_punch_interval = 0.1 } ,
on_place = function ( itemstack , placer , pointed_thing )
2021-06-27 21:19:58 -07:00
streetlights.check_and_place ( itemstack , placer , pointed_thing , {
base = basenode ,
pole = matnode ,
light = lightnode ,
param2 = lightparam2 ,
topnodes = topnodes ,
height = height
} )
2019-05-02 23:22:32 -07:00
end
} )
minetest.register_craft ( {
output = " simple_streetlights:spawner_ " .. matname .. " _ " .. lightname ,
type = " shapeless " ,
recipe = {
matnode ,
matnode ,
matnode ,
matnode ,
matnode ,
matnode ,
lightnode
}
} )
2018-11-03 10:48:04 -07:00
2019-05-30 03:43:06 -07:00
if enable_digilines and minetest.registered_nodes [ lightnode ] . digiline then
2019-05-31 12:06:42 -07:00
2019-05-30 03:43:06 -07:00
minetest.register_tool ( " simple_streetlights:spawner_ " .. matname .. " _ " .. lightname .. " _digilines " , {
description = " Streetlight spawner ( " .. matname .. " pole, with " .. lightname .. " , digilines conducting pole) " ,
inventory_image = " simple_streetlights_inv_pole_ " .. matname .. " .png " ..
" ^simple_streetlights_inv_pole_digiline_overlay.png " ..
" ^simple_streetlights_inv_light_source_ " .. lightname .. " .png " ,
use_texture_alpha = true ,
tool_capabilities = { full_punch_interval = 0.1 } ,
on_place = function ( itemstack , placer , pointed_thing )
2021-06-27 21:19:58 -07:00
streetlights.check_and_place ( itemstack , placer , pointed_thing , {
base = basenode ,
pole = matnode ,
light = lightnode ,
param2 = lightparam2 ,
topnodes = topnodes ,
height = height ,
needs_digiline_wire = true
} )
2019-05-30 03:43:06 -07:00
end ,
on_use = ilights.digiline_on_use
} )
minetest.register_craft ( {
output = " simple_streetlights:spawner_ " .. matname .. " _ " .. lightname .. " _digilines " ,
type = " shapeless " ,
recipe = {
matnode ,
matnode ,
matnode ,
matnode ,
matnode ,
matnode ,
lightnode ,
digiline_wire_node ,
}
} )
2019-05-31 12:06:42 -07:00
minetest.register_craft ( {
output = " simple_streetlights:spawner_ " .. matname .. " _ " .. lightname .. " _digilines " ,
type = " shapeless " ,
recipe = {
" simple_streetlights:spawner_ " .. matname .. " _ " .. lightname ,
digiline_wire_node
}
} )
2019-05-31 20:27:54 -07:00
local distributor = nil
local dist_overlay = nil
2019-05-31 12:06:42 -07:00
if minetest.registered_items [ streetlights.distributor ] then
2019-05-31 20:27:54 -07:00
distributor = streetlights.distributor
dist_overlay = " ^simple_streetlights_inv_pole_distributor_overlay.png "
elseif minetest.registered_items [ streetlights.vert_digiline ] then
distributor = streetlights.vert_digiline
dist_overlay = " ^simple_streetlights_inv_pole_vertical_digiline_overlay.png "
end
if distributor then
2019-05-31 12:06:42 -07:00
minetest.register_tool ( " simple_streetlights:spawner_ " .. matname .. " _ " .. lightname .. " _digilines_distributor " , {
description = " Streetlight spawner ( " .. matname .. " pole, with " .. lightname .. " , digilines conducting pole, with distributor 2m below) " ,
inventory_image = " simple_streetlights_inv_pole_ " .. matname .. " .png " ..
" ^simple_streetlights_inv_pole_digiline_overlay.png " ..
2019-05-31 20:27:54 -07:00
dist_overlay ..
2019-05-31 12:06:42 -07:00
" ^simple_streetlights_inv_light_source_ " .. lightname .. " .png " ,
use_texture_alpha = true ,
tool_capabilities = { full_punch_interval = 0.1 } ,
on_place = function ( itemstack , placer , pointed_thing )
2021-06-27 21:19:58 -07:00
streetlights.check_and_place ( itemstack , placer , pointed_thing , {
base = basenode ,
pole = matnode ,
light = lightnode ,
param2 = lightparam2 ,
topnodes = topnodes ,
height = height ,
needs_digiline_wire = true ,
distributor_node = distributor
} )
2019-05-31 12:06:42 -07:00
end ,
on_use = ilights.digiline_on_use
} )
minetest.register_craft ( {
output = " simple_streetlights:spawner_ " .. matname .. " _ " .. lightname .. " _digilines_distributor " ,
type = " shapeless " ,
recipe = {
matnode ,
matnode ,
matnode ,
matnode ,
matnode ,
matnode ,
lightnode ,
digiline_wire_node ,
2019-05-31 20:27:54 -07:00
distributor
2019-05-31 12:06:42 -07:00
}
} )
minetest.register_craft ( {
output = " simple_streetlights:spawner_ " .. matname .. " _ " .. lightname .. " _digilines_distributor " ,
type = " shapeless " ,
recipe = {
" simple_streetlights:spawner_ " .. matname .. " _ " .. lightname ,
digiline_wire_node ,
2019-05-31 20:27:54 -07:00
distributor
2019-05-31 12:06:42 -07:00
}
} )
minetest.register_craft ( {
output = " simple_streetlights:spawner_ " .. matname .. " _ " .. lightname .. " _digilines_distributor " ,
type = " shapeless " ,
recipe = {
" simple_streetlights:spawner_ " .. matname .. " _ " .. lightname .. " _digilines " ,
2019-05-31 20:27:54 -07:00
distributor
2019-05-31 12:06:42 -07:00
}
} )
end
2019-05-30 03:43:06 -07:00
end
2018-11-03 10:48:04 -07:00
end
2019-05-02 23:22:32 -07:00
end
2018-11-03 10:48:04 -07:00
end
end