furnace bug, pipe recipes, concrete block repice, steel mat added
This commit is contained in:
parent
19fbdbec87
commit
232f41d2dd
@ -147,11 +147,11 @@ end
|
|||||||
-- consumes power
|
-- consumes power
|
||||||
function techage.needs_power(mem)
|
function techage.needs_power(mem)
|
||||||
local state = mem.techage_state or STOPPED
|
local state = mem.techage_state or STOPPED
|
||||||
return state < STANDBY
|
return state < BLOCKED
|
||||||
end
|
end
|
||||||
|
|
||||||
function techage.needs_power2(state)
|
function techage.needs_power2(state)
|
||||||
return state < STANDBY
|
return state < BLOCKED
|
||||||
end
|
end
|
||||||
|
|
||||||
function techage.get_state_string(mem)
|
function techage.get_state_string(mem)
|
||||||
@ -403,7 +403,7 @@ function NodeStates:state_button_event(pos, mem, fields)
|
|||||||
if fields.state_button ~= nil then
|
if fields.state_button ~= nil then
|
||||||
local state = mem.techage_state or STOPPED
|
local state = mem.techage_state or STOPPED
|
||||||
if state == STOPPED or state == STANDBY or state == BLOCKED then
|
if state == STOPPED or state == STANDBY or state == BLOCKED then
|
||||||
if not self:start(pos, mem) and state == STANDBY then
|
if not self:start(pos, mem) and (state == STANDBY or state == BLOCKED) then
|
||||||
self:stop(pos, mem)
|
self:stop(pos, mem)
|
||||||
end
|
end
|
||||||
elseif state == RUNNING or state == FAULT or state == NOPOWER then
|
elseif state == RUNNING or state == FAULT or state == NOPOWER then
|
||||||
|
@ -46,40 +46,73 @@ techage.power.register_node({"techage:ta4_pipe_inlet"}, {
|
|||||||
power_network = Pipe,
|
power_network = Pipe,
|
||||||
})
|
})
|
||||||
|
|
||||||
local function volume(pos, in_dir)
|
local Numbers = {
|
||||||
local mem = tubelib2.get_mem(pos)
|
shell = {
|
||||||
if not mem.pos1 or not mem.pos2 or not mem.volume then
|
[2] = 96, -- 5x5x2 + 3x5x2 + 3x3x2 - 2
|
||||||
|
[3] = 216, -- 7x7x2 + 5x7x2 + 5x5x2 - 2
|
||||||
|
[4] = 384, -- 9x9x2 + 7x9x2 + 7x7x2 - 2
|
||||||
|
},
|
||||||
|
filling = {
|
||||||
|
[2] = 27, -- 3x3x3
|
||||||
|
[3] = 125, -- 5x5x5
|
||||||
|
[4] = 343, -- 7x7x7
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
local function chat(owner, text)
|
||||||
|
if owner ~= nil then
|
||||||
|
minetest.chat_send_player(owner, string.char(0x1b).."(c@#ff0000)".."[Techage] Error: "..text.."!")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_radius(pos, in_dir)
|
||||||
|
local dir = tubelib2.Dir6dToVector[in_dir]
|
||||||
|
local pos2 = vector.add(pos, vector.multiply(dir, 8))
|
||||||
|
local poses = minetest.find_nodes_in_area(pos, pos2, {"techage:ta4_pipe_inlet"})
|
||||||
|
if #poses == 2 then
|
||||||
|
local radius = vector.distance(poses[1], poses[2]) / 2
|
||||||
|
if radius == 2 or radius == 3 or radius == 4 then
|
||||||
|
return radius
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function check_volume(pos, in_dir, owner)
|
||||||
|
local radius = get_radius(pos, in_dir)
|
||||||
|
if radius then
|
||||||
local dir = tubelib2.Dir6dToVector[in_dir]
|
local dir = tubelib2.Dir6dToVector[in_dir]
|
||||||
local pos2 = vector.add(pos, vector.multiply(dir, 8))
|
local cpos = vector.add(pos, vector.multiply(dir, radius))
|
||||||
local poses = minetest.find_nodes_in_area(pos, pos2, {"techage:ta4_pipe_inlet"})
|
-- calculate size
|
||||||
if #poses == 2 then
|
local pos1 = {x = cpos.x - radius, y = cpos.y - radius, z = cpos.z - radius}
|
||||||
mem.pos1 = poses[1]
|
local pos2 = {x = cpos.x + radius, y = cpos.y + radius, z = cpos.z + radius}
|
||||||
mem.pos2 = poses[2]
|
local _, node_tbl = minetest.find_nodes_in_area(pos1, pos2,
|
||||||
local _, node_tbl = minetest.find_nodes_in_area(mem.pos1, mem.pos2,
|
|
||||||
{"default:gravel", "techage:ta4_pipe_inlet",
|
{"default:gravel", "techage:ta4_pipe_inlet",
|
||||||
"basic_materials:concrete_block", "default:obsidian_glass",
|
"basic_materials:concrete_block", "default:obsidian_glass",
|
||||||
"techage:glow_gravel"})
|
"techage:glow_gravel"})
|
||||||
print(dump(node_tbl))
|
if node_tbl["default:obsidian_glass"] > 1 then
|
||||||
return true
|
chat(owner, "one window maximum")
|
||||||
|
return false
|
||||||
|
elseif node_tbl["default:obsidian_glass"] + node_tbl["basic_materials:concrete_block"] ~= Numbers.shell[radius] then
|
||||||
|
chat(owner, "wrong numbers of shell nodes")
|
||||||
|
return false
|
||||||
|
elseif node_tbl["default:gravel"] + node_tbl["techage:glow_gravel"] ~= Numbers.filling[radius] then
|
||||||
|
chat(owner, "wrong numbers of gravel nodes")
|
||||||
|
return false
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
chat(owner, "wrong diameter (should be 5, 7, or 9)")
|
||||||
|
return false
|
||||||
end
|
end
|
||||||
return false
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
-- for logical communication
|
-- for logical communication
|
||||||
techage.register_node({"techage:ta4_pipe_inlet"}, {
|
techage.register_node({"techage:ta4_pipe_inlet"}, {
|
||||||
on_transfer = function(pos, in_dir, topic, payload)
|
on_transfer = function(pos, in_dir, topic, payload)
|
||||||
print(P2S(pos), in_dir, topic, payload)
|
if topic == "radius" then
|
||||||
if topic == "increment" then
|
return get_radius(pos, in_dir)
|
||||||
if transfer(pos, in_dir, topic, nil) then
|
|
||||||
swap_node(pos, "techage:cooler_on")
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
elseif topic == "decrement" then
|
|
||||||
swap_node(pos, "techage:cooler")
|
|
||||||
return transfer(pos, in_dir, topic, nil)
|
|
||||||
elseif topic == "volume" then
|
elseif topic == "volume" then
|
||||||
return volume(pos, in_dir)
|
return check_volume(pos, in_dir, payload)
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
@ -130,3 +130,14 @@ techage.furnace.register_recipe({
|
|||||||
},
|
},
|
||||||
time = 4,
|
time = 4,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
techage.furnace.register_recipe({
|
||||||
|
output = "basic_materials:concrete_block 4",
|
||||||
|
recipe = {
|
||||||
|
"basic_materials:wet_cement",
|
||||||
|
"group:sand",
|
||||||
|
"default:gravel",
|
||||||
|
"techage:steelmat",
|
||||||
|
},
|
||||||
|
time = 4,
|
||||||
|
})
|
||||||
|
1
init.lua
1
init.lua
@ -160,6 +160,7 @@ else
|
|||||||
end
|
end
|
||||||
dofile(MP.."/nodes/gateblock.lua")
|
dofile(MP.."/nodes/gateblock.lua")
|
||||||
dofile(MP.."/nodes/doorblock.lua")
|
dofile(MP.."/nodes/doorblock.lua")
|
||||||
|
dofile(MP.."/nodes/steelmat.lua")
|
||||||
|
|
||||||
-- Logic
|
-- Logic
|
||||||
dofile(MP.."/logic/lib.lua")
|
dofile(MP.."/logic/lib.lua")
|
||||||
|
@ -158,6 +158,10 @@ local function command(pos, command, player)
|
|||||||
|
|
||||||
local cmnd, payload = command:match('^pipe%s+(%w+)%s*(.*)$')
|
local cmnd, payload = command:match('^pipe%s+(%w+)%s*(.*)$')
|
||||||
if cmnd then
|
if cmnd then
|
||||||
|
if not minetest.check_player_privs(player, "server") then
|
||||||
|
output(pos, "server privs missing")
|
||||||
|
return
|
||||||
|
end
|
||||||
local resp = techage.transfer(
|
local resp = techage.transfer(
|
||||||
pos,
|
pos,
|
||||||
"B", -- outdir
|
"B", -- outdir
|
||||||
|
29
nodes/steelmat.lua
Normal file
29
nodes/steelmat.lua
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
--[[
|
||||||
|
|
||||||
|
TechAge
|
||||||
|
=======
|
||||||
|
|
||||||
|
Copyright (C) 2019 Joachim Stolberg
|
||||||
|
|
||||||
|
GPL v3
|
||||||
|
See LICENSE.txt for more information
|
||||||
|
|
||||||
|
pillar
|
||||||
|
|
||||||
|
]]--
|
||||||
|
|
||||||
|
local S = techage.S
|
||||||
|
|
||||||
|
minetest.register_craftitem("techage:steelmat", {
|
||||||
|
description = S("Techage Steel Mat"),
|
||||||
|
inventory_image = "techage_steelmat.png",
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = 'techage:steelmat 16',
|
||||||
|
recipe = {
|
||||||
|
{"", "techage:iron_ingot", ""},
|
||||||
|
{"default:steel_ingot", "techage:iron_ingot", "default:steel_ingot"},
|
||||||
|
{"", "techage:iron_ingot", ""},
|
||||||
|
},
|
||||||
|
})
|
@ -50,10 +50,11 @@ end
|
|||||||
-- 'boxes' is a table with 6 table elements for the 6 possible connection arms
|
-- 'boxes' is a table with 6 table elements for the 6 possible connection arms
|
||||||
-- 'network' is the tubelib2 instance
|
-- 'network' is the tubelib2 instance
|
||||||
-- 'node' is the node definition with tiles, callback functions, and so on
|
-- 'node' is the node definition with tiles, callback functions, and so on
|
||||||
function techage.register_junction(name, size, boxes, network, node)
|
-- 'index' number for the inventory node (default 0)
|
||||||
|
function techage.register_junction(name, size, boxes, network, node, index)
|
||||||
for idx = 0,63 do
|
for idx = 0,63 do
|
||||||
local ndef = table.copy(node)
|
local ndef = table.copy(node)
|
||||||
if idx == 0 then
|
if idx == (index or 0) then
|
||||||
ndef.groups.not_in_creative_inventory = 0
|
ndef.groups.not_in_creative_inventory = 0
|
||||||
else
|
else
|
||||||
ndef.groups.not_in_creative_inventory = 1
|
ndef.groups.not_in_creative_inventory = 1
|
||||||
|
@ -65,10 +65,10 @@ techage.register_junction("techage:ta4_junctionpipe", 1/8, Boxes, Pipe, {
|
|||||||
is_power_available = function(pos)
|
is_power_available = function(pos)
|
||||||
return techage.power.power_accounting(pos, tubelib2.get_mem(pos))
|
return techage.power.power_accounting(pos, tubelib2.get_mem(pos))
|
||||||
end,
|
end,
|
||||||
})
|
}, 25)
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "techage:ta4_junctionpipe0 2",
|
output = "techage:ta4_junctionpipe25 2",
|
||||||
recipe = {
|
recipe = {
|
||||||
{"", "techage:ta4_pipeS", ""},
|
{"", "techage:ta4_pipeS", ""},
|
||||||
{"techage:ta4_pipeS", "", "techage:ta4_pipeS"},
|
{"techage:ta4_pipeS", "", "techage:ta4_pipeS"},
|
||||||
|
@ -113,7 +113,7 @@ minetest.register_node("techage:ta4_pipeA", {
|
|||||||
|
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "techage:ta4_pipeS 3",
|
output = "techage:ta4_pipeS 6",
|
||||||
recipe = {
|
recipe = {
|
||||||
{'', '', "default:steel_ingot"},
|
{'', '', "default:steel_ingot"},
|
||||||
{'dye:yellow', 'techage:meridium_ingot', ''},
|
{'dye:yellow', 'techage:meridium_ingot', ''},
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 330 B After Width: | Height: | Size: 496 B |
BIN
textures/techage_steelmat.png
Normal file
BIN
textures/techage_steelmat.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 462 B |
Loading…
Reference in New Issue
Block a user