3 Commits

Author SHA1 Message Date
43acec2900 Add Rubber Goo as replacement for the grinder (#578)
Fixes the circular dependency in issue #474 by adding a new item that can be used to craft Rubber.
2021-02-09 19:03:55 +01:00
0f7810e538 Public/private mode for self-contained injector (#567)
Fixes #537.
2021-02-06 12:41:09 +01:00
11e43ffe13 nuclear_reactor: Add error messages on start failure (#574) 2021-01-06 18:12:51 +01:00
5 changed files with 58 additions and 16 deletions

View File

@ -174,7 +174,6 @@ minetest.register_craft({
},
})
minetest.register_craft({
output = "default:dirt 2",
type = "shapeless",
@ -186,3 +185,25 @@ minetest.register_craft({
"group:sand",
},
})
minetest.register_craft({
output = "technic:rubber_goo",
type = "shapeless",
recipe = {
"technic:raw_latex",
"default:coal_lump",
"default:coal_lump",
"default:coal_lump",
"default:coal_lump",
"default:coal_lump",
"default:coal_lump",
"default:coal_lump",
"default:coal_lump",
},
})
minetest.register_craft({
output = "technic:rubber",
type = "cooking",
recipe = "technic:rubber_goo",
})

View File

@ -134,6 +134,11 @@ minetest.register_node("technic:machine_casing", {
sounds = default.node_sound_stone_defaults(),
})
minetest.register_craftitem("technic:rubber_goo", {
description = S("Rubber Goo"),
inventory_image = "technic_rubber_goo.png",
})
for p = 0, 35 do
local nici = (p ~= 0 and p ~= 7 and p ~= 35) and 1 or nil
local psuffix = p == 7 and "" or p

View File

@ -217,24 +217,33 @@ end
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)
@ -242,7 +251,8 @@ local function start_reactor(pos, meta)
src_stack:take_item()
inv:set_stack("src", idx, src_stack)
end
return true
return nil
end
@ -281,7 +291,7 @@ local function run(pos, node)
"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
@ -313,11 +323,11 @@ local nuclear_reactor_receive_fields = function(pos, formname, fields, sender)
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
@ -385,11 +395,11 @@ local digiline_remote_def = function(pos, channel, msg)
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

View File

@ -61,6 +61,9 @@ local function set_injector_formspec(meta)
(is_stack and
"button[0,1;2,1;mode_item;"..S("Stackwise").."]" or
"button[0,1;2,1;mode_stack;"..S("Itemwise").."]")..
(meta:get_int("public") == 1 and
"button[2,1;2,1;mode_private;"..S("Public").."]" or
"button[2,1;2,1;mode_public;"..S("Private").."]")..
"list[current_name;main;0,2;8,2;]"..
"list[current_player;main;0,5;8,4;]"..
"listring[]"..
@ -123,6 +126,9 @@ minetest.register_node("technic:injector", {
if fields.mode_item then meta:set_string("mode", "single items") end
if fields.mode_stack then meta:set_string("mode", "whole stacks") end
if fields.mode_private then meta:set_int("public", 0) end
if fields.mode_public then meta:set_int("public", 1) end
if fields["fs_helpers_cycling:0:splitstacks"]
or fields["fs_helpers_cycling:1:splitstacks"] then
if not pipeworks.may_configure(pos, sender) then return end

Binary file not shown.

After

Width:  |  Height:  |  Size: 501 B