| | |
| | | |
| | | |
| | | local function start_reactor(pos, meta) |
| | | local correct_fuel_count = 6 |
| | | local msg_fuel_missing = "Error: You need to insert " .. correct_fuel_count .. " pieces of Uranium Fuel." |
| | | |
| | | if minetest.get_node(pos).name ~= "technic:hv_nuclear_reactor_core" then |
| | | return false |
| | | return msg_fuel_missing |
| | | end |
| | | local inv = meta:get_inventory() |
| | | if inv:is_empty("src") then |
| | | return false |
| | | return msg_fuel_missing |
| | | end |
| | | local src_list = inv:get_list("src") |
| | | local correct_fuel_count = 0 |
| | | local fuel_count = 0 |
| | | for _, src_stack in pairs(src_list) do |
| | | if src_stack and src_stack:get_name() == fuel_type then |
| | | correct_fuel_count = correct_fuel_count + 1 |
| | | fuel_count = fuel_count + 1 |
| | | end |
| | | end |
| | | -- Check that the reactor is complete and has the correct fuel |
| | | if correct_fuel_count ~= 6 or reactor_structure_badness(pos) ~= 0 then |
| | | return false |
| | | -- Check that the has the correct fuel |
| | | if fuel_count ~= correct_fuel_count then |
| | | return msg_fuel_missing |
| | | end |
| | | |
| | | -- Check that the reactor is complete |
| | | if reactor_structure_badness(pos) ~= 0 then |
| | | return "Error: The power plant seems to be built incorrectly." |
| | | end |
| | | |
| | | meta:set_int("burn_time", 1) |
| | | technic.swap_node(pos, "technic:hv_nuclear_reactor_core_active") |
| | | meta:set_int("HV_EU_supply", power_supply) |
| | |
| | | src_stack:take_item() |
| | | inv:set_stack("src", idx, src_stack) |
| | | end |
| | | return true |
| | | |
| | | return nil |
| | | end |
| | | |
| | | |
| | |
| | | "fuel used", 6, true) |
| | | end |
| | | if meta:get_string("autostart") == "true" then |
| | | if start_reactor(pos, meta) then |
| | | if not start_reactor(pos, meta) then |
| | | return |
| | | end |
| | | end |
| | |
| | | meta:set_string("remote_channel", fields.remote_channel) |
| | | end |
| | | if fields.start then |
| | | local b = start_reactor(pos, meta) |
| | | if b then |
| | | local start_error_msg = start_reactor(pos, meta) |
| | | if not start_error_msg then |
| | | minetest.chat_send_player(player_name, "Start successful") |
| | | else |
| | | minetest.chat_send_player(player_name, "Error") |
| | | minetest.chat_send_player(player_name, start_error_msg) |
| | | end |
| | | end |
| | | if fields.autostart then |
| | |
| | | melt_down_reactor(pos) |
| | | end |
| | | elseif msg.command == "start" then |
| | | local b = start_reactor(pos, meta) |
| | | if b then |
| | | local start_error_msg = start_reactor(pos, meta) |
| | | if not start_error_msg then |
| | | digiline_remote.send_to_node(pos, channel, "Start successful", 6, true) |
| | | else |
| | | digiline_remote.send_to_node(pos, channel, "Error", 6, true) |
| | | digiline_remote.send_to_node(pos, channel, start_error_msg, 6, true) |
| | | end |
| | | end |
| | | end |
| | |
| | | technic_run = run, |
| | | technic_on_disable = function(pos, node) |
| | | local timer = minetest.get_node_timer(pos) |
| | | timer:start(1) |
| | | timer:start(1) |
| | | end, |
| | | on_timer = function(pos, node) |
| | | local meta = minetest.get_meta(pos) |