Remove file that doesn't seem to have any use.

Fix typing error in register... file
Fix two issues with nuclear reactor and set the burn time to 24h.
This commit is contained in:
kpoppel 2013-07-11 23:01:13 +02:00
parent d497429abc
commit fa846989ac
3 changed files with 166 additions and 338 deletions

View File

@ -5,119 +5,120 @@
-- --
-- The nuclear reactor core needs water and a protective shield to work. -- The nuclear reactor core needs water and a protective shield to work.
-- This is checked now and then and if the machine is tampered with... BOOM! -- This is checked now and then and if the machine is tampered with... BOOM!
local burn_ticks = 1 -- [minutes]. How many minutes does the power plant burn per serving? local burn_ticks = 24*60 -- [minutes]. How many minutes does the power plant burn per serving?
local power_supply = 10000 -- [HV] EUs local power_supply = 10000 -- [HV] EUs
local fuel_type = "technic:enriched_uranium" -- This reactor burns this stuff local fuel_type = "technic:enriched_uranium" -- This reactor burns this stuff
-- FIXME: recipe must make more sense like a rod recepticle, steam chamber, HV generator? -- FIXME: recipe must make more sense like a rod recepticle, steam chamber, HV generator?
minetest.register_craft({ minetest.register_craft(
output = 'technic:hv_nuclear_reactor_core', {output = 'technic:hv_nuclear_reactor_core',
recipe = { recipe = {
{'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot'}, {'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot'},
{'technic:stainless_steel_ingot', '', 'technic:stainless_steel_ingot'}, {'technic:stainless_steel_ingot', '', 'technic:stainless_steel_ingot'},
{'technic:stainless_steel_ingot', 'technic:hv_cable', 'technic:stainless_steel_ingot'}, {'technic:stainless_steel_ingot', 'technic:hv_cable', 'technic:stainless_steel_ingot'},
} }
}) })
minetest.register_craftitem("technic:hv_nuclear_reactor_core", { minetest.register_craftitem(
description = "Uranium Rod Driven HV Reactor", "technic:hv_nuclear_reactor_core",
stack_max = 1, {description = "Uranium Rod Driven HV Reactor",
}) stack_max = 1,
})
local generator_formspec = local generator_formspec =
"invsize[8,9;]".. "invsize[8,9;]"..
-- "image[0,0;5,5;technic_generator_menu.png]".. -- "image[0,0;5,5;technic_generator_menu.png]"..
"label[0,0;Nuclear Reactor Rod Compartment]".. "label[0,0;Nuclear Reactor Rod Compartment]"..
"list[current_name;src;2,1;3,2;]".. "list[current_name;src;2,1;3,2;]"..
"list[current_player;main;0,5;8,4;]" "list[current_player;main;0,5;8,4;]"
-- "Boxy sphere" -- "Boxy sphere"
local nodebox = {{ -0.353, -0.353, -0.353, 0.353, 0.353, 0.353 }, -- Box local nodebox = {
{ -0.495, -0.064, -0.064, 0.495, 0.064, 0.064 }, -- Circle +-x { -0.353, -0.353, -0.353, 0.353, 0.353, 0.353 }, -- Box
{ -0.483, -0.128, -0.128, 0.483, 0.128, 0.128 }, { -0.495, -0.064, -0.064, 0.495, 0.064, 0.064 }, -- Circle +-x
{ -0.462, -0.191, -0.191, 0.462, 0.191, 0.191 }, { -0.483, -0.128, -0.128, 0.483, 0.128, 0.128 },
{ -0.433, -0.249, -0.249, 0.433, 0.249, 0.249 }, { -0.462, -0.191, -0.191, 0.462, 0.191, 0.191 },
{ -0.397, -0.303, -0.303, 0.397, 0.303, 0.303 }, { -0.433, -0.249, -0.249, 0.433, 0.249, 0.249 },
{ -0.305, -0.396, -0.305, 0.305, 0.396, 0.305 }, -- Circle +-y { -0.397, -0.303, -0.303, 0.397, 0.303, 0.303 },
{ -0.250, -0.432, -0.250, 0.250, 0.432, 0.250 }, { -0.305, -0.396, -0.305, 0.305, 0.396, 0.305 }, -- Circle +-y
{ -0.191, -0.461, -0.191, 0.191, 0.461, 0.191 }, { -0.250, -0.432, -0.250, 0.250, 0.432, 0.250 },
{ -0.130, -0.482, -0.130, 0.130, 0.482, 0.130 }, { -0.191, -0.461, -0.191, 0.191, 0.461, 0.191 },
{ -0.066, -0.495, -0.066, 0.066, 0.495, 0.066 }, { -0.130, -0.482, -0.130, 0.130, 0.482, 0.130 },
{ -0.064, -0.064, -0.495, 0.064, 0.064, 0.495 }, -- Circle +-z { -0.066, -0.495, -0.066, 0.066, 0.495, 0.066 },
{ -0.128, -0.128, -0.483, 0.128, 0.128, 0.483 }, { -0.064, -0.064, -0.495, 0.064, 0.064, 0.495 }, -- Circle +-z
{ -0.191, -0.191, -0.462, 0.191, 0.191, 0.462 }, { -0.128, -0.128, -0.483, 0.128, 0.128, 0.483 },
{ -0.249, -0.249, -0.433, 0.249, 0.249, 0.433 }, { -0.191, -0.191, -0.462, 0.191, 0.191, 0.462 },
{ -0.303, -0.303, -0.397, 0.303, 0.303, 0.397 }, { -0.249, -0.249, -0.433, 0.249, 0.249, 0.433 },
} { -0.303, -0.303, -0.397, 0.303, 0.303, 0.397 },
}
minetest.register_node( minetest.register_node(
"technic:hv_nuclear_reactor_core", "technic:hv_nuclear_reactor_core",
{ {description = "Nuclear Reactor",
description = "Nuclear Reactor", tiles = {"technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png",
tiles = {"technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png",
"technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png"}, "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png"},
-- paramtype2 = "facedir", -- paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
legacy_facedir_simple = true, legacy_facedir_simple = true,
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
drawtype="nodebox", drawtype="nodebox",
paramtype = "light", paramtype = "light",
node_box = { node_box = {
type = "fixed", type = "fixed",
fixed = nodebox fixed = nodebox
}, },
on_construct = function(pos) on_construct = function(pos)
local meta = minetest.env:get_meta(pos) local meta = minetest.env:get_meta(pos)
meta:set_string("infotext", "Nuclear Reactor Core") meta:set_string("infotext", "Nuclear Reactor Core")
meta:set_float("technic_hv_power_machine", 1) meta:set_float("technic_hv_power_machine", 1)
meta:set_int("HV_EU_supply", 0) meta:set_int("HV_EU_supply", 0)
meta:set_int("HV_EU_from_fuel", 1) -- Signal to the switching station that this device burns some sort of fuel and needs special handling meta:set_int("HV_EU_from_fuel", 1) -- Signal to the switching station that this device burns some sort of fuel and needs special handling
meta:set_int("burn_time", 0) meta:set_int("burn_time", 0)
meta:set_string("formspec", generator_formspec) meta:set_string("formspec", generator_formspec)
local inv = meta:get_inventory() local inv = meta:get_inventory()
inv:set_size("src", 6) inv:set_size("src", 6)
end, end,
can_dig = function(pos,player) can_dig = function(pos,player)
local meta = minetest.env:get_meta(pos); local meta = minetest.env:get_meta(pos);
local inv = meta:get_inventory() local inv = meta:get_inventory()
if not inv:is_empty("src") then if not inv:is_empty("src") then
minetest.chat_send_player(player:get_player_name(), "Machine cannot be removed because it is not empty"); minetest.chat_send_player(player:get_player_name(), "Machine cannot be removed because it is not empty");
return false return false
else else
return true return true
end end
end, end,
}) })
minetest.register_node( minetest.register_node(
"technic:hv_nuclear_reactor_core_active", "technic:hv_nuclear_reactor_core_active",
{ {description = "Uranium Rod Driven HV Reactor",
description = "Coal Driven Generator", tiles = {"technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png",
tiles = {"technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png"},
"technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png"}, -- paramtype2 = "facedir",
-- paramtype2 = "facedir", groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1}, legacy_facedir_simple = true,
legacy_facedir_simple = true, sounds = default.node_sound_wood_defaults(),
sounds = default.node_sound_wood_defaults(), drop="technic:hv_nuclear_reactor_core",
drop="technic:generator", drawtype="nodebox",
drawtype="nodebox", light_source = 15,
light_source = 15, paramtype = "light",
paramtype = "light", node_box = {
node_box = { type = "fixed",
type = "fixed", fixed = nodebox
fixed = nodebox },
}, can_dig = function(pos,player)
can_dig = function(pos,player) local meta = minetest.env:get_meta(pos);
local meta = minetest.env:get_meta(pos); local inv = meta:get_inventory()
local inv = meta:get_inventory() if not inv:is_empty("src") then
if not inv:is_empty("src") then minetest.chat_send_player(player:get_player_name(), "Machine cannot be removed because it is not empty");
minetest.chat_send_player(player:get_player_name(), "Machine cannot be removed because it is not empty"); return false
return false else
else return true
return true end
end end,
end, })
})
local check_reactor_structure = function(pos) local check_reactor_structure = function(pos)
-- The reactor consists of an 11x11x11 cube structure -- The reactor consists of an 11x11x11 cube structure
@ -135,14 +136,16 @@ local check_reactor_structure = function(pos)
-- C = Concrete, S = Stainless Steel, W = water node (not floating), #=reactor core, |=HV cable -- C = Concrete, S = Stainless Steel, W = water node (not floating), #=reactor core, |=HV cable
-- The man-hole and the HV cable is only in the middle. -- The man-hole and the HV cable is only in the middle.
local water_nodes = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y-1, z=pos.z-1}, local water_nodes = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y-1, z=pos.z-1},
{x=pos.x+1, y=pos.y+1, z=pos.z+1}, "default:water_source") {x=pos.x+1, y=pos.y+1, z=pos.z+1},
"default:water_source")
--print("Water ( 25):"..#water_nodes) --print("Water ( 25):"..#water_nodes)
if #water_nodes ~= 25 then if #water_nodes ~= 25 then
--print("Water supply defect") --print("Water supply defect")
return 0 return 0
end end
local inner_shield_nodes = minetest.find_nodes_in_area({x=pos.x-2, y=pos.y-2, z=pos.z-2}, local inner_shield_nodes = minetest.find_nodes_in_area({x=pos.x-2, y=pos.y-2, z=pos.z-2},
{x=pos.x+2, y=pos.y+2, z=pos.z+2}, "technic:concrete") {x=pos.x+2, y=pos.y+2, z=pos.z+2},
"technic:concrete")
--print("Concrete 1 ( 96):"..#inner_shield_nodes) --print("Concrete 1 ( 96):"..#inner_shield_nodes)
if #inner_shield_nodes ~= 96 then if #inner_shield_nodes ~= 96 then
@ -150,7 +153,8 @@ local check_reactor_structure = function(pos)
return 0 return 0
end end
local steel_shield_nodes = minetest.find_nodes_in_area({x=pos.x-3, y=pos.y-3, z=pos.z-3}, local steel_shield_nodes = minetest.find_nodes_in_area({x=pos.x-3, y=pos.y-3, z=pos.z-3},
{x=pos.x+3, y=pos.y+3, z=pos.z+3}, "default:steelblock") {x=pos.x+3, y=pos.y+3, z=pos.z+3},
"default:steelblock")
--print("Steel ( 216):"..#steel_shield_nodes) --print("Steel ( 216):"..#steel_shield_nodes)
if #steel_shield_nodes ~= 216 then if #steel_shield_nodes ~= 216 then
@ -158,7 +162,8 @@ local check_reactor_structure = function(pos)
return 0 return 0
end end
local outer_shield_nodes = minetest.find_nodes_in_area({x=pos.x-5, y=pos.y-5, z=pos.z-5}, local outer_shield_nodes = minetest.find_nodes_in_area({x=pos.x-5, y=pos.y-5, z=pos.z-5},
{x=pos.x+5, y=pos.y+5, z=pos.z+5}, "technic:concrete") {x=pos.x+5, y=pos.y+5, z=pos.z+5},
"technic:concrete")
--print("Concrete 2 (1080):"..#outer_shield_nodes) --print("Concrete 2 (1080):"..#outer_shield_nodes)
if #outer_shield_nodes ~= (984+#inner_shield_nodes) then if #outer_shield_nodes ~= (984+#inner_shield_nodes) then
--print("Outer shield defect") --print("Outer shield defect")
@ -172,68 +177,67 @@ local explode_reactor = function(pos)
end end
minetest.register_abm( minetest.register_abm(
{ {nodenames = {"technic:hv_nuclear_reactor_core","technic:hv_nuclear_reactor_core_active"},
nodenames = {"technic:hv_nuclear_reactor_core","technic:hv_nuclear_reactor_core_active"}, interval = 1,
interval = 1, chance = 1,
chance = 1, action = function(pos, node, active_object_count, active_object_count_wider)
action = function(pos, node, active_object_count, active_object_count_wider) local meta = minetest.env:get_meta(pos)
local meta = minetest.env:get_meta(pos) local burn_time= meta:get_int("burn_time")
local burn_time= meta:get_int("burn_time")
-- If more to burn and the energy produced was used: produce some more -- If more to burn and the energy produced was used: produce some more
if burn_time>0 then if burn_time>0 then
if meta:get_int("HV_EU_supply") == 0 then if meta:get_int("HV_EU_supply") == 0 then
-- We did not use the power -- We did not use the power
meta:set_int("HV_EU_supply", power_sypply) meta:set_int("HV_EU_supply", power_sypply)
else else
burn_time = burn_time - 1 burn_time = burn_time - 1
meta:set_int("burn_time",burn_time) meta:set_int("burn_time",burn_time)
meta:set_string("infotext", "Nuclear Reactor Core ("..math.floor(burn_time/(burn_ticks*60)*100).."%)") meta:set_string("infotext", "Nuclear Reactor Core ("..math.floor(burn_time/(burn_ticks*60)*100).."%)")
end end
end end
-- Burn another piece of coal -- Burn another piece of coal
if burn_time==0 then if burn_time==0 then
local inv = meta:get_inventory() local inv = meta:get_inventory()
local correct_fuel_count = 0 local correct_fuel_count = 0
if inv:is_empty("src") == false then if inv:is_empty("src") == false then
local srclist= inv:get_list("src") local srclist= inv:get_list("src")
for _, srcstack in pairs(srclist) do for _, srcstack in pairs(srclist) do
if srcstack then if srcstack then
local src_item=srcstack:to_table() local src_item=srcstack:to_table()
if src_item and src_item["name"] == fuel_type then if src_item and src_item["name"] == fuel_type then
correct_fuel_count = correct_fuel_count + 1 correct_fuel_count = correct_fuel_count + 1
end end
end end
end end
-- Check that the reactor is complete as well as the correct number of correct fuel -- Check that the reactor is complete as well as the correct number of correct fuel
if correct_fuel_count == 6 then if correct_fuel_count == 6 then
if check_reactor_structure(pos) == 1 then if check_reactor_structure(pos) == 1 then
burn_time=burn_ticks*60 burn_time=burn_ticks*60
meta:set_int("burn_time",burn_time) meta:set_int("burn_time",burn_time)
hacky_swap_node (pos,"technic:hv_nuclear_reactor_core_active") hacky_swap_node (pos,"technic:hv_nuclear_reactor_core_active")
meta:set_int("HV_EU_supply", power_supply) meta:set_int("HV_EU_supply", power_supply)
for idx, srcstack in pairs(srclist) do for idx, srcstack in pairs(srclist) do
srcstack:take_item() srcstack:take_item()
inv:set_stack("src", idx, srcstack) inv:set_stack("src", idx, srcstack)
end end
else else
-- BOOM!!! (the reactor was compromised and it should explode after some time) TNT mod inspired?? -- BOOM!!! (the reactor was compromised and it should explode after some time) TNT mod inspired??
explode_reactor(pos) explode_reactor(pos)
end end
else else
meta:set_int("HV_EU_supply", 0) meta:set_int("HV_EU_supply", 0)
end end
end end
end end
-- Nothing left to burn -- Nothing left to burn
if burn_time==0 then if burn_time==0 then
meta:set_string("infotext", "Nuclear Reactor Core (idle)") meta:set_string("infotext", "Nuclear Reactor Core (idle)")
hacky_swap_node (pos,"technic:hv_nuclear_reactor_core") hacky_swap_node (pos,"technic:hv_nuclear_reactor_core")
end end
end end
}) })
technic.register_HV_machine ("technic:hv_nuclear_reactor_core","PR") technic.register_HV_machine ("technic:hv_nuclear_reactor_core","PR")
technic.register_HV_machine ("technic:hv_nuclear_reactor_core_active","PR") technic.register_HV_machine ("technic:hv_nuclear_reactor_core_active","PR")

View File

@ -1,5 +1,5 @@
-- This file includes the functions and data structures for registering machines and tools for LV, MV, HV types. -- This file includes the functions and data structures for registering machines and tools for LV, MV, HV types.
-- We use the technioc namespace for these functions and data to avoid eventual conflict. -- We use the technic namespace for these functions and data to avoid eventual conflict.
-- register LV machines here -- register LV machines here
technic.LV_machines = {} technic.LV_machines = {}

View File

@ -1,176 +0,0 @@
-- original code comes from walkin_light mod by Echo http://minetest.net/forum/viewtopic.php?id=2621
flashlight_max_charge=30000
minetest.register_tool("technic:flashlight", {
description = "Flashlight",
inventory_image = "technic_flashlight.png",
stack_max = 1,
on_use = function(itemstack, user, pointed_thing)
end,
})
minetest.register_craft({
output = "technic:flashlight",
recipe = {
{"glass","glass","glass"},
{"technic:stainless_steel_ingot","technic:battery","technic:stainless_steel_ingot"},
{"","technic:battery",""}
}
})
local players = {}
local player_positions = {}
local last_wielded = {}
function round(num)
return math.floor(num + 0.5)
end
minetest.register_on_joinplayer(function(player)
local player_name = player:get_player_name()
table.insert(players, player_name)
last_wielded[player_name] = flashlight_weared(player)
local pos = player:getpos()
local rounded_pos = {x=round(pos.x),y=round(pos.y)+1,z=round(pos.z)}
local wielded_item = player:get_wielded_item():get_name()
if flashlight_weared(player)==true then
-- Neuberechnung des Lichts erzwingen
minetest.env:add_node(rounded_pos,{type="node",name="technic:light_off"})
minetest.env:add_node(rounded_pos,{type="node",name="air"})
end
player_positions[player_name] = {}
player_positions[player_name]["x"] = rounded_pos.x;
player_positions[player_name]["y"] = rounded_pos.y;
player_positions[player_name]["z"] = rounded_pos.z;
end)
minetest.register_on_leaveplayer(function(player)
local player_name = player:get_player_name()
for i,v in ipairs(players) do
if v == player_name then
table.remove(players, i)
last_wielded[player_name] = nil
-- Neuberechnung des Lichts erzwingen
local pos = player:getpos()
local rounded_pos = {x=round(pos.x),y=round(pos.y)+1,z=round(pos.z)}
minetest.env:add_node(rounded_pos,{type="node",name="technic:light_off"})
minetest.env:add_node(rounded_pos,{type="node",name="air"})
player_positions[player_name]["x"] = nil
player_positions[player_name]["y"] = nil
player_positions[player_name]["z"] = nil
player_positions[player_name]["m"] = nil
player_positions[player_name] = nil
end
end
end)
minetest.register_globalstep(function(dtime)
for i,player_name in ipairs(players) do
local player = minetest.env:get_player_by_name(player_name)
if flashlight_weared(player)==true then
-- Fackel ist in der Hand
local pos = player:getpos()
local rounded_pos = {x=round(pos.x),y=round(pos.y)+1,z=round(pos.z)}
if (last_wielded[player_name] ~= true) or (player_positions[player_name]["x"] ~= rounded_pos.x or player_positions[player_name]["y"] ~= rounded_pos.y or player_positions[player_name]["z"] ~= rounded_pos.z) then
-- Fackel gerade in die Hand genommen oder zu neuem Node bewegt
local is_air = minetest.env:get_node_or_nil(rounded_pos)
if is_air == nil or (is_air ~= nil and (is_air.name == "air" or is_air.name == "technic:light")) then
-- wenn an aktueller Position "air" ist, Fackellicht setzen
minetest.env:add_node(rounded_pos,{type="node",name="technic:light"})
end
if (player_positions[player_name]["x"] ~= rounded_pos.x or player_positions[player_name]["y"] ~= rounded_pos.y or player_positions[player_name]["z"] ~= rounded_pos.z) then
-- wenn Position geänder, dann altes Licht löschen
local old_pos = {x=player_positions[player_name]["x"], y=player_positions[player_name]["y"], z=player_positions[player_name]["z"]}
-- Neuberechnung des Lichts erzwingen
local is_light = minetest.env:get_node_or_nil(old_pos)
if is_light ~= nil and is_light.name == "technic:light" then
minetest.env:add_node(old_pos,{type="node",name="technic:light_off"})
minetest.env:add_node(old_pos,{type="node",name="air"})
end
end
-- gemerkte Position ist nun die gerundete neue Position
player_positions[player_name]["x"] = rounded_pos.x
player_positions[player_name]["y"] = rounded_pos.y
player_positions[player_name]["z"] = rounded_pos.z
end
last_wielded[player_name] = true;
elseif last_wielded[player_name] == true then
-- Fackel nicht in der Hand, aber beim letzten Durchgang war die Fackel noch in der Hand
local pos = player:getpos()
local rounded_pos = {x=round(pos.x),y=round(pos.y)+1,z=round(pos.z)}
repeat
local is_light = minetest.env:get_node_or_nil(rounded_pos)
if is_light ~= nil and is_light.name == "technic:light" then
-- minetest.env:remove_node(rounded_pos)
-- Erzwinge Neuberechnung des Lichts
minetest.env:add_node(rounded_pos,{type="node",name="technic:light_off"})
minetest.env:add_node(rounded_pos,{type="node",name="air"})
end
until minetest.env:get_node_or_nil(rounded_pos) ~= "technic:light"
local old_pos = {x=player_positions[player_name]["x"], y=player_positions[player_name]["y"], z=player_positions[player_name]["z"]}
repeat
is_light = minetest.env:get_node_or_nil(old_pos)
if is_light ~= nil and is_light.name == "technic:light" then
-- minetest.env:remove_node(old_pos)
-- Erzwinge Neuberechnung des Lichts
minetest.env:add_node(old_pos,{type="node",name="technic:light_off"})
minetest.env:add_node(old_pos,{type="node",name="air"})
end
until minetest.env:get_node_or_nil(old_pos) ~= "technic:light"
last_wielded[player_name] = true
end
end
end)
minetest.register_node("technic:light", {
drawtype = "glasslike",
tile_images = {"technic_light.png"},
paramtype = "light",
walkable = false,
is_ground_content = true,
light_propagates = true,
sunlight_propagates = true,
light_source = 15,
selection_box = {
type = "fixed",
fixed = {0, 0, 0, 0, 0, 0},
},
})
minetest.register_node("technic:light_off", {
drawtype = "glasslike",
tile_images = {"technic_light.png"},
paramtype = "light",
walkable = false,
is_ground_content = true,
light_propagates = true,
sunlight_propagates = true,
selection_box = {
type = "fixed",
fixed = {0, 0, 0, 0, 0, 0},
},
})
function flashlight_weared (player)
flashlight_on=false
local inv = player:get_inventory()
local hotbar=inv:get_list("main")
for i=1,8,1 do
if hotbar[i]:get_name() == "technic:flashlight" then
item=hotbar[i]:to_table()
if item["metadata"]=="" or item["metadata"]=="0" then return flashlight_on end --flashlight not charghed
charge=tonumber(item["metadata"])
if charge-2>0 then
flashlight_on=true
charge =charge-2;
set_RE_wear(item,charge,flashlight_max_charge)
item["metadata"]=tostring(charge)
hotbar[i]:replace(item)
inv:set_stack("main",i,hotbar[i])
return true
end
end
end
return flashlight_on
end