diff options
| -rw-r--r-- | technic/machines/hv/nuclear_reactor.lua | 326 | ||||
| -rw-r--r-- | technic/register_machine_and_tool.lua | 2 | ||||
| -rw-r--r-- | technic/tools/flashlight_old.lua | 176 | 
3 files changed, 166 insertions, 338 deletions
diff --git a/technic/machines/hv/nuclear_reactor.lua b/technic/machines/hv/nuclear_reactor.lua index a5204c7..da5edf0 100644 --- a/technic/machines/hv/nuclear_reactor.lua +++ b/technic/machines/hv/nuclear_reactor.lua @@ -5,119 +5,120 @@  --  -- 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! -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 fuel_type    = "technic:enriched_uranium" -- This reactor burns this stuff  -- FIXME: recipe must make more sense like a rod recepticle, steam chamber, HV generator? -minetest.register_craft({ -	output = 'technic:hv_nuclear_reactor_core', -	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:hv_cable', 'technic:stainless_steel_ingot'}, -	} -}) +minetest.register_craft( +   {output = 'technic:hv_nuclear_reactor_core', +    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:hv_cable', 'technic:stainless_steel_ingot'}, +    } + }) -minetest.register_craftitem("technic:hv_nuclear_reactor_core", { -	description = "Uranium Rod Driven HV Reactor", -	stack_max = 1, -})  +minetest.register_craftitem( +   "technic:hv_nuclear_reactor_core", +   {description = "Uranium Rod Driven HV Reactor", +    stack_max = 1, + })   local generator_formspec = -	"invsize[8,9;]".. ---	"image[0,0;5,5;technic_generator_menu.png]".. -	"label[0,0;Nuclear Reactor Rod Compartment]".. -	"list[current_name;src;2,1;3,2;]".. -	"list[current_player;main;0,5;8,4;]" +   "invsize[8,9;]".. +   --	"image[0,0;5,5;technic_generator_menu.png]".. +   "label[0,0;Nuclear Reactor Rod Compartment]".. +   "list[current_name;src;2,1;3,2;]".. +   "list[current_player;main;0,5;8,4;]"  -- "Boxy sphere" -local nodebox = {{ -0.353, -0.353, -0.353, 0.353, 0.353, 0.353 }, -- Box -		 { -0.495, -0.064, -0.064, 0.495, 0.064, 0.064 }, -- Circle +-x -		 { -0.483, -0.128, -0.128, 0.483, 0.128, 0.128 }, -		 { -0.462, -0.191, -0.191, 0.462, 0.191, 0.191 }, -		 { -0.433, -0.249, -0.249, 0.433, 0.249, 0.249 }, -		 { -0.397, -0.303, -0.303, 0.397, 0.303, 0.303 }, -		 { -0.305, -0.396, -0.305, 0.305, 0.396, 0.305 }, -- Circle +-y -		 { -0.250, -0.432, -0.250, 0.250, 0.432, 0.250 }, -		 { -0.191, -0.461, -0.191, 0.191, 0.461, 0.191 }, -		 { -0.130, -0.482, -0.130, 0.130, 0.482, 0.130 }, -		 { -0.066, -0.495, -0.066, 0.066, 0.495, 0.066 }, -		 { -0.064, -0.064, -0.495, 0.064, 0.064, 0.495 }, -- Circle +-z -		 { -0.128, -0.128, -0.483, 0.128, 0.128, 0.483 }, -		 { -0.191, -0.191, -0.462, 0.191, 0.191, 0.462 }, -		 { -0.249, -0.249, -0.433, 0.249, 0.249, 0.433 }, -		 { -0.303, -0.303, -0.397, 0.303, 0.303, 0.397 }, -		 } +local nodebox = { +   { -0.353, -0.353, -0.353, 0.353, 0.353, 0.353 }, -- Box +   { -0.495, -0.064, -0.064, 0.495, 0.064, 0.064 }, -- Circle +-x +   { -0.483, -0.128, -0.128, 0.483, 0.128, 0.128 }, +   { -0.462, -0.191, -0.191, 0.462, 0.191, 0.191 }, +   { -0.433, -0.249, -0.249, 0.433, 0.249, 0.249 }, +   { -0.397, -0.303, -0.303, 0.397, 0.303, 0.303 }, +   { -0.305, -0.396, -0.305, 0.305, 0.396, 0.305 }, -- Circle +-y +   { -0.250, -0.432, -0.250, 0.250, 0.432, 0.250 }, +   { -0.191, -0.461, -0.191, 0.191, 0.461, 0.191 }, +   { -0.130, -0.482, -0.130, 0.130, 0.482, 0.130 }, +   { -0.066, -0.495, -0.066, 0.066, 0.495, 0.066 }, +   { -0.064, -0.064, -0.495, 0.064, 0.064, 0.495 }, -- Circle +-z +   { -0.128, -0.128, -0.483, 0.128, 0.128, 0.483 }, +   { -0.191, -0.191, -0.462, 0.191, 0.191, 0.462 }, +   { -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(     "technic:hv_nuclear_reactor_core", -   { -      description = "Nuclear Reactor", -      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"}, ---      paramtype2 = "facedir", -      groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, -      legacy_facedir_simple = true, -      sounds = default.node_sound_wood_defaults(), -      drawtype="nodebox", -      paramtype = "light", -      node_box = { -	 type = "fixed", -	 fixed = nodebox -      }, -      on_construct = function(pos) -			local meta = minetest.env:get_meta(pos) -			meta:set_string("infotext", "Nuclear Reactor Core") -			meta:set_float("technic_hv_power_machine", 1) -			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("burn_time", 0) -			meta:set_string("formspec", generator_formspec) -			local inv = meta:get_inventory() -			inv:set_size("src", 6) -		end,	 -      can_dig = function(pos,player) -		   local meta = minetest.env:get_meta(pos); -		   local inv = meta:get_inventory() -		   if not inv:is_empty("src") then -		      minetest.chat_send_player(player:get_player_name(), "Machine cannot be removed because it is not empty"); -		      return false -		   else -		      return true -		   end -		end, -   }) +   {description = "Nuclear Reactor", +    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"}, +    --      paramtype2 = "facedir", +    groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, +    legacy_facedir_simple = true, +    sounds = default.node_sound_wood_defaults(), +    drawtype="nodebox", +    paramtype = "light", +    node_box = { +       type = "fixed", +       fixed = nodebox +    }, +    on_construct = function(pos) +		      local meta = minetest.env:get_meta(pos) +		      meta:set_string("infotext", "Nuclear Reactor Core") +		      meta:set_float("technic_hv_power_machine", 1) +		      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("burn_time", 0) +		      meta:set_string("formspec", generator_formspec) +		      local inv = meta:get_inventory() +		      inv:set_size("src", 6) +		   end,	 +    can_dig = function(pos,player) +		 local meta = minetest.env:get_meta(pos); +		 local inv = meta:get_inventory() +		 if not inv:is_empty("src") then +		    minetest.chat_send_player(player:get_player_name(), "Machine cannot be removed because it is not empty"); +		    return false +		 else +		    return true +		 end +	      end, + })  minetest.register_node(     "technic:hv_nuclear_reactor_core_active", -   { -      description = "Coal Driven Generator", -      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"}, ---      paramtype2 = "facedir", -      groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1}, -      legacy_facedir_simple = true, -      sounds = default.node_sound_wood_defaults(), -      drop="technic:generator", -      drawtype="nodebox", -      light_source = 15, -      paramtype = "light", -      node_box = { -	 type = "fixed", -	 fixed = nodebox -      }, -      can_dig = function(pos,player) -		   local meta = minetest.env:get_meta(pos); -		   local inv = meta:get_inventory() -		   if not inv:is_empty("src") then -		      minetest.chat_send_player(player:get_player_name(), "Machine cannot be removed because it is not empty"); -		      return false -		   else -		      return true -		   end -		end, -   }) +   {description = "Uranium Rod Driven HV Reactor", +    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"}, +    --      paramtype2 = "facedir", +    groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1}, +    legacy_facedir_simple = true, +    sounds = default.node_sound_wood_defaults(), +    drop="technic:hv_nuclear_reactor_core", +    drawtype="nodebox", +    light_source = 15, +    paramtype = "light", +    node_box = { +       type = "fixed", +       fixed = nodebox +    }, +    can_dig = function(pos,player) +		 local meta = minetest.env:get_meta(pos); +		 local inv = meta:get_inventory() +		 if not inv:is_empty("src") then +		    minetest.chat_send_player(player:get_player_name(), "Machine cannot be removed because it is not empty"); +		    return false +		 else +		    return true +		 end +	      end, + })  local check_reactor_structure = function(pos)  				   -- 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  				   --  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}, -									     {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)  				   if #water_nodes ~= 25 then  				      --print("Water supply defect")  				      return 0  				   end  				   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)  				   if #inner_shield_nodes ~= 96 then @@ -150,7 +153,8 @@ local check_reactor_structure = function(pos)  				      return 0  				   end  				   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)  				   if #steel_shield_nodes ~= 216 then @@ -158,7 +162,8 @@ local check_reactor_structure = function(pos)  				      return 0  				   end  				   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)  				   if #outer_shield_nodes ~= (984+#inner_shield_nodes) then  				      --print("Outer shield defect") @@ -172,68 +177,67 @@ local explode_reactor = function(pos)  			end  minetest.register_abm( -   { -      nodenames = {"technic:hv_nuclear_reactor_core","technic:hv_nuclear_reactor_core_active"}, -      interval = 1, -      chance   = 1, -      action = function(pos, node, active_object_count, active_object_count_wider) -		  local meta = minetest.env:get_meta(pos) -		  local burn_time= meta:get_int("burn_time") +   {nodenames = {"technic:hv_nuclear_reactor_core","technic:hv_nuclear_reactor_core_active"}, +    interval = 1, +    chance   = 1, +    action = function(pos, node, active_object_count, active_object_count_wider) +		local meta = minetest.env:get_meta(pos) +		local burn_time= meta:get_int("burn_time") -		  -- If more to burn and the energy produced was used: produce some more -		  if burn_time>0 then -		     if meta:get_int("HV_EU_supply") == 0 then -			-- We did not use the power -			meta:set_int("HV_EU_supply", power_sypply) -		     else -			burn_time = burn_time - 1 -			meta:set_int("burn_time",burn_time) -			meta:set_string("infotext", "Nuclear Reactor Core ("..math.floor(burn_time/(burn_ticks*60)*100).."%)") -		     end -		  end +		-- If more to burn and the energy produced was used: produce some more +		if burn_time>0 then +		   if meta:get_int("HV_EU_supply") == 0 then +		      -- We did not use the power +		      meta:set_int("HV_EU_supply", power_sypply) +		   else +		      burn_time = burn_time - 1 +		      meta:set_int("burn_time",burn_time) +		      meta:set_string("infotext", "Nuclear Reactor Core ("..math.floor(burn_time/(burn_ticks*60)*100).."%)") +		   end +		end -		  -- Burn another piece of coal -		  if burn_time==0 then -		     local inv = meta:get_inventory() -		     local correct_fuel_count = 0 -		     if inv:is_empty("src") == false  then  -			local srclist= inv:get_list("src") -			for _, srcstack in pairs(srclist) do -			   if srcstack then -			      local src_item=srcstack:to_table() -			      if src_item and src_item["name"] == fuel_type then -				 correct_fuel_count = correct_fuel_count + 1 -			      end -			   end -			end -			-- Check that the reactor is complete as well as the correct number of correct fuel -			if correct_fuel_count == 6 then -			   if check_reactor_structure(pos) == 1 then -			      burn_time=burn_ticks*60 -			      meta:set_int("burn_time",burn_time) -			      hacky_swap_node (pos,"technic:hv_nuclear_reactor_core_active")  -			      meta:set_int("HV_EU_supply", power_supply) -			      for idx, srcstack in pairs(srclist) do -				 srcstack:take_item() -				 inv:set_stack("src", idx, srcstack) -			      end -			   else -			      -- BOOM!!! (the reactor was compromised and it should explode after some time) TNT mod inspired?? -			      explode_reactor(pos) -			   end -			else -			   meta:set_int("HV_EU_supply", 0) -			end -		     end -		  end +		-- Burn another piece of coal +		if burn_time==0 then +		   local inv = meta:get_inventory() +		   local correct_fuel_count = 0 +		   if inv:is_empty("src") == false  then  +		      local srclist= inv:get_list("src") +		      for _, srcstack in pairs(srclist) do +			 if srcstack then +			    local src_item=srcstack:to_table() +			    if src_item and src_item["name"] == fuel_type then +			       correct_fuel_count = correct_fuel_count + 1 +			    end +			 end +		      end +		      -- Check that the reactor is complete as well as the correct number of correct fuel +		      if correct_fuel_count == 6 then +			 if check_reactor_structure(pos) == 1 then +			    burn_time=burn_ticks*60 +			    meta:set_int("burn_time",burn_time) +			    hacky_swap_node (pos,"technic:hv_nuclear_reactor_core_active")  +			    meta:set_int("HV_EU_supply", power_supply) +			    for idx, srcstack in pairs(srclist) do +			       srcstack:take_item() +			       inv:set_stack("src", idx, srcstack) +			    end +			 else +			    -- BOOM!!! (the reactor was compromised and it should explode after some time) TNT mod inspired?? +			    explode_reactor(pos) +			 end +		      else +			 meta:set_int("HV_EU_supply", 0) +		      end +		   end +		end -		  -- Nothing left to burn -		  if burn_time==0 then -		     meta:set_string("infotext", "Nuclear Reactor Core (idle)") -		     hacky_swap_node (pos,"technic:hv_nuclear_reactor_core") -		  end -	       end -   }) +		-- Nothing left to burn +		if burn_time==0 then +		   meta:set_string("infotext", "Nuclear Reactor Core (idle)") +		   hacky_swap_node (pos,"technic:hv_nuclear_reactor_core") +		end +	     end + })  technic.register_HV_machine ("technic:hv_nuclear_reactor_core","PR")  technic.register_HV_machine ("technic:hv_nuclear_reactor_core_active","PR") diff --git a/technic/register_machine_and_tool.lua b/technic/register_machine_and_tool.lua index 2178224..b7d039a 100644 --- a/technic/register_machine_and_tool.lua +++ b/technic/register_machine_and_tool.lua @@ -1,5 +1,5 @@  -- 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  technic.LV_machines    = {} diff --git a/technic/tools/flashlight_old.lua b/technic/tools/flashlight_old.lua deleted file mode 100644 index 8a2c338..0000000 --- a/technic/tools/flashlight_old.lua +++ /dev/null @@ -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	
\ No newline at end of file  | 
