forked from minetest-mods/technic
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:
parent
d497429abc
commit
fa846989ac
|
@ -5,34 +5,36 @@
|
|||
--
|
||||
-- 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',
|
||||
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",
|
||||
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]"..
|
||||
-- "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
|
||||
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 },
|
||||
|
@ -48,15 +50,15 @@ local nodebox = {{ -0.353, -0.353, -0.353, 0.353, 0.353, 0.353 }, -- Box
|
|||
{ -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",
|
||||
{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(),
|
||||
|
@ -91,15 +93,14 @@ minetest.register_node(
|
|||
|
||||
minetest.register_node(
|
||||
"technic:hv_nuclear_reactor_core_active",
|
||||
{
|
||||
description = "Coal Driven Generator",
|
||||
{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",
|
||||
-- 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",
|
||||
drop="technic:hv_nuclear_reactor_core",
|
||||
drawtype="nodebox",
|
||||
light_source = 15,
|
||||
paramtype = "light",
|
||||
|
@ -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,8 +177,7 @@ local explode_reactor = function(pos)
|
|||
end
|
||||
|
||||
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,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
|
|
|
@ -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 = {}
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue
Block a user