further in-game doc added, German translation started

This commit is contained in:
Joachim Stolberg 2019-07-02 21:33:12 +02:00
parent ac0e8f3978
commit ec9c89c377
82 changed files with 1240 additions and 925 deletions

View File

@ -16,15 +16,13 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end local P2S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local S2P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
-- Consumer Related Data -- Consumer Related Data
local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end
-- Load support for intllib. local S = techage.S
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local STANDBY_TICKS = 6 local STANDBY_TICKS = 6
local COUNTDOWN_TICKS = 4 local COUNTDOWN_TICKS = 4
@ -366,7 +364,7 @@ local tubing = {
} }
local node_name_ta2, node_name_ta3, node_name_ta4 = local node_name_ta2, node_name_ta3, node_name_ta4 =
techage.register_consumer("autocrafter", I("Autocrafter"), tiles, { techage.register_consumer("autocrafter", S("Autocrafter"), tiles, {
drawtype = "normal", drawtype = "normal",
cycle_time = CYCLE_TIME, cycle_time = CYCLE_TIME,
standby_ticks = STANDBY_TICKS, standby_ticks = STANDBY_TICKS,
@ -409,3 +407,16 @@ minetest.register_craft({
}, },
}) })
techage.register_entry_page("ta2", "autocrafter",
S("TA2 Autocrafter"),
S("The Autocrafter allows the automated crafting of items based on configured recipes.@n"..
"It can craft one item every two seconds.@n"..
"Needs axle power: 4"),
"techage:ta2_autocrafter_pas")
techage.register_entry_page("ta3m", "autocrafter",
S("TA3 Autocrafter"),
S("The Autocrafter allows the automated crafting of items based on configured recipes.@n"..
"It can craft two items every two seconds.@n"..
"Needs electrical power: 6"),
"techage:ta3_autocrafter_pas")

View File

@ -12,8 +12,10 @@
]]-- ]]--
local S = techage.S
minetest.register_node("techage:blackhole", { minetest.register_node("techage:blackhole", {
description = "Techage Black Hole", description = S("Techage Black Hole"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_filling_ta2.png^techage_frame_ta2.png", "techage_filling_ta2.png^techage_frame_ta2.png",
@ -28,7 +30,7 @@ minetest.register_node("techage:blackhole", {
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
meta:set_int("push_dir", techage.side_to_indir("L", node.param2)) meta:set_int("push_dir", techage.side_to_indir("L", node.param2))
meta:set_string("infotext","Techage Black Hole (let items disappear)") meta:set_string("infotext", S("Techage Black Hole (let items disappear)"))
end, end,
on_rotate = screwdriver.disallow, on_rotate = screwdriver.disallow,
@ -38,8 +40,6 @@ minetest.register_node("techage:blackhole", {
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
}) })
minetest.register_craft({ minetest.register_craft({
output = "techage:blackhole", output = "techage:blackhole",
recipe = { recipe = {
@ -60,3 +60,9 @@ techage.register_node({"techage:blackhole"}, {
end end
end, end,
}) })
techage.register_entry_page("ta", "blackhole",
S("Techage Black Hole"),
S("The Techage Black Hole Block let items disappear. If your machine produces to much or unneeded items, push them into the Black Hole."),
"techage:blackhole")

View File

@ -13,13 +13,8 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local PlayerActions = {} local PlayerActions = {}
local InventoryState = {} local InventoryState = {}
@ -95,7 +90,7 @@ local function formspec2()
end end
minetest.register_node("techage:chest_ta2", { minetest.register_node("techage:chest_ta2", {
description = I("TA2 Protected Chest"), description = S("TA2 Protected Chest"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_filling_ta2.png^techage_frame_ta2.png", "techage_filling_ta2.png^techage_frame_ta2.png",
@ -118,7 +113,7 @@ minetest.register_node("techage:chest_ta2", {
meta:set_string("number", number) meta:set_string("number", number)
meta:set_string("owner", placer:get_player_name()) meta:set_string("owner", placer:get_player_name())
meta:set_string("formspec", formspec2()) meta:set_string("formspec", formspec2())
meta:set_string("infotext", I("TA2 Protected Chest").." "..number) meta:set_string("infotext", S("TA2 Protected Chest").." "..number)
end, end,
can_dig = can_dig, can_dig = can_dig,
@ -144,7 +139,7 @@ local function formspec3()
end end
minetest.register_node("techage:chest_ta3", { minetest.register_node("techage:chest_ta3", {
description = I("TA3 Protected Chest"), description = S("TA3 Protected Chest"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_filling_ta3.png^techage_frame_ta3.png", "techage_filling_ta3.png^techage_frame_ta3.png",
@ -167,7 +162,7 @@ minetest.register_node("techage:chest_ta3", {
meta:set_string("number", number) meta:set_string("number", number)
meta:set_string("owner", placer:get_player_name()) meta:set_string("owner", placer:get_player_name())
meta:set_string("formspec", formspec3()) meta:set_string("formspec", formspec3())
meta:set_string("infotext", I("TA3 Protected Chest").." "..number) meta:set_string("infotext", S("TA3 Protected Chest").." "..number)
end, end,
can_dig = can_dig, can_dig = can_dig,
@ -193,7 +188,7 @@ local function formspec4()
end end
minetest.register_node("techage:chest_ta4", { minetest.register_node("techage:chest_ta4", {
description = I("TA4 Protected Chest"), description = S("TA4 Protected Chest"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_filling_ta4.png^techage_frame_ta4_top.png", "techage_filling_ta4.png^techage_frame_ta4_top.png",
@ -216,7 +211,7 @@ minetest.register_node("techage:chest_ta4", {
meta:set_string("number", number) meta:set_string("number", number)
meta:set_string("owner", placer:get_player_name()) meta:set_string("owner", placer:get_player_name())
meta:set_string("formspec", formspec4()) meta:set_string("formspec", formspec4())
meta:set_string("infotext", I("TA4 Protected Chest").." "..number) meta:set_string("infotext", S("TA4 Protected Chest").." "..number)
end, end,
can_dig = can_dig, can_dig = can_dig,
@ -261,7 +256,7 @@ techage.register_node({"techage:chest_ta2", "techage:chest_ta3", "techage:chest_
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
meta:set_string("dest_num", payload) meta:set_string("dest_num", payload)
local number = meta:get_string("number") local number = meta:get_string("number")
meta:set_string("infotext", I("TA2 Protected Chest").." "..number.." connected with "..payload) meta:set_string("infotext", S("TA Protected Chest").." "..number.." "..S("connected with").." "..payload)
return true return true
end end
else else
@ -282,3 +277,19 @@ minetest.register_craft({
output = "techage:chest_ta3", output = "techage:chest_ta3",
recipe = {"techage:chest_ta2", "techage:tubeS", "techage:vacuum_tube"} recipe = {"techage:chest_ta2", "techage:tubeS", "techage:vacuum_tube"}
}) })
local help = S("The Protected Chest is useful in protected areas (by means of any protection mod).@n"..
"Only players with interaction rights on that position can take/put item from/to the chest.@n"..
"The Chest supports commands to read the last player action (player-name, take/put, item-name) "..
"and the chest state ('empty', 'loaded', 'full').@n"..
"The chest returns 'loaded' when it is not empty and not full, "..
"'full' is returned, when no empty stack is available.@n")
techage.register_entry_page("ta2", "chest",
S("TA2 Protected Chest"),
S("The Protected Chest is useful in protected areas (by means of any protection mod).@n"..
"Only players with interaction rights on that position can take/put item from/to the chest."),
"techage:chest_ta2")
techage.register_entry_page("ta3m", "chest",
S("TA3 Protected Chest"), help, "techage:chest_ta3")

View File

@ -13,16 +13,12 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local N = minetest.get_node local N = minetest.get_node
-- Consumer Related Data -- Consumer Related Data
local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end
-- Load support for intllib. local S = techage.S
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local SRC_INV_SIZE = 8 local SRC_INV_SIZE = 8
@ -353,7 +349,7 @@ local tubing = {
} }
local node_name_ta2, node_name_ta3, node_name_ta4 = local node_name_ta2, node_name_ta3, node_name_ta4 =
techage.register_consumer("distributor", I("Distributor"), tiles, { techage.register_consumer("distributor", S("Distributor"), tiles, {
cycle_time = CYCLE_TIME, cycle_time = CYCLE_TIME,
standby_ticks = STANDBY_TICKS, standby_ticks = STANDBY_TICKS,
formspec = formspec, formspec = formspec,
@ -414,3 +410,20 @@ minetest.register_craft({
{"", "techage:vacuum_tube", ""}, {"", "techage:vacuum_tube", ""},
}, },
}) })
local help = S("The Distributor works as filter and pusher. It allows to divide and distribute incoming items into the 4 output ports. "..
"The channels can be switched on/off and individually configured with up to 6 item types. "..
"The filter passes the configured items and restrains all others. "..
"Unconfigured but activated filters are used for items, which do not fit to all other filters. "..
"If the Distributor cant push an item into a block with an inventory (such as a chest) because that inventory is full, "..
"but there is one open and unconfigured output, it will use this output port.")
techage.register_entry_page("ta2", "distributor",
S("TA2 Distributor"),
help..S("@nThe Distributor tries to push 4 items every 2 seconds."),
"techage:ta2_distributor_pas")
techage.register_entry_page("ta3m", "distributor",
S("TA3 Distributor"),
help..S("@nThe Distributor tries to push 12 items every 2 seconds."),
"techage:ta3_distributor_pas")

View File

@ -13,16 +13,11 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
-- Consumer Related Data -- Consumer Related Data
local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end
-- Load support for intllib. local S = techage.S
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local STANDBY_TICKS = 10 local STANDBY_TICKS = 10
local COUNTDOWN_TICKS = 6 local COUNTDOWN_TICKS = 6
local CYCLE_TIME = 6 local CYCLE_TIME = 6
@ -235,7 +230,7 @@ local tubing = {
} }
local node_name_ta2, node_name_ta3, node_name_ta4 = local node_name_ta2, node_name_ta3, node_name_ta4 =
techage.register_consumer("electronic_fab", I("Electronic Fab"), tiles, { techage.register_consumer("electronic_fab", S("Electronic Fab"), tiles, {
drawtype = "normal", drawtype = "normal",
cycle_time = CYCLE_TIME, cycle_time = CYCLE_TIME,
standby_ticks = STANDBY_TICKS, standby_ticks = STANDBY_TICKS,
@ -277,19 +272,19 @@ minetest.register_craft({
}) })
minetest.register_craftitem("techage:vacuum_tube", { minetest.register_craftitem("techage:vacuum_tube", {
description = I("TA3 Vacuum Tubes"), description = S("TA3 Vacuum Tubes"),
inventory_image = "techage_vacuum_tube.png", inventory_image = "techage_vacuum_tube.png",
}) })
minetest.register_craftitem("techage:wlanchip", { minetest.register_craftitem("techage:ta4_wlanchip", {
description = I("TA4 WLAN Chip"), description = S("TA4 WLAN Chip"),
inventory_image = "techage_wlanchip.png", inventory_image = "techage_wlanchip.png",
}) })
if minetest.global_exists("unified_inventory") then if minetest.global_exists("unified_inventory") then
unified_inventory.register_craft_type("electronic_fab", { unified_inventory.register_craft_type("electronic_fab", {
description = I("Electronic Fab"), description = S("Electronic Fab"),
icon = 'techage_filling_ta2.png^techage_appl_electronic_fab.png^techage_frame_ta2.png', icon = 'techage_filling_ta2.png^techage_appl_electronic_fab.png^techage_frame_ta2.png',
width = 2, width = 2,
height = 2, height = 2,
@ -306,7 +301,19 @@ if minetest.global_exists("unified_inventory") then
}) })
end end
techage.register_help_page(I("TA2 Electronic Fab"), techage.register_entry_page("ta2", "electronic_fab",
I([[Used to produce Vacuum Pipes, S("TA2 Electronic Fab"),
needed for TA3 machines.]]), "techage:ta2_electronic_fab_pas") S("Used to produce Vacuum Pipes, needed for TA3 machines.@n"..
"The fab produces 1 item every 6 seconds.@n"..
"It needs 8 units axle power"),
"techage:ta2_electronic_fab_pas")
techage.register_entry_page("ta3m", "electronic_fab",
S("TA3 Electronic Fab"),
S("Used to produce WLAN Chips, needed for TA4 machines.@n"..
"The fab produces 1 item every 6 seconds.@n"..
"It needs 12 units electrical power."),
"techage:ta3_electronic_fab_pas")

View File

@ -13,9 +13,9 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local P2S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local S = techage.S
local function calc_area(pos) local function calc_area(pos)
local xpos = (math.floor(pos.x / 16) * 16) local xpos = (math.floor(pos.x / 16) * 16)
@ -99,9 +99,9 @@ local function formspec(player)
local pos1, pos2 = calc_area(pos) local pos1, pos2 = calc_area(pos)
local ypos = 0.2 + idx * 0.4 local ypos = 0.2 + idx * 0.4
tRes[#tRes+1] = "label[0,"..ypos..";"..idx.."]" tRes[#tRes+1] = "label[0,"..ypos..";"..idx.."]"
tRes[#tRes+1] = "label[0.8,"..ypos..";"..S(pos1).."]" tRes[#tRes+1] = "label[0.8,"..ypos..";"..P2S(pos1).."]"
tRes[#tRes+1] = "label[3.2,"..ypos..";to]" tRes[#tRes+1] = "label[3.2,"..ypos..";to]"
tRes[#tRes+1] = "label[4,"..ypos..";"..S(pos2).."]" tRes[#tRes+1] = "label[4,"..ypos..";"..P2S(pos2).."]"
end end
return table.concat(tRes) return table.concat(tRes)
end end
@ -129,9 +129,9 @@ minetest.register_node("techage:forceload", {
if add_pos(pos, placer) then if add_pos(pos, placer) then
minetest.forceload_block(pos, true) minetest.forceload_block(pos, true)
local pos1, pos2, num, max = get_data(pos, placer) local pos1, pos2, num, max = get_data(pos, placer)
M(pos):set_string("infotext", "Area "..S(pos1).." to "..S(pos2).." loaded!\n".. M(pos):set_string("infotext", "Area "..P2S(pos1).." to "..P2S(pos2).." loaded!\n"..
"Punch the block to make the area visible.") "Punch the block to make the area visible.")
chat(placer, "Area ("..num.."/"..max..") "..S(pos1).." to "..S(pos2).." loaded!") chat(placer, "Area ("..num.."/"..max..") "..P2S(pos1).." to "..P2S(pos2).." loaded!")
techage.mark_region(placer:get_player_name(), pos1, pos2) techage.mark_region(placer:get_player_name(), pos1, pos2)
M(pos):set_string("owner", placer:get_player_name()) M(pos):set_string("owner", placer:get_player_name())
else else
@ -200,3 +200,15 @@ minetest.register_on_leaveplayer(function(player)
minetest.forceload_free_block(pos, true) minetest.forceload_free_block(pos, true)
end end
end) end)
techage.register_entry_page("ta", "forceload",
S("Techage Forceload Block"),
S("The Forceload Block keeps the corresponding area loaded and the machines operational "..
"as far as the player is logged in. If the player leaves the game, all areas will be unloaded.@n"..
"The maximum number of Forceload Blocks per player is configurable (default 16).@n"..
"The loaded area per block is a cube with 16 m side length (according to a Minetest area block). "..
"Punching the block makes the area visible and invisible again."),
"techage:forceload")

View File

@ -13,16 +13,12 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Consumer Related Data -- Consumer Related Data
local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local STANDBY_TICKS = 10 local STANDBY_TICKS = 10
local COUNTDOWN_TICKS = 10 local COUNTDOWN_TICKS = 10
local CYCLE_TIME = 4 local CYCLE_TIME = 4
@ -252,7 +248,7 @@ local tubing = {
} }
local node_name_ta2, node_name_ta3, node_name_ta4 = local node_name_ta2, node_name_ta3, node_name_ta4 =
techage.register_consumer("rinser", I("Gravel Rinser"), tiles, { techage.register_consumer("rinser", S("Gravel Rinser"), tiles, {
drawtype = "nodebox", drawtype = "nodebox",
node_box = { node_box = {
type = "fixed", type = "fixed",
@ -304,7 +300,7 @@ minetest.register_craft({
if minetest.global_exists("unified_inventory") then if minetest.global_exists("unified_inventory") then
unified_inventory.register_craft_type("rinsing", { unified_inventory.register_craft_type("rinsing", {
description = I("Rinsing"), description = S("Rinsing"),
icon = "techage_appl_rinser_top.png^techage_frame_ta2_top.png", icon = "techage_appl_rinser_top.png^techage_frame_ta2_top.png",
width = 2, width = 2,
height = 2, height = 2,
@ -343,8 +339,26 @@ minetest.register_lbm({
techage.add_rinser_recipe({input="techage:sieved_gravel", output="techage:usmium_nuggets", probability=40}) techage.add_rinser_recipe({input="techage:sieved_gravel", output="techage:usmium_nuggets", probability=40})
techage.add_rinser_recipe({input="techage:sieved_gravel", output="default:copper_lump", probability=20}) techage.add_rinser_recipe({input="techage:sieved_gravel", output="default:copper_lump", probability=20})
techage.register_help_page(I("TA2 Gravel Rinser"), local Tube = "techage_tube_knee.png"
I([[Used to wash Sieved Gravel to get Usmium Nuggets. local Tube2 = "techage_tube_knee.png^[transformR270"
The block has to be placed under flowing water. local Rinser = "techage_filling_ta2.png^techage_appl_rinser.png^techage_frame_ta2.png"
The washed-out nuggets must be local Hopper = "techage_hopper.png"
sucked in with a Hopper.]]), "techage:ta2_rinser_pas") local Glass = "default_glass.png"
local Water = "default_water.png"
local Chest = "default_chest_lock.png"
local Dirt = "default_dirt.png"
local Images = {
{false, false, false, false, false, false, false, false},
{false, Glass, false, false, false, false, Water, Glass},
{false, Chest, Hopper, Tube, Rinser, Tube2, Glass, Glass},
}
techage.register_entry_page("ta2", "rinser",
S("TA2 Gravel Rinser"),
S("Used to wash Sieved Gravel to get Usmium Nuggets. The block has to be placed under flowing water. "..
"The washed-out nuggets must be sucked in with a Hopper.@nFor the plant you need a chest, "..
"the Hopper, the Rinser with tube support and a frame around the flowing water (see plan).@n"..
"Hint: You can test the Rinser with some sticks that are washed out immediately.@n"..
"It needs 3 units axle power"),
nil, Images)

View File

@ -13,16 +13,12 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Consumer Related Data -- Consumer Related Data
local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local STANDBY_TICKS = 10 local STANDBY_TICKS = 10
local COUNTDOWN_TICKS = 10 local COUNTDOWN_TICKS = 10
local CYCLE_TIME = 4 local CYCLE_TIME = 4
@ -189,7 +185,7 @@ local tubing = {
} }
local node_name_ta2, node_name_ta3, node_name_ta4 = local node_name_ta2, node_name_ta3, node_name_ta4 =
techage.register_consumer("gravelsieve", I("Gravel Sieve"), tiles, { techage.register_consumer("gravelsieve", S("Gravel Sieve"), tiles, {
drawtype = "nodebox", drawtype = "nodebox",
node_box = { node_box = {
type = "fixed", type = "fixed",
@ -243,3 +239,18 @@ minetest.register_craft({
{"", "techage:vacuum_tube", ""}, {"", "techage:vacuum_tube", ""},
}, },
}) })
techage.register_entry_page("ta2", "gravelsieve",
S("TA2 Gravel Sieve"),
S("To sieve Gravel and Basalt Gravel to get ores. Use a Grinder to make Gravel from Cobblestone.@n"..
"It can sieve one item every four seconds.@n"..
"It needs 3 units axle power."),
"techage:ta2_gravelsieve_pas")
techage.register_entry_page("ta3m", "gravelsieve",
S("TA3 Gravel Sieve"),
S("To sieve Gravel and Basalt Gravel to get ores. Use a Grinder to make Gravel from Cobblestone.@n"..
"It can sieve two items every four seconds.@n"..
"It needs 4 units electrical power."),
"techage:ta3_gravelsieve_pas")

View File

@ -13,15 +13,11 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
-- Consumer Related Data -- Consumer Related Data
local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end
-- Load support for intllib. local S = techage.S
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local STANDBY_TICKS = 6 local STANDBY_TICKS = 6
local COUNTDOWN_TICKS = 4 local COUNTDOWN_TICKS = 4
@ -195,7 +191,7 @@ local tubing = {
} }
local node_name_ta2, node_name_ta3, node_name_ta4 = local node_name_ta2, node_name_ta3, node_name_ta4 =
techage.register_consumer("grinder", I("Grinder"), tiles, { techage.register_consumer("grinder", S("Grinder"), tiles, {
drawtype = "nodebox", drawtype = "nodebox",
node_box = { node_box = {
type = "fixed", type = "fixed",
@ -252,7 +248,7 @@ minetest.register_craft({
if minetest.global_exists("unified_inventory") then if minetest.global_exists("unified_inventory") then
unified_inventory.register_craft_type("grinding", { unified_inventory.register_craft_type("grinding", {
description = I("Grinding"), description = S("Grinding"),
icon = 'techage_appl_grinder.png', icon = 'techage_appl_grinder.png',
width = 2, width = 2,
height = 2, height = 2,
@ -295,3 +291,19 @@ techage.add_grinder_recipe({input="default:jungletree", output="default:junglele
techage.add_grinder_recipe({input="default:pine_tree", output="default:pine_needles 8"}) techage.add_grinder_recipe({input="default:pine_tree", output="default:pine_needles 8"})
techage.add_grinder_recipe({input="default:acacia_tree", output="default:acacia_leaves 8"}) techage.add_grinder_recipe({input="default:acacia_tree", output="default:acacia_leaves 8"})
techage.add_grinder_recipe({input="default:aspen_tree", output="default:aspen_leaves 8"}) techage.add_grinder_recipe({input="default:aspen_tree", output="default:aspen_leaves 8"})
techage.register_entry_page("ta2", "grinder",
S("TA2 Grinder"),
S("The Grinder grinds all kinds of cobblestone to gravel, gravel to sand, sand to clay, wood to leaves, and more.@n"..
"It can grind one item every four seconds.@n"..
"It needs 4 units axle power."),
"techage:ta2_grinder_pas")
techage.register_entry_page("ta3m", "grinder",
S("TA3 Grinder"),
S("The Grinder grinds all kinds of cobblestone to gravel, gravel to sand, sand to clay, wood to leaves, and more.@n"..
"It can grind two items every four seconds.@n"..
"It needs 6 units electrical power."),
"techage:ta3_grinder_pas")

View File

@ -23,15 +23,11 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Consumer Related Data -- Consumer Related Data
local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end
local CRDN = function(node) return (minetest.registered_nodes[node.name] or {}).consumer end
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local STANDBY_TICKS = 10 local STANDBY_TICKS = 10
local COUNTDOWN_TICKS = 10 local COUNTDOWN_TICKS = 10
@ -128,7 +124,7 @@ local tubing = {
} }
local node_name_ta2, node_name_ta3, node_name_ta4 = local node_name_ta2, node_name_ta3, node_name_ta4 =
techage.register_consumer("pusher", I("Pusher"), tiles, { techage.register_consumer("pusher", S("Pusher"), tiles, {
cycle_time = CYCLE_TIME, cycle_time = CYCLE_TIME,
standby_ticks = STANDBY_TICKS, standby_ticks = STANDBY_TICKS,
tubing = tubing, tubing = tubing,
@ -167,3 +163,25 @@ minetest.register_craft({
{"", "techage:vacuum_tube", ""}, {"", "techage:vacuum_tube", ""},
}, },
}) })
techage.register_entry_page("ta2", "pusher",
S("TA2 Pusher"),
S("The Pusher is a pulling/pushing block, moving items from one inventory block to another (e.g. chests). "..
"Start the Pusher with a right-click. It shows the state 'running' as infotext. "..
"The Pusher moves items from left to right (IN to OUT).@n"..
"If the source chest is empty, the Pusher goes into 'standby' state for some seconds. If the destination "..
"chest is full, the Pusher goes into 'blocked' state.@n"..
"The TA2 Pusher moves two items every 2 seconds."),
"techage:ta2_pusher_pas")
techage.register_entry_page("ta3m", "pusher",
S("TA3 Pusher"),
S("The Pusher is a pulling/pushing block, moving items from one inventory block to another (e.g. chests). "..
"Start the Pusher with a right-click. It shows the state 'running' as infotext. "..
"The Pusher moves items from left to right (IN to OUT).@n"..
"If the source chest is empty, the Pusher goes into 'standby' state for some seconds. If the destination "..
"chest is full, the Pusher goes into 'blocked' state.@n"..
"The TA3 Pusher moves 6 items every 2 seconds."),
"techage:ta3_pusher_pas")

View File

@ -13,13 +13,9 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local TA2_Power = techage.Axle local TA2_Power = techage.Axle
local TA3_Power = techage.SteamPipe local TA3_Power = techage.SteamPipe
@ -39,7 +35,7 @@ local function formspec(self, pos, mem)
default.gui_slots.. default.gui_slots..
"image[6,0.5;1,2;"..techage.power.formspec_power_bar(PWR_CAPA, mem.provided).."]".. "image[6,0.5;1,2;"..techage.power.formspec_power_bar(PWR_CAPA, mem.provided).."]"..
"image_button[5,1;1,1;".. self:get_state_button_image(mem) ..";state_button;]".. "image_button[5,1;1,1;".. self:get_state_button_image(mem) ..";state_button;]"..
"button[2.5,1;1.8,1;update;"..I("Update").."]".. "button[2.5,1;1.8,1;update;"..S("Update").."]"..
"list[current_player;main;0,3;8,4;]".. "list[current_player;main;0,3;8,4;]"..
default.get_hotbar_bg(0, 3) default.get_hotbar_bg(0, 3)
end end
@ -117,7 +113,7 @@ local function on_rightclick(pos)
end end
minetest.register_node("techage:t2_source", { minetest.register_node("techage:t2_source", {
description = "Axle Power Source", description = S("Axle Power Source"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_filling_ta2.png^techage_frame_ta2_top.png", "techage_filling_ta2.png^techage_frame_ta2_top.png",
@ -146,7 +142,7 @@ minetest.register_node("techage:t2_source", {
}) })
minetest.register_node("techage:t3_source", { minetest.register_node("techage:t3_source", {
description = "Steam Power Source", description = S("Steam Power Source"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_filling_ta3.png^techage_frame_ta3_top.png", "techage_filling_ta3.png^techage_frame_ta3_top.png",
@ -175,7 +171,7 @@ minetest.register_node("techage:t3_source", {
}) })
minetest.register_node("techage:t4_source", { minetest.register_node("techage:t4_source", {
description = "Ele Power Source", description = S("Ele Power Source"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_filling_ta4.png^techage_frame_ta4_top.png", "techage_filling_ta4.png^techage_frame_ta4_top.png",

View File

@ -1,22 +0,0 @@
--[[
TechAge
=======
Copyright (C) 2019 Joachim Stolberg
LGPLv2.1+
See LICENSE.txt for more information
TA2 help pages for basic machines
]]--
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
techage.register_help_page(I("TA2 Autocrafter"),
I([[Supports automated crafting of items.
Crafts 1 item in 2 seconds.
Needs axle power: 4]]), "techage:ta2_autocrafter_pas")

View File

@ -1,22 +0,0 @@
--[[
TechAge
=======
Copyright (C) 2019 Joachim Stolberg
LGPLv2.1+
See LICENSE.txt for more information
TA3 help pages for basic machines
]]--
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
techage.register_help_page(I("TA3 Autocrafter"),
I([[Supports automated crafting of items.
Crafts 2 items in 2 seconds.
Needs electrical power: 6]]), "techage:ta3_autocrafter_pas")

View File

@ -13,13 +13,9 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
techage.assemble = {} techage.assemble = {}
@ -79,14 +75,14 @@ local function check_space(pos, param2, AssemblyPlan, player_name)
local y, path, node_name = item[1], item[2], item[4] local y, path, node_name = item[1], item[2], item[4]
local pos1 = dest_pos(pos, param2, path, y) local pos1 = dest_pos(pos, param2, path, y)
if minetest.is_protected(pos1, player_name) then if minetest.is_protected(pos1, player_name) then
minetest.chat_send_player(player_name, I("[TA] Area is protected!")) minetest.chat_send_player(player_name, S("[TA] Area is protected!"))
return false return false
end end
local node = minetest.get_node(pos1) local node = minetest.get_node(pos1)
local ndef = minetest.registered_nodes[node.name] local ndef = minetest.registered_nodes[node.name]
if not ndef or ndef.walkable and node.name ~= node_name then if not ndef or ndef.walkable and node.name ~= node_name then
minetest.chat_send_player(player_name, I("[TA] Not enough space!")) minetest.chat_send_player(player_name, S("[TA] Not enough space!"))
return false return false
end end
end end

View File

@ -13,12 +13,9 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
-- Load support for intllib. local S = techage.S
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
techage.firebox = {} techage.firebox = {}
@ -50,9 +47,9 @@ function techage.firebox.formspec(mem)
"list[current_name;fuel;1,0.5;1,1;]".. "list[current_name;fuel;1,0.5;1,1;]"..
"image[2,0.5;1,1;default_furnace_fire_bg.png^[lowpart:".. "image[2,0.5;1,1;default_furnace_fire_bg.png^[lowpart:"..
fuel_percent..":default_furnace_fire_fg.png]".. fuel_percent..":default_furnace_fire_fg.png]"..
"label[4.5,0.1;"..I("Power")..":]".. "label[4.5,0.1;"..S("Power")..":]"..
"dropdown[6,0;1.8;power_level;25%,50%,75%,100%;"..mem.power_level.."]".. "dropdown[6,0;1.8;power_level;25%,50%,75%,100%;"..mem.power_level.."]"..
"button[1,1.5;1.8,1;update;"..I("Update").."]".. "button[1,1.5;1.8,1;update;"..S("Update").."]"..
"list[current_player;main;0,2.8;8,4;]".. "list[current_player;main;0,2.8;8,4;]"..
"listring[current_name;fuel]".. "listring[current_name;fuel]"..
"listring[current_player;main]".. "listring[current_player;main]"..
@ -65,7 +62,7 @@ function techage.firebox.formspec(mem)
"list[current_name;fuel;1,0.5;1,1;]".. "list[current_name;fuel;1,0.5;1,1;]"..
"image[3,0.5;1,1;default_furnace_fire_bg.png^[lowpart:".. "image[3,0.5;1,1;default_furnace_fire_bg.png^[lowpart:"..
fuel_percent..":default_furnace_fire_fg.png]".. fuel_percent..":default_furnace_fire_fg.png]"..
"button[5,0.5;1.8,1;update;"..I("Update").."]".. "button[5,0.5;1.8,1;update;"..S("Update").."]"..
"list[current_player;main;0,2;8,4;]".. "list[current_player;main;0,2;8,4;]"..
"listring[current_name;fuel]".. "listring[current_name;fuel]"..
"listring[current_player;main]".. "listring[current_player;main]"..
@ -74,7 +71,6 @@ function techage.firebox.formspec(mem)
end end
function techage.firebox.can_dig(pos, player) function techage.firebox.can_dig(pos, player)
local mem = tubelib2.get_mem(pos)
local inv = M(pos):get_inventory() local inv = M(pos):get_inventory()
return inv:is_empty("fuel") return inv:is_empty("fuel")
end end

View File

@ -12,22 +12,77 @@
]]-- ]]--
local S = techage.S
local Categories = {} -- ordered list of chapters
local EntryOrders = {} -- ordered entry lists of categories
local HelpPages = {} -- help data as key/value table
local formspec_context = {}
-- Load support for intllib. local DUMMY = {
local MP = minetest.get_modpath("techage") name = "unknown",
local S, NS = dofile(MP.."/intllib.lua") text = "unknown",
item_name = "-",
images = "none"
}
local Recipes = {} -- formspec list of entries
local ItemNames = {} local function entries_as_string(player_name)
local RecipeList = {} local category = formspec_context[player_name].category or Categories[1]
local PlanImages = {} local tbl = {}
local NamesAsStr = "" for _,cat in ipairs(Categories) do
if cat == category and not formspec_context[player_name].close_tree then
tbl[#tbl+1] = minetest.formspec_escape("V "..HelpPages[cat][cat].name)
for _,item in ipairs(EntryOrders[category]) do
if item ~= cat then
local name = item
if HelpPages[category][item] then
name = HelpPages[category][item].name
end
tbl[#tbl+1] = minetest.formspec_escape(" +- "..name)
end
end
else
tbl[#tbl+1] = minetest.formspec_escape("> "..HelpPages[cat][cat].name)
end
end
formspec_context[player_name].list_len = #tbl
return table.concat(tbl, ",") or ""
end
-- Translate given index into a HelpPage category and key
local function get_ref(player_name)
local category = formspec_context[player_name].category or Categories[1]
local index = formspec_context[player_name].index or 1
index = techage.range(index, 1, formspec_context[player_name].list_len or 1)
local offs = 0
for idx1,cat in ipairs(Categories) do
if idx1 + offs == index then
formspec_context[player_name].category = cat
formspec_context[player_name].index = idx1
return cat, cat -- category
end
if cat == category and not formspec_context[player_name].close_tree then
for idx2,item in ipairs(EntryOrders[category]) do
if idx1 + idx2 - 1 == index then
formspec_context[player_name].category = cat
formspec_context[player_name].index = index
return cat, item -- no category
end
end
offs = #EntryOrders[category] - 1
end
end
-- return any entry by default
formspec_context[player_name].category = Categories[1]
return Categories[1], Categories[1]
end
-- formspec images -- formspec images
local function plan(images) local function plan(images)
local tbl = {} local tbl = {}
if images == "none" then return "label[1,3;No plan available" end if images == "none" then return "label[1,3;"..S("No plan available") end
for y=1,#images do for y=1,#images do
for x=1,#images[1] do for x=1,#images[1] do
local img = images[y][x] or false local img = images[y][x] or false
@ -40,15 +95,19 @@ local function plan(images)
return table.concat(tbl) return table.concat(tbl)
end end
local function formspec_help(idx) local function formspec_help(player_name)
local bttn local bttn
local cat, key = get_ref(player_name)
local hdef = HelpPages[cat][key] or DUMMY
local index = formspec_context[player_name].index or 1
local box = "box[7.5,0.9;1,1.1;#BBBBBB]" local box = "box[7.5,0.9;1,1.1;#BBBBBB]"
if ItemNames[idx] == "-" then
if hdef.item_name == "-" then
bttn = "" bttn = ""
elseif ItemNames[idx] == "plan" then elseif hdef.item_name == "plan" then
bttn = "button[7.6,1;1,1;plan;"..S("Plan").."]" bttn = "button[7.6,1;1,1;plan;"..S("Plan").."]"
else else
bttn = box.."item_image[7.6,1;1,1;"..ItemNames[idx].."]" bttn = box.."item_image[7.6,1;1,1;"..hdef.item_name.."]"
end end
return "size[9,9]".. return "size[9,9]"..
default.gui_bg.. default.gui_bg..
@ -56,19 +115,21 @@ local function formspec_help(idx)
default.gui_slots.. default.gui_slots..
"item_image[7.6,0;1,1;techage:construction_board]".. "item_image[7.6,0;1,1;techage:construction_board]"..
bttn.. bttn..
"table[0.1,0;7,3;page;"..NamesAsStr..";"..idx.."]".. "table[0.1,0;7,4;page;"..entries_as_string(player_name)..";"..index.."]"..
"textarea[0.3,3.7;9,6.2;help;"..S("Help")..":;"..Recipes[idx].."]".. "textarea[0.3,4.7;9,5.3;help;"..S("Help")..":;"..hdef.text.."]"..
"box[0,3.7;8.775,5.25;#000000]" "box[0,4.75;8.775,4.45;#000000]"
end end
local function formspec_plan(idx) local function formspec_plan(player_name)
local cat, key = get_ref(player_name)
local hdef = HelpPages[cat][key] or DUMMY
return "size[9,9]".. return "size[9,9]"..
default.gui_bg.. default.gui_bg..
default.gui_bg_img.. default.gui_bg_img..
default.gui_slots.. default.gui_slots..
"label[0,0;"..RecipeList[idx]..":]".. "label[0,0;"..hdef.name..":]"..
"button[8,0;1,0.8;back;<<]".. "button[8,0;1,0.8;back;<<]"..
plan(PlanImages[idx]) plan(hdef.images)
end end
local board_box = { local board_box = {
@ -88,27 +149,33 @@ minetest.register_node("techage:construction_board", {
after_place_node = function(pos, placer, itemstack) after_place_node = function(pos, placer, itemstack)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
meta:set_string("formspec", formspec_help(1)) local player_name = placer:get_player_name()
formspec_context[player_name] = formspec_context[player_name] or {}
meta:set_string("formspec", formspec_help(player_name))
end, end,
on_receive_fields = function(pos, formname, fields, player) on_receive_fields = function(pos, formname, fields, player)
if minetest.is_protected(pos, player:get_player_name()) then local player_name = player:get_player_name()
if minetest.is_protected(pos, player_name) then
return return
end end
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local idx = meta:get_int("help_idx") formspec_context[player_name] = formspec_context[player_name] or {}
idx = techage.range(idx, 1, #Recipes)
if fields.plan then if fields.plan then
meta:set_string("formspec", formspec_plan(idx)) meta:set_string("formspec", formspec_plan(player_name))
elseif fields.back then elseif fields.back then
meta:set_string("formspec", formspec_help(idx)) meta:set_string("formspec", formspec_help(player_name))
elseif fields.page then elseif fields.page then
local evt = minetest.explode_table_event(fields.page) local evt = minetest.explode_table_event(fields.page)
if evt.type == "CHG" then if evt.type == "CHG" then
local idx = tonumber(evt.row) local idx = tonumber(evt.row)
idx = techage.range(idx, 1, #Recipes) idx = techage.range(idx, 1, formspec_context[player_name].list_len or 1)
meta:set_int("help_idx", idx) -- unfold/close the tree
meta:set_string("formspec", formspec_help(idx)) if formspec_context[player_name].index == idx then
formspec_context[player_name].close_tree = not formspec_context[player_name].close_tree
end
formspec_context[player_name].index = idx
meta:set_string("formspec", formspec_help(player_name))
end end
end end
end, end,
@ -131,18 +198,31 @@ minetest.register_craft({
}) })
function techage.register_entry_page(category, entry, name, text, item_name, images)
if HelpPages[category] then
HelpPages[category][entry] = {
name = name,
text = text,
item_name = item_name or "plan",
images = images or "none"
}
else
minetest.log("error", "[techage] help category '"..category.."' does not exist!")
end
end
function techage.register_category_page(category, name, text, item_name, entry_order, images)
Categories[#Categories + 1] = category
HelpPages[category] = {}
techage.register_entry_page(category, category, name, text, item_name, images or "none")
table.insert(entry_order, 1, category)
EntryOrders[category] = entry_order
end
function techage.register_help_page(name, text, item_name, images) function techage.register_help_page(name, text, item_name, images)
RecipeList[#RecipeList+1] = " "..name
ItemNames[#ItemNames+1] = item_name or "plan"
NamesAsStr = table.concat(RecipeList, ",") or ""
Recipes[#Recipes+1] = text
PlanImages[#PlanImages+1] = images or "none"
end end
function techage.register_chap_page(name, text, item_name) function techage.register_chap_page(name, text, item_name)
RecipeList[#RecipeList+1] = name
ItemNames[#ItemNames+1] = item_name or "-"
NamesAsStr = table.concat(RecipeList, ",") or ""
Recipes[#Recipes+1] = text
PlanImages[#PlanImages+1] = "none"
end end

View File

@ -1,45 +0,0 @@
-- Fallback functions for when `intllib` is not installed.
-- Code released under Unlicense <http://unlicense.org>.
-- Get the latest version of this file at:
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
local function format(str, ...)
local args = { ... }
local function repl(escape, open, num, close)
if escape == "" then
local replacement = tostring(args[tonumber(num)])
if open == "" then
replacement = replacement..close
end
return replacement
else
return "@"..open..num..close
end
end
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
end
local gettext, ngettext
if minetest.get_modpath("intllib") then
if intllib.make_gettext_pair then
-- New method using gettext.
gettext, ngettext = intllib.make_gettext_pair()
else
-- Old method using text files.
gettext = intllib.Getter()
end
end
-- Fill in missing functions.
gettext = gettext or function(msgid, ...)
return format(msgid, ...)
end
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
return format(n==1 and msgid or msgid_plural, ...)
end
return gettext, ngettext

View File

@ -13,14 +13,9 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
-- Input data to generate the Param2ToDir table -- Input data to generate the Param2ToDir table
local Input = { local Input = {
8,9,10,11, -- 1 8,9,10,11, -- 1

View File

@ -13,13 +13,8 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local CYCLE_TIME = 2 local CYCLE_TIME = 2
local PWR_PERF = 10 local PWR_PERF = 10
@ -42,7 +37,7 @@ local function formspec(self, pos, mem)
default.gui_slots.. default.gui_slots..
"image[0,0.5;1,2;"..techage.power.formspec_power_bar(PWR_CAPA, mem.capa).."]".. "image[0,0.5;1,2;"..techage.power.formspec_power_bar(PWR_CAPA, mem.capa).."]"..
"label[0.2,2.5;Load]".. "label[0.2,2.5;Load]"..
"button[1.1,1;1.8,1;update;"..I("Update").."]".. "button[1.1,1;1.8,1;update;"..S("Update").."]"..
"image_button[3,1;1,1;".. self:get_state_button_image(mem) ..";state_button;]".. "image_button[3,1;1,1;".. self:get_state_button_image(mem) ..";state_button;]"..
"image[4,0.5;1,2;"..techage.power.formspec_load_bar(-(mem.delivered or 0), PWR_PERF).."]".. "image[4,0.5;1,2;"..techage.power.formspec_load_bar(-(mem.delivered or 0), PWR_PERF).."]"..
"label[4.2,2.5;Flow]" "label[4.2,2.5;Flow]"
@ -123,7 +118,7 @@ local function set_capa(pos, oldnode, digger, capa)
capa = techage.power.percent(PWR_CAPA, capa) capa = techage.power.percent(PWR_CAPA, capa)
capa = (math.floor((capa or 0) / 5)) * 5 capa = (math.floor((capa or 0) / 5)) * 5
meta:set_int("capa", capa) meta:set_int("capa", capa)
local text = I("TA3 Akku Box").." ("..capa.." %)" local text = S("TA3 Akku Box").." ("..capa.." %)"
meta:set_string("description", text) meta:set_string("description", text)
local inv = minetest.get_inventory({type="player", name=digger:get_player_name()}) local inv = minetest.get_inventory({type="player", name=digger:get_player_name()})
local left_over = inv:add_item("main", node) local left_over = inv:add_item("main", node)
@ -133,7 +128,7 @@ local function set_capa(pos, oldnode, digger, capa)
end end
minetest.register_node("techage:ta3_akku", { minetest.register_node("techage:ta3_akku", {
description = I("TA3 Akku Box"), description = S("TA3 Akku Box"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_filling_ta3.png^techage_frame_ta3_top.png", "techage_filling_ta3.png^techage_frame_ta3_top.png",
@ -175,10 +170,11 @@ techage.power.register_node({"techage:ta3_akku"}, {
power_network = Power, power_network = Power,
}) })
techage.register_help_page(I("TA3 Akku Box"), techage.register_entry_page("ta3ps", "akku",
I([[Used to store electrical energy. S("TA3 Akku Box"),
Charged in about 10 min, S("Used to store electrical energy. Charged in about 10 min, provides energy for 10 min.@n"..
provides energy for 10 min.]]), "techage:ta3_akku") "It take and deliver up to 10 units electrical power."),
"techage:ta3_akku")
minetest.register_craft({ minetest.register_craft({

View File

@ -13,18 +13,13 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local Pipe = techage.SteamPipe local Pipe = techage.SteamPipe
minetest.register_node("techage:coalboiler_base", { minetest.register_node("techage:coalboiler_base", {
description = I("TA3 Boiler Base"), description = S("TA3 Boiler Base"),
tiles = {"techage_coal_boiler_mesh_base.png"}, tiles = {"techage_coal_boiler_mesh_base.png"},
drawtype = "mesh", drawtype = "mesh",
mesh = "techage_boiler_large.obj", mesh = "techage_boiler_large.obj",
@ -69,9 +64,8 @@ minetest.register_craft({
}, },
}) })
techage.register_help_page(I("TA3 Boiler Base"), techage.register_entry_page("ta3ps", "coalboiler_base",
I([[Part of the Coal Power Station. S("TA3 Boiler Base"),
Has to be placed on top of the S("Part of the Coal Power Station. Has to be placed on top of the TA3 Coal Power Station Firebox and filled with water.@n"..
TA3 Coal Power Station Firebox "(see TA3 Coal Power Station)"),
and filled with water. "techage:coalboiler_base")
(see TA3 Coal Power Station)]]), "techage:coalboiler_base")

View File

@ -13,13 +13,8 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local CYCLE_TIME = 4 local CYCLE_TIME = 4
local STANDBY_TICKS = 2 local STANDBY_TICKS = 2
@ -58,7 +53,7 @@ local function formspec(self, pos, mem)
temp..":techage_form_temp_fg.png]".. temp..":techage_form_temp_fg.png]"..
"image[7,0.5;1,2;"..techage.power.formspec_power_bar(1, ratio).."]".. "image[7,0.5;1,2;"..techage.power.formspec_power_bar(1, ratio).."]"..
"image_button[6,1;1,1;".. self:get_state_button_image(mem) ..";state_button;]".. "image_button[6,1;1,1;".. self:get_state_button_image(mem) ..";state_button;]"..
"button[3,1.5;2,1;update;"..I("Update").."]".. "button[3,1.5;2,1;update;"..S("Update").."]"..
"list[current_player;main;0,3;8,4;]".. "list[current_player;main;0,3;8,4;]"..
"listring[current_name;water]".. "listring[current_name;water]"..
"listring[current_player;main]".. "listring[current_player;main]"..
@ -225,7 +220,7 @@ local function allow_metadata_inventory_take(pos, listname, index, stack, player
end end
minetest.register_node("techage:coalboiler_top", { minetest.register_node("techage:coalboiler_top", {
description = I("TA3 Boiler Top"), description = S("TA3 Boiler Top"),
tiles = {"techage_coal_boiler_mesh_top.png"}, tiles = {"techage_coal_boiler_mesh_top.png"},
drawtype = "mesh", drawtype = "mesh",
mesh = "techage_boiler_large.obj", mesh = "techage_boiler_large.obj",
@ -296,7 +291,8 @@ minetest.register_craft({
}, },
}) })
techage.register_help_page(I("TA3 Boiler Top"), techage.register_entry_page("ta3ps", "coalboiler_top",
I([[Part of the Coal Power Station. S("TA3 Boiler Top"),
Has to be placed on top of TA3 Power Station Boiler Base. S("Part of the Coal Power Station. Has to be placed on top of TA3 Power Station Boiler Base.@n"..
(see TA3 Coal Power Station)]]), "techage:coalboiler_top") "(see TA3 Coal Power Station)"),
"techage:coalboiler_top")

View File

@ -13,13 +13,8 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local Pipe = techage.SteamPipe local Pipe = techage.SteamPipe
@ -43,7 +38,7 @@ local function after_tube_update(node, pos, out_dir, peer_pos, peer_in_dir)
end end
minetest.register_node("techage:cooler", { minetest.register_node("techage:cooler", {
description = I("TA3 Cooler"), description = S("TA3 Cooler"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_filling_ta3.png^techage_appl_cooler.png^techage_frame_ta3.png", "techage_filling_ta3.png^techage_appl_cooler.png^techage_frame_ta3.png",
@ -138,9 +133,9 @@ minetest.register_craft({
}, },
}) })
techage.register_help_page(I("TA3 Cooler"), techage.register_entry_page("ta3ps", "cooler",
I([[Part of the Coal Power Station. S("TA3 Cooler"),
Has to be placed in the steam circulation S("Part of the Coal Power Station. Has to be placed in the steam circulation after the Turbine.@n"..
after the Turbine. "(see TA3 Coal Power Station)"),
(see TA3 Coal Power Station)]]), "techage:cooler") "techage:cooler")

View File

@ -13,13 +13,9 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local firebox = techage.firebox local firebox = techage.firebox
@ -79,7 +75,7 @@ local function start_firebox(pos, mem)
end end
minetest.register_node("techage:coalfirebox", { minetest.register_node("techage:coalfirebox", {
description = I("TA3 Coal Power Station Firebox"), description = S("TA3 Coal Power Station Firebox"),
inventory_image = "techage_coal_boiler_inv.png", inventory_image = "techage_coal_boiler_inv.png",
tiles = {"techage_coal_boiler_mesh_top.png"}, tiles = {"techage_coal_boiler_mesh_top.png"},
drawtype = "mesh", drawtype = "mesh",
@ -127,7 +123,7 @@ minetest.register_node("techage:coalfirebox", {
}) })
minetest.register_node("techage:coalfirehole", { minetest.register_node("techage:coalfirehole", {
description = I("TA3 Coal Power Station Firebox"), description = S("TA3 Coal Power Station Firebox"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_coal_boiler.png", "techage_coal_boiler.png",
@ -153,7 +149,7 @@ minetest.register_node("techage:coalfirehole", {
}) })
minetest.register_node("techage:coalfirehole_on", { minetest.register_node("techage:coalfirehole_on", {
description = I("TA3 Coal Power Station Firebox"), description = S("TA3 Coal Power Station Firebox"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_coal_boiler.png^[colorize:black:80", "techage_coal_boiler.png^[colorize:black:80",

View File

@ -13,13 +13,8 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local STANDBY_TICKS = 4 local STANDBY_TICKS = 4
local COUNTDOWN_TICKS = 4 local COUNTDOWN_TICKS = 4
@ -37,7 +32,7 @@ local function formspec(self, pos, mem)
default.gui_slots.. default.gui_slots..
"image[6,0.5;1,2;"..techage.power.formspec_power_bar(PWR_CAPA, mem.provided).."]".. "image[6,0.5;1,2;"..techage.power.formspec_power_bar(PWR_CAPA, mem.provided).."]"..
"image_button[5,1;1,1;".. self:get_state_button_image(mem) ..";state_button;]".. "image_button[5,1;1,1;".. self:get_state_button_image(mem) ..";state_button;]"..
"button[2,1.5;2,1;update;"..I("Update").."]".. "button[2,1.5;2,1;update;"..S("Update").."]"..
"list[current_player;main;0,3;8,4;]".. "list[current_player;main;0,3;8,4;]"..
default.get_hotbar_bg(0, 3) default.get_hotbar_bg(0, 3)
end end
@ -65,7 +60,7 @@ local State = techage.NodeStates:new({
cycle_time = CYCLE_TIME, cycle_time = CYCLE_TIME,
standby_ticks = STANDBY_TICKS, standby_ticks = STANDBY_TICKS,
formspec_func = formspec, formspec_func = formspec,
infotext_name = "TA3 Generator", infotext_name = S("TA3 Generator"),
can_start = can_start, can_start = can_start,
start_node = start_node, start_node = start_node,
stop_node = stop_node, stop_node = stop_node,
@ -110,7 +105,7 @@ local function on_rightclick(pos)
end end
minetest.register_node("techage:generator", { minetest.register_node("techage:generator", {
description = I("TA3 Generator"), description = S("TA3 Generator"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_filling_ta3.png^techage_frame_ta3.png", "techage_filling_ta3.png^techage_frame_ta3.png",
@ -142,7 +137,7 @@ minetest.register_node("techage:generator", {
}) })
minetest.register_node("techage:generator_on", { minetest.register_node("techage:generator_on", {
description = I("TA3 Generator"), description = S("TA3 Generator"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_filling_ta3.png^techage_frame_ta3.png", "techage_filling_ta3.png^techage_frame_ta3.png",
@ -229,10 +224,9 @@ techage.register_node({"techage:generator", "techage:generator_on"}, {
end, end,
}) })
techage.register_help_page(I("TA3 Generator"), techage.register_entry_page("ta3ps", "generator",
I([[Part of the Coal Power Station. S("TA3 Generator"),
Has to be placed side by side S("Part of the Coal Power Station. Has to be placed side by side with the TA3 Turbine. "..
with the TA3 Turbine. "Connect the Generator with your TA3 machines by means of Electric Cables and Junction Boxes@n"..
Connect the Generator with your TA3 machines "(see TA3 Coal Power Station)"),
by means of Electric Cables and Junction Boxes "techage:generator")
(see TA3 Coal Power Station)]]), "techage:generator")

View File

@ -1,89 +0,0 @@
--[[
TechAge
=======
Copyright (C) 2019 Joachim Stolberg
LGPLv2.1+
See LICENSE.txt for more information
TA3 Coal Power Station Help
]]--
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local S, NS = dofile(MP.."/intllib.lua")
techage.register_chap_page(S("Electrical Age (TA3)"), S([[The Electrical Age is the third level of the available technic stages.
The goal of TA3 is to build a Coal Power Station and machines
to produce ores and chips for smart TA4 devices and machines.]]), "techage:wlanchip")
local HelpText = S([[1. Build a Coal Power Station according
to the plan with TA3 Firebox, TA3 Boiler,
Steam Pipes, Cooler, Turbine and Generator.
2. Heat the Firebox with coal/charcoal
3. Fill the boiler with water (more than one bucket is needed)
4. Wait until the water is heated
5. Open the steam ventil
6. Connect the Generator with your machines by means of cables and junction boxes
7. Start the Generator]])
local Images = {
{false, false, false, false, false, false, false},
{"techage_steam_knee.png", 'techage_steam_pipe.png', 'techage_steam_pipe.png',
'techage_steam_pipe.png', 'techage_steam_pipe.png', 'techage_steam_pipe.png', "techage_steam_knee.png^[transformR270"},
{'techage_steam_pipe.png^[transformR90', "techage_boiler_top_ta3.png", 'techage_steam_pipe.png',
'techage_steam_knee.png^[transformR270', 'techage_steam_knee.png',
"techage_filling_ta3.png^techage_frame_ta3.png^techage_cooler.png",
"techage_steam_knee.png^[transformR180"},
{"techage_steam_knee.png^[transformR90", "techage_boiler_bottom_ta3.png", false, 'techage_steam_pipe.png^[transformR90',
'techage_steam_pipe.png^[transformR90'},
{false, "techage_firebox_ta3.png", false, "techage_steam_knee.png^[transformR90",
"techage_filling_ta3.png^techage_appl_turbine.png^techage_frame_ta3.png",
"techage_filling_ta3.png^techage_frame_ta3.png^techage_appl_generator.png"},
}
techage.register_help_page("Coal Power Station", HelpText, nil, Images)
local PowerConsumption = S([[
Power consumption and supply:
- TA3 Power Station: 80
- TA3 Tiny Generator: 12
- TA3 Akku Box: 10 (in both dirs)
- TA3 Oil Drill Box: 16
- TA3 Oil Pumpjack: 16
- TA3 Electronic Fab: 12
- TA3 Autocrafter: 6
- TA3 Grinder: 6
- TA3 Gravel Sieve: 4
- TA3 Booster: 3
- Lamps: 0.5
- Signs Bot: 8 (while loading)
]])
techage.register_help_page("Power Consumption", PowerConsumption, "techage:t3_source", nil)
local BurnCycles = S([[
Burning times with one oil item for
Stream Engine / Power Station / Tiny Generator:
Power max. : 25 / 80 / 12
Oil burn time/s : 32 / 20 / 100
burn time at power 2 : 400 / 800 / 600
burn time at power 10 : 80 / 160 / 120
burn time at power 20 : 40 / 80 / --
]])
techage.register_help_page("Oil Burning Times", BurnCycles, "techage:t3_source", nil)
techage.register_help_page(S("TA3 Electronic Fab"),
S([[Used to produce WLAN Chips,
needed for TA4 machines.]]), "techage:ta3_electronic_fab_pas")

View File

@ -13,13 +13,8 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local Pipe = techage.SteamPipe local Pipe = techage.SteamPipe
@ -71,7 +66,7 @@ local function after_tube_update(node, pos, out_dir, peer_pos, peer_in_dir)
end end
minetest.register_node("techage:turbine", { minetest.register_node("techage:turbine", {
description = I("TA3 Turbine"), description = S("TA3 Turbine"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_filling_ta3.png^techage_frame_ta3.png^techage_steam_hole.png", "techage_filling_ta3.png^techage_frame_ta3.png^techage_steam_hole.png",
@ -176,11 +171,11 @@ minetest.register_craft({
}, },
}) })
techage.register_help_page(I("TA3 Turbine"), techage.register_entry_page("ta3ps", "turbine",
I([[Part of the Coal Power Station. S("TA3 Turbine"),
Has to be placed side by side S("Part of the Coal Power Station. Has to be placed side by side with the TA3 Generator.@n"..
with the TA3 Generator. "(see TA3 Coal Power Station)"),
(see TA3 Coal Power Station)]]), "techage:turbine") "techage:turbine")
minetest.register_lbm({ minetest.register_lbm({
label = "[techage] Turbine sound", label = "[techage] Turbine sound",

25
doc/doc.lua Normal file
View File

@ -0,0 +1,25 @@
--[[
TechAge
=======
Copyright (C) 2019 Joachim Stolberg
LGPLv2.1+
See LICENSE.txt for more information
Main module for the in-game documentation
]]--
local S = techage.S
techage.register_category_page("techage", "Tech Age",
S("Tech Age is a technic mod with four technic stages.@n@n"..
"Iron Age (TA1): Use tools like coal pile, coal burner, gravel sieve, hammer and hopper to obtain the necessary metals and ores to further machines and tools for TA2@n@n"..
"Steam Age (TA2): Build a steam engine with drive axles to run first simple machines.@n@n"..
"Oil Age (TA3): Drill and pump oil, build your transport routes with Minecarts and power and control TA3 machines and lamps with electrical energy.@n@n"..
"Future Age (TA4): Build regenerative power plants and intelligent machines, travel at high speed and use other future technologies."),
"techage:ta4_wlanchip",
{}
)

29
doc/ta1_doc.lua Normal file
View File

@ -0,0 +1,29 @@
--[[
TechAge
=======
Copyright (C) 2019 Joachim Stolberg
LGPLv2.1+
See LICENSE.txt for more information
Main module for the in-game TA1 documentation
]]--
local S = techage.S
techage.register_category_page("ta1", "Iron Age (TA1)",
S("Iron Age is the first level of the available four technic stages.@n"..
"The goal of TA1 is to collect and craft enough Iron Ingots@n"..
"to be able to build machines for stage 2 (TA2).@n"..
"1. You have to collect dirt and wood to build a Coal Pile.@n"..
" (The Coal Pile is needed to produce charcoal)@n"..
"2. Build a Coal Burner to melt iron to iron ingots.@n"..
"3. Craft a Gravel Sieve and collect gravel.@n"..
" (A Hammer can be used to smash cobble to gravel)@n"..
"4. Sieve the gravel to get the necessary ores or go mining."),
"techage:iron_ingot",
{"coalpile", "burner", "meltingpot", "lighter", "meridium", "iron", "hammer", "sieve", "hopper"}
)

25
doc/ta2_doc.lua Normal file
View File

@ -0,0 +1,25 @@
--[[
TechAge
=======
Copyright (C) 2019 Joachim Stolberg
LGPLv2.1+
See LICENSE.txt for more information
Main module for the in-game TA1 documentation
]]--
local S = techage.S
techage.register_category_page("ta2", "Steam Age (TA2)",
S("Steam Age is the second level of the available four technic stages.@n"..
"The goal of TA2 is to build a coal powered stream engine with drive axles "..
"and machines to produce ores and vacuum tubes for the first electronic devices and machines in TA3."),
"techage:charcoal", {
"steam_engine", "boiler1", "boiler2", "cylinder", "flywheel",
"pusher", "distributor", "chest", "grinder", "gravelsieve", "autocrafter", "rinser", "electronic_fab"}
)

105
doc/ta3_doc.lua Normal file
View File

@ -0,0 +1,105 @@
--[[
TechAge
=======
Copyright (C) 2019 Joachim Stolberg
LGPLv2.1+
See LICENSE.txt for more information
Main module for the in-game TA1 documentation
]]--
local S = techage.S
techage.register_category_page("ta3",
S("Oil Age (TA3)"),
S("The Oil Age is the third level of the available technic stages. "..
"The goal of TA3 is to build Power Stations, drill for oil, and build "..
"machines to produce ores and chips for smart TA4 devices and machines."),
"techage:oil_source",
{"power", "times"}
)
techage.register_entry_page("ta3", "power",
S("Power Consumption"),
S("Power consumption and supply:@n"..
"- TA3 Power Station: 80@n"..
"- TA3 Tiny Generator: 12@n"..
"- TA3 Akku Box: 10 (in both dirs)@n"..
"- TA3 Oil Drill Box: 16@n"..
"- TA3 Oil Pumpjack: 16@n"..
"- TA3 Electronic Fab: 12@n"..
"- TA3 Autocrafter: 6@n"..
"- TA3 Grinder: 6@n"..
"- TA3 Gravel Sieve: 4@n"..
"- TA3 Booster: 3@n"..
"- Lamps: 0.5@n"..
"@n"..
"- Signs Bot: 8 (while loading)"),
"techage:t3_source", nil)
techage.register_entry_page("ta3", "times",
S("Oil Burning Times"),
S("Burning times with one oil item for@n"..
"Stream Engine / Power Station / Tiny Generator:@n"..
"@n"..
"Power max. : 25 / 80 / 12@n"..
"Oil burn time/s : 32 / 20 / 100 @n"..
"@n"..
"burn time at power 2 : 400 / 800 / 600@n"..
"burn time at power 10 : 80 / 160 / 120@n"..
"burn time at power 20 : 40 / 80 / --"),
"techage:t3_source", nil)
local Images = {
{false, false, false, false, false, false, false},
{"techage_steam_knee.png", 'techage_steam_pipe.png', 'techage_steam_pipe.png',
'techage_steam_pipe.png', 'techage_steam_pipe.png', 'techage_steam_pipe.png', "techage_steam_knee.png^[transformR270"},
{'techage_steam_pipe.png^[transformR90', "techage_boiler_top_ta3.png", 'techage_steam_pipe.png',
'techage_steam_knee.png^[transformR270', 'techage_steam_knee.png',
"techage_filling_ta3.png^techage_frame_ta3.png^techage_cooler.png",
"techage_steam_knee.png^[transformR180"},
{"techage_steam_knee.png^[transformR90", "techage_boiler_bottom_ta3.png", false, 'techage_steam_pipe.png^[transformR90',
'techage_steam_pipe.png^[transformR90'},
{false, "techage_firebox_ta3.png", false, "techage_steam_knee.png^[transformR90",
"techage_filling_ta3.png^techage_appl_turbine.png^techage_frame_ta3.png",
"techage_filling_ta3.png^techage_frame_ta3.png^techage_appl_generator.png"},
}
--techage.register_entry_page("ta3", "power_station",
techage.register_category_page("ta3ps",
S("TA3: Power Station"),
S("Build a Power Station according to the plan with TA3 Firebox, TA3 Boiler, Steam Pipes, Cooler, Turbine and Generator.@n"..
"- Heat the Firebox with coal/charcoal or oil@n"..
"- Fill the boiler with water (more than one bucket is needed)@n"..
"- Wait until the water is heated@n"..
"- Open the steam ventil@n"..
"- Connect the Generator with your machines by means of cables and junction boxes@n"..
"- Start the Generator"),
nil,
{"coalboiler_base", "coalboiler_top", "turbine", "generator", "cooler", "akku", "tiny_generator"},
Images)
techage.register_category_page("ta3op",
S("TA3: Oil plants"),
S("In the TA3 age, oil (petroleum) serves as an almost infinite fuel. But oil is difficult "..
"and expensive to recover:@n"..
"1: Search for oil with the TA3 Oil Explorer@n"..
"2: Drill for oil with the TA3 Oil Drill Box (oil derrick)@n"..
"3: Recover the oil with the TA3 Oil Pumpjack@n"..
"4: A power station nearby provides the necessary @n"..
" electrical power for the derrick and pumpjack.@n"..
"5: Tubes or rails are used for oil transportation."),
"techage:oilexplorer",
{"oilexplorer", "drillbox", "pumpjack"}
)
techage.register_category_page("ta3m",
S("TA3: Machines"),
S("Collection of TA3 machines, some with eletrical power supply."),
"techage:ta3_autocrafter_pas",
{"pusher", "distributor", "chest", "grinder", "gravelsieve", "autocrafter", "electronic_fab"}
)

32
doc/ta_doc.lua Normal file
View File

@ -0,0 +1,32 @@
--[[
TechAge
=======
Copyright (C) 2019 Joachim Stolberg
LGPLv2.1+
See LICENSE.txt for more information
Main module for the in-game TA1 documentation
]]--
local S = techage.S
techage.register_category_page("ta", "Further nodes and tools",
S("This is a collection of further nodes and tools which do not fit to the stages 1 to 4."),
"techage:end_wrench", {"end_wrench", "powerswitch", "trowel", "blackhole", "forceload"}
)
techage.register_entry_page("ta", "powerswitch",
S("TA Power Switch"),
S("To turn electrical power on/off.@n"..
"Has to be placed on a TA Power Switch Box."),
"techage:powerswitch")
techage.register_entry_page("ta", "trowel",
S("TechAge Trowel"),
S("Tool to hide and retrieve electrical wiring in walls and floors.@n"..
"The material for hiding the cables must be in the left stack of the first row in the player inventory."),
"techage:trowel")

View File

@ -13,13 +13,8 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local PWR_NEEDED = 3 local PWR_NEEDED = 3
local CYCLE_TIME = 2 local CYCLE_TIME = 2
@ -29,7 +24,7 @@ local consume_power = techage.power.consume_power
local power_available = techage.power.power_available local power_available = techage.power.power_available
local function infotext(pos, state) local function infotext(pos, state)
M(pos):set_string("infotext", I("TA3 Booster")..": "..state) M(pos):set_string("infotext", S("TA3 Booster")..": "..state)
end end
local function swap_node(pos, name) local function swap_node(pos, name)
@ -61,7 +56,7 @@ local function node_timer(pos, elapsed)
end end
minetest.register_node("techage:ta3_booster", { minetest.register_node("techage:ta3_booster", {
description = I("TA3 Booster"), description = S("TA3 Booster"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_filling_ta3.png^techage_appl_arrow.png^techage_frame_ta3.png", "techage_filling_ta3.png^techage_appl_arrow.png^techage_frame_ta3.png",
@ -171,7 +166,7 @@ minetest.register_craft({
}, },
}) })
techage.register_help_page(I("TA3 Booster"), techage.register_entry_page("ta3f", "booster",
I([[Part of the TA3 Industrial Furnace S("TA3 Booster"),
and further machines. S("Part of the TA3 Industrial Furnace and further machines. Used to increase the air/gas pressure."),
Used to increase the air/gas pressure.]]), "techage:ta3_booster") "techage:ta3_booster")

View File

@ -13,13 +13,9 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local range = techage.range local range = techage.range
@ -140,7 +136,7 @@ end
if minetest.global_exists("unified_inventory") then if minetest.global_exists("unified_inventory") then
unified_inventory.register_craft_type("ta3_melting", { unified_inventory.register_craft_type("ta3_melting", {
description = I("TA3 Melting"), description = S("TA3 Melting"),
icon = "techage_concrete.png^techage_appl_furnace.png^techage_frame_ta3.png", icon = "techage_concrete.png^techage_appl_furnace.png^techage_frame_ta3.png",
width = 2, width = 2,
height = 2, height = 2,

View File

@ -13,13 +13,8 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local firebox = techage.firebox local firebox = techage.firebox
@ -75,7 +70,7 @@ local function booster_cmnd(pos, cmnd)
end end
minetest.register_node("techage:furnace_firebox", { minetest.register_node("techage:furnace_firebox", {
description = I("TA3 Furnace Firebox"), description = S("TA3 Furnace Firebox"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_concrete.png^techage_appl_open.png^techage_frame_ta3.png", "techage_concrete.png^techage_appl_open.png^techage_frame_ta3.png",
@ -110,7 +105,7 @@ minetest.register_node("techage:furnace_firebox", {
}) })
minetest.register_node("techage:furnace_firebox_on", { minetest.register_node("techage:furnace_firebox_on", {
description = I("TA3 Furnace Firebox"), description = S("TA3 Furnace Firebox"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_concrete.png^techage_frame_ta3.png", "techage_concrete.png^techage_frame_ta3.png",
@ -219,7 +214,7 @@ minetest.register_lbm({
end end
}) })
techage.register_help_page(I("TA3 Furnace Firebox"), techage.register_entry_page("ta3f", "firebox",
I([[Part of the TA3 Industrial Furnace. S("TA3 Furnace Firebox"),
Faster and more powerful S("Part of the TA3 Industrial Furnace. Faster and more powerful than the standard furnace."),
than the standard furnace.]]), "techage:furnace_firebox") "techage:furnace_firebox")

View File

@ -13,17 +13,12 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Consumer Related Data -- Consumer Related Data
local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local STANDBY_TICKS = 6 local STANDBY_TICKS = 6
local COUNTDOWN_TICKS = 6 local COUNTDOWN_TICKS = 6
local CYCLE_TIME = 2 local CYCLE_TIME = 2
@ -50,7 +45,7 @@ local function formspec(self, pos, mem)
"image_button[2,2;1,1;".. self:get_state_button_image(mem) ..";state_button;]".. "image_button[2,2;1,1;".. self:get_state_button_image(mem) ..";state_button;]"..
"list[context;dst;3,0;2,2;]".. "list[context;dst;3,0;2,2;]"..
"label[6,0;"..I("Outp")..": "..idx.."/"..num.."]".. "label[6,0;"..S("Outp")..": "..idx.."/"..num.."]"..
"item_image_button[6.5,0.5;1,1;"..(output or "")..";b1;]".. "item_image_button[6.5,0.5;1,1;"..(output or "")..";b1;]"..
"button[6,1.5;1,1;priv;<<]".. "button[6,1.5;1,1;priv;<<]"..
"button[7,1.5;1,1;next;>>]".. "button[7,1.5;1,1;next;>>]"..
@ -226,7 +221,7 @@ local tubing = {
} }
local _, node_name_ta3, _ = local _, node_name_ta3, _ =
techage.register_consumer("furnace", I("Furnace Top"), tiles, { techage.register_consumer("furnace", S("Furnace Top"), tiles, {
drawtype = "normal", drawtype = "normal",
cycle_time = CYCLE_TIME, cycle_time = CYCLE_TIME,
standby_ticks = STANDBY_TICKS, standby_ticks = STANDBY_TICKS,
@ -264,7 +259,7 @@ minetest.register_craft({
}, },
}) })
techage.register_help_page(I("TA3 Furnace Top"), techage.register_entry_page("ta3f", "furnace",
I([[Part of the TA3 Industrial Furnace. S("TA3 Furnace Top"),
Faster and more powerful S("Part of the TA3 Industrial Furnace. Faster and more powerful than the standard furnace."),
than the standard furnace.]]), "techage:ta3_furnace_pas") "techage:ta3_furnace_pas")

View File

@ -12,18 +12,15 @@
]]-- ]]--
-- Load support for intllib. local S = techage.S
local MP = minetest.get_modpath("techage")
local S, NS = dofile(MP.."/intllib.lua")
local HelpText = S([[1. Build the Furnace with local HelpText = S("Build the Furnace with TA3 Furnace Firebox, TA3 Furnace Top, "..
TA3 Furnace Firebox, TA3 Furnace Top, "and TA3 Booster according to the plan.@n"..
and TA3 Booster according to the plan. "- Heat the Firebox with coal/charcoal/oil@n"..
2. Heat the Firebox with coal/charcoal/oil "- Power the Booster with electrical power.@n"..
3. Power the Booster with electrical power. "- Select one of the possible outputs@n"..
4. Select one of the possible outputs "- Connect the TA3 Furnace Top with your machines by means of tubes.@n"..
5. Connect the TA3 Furnace Top with your machines by means of tubes. "- Start the Furnace")
6. Start the Furnace]])
local Cable = "techage_electric_cable_inv.png" local Cable = "techage_electric_cable_inv.png"
local Tube = "techage_tube_tube.png" local Tube = "techage_tube_tube.png"
@ -38,6 +35,11 @@ local Images = {
{false, Cable, Booster, Firebox, false, false, false}, {false, Cable, Booster, Firebox, false, false, false},
} }
techage.register_help_page(S("TA3 Industrial Furnace"), HelpText, nil, Images) techage.register_category_page("ta3f",
S("TA3 Industrial Furnace"),
HelpText,
nil,
{"firebox", "furnace", "booster"},
Images)

View File

@ -20,7 +20,7 @@ techage.furnace.register_recipe({
}) })
if techage.modified_recipes_enabled then if techage.modified_recipes_enabled then
techage.ironage_register_recipe({ techage.furnace.register_recipe({
output = "default:bronze_ingot 4", output = "default:bronze_ingot 4",
recipe = {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot", "default:tin_ingot"}, recipe = {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot", "default:tin_ingot"},
time = 2, time = 2,
@ -33,6 +33,14 @@ if techage.modified_recipes_enabled then
}) })
end end
if minetest.global_exists("wielded_light") then
techage.furnace.register_recipe({
output = "techage:meridium_ingot",
recipe = {"default:steel_ingot", "default:mese_crystal_fragment"},
heat = 4,
time = 3,
})
end
minetest.after(1, function() minetest.after(1, function()
for key,_ in pairs(minetest.registered_items) do for key,_ in pairs(minetest.registered_items) do

39
i18n.py Executable file
View File

@ -0,0 +1,39 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Generate a template file for translation purposes
import os, fnmatch, re
pattern = re.compile(r'[ \.=^\t]S\("(.+?)"\)', re.DOTALL)
def gen_template(templ_file, lkeyStrings):
lOut = []
lkeyStrings = list(set(lkeyStrings))
lkeyStrings.sort()
for s in lkeyStrings:
lOut.append("%s=" % s)
file(templ_file, "wt").write("\n".join(lOut))
def read_strings(fname):
lOut = []
text = file(fname).read()
for s in pattern.findall(text):
s = re.sub(r'"\.\.\s+"', "", s)
lOut.append(s)
return lOut
def i18n(templ_file):
lOut = []
for root, dirs, files in os.walk('./'):
for name in files:
if fnmatch.fnmatch(name, "*.lua"):
fname = os.path.join(root, name)
found = read_strings(fname)
print fname, len(found)
lOut.extend(found)
gen_template(templ_file, lOut)
i18n("./locale/template.txt")
print "Done.\n"

View File

@ -1,6 +1,3 @@
techage = {
NodeDef = {}, -- node registration info
}
if minetest.global_exists("tubelib") then if minetest.global_exists("tubelib") then
minetest.log("error", "[techage] Techage can't be used together with the mod tubelib!") minetest.log("error", "[techage] Techage can't be used together with the mod tubelib!")
@ -11,17 +8,19 @@ elseif minetest.global_exists("techpack") then
elseif minetest.global_exists("tubelib2") and tubelib2.version < 1.4 then elseif minetest.global_exists("tubelib2") and tubelib2.version < 1.4 then
minetest.log("error", "[techage] Techage requires tubelib2 version 1.4 or newer!") minetest.log("error", "[techage] Techage requires tubelib2 version 1.4 or newer!")
else else
techage.max_num_forceload_blocks = tonumber(minetest.setting_get("techage_max_num_forceload_blocks")) or 12 techage = {
NodeDef = {}, -- node registration info
}
techage.max_num_forceload_blocks = tonumber(minetest.setting_get("techage_max_num_forceload_blocks")) or 16
techage.basalt_stone_enabled = minetest.setting_get("techage_basalt_stone_enabled") == "true" techage.basalt_stone_enabled = minetest.setting_get("techage_basalt_stone_enabled") == "true"
techage.ore_rarity = tonumber(minetest.setting_get("techage_ore_rarity")) or 1 techage.ore_rarity = tonumber(minetest.setting_get("techage_ore_rarity")) or 1
techage.modified_recipes_enabled = minetest.setting_get("techage_modified_recipes_enabled") == "true" techage.modified_recipes_enabled = minetest.setting_get("techage_modified_recipes_enabled") == "true"
local MP = minetest.get_modpath("techage") -- Load support for I18n.
techage.S = minetest.get_translator("techage")
-- Load support for intllib.
dofile(MP.."/basis/intllib.lua")
-- Basis features -- Basis features
local MP = minetest.get_modpath("techage")
dofile(MP.."/basis/lib.lua") -- helper functions dofile(MP.."/basis/lib.lua") -- helper functions
dofile(MP.."/basis/gravel_lib.lua") -- ore probability dofile(MP.."/basis/gravel_lib.lua") -- ore probability
dofile(MP.."/basis/guide.lua") -- construction guide dofile(MP.."/basis/guide.lua") -- construction guide
@ -32,9 +31,11 @@ else
dofile(MP.."/basis/mark.lua") dofile(MP.."/basis/mark.lua")
dofile(MP.."/basis/assemble.lua") dofile(MP.."/basis/assemble.lua")
-- Tools -- Main doc
dofile(MP.."/tools/trowel.lua") dofile(MP.."/doc/doc.lua")
dofile(MP.."/tools/repairkit.lua") dofile(MP.."/doc/ta1_doc.lua")
dofile(MP.."/doc/ta2_doc.lua")
dofile(MP.."/doc/ta3_doc.lua")
-- Nodes1 -- Nodes1
dofile(MP.."/nodes/baborium.lua") dofile(MP.."/nodes/baborium.lua")
@ -76,13 +77,10 @@ else
dofile(MP.."/steam_engine/flywheel.lua") dofile(MP.."/steam_engine/flywheel.lua")
dofile(MP.."/steam_engine/gearbox.lua") dofile(MP.."/steam_engine/gearbox.lua")
dofile(MP.."/basic_machines/ta2_help.lua")
-- Basic Machines -- Basic Machines
dofile(MP.."/basis/consumer.lua") -- consumer base model dofile(MP.."/basis/consumer.lua") -- consumer base model
dofile(MP.."/basic_machines/source.lua") dofile(MP.."/basic_machines/source.lua")
dofile(MP.."/basic_machines/pusher.lua") dofile(MP.."/basic_machines/pusher.lua")
dofile(MP.."/basic_machines/blackhole.lua")
dofile(MP.."/basic_machines/legacy_nodes.lua") dofile(MP.."/basic_machines/legacy_nodes.lua")
dofile(MP.."/basic_machines/grinder.lua") dofile(MP.."/basic_machines/grinder.lua")
dofile(MP.."/basic_machines/distributor.lua") dofile(MP.."/basic_machines/distributor.lua")
@ -90,11 +88,9 @@ else
dofile(MP.."/basic_machines/gravelrinser.lua") dofile(MP.."/basic_machines/gravelrinser.lua")
dofile(MP.."/basic_machines/chest.lua") dofile(MP.."/basic_machines/chest.lua")
dofile(MP.."/basic_machines/autocrafter.lua") dofile(MP.."/basic_machines/autocrafter.lua")
dofile(MP.."/basic_machines/forceload.lua")
dofile(MP.."/basic_machines/electronic_fab.lua") dofile(MP.."/basic_machines/electronic_fab.lua")
-- Coal power station -- Coal power station
dofile(MP.."/coal_power_station/help.lua")
dofile(MP.."/coal_power_station/firebox.lua") dofile(MP.."/coal_power_station/firebox.lua")
dofile(MP.."/coal_power_station/boiler_base.lua") dofile(MP.."/coal_power_station/boiler_base.lua")
dofile(MP.."/coal_power_station/boiler_top.lua") dofile(MP.."/coal_power_station/boiler_top.lua")
@ -103,8 +99,6 @@ else
dofile(MP.."/coal_power_station/cooler.lua") dofile(MP.."/coal_power_station/cooler.lua")
dofile(MP.."/coal_power_station/akkubox.lua") dofile(MP.."/coal_power_station/akkubox.lua")
dofile(MP.."/basic_machines/ta3_help.lua")
-- Industrial Furnace -- Industrial Furnace
dofile(MP.."/furnace/help.lua") dofile(MP.."/furnace/help.lua")
dofile(MP.."/furnace/firebox.lua") dofile(MP.."/furnace/firebox.lua")
@ -113,6 +107,13 @@ else
dofile(MP.."/furnace/booster.lua") dofile(MP.."/furnace/booster.lua")
dofile(MP.."/furnace/recipes.lua") dofile(MP.."/furnace/recipes.lua")
-- Tools
dofile(MP.."/doc/ta_doc.lua")
dofile(MP.."/tools/trowel.lua")
dofile(MP.."/tools/repairkit.lua")
dofile(MP.."/basic_machines/blackhole.lua")
dofile(MP.."/basic_machines/forceload.lua")
-- Lamps -- Lamps
dofile(MP.."/lamps/lib.lua") dofile(MP.."/lamps/lib.lua")
dofile(MP.."/lamps/simplelamp.lua") dofile(MP.."/lamps/simplelamp.lua")
@ -123,7 +124,6 @@ else
dofile(MP.."/lamps/industriallamp3.lua") dofile(MP.."/lamps/industriallamp3.lua")
-- Oil -- Oil
dofile(MP.."/oil/help.lua")
dofile(MP.."/oil/explore.lua") dofile(MP.."/oil/explore.lua")
dofile(MP.."/oil/tower.lua") dofile(MP.."/oil/tower.lua")
dofile(MP.."/oil/drillbox.lua") dofile(MP.."/oil/drillbox.lua")

View File

@ -1,45 +0,0 @@
-- Fallback functions for when `intllib` is not installed.
-- Code released under Unlicense <http://unlicense.org>.
-- Get the latest version of this file at:
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
local function format(str, ...)
local args = { ... }
local function repl(escape, open, num, close)
if escape == "" then
local replacement = tostring(args[tonumber(num)])
if open == "" then
replacement = replacement..close
end
return replacement
else
return "@"..open..num..close
end
end
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
end
local gettext, ngettext
if minetest.get_modpath("intllib") then
if intllib.make_gettext_pair then
-- New method using gettext.
gettext, ngettext = intllib.make_gettext_pair()
else
-- Old method using text files.
gettext = intllib.Getter()
end
end
-- Fill in missing functions.
gettext = gettext or function(msgid, ...)
return format(msgid, ...)
end
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
return format(n==1 and msgid or msgid_plural, ...)
end
return gettext, ngettext

View File

@ -12,10 +12,7 @@
]]-- ]]--
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local S, NS = dofile(MP.."/intllib.lua")
local PILE_BURN_TIME = 1200 local PILE_BURN_TIME = 1200
local COAL_BURN_TIME = 300 local COAL_BURN_TIME = 300
@ -212,16 +209,16 @@ minetest.register_lbm({
end end
}) })
local PileHelp = S([[Coal Pile to produce charcoal: local PileHelp = S("Coal Pile to produce charcoal:@n"..
- build a 5x5 block dirt base "- build a 5x5 block dirt base@n"..
- place a lighter in the centre "- place a lighter in the centre@n"..
- build a 3x3x3 wood cube around "- build a 3x3x3 wood cube around@n"..
- cover all with dirt to a 5x5x5 cube "- cover all with dirt to a 5x5x5 cube@n"..
- keep a hole to the lighter "- keep a hole to the lighter@n"..
- ignite the lighter and immediately "- ignite the lighter and immediately@n"..
- close the pile with one wood and one dirt "- close the pile with one wood and one dirt@n"..
- open the pile after the smoke disappeared "- open the pile after the smoke disappeared@n"..
(see plan)]]) "(see plan)")
local PileImages = { local PileImages = {
{"default_dirt.png", "default_dirt.png", "default_dirt.png", "default_dirt.png", "default_dirt.png"}, {"default_dirt.png", "default_dirt.png", "default_dirt.png", "default_dirt.png", "default_dirt.png"},
@ -231,4 +228,4 @@ local PileImages = {
{"default_dirt.png", "default_dirt.png", "default_dirt.png", "default_dirt.png", "default_dirt.png"}, {"default_dirt.png", "default_dirt.png", "default_dirt.png", "default_dirt.png", "default_dirt.png"},
} }
techage.register_help_page("Coal Pile", PileHelp, nil, PileImages) techage.register_entry_page("ta1", "coalpile", "Coal Pile", PileHelp, nil, PileImages)

View File

@ -12,10 +12,7 @@
]]-- ]]--
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local S, NS = dofile(MP.."/intllib.lua")
local COAL_BURN_TIME = 1200 local COAL_BURN_TIME = 1200
local CYCLE_TIME = 5 local CYCLE_TIME = 5
@ -243,21 +240,21 @@ function techage.stop_burner(pos)
end end
local BurnerHelp = S([[Coal Burner to heat the melting pot: local BurnerHelp = S("Coal Burner to heat the melting pot:@n"..
- build a 3x3xN cobble tower "- build a 3x3xN cobble tower@n"..
- more height means more flame heat "- more height means more flame heat@n"..
- keep a hole open on one side "- keep a hole open on one side@n"..
- put a lighter in "- put a lighter in@n"..
- fill the tower from the top with charcoal "- fill the tower from the top with charcoal@n"..
- ignite the lighter "- ignite the lighter@n"..
- place the pot in the flame, (one block above the tower) "- place the pot in the flame, (one block above the tower)@n"..
- to pause the burner, close the hole temporarily with e.g. dirt "- to pause the burner, close the hole temporarily with e.g. dirt@n"..
(see plan)]]) "(see plan)")
local BurnerImages = { local BurnerImages = {
{false, false, false, "default_cobble.png^techage_meltingpot.png", false}, {false, false, false, "default_cobble.png^techage_meltingpot.png", false},
{false, false, false, false, false}, {false, false, false, "techage_flame.png", false},
{false, false, "default_cobble.png", "techage_charcoal.png", "default_cobble.png"}, {false, false, "default_cobble.png", "techage_charcoal.png", "default_cobble.png"},
{false, false, "default_cobble.png", "techage_charcoal.png", "default_cobble.png"}, {false, false, "default_cobble.png", "techage_charcoal.png", "default_cobble.png"},
{false, false, "default_cobble.png", "techage_charcoal.png", "default_cobble.png"}, {false, false, "default_cobble.png", "techage_charcoal.png", "default_cobble.png"},
@ -266,4 +263,4 @@ local BurnerImages = {
{false, false, "default_cobble.png", "default_cobble.png", "default_cobble.png"}, {false, false, "default_cobble.png", "default_cobble.png", "default_cobble.png"},
} }
techage.register_help_page("Coal Burner", BurnerHelp, nil, BurnerImages) techage.register_entry_page("ta1", "burner", S("Coal Burner"), BurnerHelp, nil, BurnerImages)

View File

@ -13,13 +13,9 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local get_random_gravel_ore = techage.gravelsieve_get_random_gravel_ore local get_random_gravel_ore = techage.gravelsieve_get_random_gravel_ore
local get_random_basalt_ore = techage.gravelsieve_get_random_basalt_ore local get_random_basalt_ore = techage.gravelsieve_get_random_basalt_ore
@ -59,7 +55,7 @@ end
local function on_construct(pos) local function on_construct(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
meta:set_string("infotext", I("TA1 Gravel Sieve")) meta:set_string("infotext", S("TA1 Gravel Sieve"))
local inv = meta:get_inventory() local inv = meta:get_inventory()
inv:set_size('src', 1) inv:set_size('src', 1)
end end
@ -113,7 +109,7 @@ for idx = 0,3 do
end end
minetest.register_node("techage:sieve"..idx, { minetest.register_node("techage:sieve"..idx, {
description = I("TA1 Gravel Sieve"), description = S("TA1 Gravel Sieve"),
tiles = tiles_data, tiles = tiles_data,
drawtype = "nodebox", drawtype = "nodebox",
node_box = { node_box = {
@ -153,14 +149,14 @@ techage.register_node({"techage:sieve0", "techage:sieve1", "techage:sieve2", "te
}) })
minetest.register_node("techage:sieved_gravel", { minetest.register_node("techage:sieved_gravel", {
description = I("Sieved Gravel"), description = S("Sieved Gravel"),
tiles = {"default_gravel.png"}, tiles = {"default_gravel.png"},
groups = {crumbly=2, falling_node=1, not_in_creative_inventory=1}, groups = {crumbly=2, falling_node=1, not_in_creative_inventory=1},
sounds = default.node_sound_gravel_defaults(), sounds = default.node_sound_gravel_defaults(),
}) })
minetest.register_node("techage:compressed_gravel", { minetest.register_node("techage:compressed_gravel", {
description = I("Compressed Gravel"), description = S("Compressed Gravel"),
tiles = {"techage_compressed_gravel.png"}, tiles = {"techage_compressed_gravel.png"},
groups = {cracky=2, crumbly = 2}, groups = {cracky=2, crumbly = 2},
sounds = default.node_sound_gravel_defaults(), sounds = default.node_sound_gravel_defaults(),
@ -193,11 +189,9 @@ minetest.register_craft({
minetest.register_alias("techage:sieve", "techage:sieve3") minetest.register_alias("techage:sieve", "techage:sieve3")
minetest.register_alias("techage:auto_sieve", "techage:auto_sieve3") minetest.register_alias("techage:auto_sieve", "techage:auto_sieve3")
techage.register_help_page("TA1 Gravel Sieve", [[To sieve Gravel and Basalt Gravel techage.register_entry_page("ta1", "sieve",
to get ores. S("TA1 Gravel Sieve"),
Punch the sieve with wielded gravel to S("To sieve Gravel and Basalt Gravel to get ores. Punch the sieve with wielded gravel to start sieving. "..
start sieving. "Sieving can be automated by means of the TA1 Hopper. Gravel can be found in caves or "..
Sieving can be automated by means "generated by means of a TA1 Hammer."),
of the TA1 Hopper. "techage:sieve3")
Gravel can be found in caves or
generated by means of a TA1 Hammer.]], "techage:sieve3")

View File

@ -12,9 +12,7 @@
]]-- ]]--
-- Load support for intllib. local S = techage.S
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local function handler(player_name, node, itemstack, digparams) local function handler(player_name, node, itemstack, digparams)
local pos = techage.dug_node[player_name] local pos = techage.dug_node[player_name]
@ -28,8 +26,10 @@ local function handler(player_name, node, itemstack, digparams)
if minetest.get_item_group(node.name, "stone") > 0 then if minetest.get_item_group(node.name, "stone") > 0 then
-- Remove item from players inventory or from the world -- Remove item from players inventory or from the world
local ndef = minetest.registered_nodes[node.name] local ndef = minetest.registered_nodes[node.name]
if ndef and ndef.drop then print(1)
local item = ItemStack(ndef.drop) if ndef then
print(2)
local item = ItemStack(ndef.drop or node.name)
local inv = minetest.get_inventory({type="player", name=player_name}) local inv = minetest.get_inventory({type="player", name=player_name})
if inv:room_for_item("main", item) then if inv:room_for_item("main", item) then
local taken = inv:remove_item("main", item) local taken = inv:remove_item("main", item)
@ -51,7 +51,7 @@ local function handler(player_name, node, itemstack, digparams)
end end
minetest.register_tool("techage:hammer_bronze", { minetest.register_tool("techage:hammer_bronze", {
description = I("TA1 Bronze Hammer (smash stone to gravel)"), description = S("TA1 Bronze Hammer (smash stone to gravel)"),
inventory_image = "techage_tool_hammer_bronze.png", inventory_image = "techage_tool_hammer_bronze.png",
tool_capabilities = { tool_capabilities = {
full_punch_interval = 1.0, full_punch_interval = 1.0,
@ -70,7 +70,7 @@ minetest.register_tool("techage:hammer_bronze", {
}) })
minetest.register_tool("techage:hammer_steel", { minetest.register_tool("techage:hammer_steel", {
description = I("TA1 Steel Hammer (smash stone to gravel)"), description = S("TA1 Steel Hammer (smash stone to gravel)"),
inventory_image = "techage_tool_hammer_steel.png", inventory_image = "techage_tool_hammer_steel.png",
tool_capabilities = { tool_capabilities = {
full_punch_interval = 1.0, full_punch_interval = 1.0,
@ -89,7 +89,7 @@ minetest.register_tool("techage:hammer_steel", {
}) })
minetest.register_tool("techage:hammer_mese", { minetest.register_tool("techage:hammer_mese", {
description = I("TA1 Mese Hammer (smash stone to gravel)"), description = S("TA1 Mese Hammer (smash stone to gravel)"),
inventory_image = "techage_tool_hammer_mese.png", inventory_image = "techage_tool_hammer_mese.png",
tool_capabilities = { tool_capabilities = {
full_punch_interval = 0.9, full_punch_interval = 0.9,
@ -108,7 +108,7 @@ minetest.register_tool("techage:hammer_mese", {
}) })
minetest.register_tool("techage:hammer_diamond", { minetest.register_tool("techage:hammer_diamond", {
description = I("TA1 Diamond Hammer (smash stone to gravel)"), description = S("TA1 Diamond Hammer (smash stone to gravel)"),
inventory_image = "techage_tool_hammer_diamond.png", inventory_image = "techage_tool_hammer_diamond.png",
tool_capabilities = { tool_capabilities = {
full_punch_interval = 0.9, full_punch_interval = 0.9,
@ -126,6 +126,35 @@ minetest.register_tool("techage:hammer_diamond", {
end, end,
}) })
if minetest.global_exists("wielded_light") then
minetest.register_tool("techage:hammer_meridium", {
description = S("TA1 Meridium Hammer (smash stone to gravel)"),
inventory_image = "techage_tool_hammer_meridium.png",
tool_capabilities = {
full_punch_interval = 1.0,
max_drop_level=1,
groupcaps={
cracky = {times={[1]=4.00, [2]=1.60, [3]=0.80}, uses=60, maxlevel=2},
},
damage_groups = {fleshy=4},
},
sound = {breaks = "default_tool_breaks"},
after_use = function(itemstack, user, node, digparams)
minetest.after(0.01, handler, user:get_player_name(), node)
itemstack:add_wear(digparams.wear)
return itemstack
end,
})
minetest.register_craft({
output = "techage:hammer_meridium 2",
recipe = {
{"techage:meridium_ingot", "group:stick", "techage:meridium_ingot"},
{"techage:meridium_ingot", "group:stick", "techage:meridium_ingot"},
{"", "group:stick", ""},
}
})
end
minetest.register_craft({ minetest.register_craft({
output = "techage:hammer_bronze 2", output = "techage:hammer_bronze 2",
recipe = { recipe = {
@ -159,5 +188,6 @@ minetest.register_craft({
} }
}) })
techage.register_help_page("TA1 xxx Hammer", [[Hammer to smash stone to gravel. techage.register_entry_page("ta1", "hammer",
"TA1 xxx Hammer", [[Hammer to smash stone to gravel.
Available as Bronze, Steel, Mese, and Diamond Hammer.]], "techage:hammer_bronze") Available as Bronze, Steel, Mese, and Diamond Hammer.]], "techage:hammer_bronze")

View File

@ -13,13 +13,8 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local function scan_for_objects(pos, inv) local function scan_for_objects(pos, inv)
for _, object in pairs(minetest.get_objects_inside_radius(pos, 1)) do for _, object in pairs(minetest.get_objects_inside_radius(pos, 1)) do
@ -72,7 +67,7 @@ local function node_timer(pos, elapsed)
end end
minetest.register_node("techage:hopper_ta1", { minetest.register_node("techage:hopper_ta1", {
description = I("TA1 Hopper"), description = S("TA1 Hopper"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"default_cobble.png^techage_appl_hopper_top.png", "default_cobble.png^techage_appl_hopper_top.png",
@ -154,9 +149,9 @@ techage.register_node({"techage:hopper_ta1"}, {
end, end,
}) })
techage.register_help_page("TA1 Hopper", [[The Hopper collects dropped items techage.register_entry_page("ta1", "hopper",
and pushes them to the right side. S("TA1 Hopper"),
Items are sucked up when they S("The Hopper collects dropped items and pushes them to the right side.@n"..
are dropped on top of the Hopper block. "Items are sucked up when they are dropped on top of the Hopper block.@n"..
But the Hopper can also pull items out of "But the Hopper can also pull items out of chests or furnace blocks, if it is placed below."),
chests or furnace blocks, if it is placed below.]], "techage:hopper_ta1") "techage:hopper_ta1")

View File

@ -12,9 +12,7 @@
]]-- ]]--
-- Load support for intllib. local S = techage.S
local MP = minetest.get_modpath("techage")
local S, NS = dofile(MP.."/intllib.lua")
minetest.register_node("techage:lighter_burn", { minetest.register_node("techage:lighter_burn", {
tiles = {"techage_lighter_burn.png"}, tiles = {"techage_lighter_burn.png"},
@ -90,6 +88,7 @@ minetest.register_craft({
} }
}) })
techage.register_help_page("TA1 Lighter", [[lighter to ignite the Coal Burner techage.register_entry_page("ta1", "lighter",
and the Coal Pile.]], "techage:lighter") S("TA1 Lighter"),
S("lighter to ignite the Coal Burner and the Coal Pile."), "techage:lighter")

View File

@ -10,10 +10,6 @@
]]-- ]]--
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local S, NS = dofile(MP.."/intllib.lua")
function techage.ironage_swap_node(pos, name) function techage.ironage_swap_node(pos, name)
minetest.swap_node(pos, {name = name}) minetest.swap_node(pos, {name = name})
local node = minetest.registered_nodes[name] local node = minetest.registered_nodes[name]
@ -31,14 +27,3 @@ function techage.ironage_swap_nodes(pos1, pos2, name1, name2)
end end
end end
techage.register_chap_page("Iron Age (TA1)", S([[Iron Age is the first level of the available technic stages.
The goal of TA1 is to collect and craft enough Iron Ingots
to be able to build machines for stage 2 (TA2).
1. You have to collect dirt and wood to build a Coal Pile.
(The Coal Pile is needed to produce charcoal)
2. Build a Coal Burner to melt iron to iron ingots.
3. Craft a Gravel Sieve and collect gravel.
(A Hammer can be used to smash cobble to gravel)
4. Sieve the gravel to get the necessary ores or go mining.
]]), "techage:iron_ingot")

View File

@ -12,10 +12,7 @@
]]-- ]]--
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local S, NS = dofile(MP.."/intllib.lua")
local SMELTING_TIME = 2 local SMELTING_TIME = 2
@ -482,13 +479,13 @@ minetest.register_craft({
if minetest.global_exists("unified_inventory") then if minetest.global_exists("unified_inventory") then
unified_inventory.register_craft_type("melting", { unified_inventory.register_craft_type("melting", {
description = S("Melting"), description = S("TA1 Melting"),
icon = "default_cobble.png^techage_meltingpot.png", icon = "default_cobble.png^techage_meltingpot.png",
width = 2, width = 2,
height = 2, height = 2,
}) })
unified_inventory.register_craft_type("burning", { unified_inventory.register_craft_type("burning", {
description = S("Burning"), description = S("TA1 Burning"),
icon = "techage_smoke.png", icon = "techage_smoke.png",
width = 1, width = 1,
height = 1, height = 1,
@ -521,5 +518,7 @@ function techage.ironage_register_recipe(recipe)
end end
end end
techage.register_help_page("TA1 Melting Pot", [[To melt ores and/or produce alloys. techage.register_entry_page("ta1", "meltingpot",
Place the pot on top of the Coal Burner.]], "techage:meltingpot") S("TA1 Melting Pot"),
S("To melt ores and/or produce alloys. Place the pot on top of the Coal Burner."),
"techage:meltingpot")

View File

@ -12,10 +12,7 @@
]]-- ]]--
-- Load support for intllib. local S = techage.S
local MP = minetest.get_modpath("techage")
local S, NS = dofile(MP.."/intllib.lua")
minetest.register_craftitem("techage:meridium_ingot", { minetest.register_craftitem("techage:meridium_ingot", {
description = "Meridium Ingot", description = "Meridium Ingot",
@ -126,3 +123,8 @@ techage.ironage_register_recipe({
heat = 4, heat = 4,
time = 3, time = 3,
}) })
techage.register_entry_page("ta1", "meridium",
S("Meridium Ingot"),
S("A brilliant alloy for tools, which are used in the dark. Can be made with Coal Burner and TA3 Industrial Furnace."),
"techage:meridium_ingot")

View File

@ -12,9 +12,7 @@
]]-- ]]--
-- Load support for intllib. local S = techage.S
local MP = minetest.get_modpath("techage")
local S, NS = dofile(MP.."/intllib.lua")
-- --
-- New burner recipes -- New burner recipes
@ -96,3 +94,8 @@ if techage.modified_recipes_enabled then
} }
}) })
end end
techage.register_entry_page("ta1", "iron",
S("TA1 Iron Ingot"),
S("Steel replacement for TA1. Needed for many tools. Can be made with the Coal Burner from iron lumps."),
"techage:iron_ingot")

View File

@ -12,12 +12,10 @@
]]-- ]]--
-- Load support for intllib. local S = techage.S
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
techage.register_lamp("techage:ceilinglamp", { techage.register_lamp("techage:ceilinglamp", {
description = "TA Ceiling Lamp", description = S("TA Ceiling Lamp"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
'techage_ceilinglamp_top.png', 'techage_ceilinglamp_top.png',
@ -40,7 +38,7 @@ techage.register_lamp("techage:ceilinglamp", {
}, },
},{ },{
description = "TA Ceiling Lamp", description = S("TA Ceiling Lamp"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
'techage_ceilinglamp_top.png', 'techage_ceilinglamp_top.png',

View File

@ -12,12 +12,10 @@
]]-- ]]--
-- Load support for intllib. local S = techage.S
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
techage.register_lamp("techage:industriallamp1", { techage.register_lamp("techage:industriallamp1", {
description = "TA Industrial Lamp 1", description = S("TA Industrial Lamp 1"),
inventory_image = 'techage_industriallamp_inv1.png', inventory_image = 'techage_industriallamp_inv1.png',
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front

View File

@ -12,14 +12,12 @@
]]-- ]]--
-- Load support for intllib. local S = techage.S
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local size = {x = 8/32, y = 8/32, z = 5/32} local size = {x = 8/32, y = 8/32, z = 5/32}
techage.register_lamp("techage:industriallamp2", { techage.register_lamp("techage:industriallamp2", {
description = "TA Industrial Lamp 2", description = S("TA Industrial Lamp 2"),
inventory_image = 'techage_industriallamp_inv2.png', inventory_image = 'techage_industriallamp_inv2.png',
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front

View File

@ -12,14 +12,12 @@
]]-- ]]--
-- Load support for intllib. local S = techage.S
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local size = {x = 6/32, y = 4/32, z = 6/32} local size = {x = 6/32, y = 4/32, z = 6/32}
techage.register_lamp("techage:industriallamp3", { techage.register_lamp("techage:industriallamp3", {
description = "TA Industrial Lamp 3", description = S("TA Industrial Lamp 3"),
inventory_image = 'techage_industriallamp_inv3.png', inventory_image = 'techage_industriallamp_inv3.png',
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front

View File

@ -12,12 +12,10 @@
]]-- ]]--
-- Load support for intllib. local S = techage.S
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
techage.register_lamp("techage:simplelamp", { techage.register_lamp("techage:simplelamp", {
description = I("TA Lamp"), description = S("TA Lamp"),
tiles = { tiles = {
'techage_electric_button.png', 'techage_electric_button.png',
}, },
@ -30,7 +28,7 @@ techage.register_lamp("techage:simplelamp", {
is_ground_content = false, is_ground_content = false,
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
},{ },{
description = I("TA Lamp"), description = S("TA Lamp"),
tiles = { tiles = {
'techage_electric_button.png', 'techage_electric_button.png',
}, },

View File

@ -12,12 +12,10 @@
]]-- ]]--
-- Load support for intllib. local S = techage.S
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
techage.register_lamp("techage:streetlamp", { techage.register_lamp("techage:streetlamp", {
description = "TA Street Lamp", description = S("TA Street Lamp"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
'techage_streetlamp_top.png', 'techage_streetlamp_top.png',
@ -42,7 +40,7 @@ techage.register_lamp("techage:streetlamp", {
on_rotate = screwdriver.disallow, on_rotate = screwdriver.disallow,
conn_sides = {"U", "D"}, conn_sides = {"U", "D"},
},{ },{
description = "TA Street Lamp", description = S("TA Street Lamp"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
'techage_streetlamp_top.png', 'techage_streetlamp_top.png',

44
locale/techage.de.tr Normal file
View File

@ -0,0 +1,44 @@
# textdomain: techage
@nThe Distributor tries to push 12 items every 2 seconds.= Der Verteiler gibt bis zu 12 Gegenstände alle 2 s weiter.
@nThe Distributor tries to push 4 items every 2 seconds.= Der Verteiler gibt bis zu 4 Gegenstände alle 2 s weiter.
A brilliant alloy for tools, which are used in the dark. Can be made with Coal Burner and TA3 Industrial Furnace.=Ein leuchtende Legierung für Werkzeuge, welche im Dunkeln verwendet werden. Kann mit dem Kohlebrenner oder dem TA3 Industrieofen hergestellt werden.
Ash=Asche
Autocrafter=Autocrafter
Axle Power Source=Achsenkraftquelle
Build a Power Station according to the plan with TA3 Firebox, TA3 Boiler, Steam Pipes, Cooler, Turbine and Generator.@n- Heat the Firebox with coal/charcoal or oil@n- Fill the boiler with water (more than one bucket is needed)@n- Wait until the water is heated@n- Open the steam ventil@n- Connect the Generator with your machines by means of cables and junction boxes@n- Start the Generator=Baue ein Kraftwerk gemäß dem Plan mit TA3 Feuerbox, TA3 Kessel, Dampfröhren, Turbine und Generator.@n- Erhitze die Feuerbox mit Kohle/Holzkohle oder Öl@n- Fülle den Kessel mit Wasser (mehr als ein Eimer)@n- Warte bis das Wasser heiß ist@n- Öffne das Dampfventil@n- Verbinde den Generator mit deinen Maschinen mit Hilfe von Kabeln und Verbindungsdosen@n- Starte den Generator
Build a steam engine according to the plan with TA2 Firebox, TA2 Boiler, Steam Pipes, TA2 Cylinder and TA2 Flywheel.@n- Heat the Firebox with coal/charcoal@n- Fill the boiler with water (more than one bucket is needed)@n- Wait until the water is heated@n- Open the steam ventil@n- Start the Flywheel@n- Connect the Flywheel with your machines by means of Axles and Gearboxes=Baue eine Dampfmaschine gemäß dem Plan mit TA2 Feuerbox, TA2 Kessel, Dampfröhren, TA2 Zylinder und TA2 Schwungrad.@n- Erhitze die Feuerbox mit Kohle/Holzkohle oder Öl@n- Fülle den Kessel mit Wasser (mehr als ein Eimer)@n- Warte bis das Wasser heiß ist@n- Öffne das Dampfventil@n- Start das Schwungrad@n- Verbinde das Schwungrad mit deinen Maschinen mit Hilfe der Achsen und Achsgetriebeboxen.
Build derrick=Errichte Ölturm
Build the Furnace with TA3 Furnace Firebox, TA3 Furnace Top, and TA3 Booster according to the plan.@n- Heat the Firebox with coal/charcoal/oil@n- Power the Booster with electrical power.@n- Select one of the possible outputs@n- Connect the TA3 Furnace Top with your machines by means of tubes.@n- Start the Furnace=Baue den Ofen mit Hilfe von Feuerbox, TA3 Ofenoberteil und TA3 Gebläse.@n- Fülle die Feuerbox mit Kohle/Holzkohle oder Öl@n- Versorge das Gebläse mit Strom@n- Wähle das Rezept im Ofen@n- Verbinde das Ofenoberteil mit deinen Maschinen mit Hilfe der Röhren.
Burning times with one oil item for@nStream Engine / Power Station / Tiny Generator:@n@nPower max. : 25 / 80 / 12@nOil burn time/s : 32 / 20 / 100 @n@nburn time at power 2 : 400 / 800 / 600@nburn time at power 10 : 80 / 160 / 120@nburn time at power 20 : 40 / 80 / --=Brennzeiten mit einer Öl-Einheit für@nDampfmaschine / Kraftwerk / Kleingenerator:@n@nKraft max. : 25 / 80 / 12@nÖlbrennzeit/s : 32 / 20 / 100 @n@nBrennzeit bei Kraft 2 : 400 / 800 / 600@nBrennzeit bei Kraft 10 : 80 / 160 / 120@nBrennzeit bei Kraft 20 : 40 / 80 / --
Coal Burner=Kohlebrenner
Coal Burner to heat the melting pot:@n- build a 3x3xN cobble tower@n- more height means more flame heat@n- keep a hole open on one side@n- put a lighter in@n- fill the tower from the top with charcoal@n- ignite the lighter@n- place the pot in the flame, (one block above the tower)@n- to pause the burner, close the hole temporarily with e.g. dirt@n(see plan)=Kohlebrenner um den Schmelztiegel zu erhitzen:@n- Baue einen 3x3xN Cobblestone-Turm@n- mehr Höhe bedeutet auch mehr Hitze@n- Lasse ein Loch an einer Seite offen@n- Lege einen Anzünder hinein@n- Fülle den Turm von oben mit Holzkohle@n- Zünde den Anzünder an@n- Platziere den Schmelztiegel in die Flamme (einen Block über dem Turm)@nUm den Brenner anzuhalten, schließe das Loch vorübergehend bspw. mit einem Erdblock.@n(siehe Plan)
Coal Pile to produce charcoal:@n- build a 5x5 block dirt base@n- place a lighter in the centre@n- build a 3x3x3 wood cube around@n- cover all with dirt to a 5x5x5 cube@n- keep a hole to the lighter@n- ignite the lighter and immediately@n- close the pile with one wood and one dirt@n- open the pile after the smoke disappeared@n(see plan)=Köhler um Holzkohle herzustellen:@n- Baue eine 5x5 große Fläche aus Erde (dirt)@n- Platziere in die Mitte einen Anzünder@n- Baue aus Holz (wood) einen 3x3x3 größen Würfel darüber@n -Überdecke alles mit einer Schicht Erde zu einem 5x5x5 großen Würfel@n- Lasse ein Loch zum Anzünder@n- Zünde den Anzünder an und verschließe das Loch sofort mit jeweils einem Block Holz und Erde@n- Öffne den Köhler erst, wenn der Rauch verschwunden ist
Collection of TA3 machines, some with eletrical power supply.=Sammlung von TA3 Maschinen, einige mit Stromversorgung.
Compressed Gravel=Komprimiertes Kies
Depth=Tiefe
Dirt with Ash=Erde mit Asche
Distributor=Verteiler
Drill Bit=Bohrstange
Ele Power Source=Ele Kraftquelle
Electronic Fab=Elektronikfabrik
Flint and Iron=Flint and Iron
Flowing Oil=Fließendes Öl
Furnace Top=Ofenoberteil
Gravel Rinser=Kiesspüler
Gravel Sieve=Kiessieb
Grinder=Mühle
Grinding=Mahlen
Heat=Hitze
Help=Hilfe

195
locale/template.txt Normal file
View File

@ -0,0 +1,195 @@
@nThe Distributor tries to push 12 items every 2 seconds.=
@nThe Distributor tries to push 4 items every 2 seconds.=
A brilliant alloy for tools, which are used in the dark. Can be made with Coal Burner and TA3 Industrial Furnace.=
Ash=
Autocrafter=
Axle Power Source=
Build a Power Station according to the plan with TA3 Firebox, TA3 Boiler, Steam Pipes, Cooler, Turbine and Generator.@n- Heat the Firebox with coal/charcoal or oil@n- Fill the boiler with water (more than one bucket is needed)@n- Wait until the water is heated@n- Open the steam ventil@n- Connect the Generator with your machines by means of cables and junction boxes@n- Start the Generator=
Build a steam engine according to the plan with TA2 Firebox, TA2 Boiler, Steam Pipes, TA2 Cylinder and TA2 Flywheel.@n- Heat the Firebox with coal/charcoal@n- Fill the boiler with water (more than one bucket is needed)@n- Wait until the water is heated@n- Open the steam ventil@n- Start the Flywheel@n- Connect the Flywheel with your machines by means of Axles and Gearboxes=
Build derrick=
Build the Furnace with TA3 Furnace Firebox, TA3 Furnace Top, and TA3 Booster according to the plan.@n- Heat the Firebox with coal/charcoal/oil@n- Power the Booster with electrical power.@n- Select one of the possible outputs@n- Connect the TA3 Furnace Top with your machines by means of tubes.@n- Start the Furnace=
Burning times with one oil item for@nStream Engine / Power Station / Tiny Generator:@n@nPower max. : 25 / 80 / 12@nOil burn time/s : 32 / 20 / 100 @n@nburn time at power 2 : 400 / 800 / 600@nburn time at power 10 : 80 / 160 / 120@nburn time at power 20 : 40 / 80 / --=
Coal Burner=
Coal Burner to heat the melting pot:@n- build a 3x3xN cobble tower@n- more height means more flame heat@n- keep a hole open on one side@n- put a lighter in@n- fill the tower from the top with charcoal@n- ignite the lighter@n- place the pot in the flame, (one block above the tower)@n- to pause the burner, close the hole temporarily with e.g. dirt@n(see plan)=
Coal Pile to produce charcoal:@n- build a 5x5 block dirt base@n- place a lighter in the centre@n- build a 3x3x3 wood cube around@n- cover all with dirt to a 5x5x5 cube@n- keep a hole to the lighter@n- ignite the lighter and immediately@n- close the pile with one wood and one dirt@n- open the pile after the smoke disappeared@n(see plan)=
Collection of TA3 machines, some with eletrical power supply.=
Compressed Gravel=
Depth=
Dirt with Ash=
Distributor=
Drill Bit=
Ele Power Source=
Electronic Fab=
Flint and Iron=
Flowing Oil=
Furnace Top=
Gravel Rinser=
Gravel Sieve=
Grinder=
Grinding=
Heat=
Help=
In the TA3 age, oil (petroleum) serves as an almost infinite fuel. But oil is difficult and expensive to recover:@n1: Search for oil with the TA3 Oil Explorer@n2: Drill for oil with the TA3 Oil Drill Box (oil derrick)@n3: Recover the oil with the TA3 Oil Pumpjack@n4: A power station nearby provides the necessary @n electrical power for the derrick and pumpjack.@n5: Tubes or rails are used for oil transportation.=
Iron Age is the first level of the available four technic stages.@nThe goal of TA1 is to collect and craft enough Iron Ingots@nto be able to build machines for stage 2 (TA2).@n1. You have to collect dirt and wood to build a Coal Pile.@n (The Coal Pile is needed to produce charcoal)@n2. Build a Coal Burner to melt iron to iron ingots.@n3. Craft a Gravel Sieve and collect gravel.@n (A Hammer can be used to smash cobble to gravel)@n4. Sieve the gravel to get the necessary ores or go mining.=
Melting Guide=
Melting Pot active (heat==
Melting Pot inactive (heat==
Melting Pot inactive (heat=0)=
Menu=
Menu,Recipes=
Meridium Axe=
Meridium Ingot=
Meridium Pickaxe=
Meridium Shovel=
Meridium Sword=
No plan available=
Oil Age (TA3)=
Oil Burning Times=
Oil Source=
Oil amount:=
Outp=
Part of the Coal Power Station. Has to be placed in the steam circulation after the Turbine.@n(see TA3 Coal Power Station)=
Part of the Coal Power Station. Has to be placed on top of TA3 Power Station Boiler Base.@n(see TA3 Coal Power Station)=
Part of the Coal Power Station. Has to be placed on top of the TA3 Coal Power Station Firebox and filled with water.@n(see TA3 Coal Power Station)=
Part of the Coal Power Station. Has to be placed side by side with the TA3 Generator.@n(see TA3 Coal Power Station)=
Part of the Coal Power Station. Has to be placed side by side with the TA3 Turbine. Connect the Generator with your TA3 machines by means of Electric Cables and Junction Boxes@n(see TA3 Coal Power Station)=
Part of the TA3 Industrial Furnace and further machines. Used to increase the air/gas pressure.=
Part of the TA3 Industrial Furnace. Faster and more powerful than the standard furnace.=
Part of the steam engine. Has to be placed on top of TA2 Boiler Base.@n(see TA2 Steam Engine)=
Part of the steam engine. Has to be placed on top of the Firebox and filled with water.@n(see TA2 Steam Engine)=
Part of the steam engine. Has to be placed side by side with the TA2 Cylinder.@nUsed to turn on/off the steam engine. Connect the Flywheel with your TA2 machines by means of Axles and Gearboxes.@n(see TA2 Steam Engine)=
Part of the steam engine. Has to be placed side by side with the TA2 Flywheel.@n(see TA2 Steam Engine)=
Plan=
Power=
Power Consumption=
Power consumption and supply:@n- TA3 Power Station: 80@n- TA3 Tiny Generator: 12@n- TA3 Akku Box: 10 (in both dirs)@n- TA3 Oil Drill Box: 16@n- TA3 Oil Pumpjack: 16@n- TA3 Electronic Fab: 12@n- TA3 Autocrafter: 6@n- TA3 Grinder: 6@n- TA3 Gravel Sieve: 4@n- TA3 Booster: 3@n- Lamps: 0.5@n@n- Signs Bot: 8 (while loading)=
Pusher=
Remove derrick=
Rinsing=
Sieved Gravel=
Small electrical power generator. Needs oil as fuel.@nIt provides 12 units electrical power@nOil burn time: 100s=
Steam Age is the second level of the available four technic stages.@nThe goal of TA2 is to build a coal powered stream engine with drive axles and machines to produce ores and vacuum tubes for the first electronic devices and machines in TA3.=
Steam Engine=
Steam Power Source=
Steel replacement for TA1. Needed for many tools. Can be made with the Coal Burner from iron lumps.=
TA Ceiling Lamp=
TA Construction Board=
TA Electric Cable=
TA Electric Junction Box=
TA Industrial Lamp 1=
TA Industrial Lamp 2=
TA Industrial Lamp 3=
TA Lamp=
TA Power Line=
TA Power Pole=
TA Power Switch=
TA Power Switch Box=
TA Protected Chest=
TA Street Lamp=
TA1 Bronze Hammer (smash stone to gravel)=
TA1 Burning=
TA1 Charcoal=
TA1 Diamond Hammer (smash stone to gravel)=
TA1 Gravel Sieve=
TA1 Hopper=
TA1 Iron Ingot=
TA1 Lighter=
TA1 Melting=
TA1 Melting Pot=
TA1 Meridium Hammer (smash stone to gravel)=
TA1 Mese Hammer (smash stone to gravel)=
TA1 Steel Hammer (smash stone to gravel)=
TA2 Autocrafter=
TA2 Boiler Base=
TA2 Boiler Top=
TA2 Cylinder=
TA2 Distributor=
TA2 Drive Axle=
TA2 Electronic Fab=
TA2 Firebox=
TA2 Flywheel=
TA2 Gearbox=
TA2 Gravel Rinser=
TA2 Gravel Sieve=
TA2 Grinder=
TA2 Protected Chest=
TA2 Pusher=
TA2 Steam Pipe=
TA3 Akku Box=
TA3 Autocrafter=
TA3 Biogas Pipe=
TA3 Boiler Base=
TA3 Boiler Top=
TA3 Booster=
TA3 Coal Power Station Firebox=
TA3 Cooler=
TA3 Derrick=
TA3 Distributor=
TA3 Drill Bit=
TA3 Electronic Fab=
TA3 Furnace Firebox=
TA3 Furnace Top=
TA3 Generator=
TA3 Gravel Sieve=
TA3 Grinder=
TA3 Industrial Furnace=
TA3 Melting=
TA3 Oil Drill Box=
TA3 Oil Explorer=
TA3 Oil Pumpjack=
TA3 Oil Storage=
TA3 Protected Chest=
TA3 Pusher=
TA3 Tiny Power Generator=
TA3 Turbine=
TA3 Vacuum Tubes=
TA3: Machines=
TA3: Oil plants=
TA3: Power Station=
TA4 Derrick=
TA4 Protected Chest=
TA4 WLAN Chip=
Tech Age is a technic mod with four technic stages.@n@nIron Age (TA1): Use tools like coal pile, coal burner, gravel sieve, hammer and hopper to obtain the necessary metals and ores to further machines and tools for TA2@n@nSteam Age (TA2): Build a steam engine with drive axles to run first simple machines.@n@nOil Age (TA3): Drill and pump oil, build your transport routes with Minecarts and power and control TA3 machines and lamps with electrical energy.@n@nFuture Age (TA4): Build regenerative power plants and intelligent machines, travel at high speed and use other future technologies.=
TechAge End Wrench=
TechAge End Wrench (use = read status, place = cmd: on/off)=
TechAge Repair Kit=
TechAge Trowel=
Techage Black Hole=
Techage Black Hole (let items disappear)=
Techage Forceload Block=
The Autocrafter allows the automated crafting of items based on configured recipes.@nIt can craft one item every two seconds.@nNeeds axle power: 4=
The Autocrafter allows the automated crafting of items based on configured recipes.@nIt can craft two items every two seconds.@nNeeds electrical power: 6=
The Distributor works as filter and pusher. It allows to divide and distribute incoming items into the 4 output ports. The channels can be switched on/off and individually configured with up to 6 item types. The filter passes the configured items and restrains all others. Unconfigured but activated filters are used for items, which do not fit to all other filters. If the Distributor cant push an item into a block with an inventory (such as a chest) because that inventory is full, but there is one open and unconfigured output, it will use this output port.=
The End Wrench is a tool to read any kind od status information from a node with command inderface.@n- use (left mouse button) = read status@n- place (right mouse button) = send command: on/off=
The Forceload Block keeps the corresponding area loaded and the machines operational as far as the player is logged in. If the player leaves the game, all areas will be unloaded.@nThe maximum number of Forceload Blocks per player is configurable (default 16).@nThe loaded area per block is a cube with 16 m side length (according to a Minetest area block). Punching the block makes the area visible and invisible again.=
The Grinder grinds all kinds of cobblestone to gravel, gravel to sand, sand to clay, wood to leaves, and more.@nIt can grind one item every four seconds.@nIt needs 4 units axle power.=
The Grinder grinds all kinds of cobblestone to gravel, gravel to sand, sand to clay, wood to leaves, and more.@nIt can grind two items every four seconds.@nIt needs 6 units electrical power.=
The Hopper collects dropped items and pushes them to the right side.@nItems are sucked up when they are dropped on top of the Hopper block.@nBut the Hopper can also pull items out of chests or furnace blocks, if it is placed below.=
The Oil Age is the third level of the available technic stages. The goal of TA3 is to build Power Stations, drill for oil, and build machines to produce ores and chips for smart TA4 devices and machines.=
The Protected Chest is useful in protected areas (by means of any protection mod).@nOnly players with interaction rights on that position can take/put item from/to the chest.=
The Protected Chest is useful in protected areas (by means of any protection mod).@nOnly players with interaction rights on that position can take/put item from/to the chest.@nThe Chest supports commands to read the last player action (player-name, take/put, item-name) and the chest state ('empty', 'loaded', 'full').@nThe chest returns 'loaded' when it is not empty and not full, 'full' is returned, when no empty stack is available.@n=
The Pumpjack works similar to a pusher. It pumps one oil item every 8 seconds. It needs 16 units of electrical power.=
The Pusher is a pulling/pushing block, moving items from one inventory block to another (e.g. chests). Start the Pusher with a right-click. It shows the state 'running' as infotext. The Pusher moves items from left to right (IN to OUT).@nIf the source chest is empty, the Pusher goes into 'standby' state for some seconds. If the destination chest is full, the Pusher goes into 'blocked' state.@nThe TA2 Pusher moves two items every 2 seconds.=
The Pusher is a pulling/pushing block, moving items from one inventory block to another (e.g. chests). Start the Pusher with a right-click. It shows the state 'running' as infotext. The Pusher moves items from left to right (IN to OUT).@nIf the source chest is empty, the Pusher goes into 'standby' state for some seconds. If the destination chest is full, the Pusher goes into 'blocked' state.@nThe TA3 Pusher moves 6 items every 2 seconds.=
The Techage Black Hole Block let items disappear. If your machine produces to much or unneeded items, push them into the Black Hole.=
The box automatically unfolds to a derrick when you press the button.@n1: Place the box in the middle of the marked position@n (the derrick requires a free area of 3x3m)@n2: Press the build button@n3: Supply the drill with electricity@n4: Supply the drill with Drill Bits@n5: Press the start button@n6: Remove the excavated material with Tubes/Pusher@n7: The drill stops when oil is found@n (drill speed is 1m/16s)@n8: Replace the drill with the Pumpjack.@nIt needs 16 units electrical power=
This is a collection of further nodes and tools which do not fit to the stages 1 to 4.=
Time=
To melt ores and/or produce alloys. Place the pot on top of the Coal Burner.=
To sieve Gravel and Basalt Gravel to get ores. Punch the sieve with wielded gravel to start sieving. Sieving can be automated by means of the TA1 Hopper. Gravel can be found in caves or generated by means of a TA1 Hammer.=
To sieve Gravel and Basalt Gravel to get ores. Use a Grinder to make Gravel from Cobblestone.@nIt can sieve one item every four seconds.@nIt needs 3 units axle power.=
To sieve Gravel and Basalt Gravel to get ores. Use a Grinder to make Gravel from Cobblestone.@nIt can sieve two items every four seconds.@nIt needs 4 units electrical power.=
To turn electrical power on/off.@nHas to be placed on a TA Power Switch Box.=
Tool to hide and retrieve electrical wiring in walls and floors.@nThe material for hiding the cables must be in the left stack of the first row in the player inventory.=
Update=
Used to find oil (petroleum). Oil can be used as fuel for the Power Station and others. Place the block and right-click on the block to explore the underground. The block will explore a 16x16 field with a depth of up to 400 m. To search deeper, click the block several times. When oil is found, the position for the derrick (Drill Box) is highlighted.@nHint: Mark and protect the position for later use.=
Used to produce Vacuum Pipes, needed for TA3 machines.@nThe fab produces 1 item every 6 seconds.@nIt needs 8 units axle power=
Used to produce WLAN Chips, needed for TA4 machines.@nThe fab produces 1 item every 6 seconds.@nIt needs 12 units electrical power.=
Used to store electrical energy. Charged in about 10 min, provides energy for 10 min.@nIt take and deliver up to 10 units electrical power.=
Used to wash Sieved Gravel to get Usmium Nuggets. The block has to be placed under flowing water. The washed-out nuggets must be sucked in with a Hopper.@nFor the plant you need a chest, the Hopper, the Rinser with tube support and a frame around the flowing water (see plan).@nHint: You can test the Rinser with some sticks that are washed out immediately.@nIt needs 3 units axle power=
[TA] Area is protected!=
[TA] Derrick is being built!=
[TA] Derrick is being removed!=
[TA] Not enough space!=
connected with=
lighter to ignite the Coal Burner and the Coal Pile.=

View File

@ -13,16 +13,12 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Consumer Related Data -- Consumer Related Data
local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local STANDBY_TICKS = 4 local STANDBY_TICKS = 4
local COUNTDOWN_TICKS = 6 local COUNTDOWN_TICKS = 6
local CYCLE_TIME = 16 local CYCLE_TIME = 16
@ -32,7 +28,7 @@ local formspec0 = "size[5,4]"..
default.gui_bg_img.. default.gui_bg_img..
default.gui_slots.. default.gui_slots..
"image[1,0;3.4,3.4;techage_oil_tower_inv.png]".. "image[1,0;3.4,3.4;techage_oil_tower_inv.png]"..
"button_exit[1,3.2;3,1;build;"..I("Build derrick").."]" "button_exit[1,3.2;3,1;build;"..S("Build derrick").."]"
local function play_sound(pos) local function play_sound(pos)
local mem = tubelib2.get_mem(pos) local mem = tubelib2.get_mem(pos)
@ -66,14 +62,14 @@ local function formspec(self, pos, mem)
"list[context;src;1,1;1,1;]".. "list[context;src;1,1;1,1;]"..
"label[1.3,0.5;IN]".. "label[1.3,0.5;IN]"..
"item_image[1,1;1,1;techage:oil_drillbit]".. "item_image[1,1;1,1;techage:oil_drillbit]"..
"label[1,2;"..I("Drill Bit").."]".. "label[1,2;"..S("Drill Bit").."]"..
"label[0.5,3;"..I("Depth")..": "..curr_depth.."/"..depth.."]".. "label[0.5,3;"..S("Depth")..": "..curr_depth.."/"..depth.."]"..
"image[3.5,0;1,1;"..techage.get_power_image(pos, mem).."]".. "image[3.5,0;1,1;"..techage.get_power_image(pos, mem).."]"..
"image[3.5,1;1,1;techage_form_arrow.png]".. "image[3.5,1;1,1;techage_form_arrow.png]"..
"image_button[3.5,2;1,1;".. self:get_state_button_image(mem) ..";state_button;]".. "image_button[3.5,2;1,1;".. self:get_state_button_image(mem) ..";state_button;]"..
"label[6.2,0.5;OUT]".. "label[6.2,0.5;OUT]"..
"list[context;dst;6,1;1,1;]".. "list[context;dst;6,1;1,1;]"..
"button_exit[5,3;3,1;remove;"..I("Remove derrick").."]".. "button_exit[5,3;3,1;remove;"..S("Remove derrick").."]"..
"list[current_player;main;0,4;8,4;]".. "list[current_player;main;0,4;8,4;]"..
"listring[context;dst]".. "listring[context;dst]"..
"listring[current_player;main]".. "listring[current_player;main]"..
@ -250,7 +246,7 @@ local tubing = {
} }
local _, node_name_ta3, _ = local _, node_name_ta3, _ =
techage.register_consumer("drillbox", I("TA3 Oil Drill Box"), tiles, { techage.register_consumer("drillbox", S("TA3 Oil Drill Box"), tiles, {
drawtype = "normal", drawtype = "normal",
cycle_time = CYCLE_TIME, cycle_time = CYCLE_TIME,
standby_ticks = STANDBY_TICKS, standby_ticks = STANDBY_TICKS,
@ -295,19 +291,21 @@ minetest.register_craft({
}, },
}) })
techage.register_help_page(I("TA3 Oil Drill Box"), techage.register_entry_page("ta3op", "drillbox",
I([[The box automatically unfolds to a S("TA3 Oil Drill Box"),
derrick when you press the button. S("The box automatically unfolds to a derrick when you press the button.@n"..
1: Place the box in the middle of the marked position "1: Place the box in the middle of the marked position@n"..
(the derrick requires a free area of 3x3m) " (the derrick requires a free area of 3x3m)@n"..
2: Press the build button "2: Press the build button@n"..
3: Supply the drill with electricity "3: Supply the drill with electricity@n"..
4: Supply the drill with Drill Bits "4: Supply the drill with Drill Bits@n"..
5: Press the start button "5: Press the start button@n"..
6: Remove the excavated material with Tubes/Pusher "6: Remove the excavated material with Tubes/Pusher@n"..
7: The drill stops when oil is found "7: The drill stops when oil is found@n"..
(drill speed is 1m/16s) " (drill speed is 1m/16s)@n"..
8: Replace the drill with the Pumpjack]]), node_name_ta3) "8: Replace the drill with the Pumpjack.@n"..
"It needs 16 units electrical power"),
node_name_ta3)
minetest.register_lbm({ minetest.register_lbm({
label = "[techage] Oil Tower sound", label = "[techage] Oil Tower sound",

View File

@ -1,12 +1,7 @@
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local P2S = function(pos) if pos then return minetest.pos_to_string(pos) end end
-- Load support for intllib. local S = techage.S
local MP = minetest.get_modpath("techage")
local I,IS = dofile(MP.."/intllib.lua")
local PROBABILITY = 80 local PROBABILITY = 80
local OIL_MIN = 2000 local OIL_MIN = 2000
@ -103,7 +98,7 @@ local function status(pos, player_name, depth, amount)
depth = depth + pos.y depth = depth + pos.y
local posC = {x = center(pos.x), y = pos.y, z = center(pos.z)} local posC = {x = center(pos.x), y = pos.y, z = center(pos.z)}
minetest.chat_send_player(player_name, minetest.chat_send_player(player_name,
"[TA Oil] "..S(posC).." depth: "..depth..", Oil: "..amount.." ") "[TA Oil] "..P2S(posC).." depth: "..depth..", Oil: "..amount.." ")
end end
local function marker(player_name, pos) local function marker(player_name, pos)
@ -174,7 +169,7 @@ end
-- Used as storage for already explored blocks -- Used as storage for already explored blocks
minetest.register_node("techage:oilstorage", { minetest.register_node("techage:oilstorage", {
description = I("TA3 Oil Storage"), description = S("TA3 Oil Storage"),
tiles = {"default_stone.png"}, tiles = {"default_stone.png"},
groups = {not_in_creative_inventory=1}, groups = {not_in_creative_inventory=1},
diggable = false, diggable = false,
@ -183,7 +178,7 @@ minetest.register_node("techage:oilstorage", {
}) })
minetest.register_node("techage:oilexplorer", { minetest.register_node("techage:oilexplorer", {
description = I("TA3 Oil Explorer"), description = S("TA3 Oil Explorer"),
tiles = { tiles = {
"techage_filling_ta3.png^techage_appl_oilexplorer_top.png^techage_frame_ta3_top.png", "techage_filling_ta3.png^techage_appl_oilexplorer_top.png^techage_frame_ta3_top.png",
"techage_filling_ta3.png^techage_frame_ta3.png", "techage_filling_ta3.png^techage_frame_ta3.png",
@ -202,7 +197,7 @@ minetest.register_node("techage:oilexplorer", {
}) })
minetest.register_node("techage:oilexplorer_on", { minetest.register_node("techage:oilexplorer_on", {
description = I("TA3 Oil Explorer"), description = S("TA3 Oil Explorer"),
tiles = { tiles = {
{ {
image = "techage_filling4_ta3.png^techage_appl_oilexplorer_top4.png^techage_frame4_ta3_top.png", image = "techage_filling4_ta3.png^techage_appl_oilexplorer_top4.png^techage_frame4_ta3_top.png",
@ -233,7 +228,7 @@ minetest.register_node("techage:oilexplorer_on", {
}) })
minetest.register_node("techage:oil_source", { minetest.register_node("techage:oil_source", {
description = "Oil Source", description = S("Oil Source"),
drawtype = "liquid", drawtype = "liquid",
paramtype = "light", paramtype = "light",
@ -279,7 +274,7 @@ minetest.register_node("techage:oil_source", {
minetest.register_node("techage:oil_flowing", { minetest.register_node("techage:oil_flowing", {
description = I("Flowing Oil"), description = S("Flowing Oil"),
drawtype = "flowingliquid", drawtype = "flowingliquid",
tiles = {"techage_oil.png"}, tiles = {"techage_oil.png"},
special_tiles = { special_tiles = {
@ -344,14 +339,14 @@ bucket.register_liquid(
"techage_bucket_oil.png", "techage_bucket_oil.png",
"Oil Bucket") "Oil Bucket")
techage.register_help_page(I("TA3 Oil Explorer"), techage.register_entry_page("ta3op", "oilexplorer",
I([[Used to find oil (petroleum). S("TA3 Oil Explorer"),
Oil can be used as fuel for the Coal Power Stations and others. S("Used to find oil (petroleum). Oil can be used as fuel for the Power Station and others. "..
Place the block and right-click on the block to explore the underground. "Place the block and right-click on the block to explore the underground. "..
The block will explore a 16x16 field with a depth of up to 400 m. "The block will explore a 16x16 field with a depth of up to 400 m. "..
To search deeper, click the block several times. "To search deeper, click the block several times. "..
When oil is found, the position for the Oil Tower is highlighted. "When oil is found, the position for the derrick (Drill Box) is highlighted.@n"..
Hint: Mark and protect the position for later use.]]), "Hint: Mark and protect the position for later use."),
"techage:oilexplorer") "techage:oilexplorer")
techage.explore = {} techage.explore = {}

View File

@ -13,13 +13,8 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local Power = techage.ElectricCable local Power = techage.ElectricCable
local provide_power = techage.power.provide_power local provide_power = techage.power.provide_power
@ -42,7 +37,7 @@ local function formspec(self, pos, mem)
"list[current_name;fuel;0.5,1;1,1;]".. "list[current_name;fuel;0.5,1;1,1;]"..
"image[1.5,1;1,1;default_furnace_fire_bg.png^[lowpart:".. "image[1.5,1;1,1;default_furnace_fire_bg.png^[lowpart:"..
fuel_percent..":default_furnace_fire_fg.png]".. fuel_percent..":default_furnace_fire_fg.png]"..
"button[3,1;1.8,1;update;"..I("Update").."]".. "button[3,1;1.8,1;update;"..S("Update").."]"..
"image_button[5.5,1;1,1;".. self:get_state_button_image(mem) ..";state_button;]".. "image_button[5.5,1;1,1;".. self:get_state_button_image(mem) ..";state_button;]"..
"image[6.5,0.5;1,2;"..techage.power.formspec_power_bar(PWR_CAPA, mem.provided).."]".. "image[6.5,0.5;1,2;"..techage.power.formspec_power_bar(PWR_CAPA, mem.provided).."]"..
"list[current_player;main;0,3;8,4;]".. "list[current_player;main;0,3;8,4;]"..
@ -145,7 +140,7 @@ local function on_rightclick(pos)
end end
minetest.register_node("techage:tiny_generator", { minetest.register_node("techage:tiny_generator", {
description = "TA3 Tiny Power Generator", description = S("TA3 Tiny Power Generator"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_appl_electric_gen_top.png^techage_frame_ta3_top.png", "techage_appl_electric_gen_top.png^techage_frame_ta3_top.png",
@ -181,7 +176,7 @@ minetest.register_node("techage:tiny_generator", {
}) })
minetest.register_node("techage:tiny_generator_on", { minetest.register_node("techage:tiny_generator_on", {
description = "TA3 Tiny Power Generator", description = S("TA3 Tiny Power Generator"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_appl_electric_gen_top.png^techage_frame_ta3_top.png", "techage_appl_electric_gen_top.png^techage_frame_ta3_top.png",
@ -253,8 +248,10 @@ minetest.register_craft({
}, },
}) })
techage.register_help_page(I("TA3 Tiny Power Generator"), techage.register_entry_page("ta3ps", "tiny_generator",
I([[Small electrical power generator. Need oil as fuel. S("TA3 Tiny Power Generator"),
Provides power: 12 S("Small electrical power generator. Needs oil as fuel.@n"..
Oil burn time: 100s]]), "techage:tiny_generator") "It provides 12 units electrical power@n"..
"Oil burn time: 100s"),
"techage:tiny_generator")

View File

@ -1,31 +0,0 @@
--[[
TechAge
=======
Copyright (C) 2019 Joachim Stolberg
LGPLv2.1+
See LICENSE.txt for more information
TA3 Oil Help
]]--
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local S, NS = dofile(MP.."/intllib.lua")
local HelpText = S([[In the TA3 age, oil (petroleum)
serves as an almost infinite fuel.
But oil is difficult and expensive to recover:
1: Search for oil with the TA3 Oil Explorer
2: Drill for oil with the TA3 Oil Drill Box (oil derrick)
3: Recover the oil with the TA3 Oil Pumpjack
4: A power station nearby provides the necessary
electrical power for the derrick and pumpjack.
5: Tubes or rails are used for oil transportation.
]])
techage.register_chap_page(S("TA3 Oil Age"), HelpText, "techage:oil_source")

View File

@ -13,15 +13,13 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local P = minetest.string_to_pos
local S = techage.S
-- Consumer Related Data -- Consumer Related Data
local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end local CRD = function(pos) return (minetest.registered_nodes[minetest.get_node(pos).name] or {}).consumer end
local CRDN = function(node) return (minetest.registered_nodes[node.name] or {}).consumer end local CRDN = function(node) return (minetest.registered_nodes[node.name] or {}).consumer end
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local STANDBY_TICKS = 10 local STANDBY_TICKS = 10
local COUNTDOWN_TICKS = 10 local COUNTDOWN_TICKS = 10
@ -56,8 +54,8 @@ local function formspec(self, pos, mem)
default.gui_slots.. default.gui_slots..
"image[0.5,0;1,1;techage_oil_inv.png]".. "image[0.5,0;1,1;techage_oil_inv.png]"..
"image[2,0;1,1;"..techage.get_power_image(pos, mem).."]".. "image[2,0;1,1;"..techage.get_power_image(pos, mem).."]"..
"label[0,1.3;"..I("Oil amount:")..": "..amount.."]".. "label[0,1.3;"..S("Oil amount:")..": "..amount.."]"..
"button[3,1.1;2,1;update;"..I("Update").."]".. "button[3,1.1;2,1;update;"..S("Update").."]"..
"image_button[2,2.2;1,1;".. self:get_state_button_image(mem) ..";state_button;]" "image_button[2,2.2;1,1;".. self:get_state_button_image(mem) ..";state_button;]"
end end
@ -156,7 +154,7 @@ local tubing = {
} }
local _, node_name_ta3, _ = local _, node_name_ta3, _ =
techage.register_consumer("pumpjack", I("TA3 Oil Pumpjack"), tiles, { techage.register_consumer("pumpjack", S("TA3 Oil Pumpjack"), tiles, {
cycle_time = CYCLE_TIME, cycle_time = CYCLE_TIME,
standby_ticks = STANDBY_TICKS, standby_ticks = STANDBY_TICKS,
formspec = formspec, formspec = formspec,
@ -192,6 +190,7 @@ minetest.register_craft({
}, },
}) })
techage.register_help_page(I("TA3 Oil Pumpjack"), techage.register_entry_page("ta3op", "pumpjack",
I([[The Pumpjack works similar to a pusher but needs S("TA3 Oil Pumpjack"),
electricity for operation.]]), "techage:ta3_pumpjack_pas") S("The Pumpjack works similar to a pusher. It pumps one oil item every 8 seconds. It needs 16 units of electrical power."),
"techage:ta3_pumpjack_pas")

View File

@ -13,17 +13,12 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
minetest.register_node("techage:oiltower1", { minetest.register_node("techage:oiltower1", {
description = I("TA3 Oil Tower"), description = S("TA3 Derrick"),
tiles = { tiles = {
"techage_oil_tower1.png", "techage_oil_tower1.png",
}, },
@ -49,7 +44,7 @@ minetest.register_node("techage:oiltower1", {
}) })
minetest.register_node("techage:oiltower2", { minetest.register_node("techage:oiltower2", {
description = I("TA3 Oil Tower"), description = S("TA3 Derrick"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_oil_tower_top.png^[transformR180", "techage_oil_tower_top.png^[transformR180",
@ -81,7 +76,7 @@ minetest.register_node("techage:oiltower2", {
}) })
minetest.register_node("techage:oiltower3", { minetest.register_node("techage:oiltower3", {
description = I("TA3 Oil Tower"), description = S("TA3 Derrick"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_oil_tower_top.png^[transformR180", "techage_oil_tower_top.png^[transformR180",
@ -113,7 +108,7 @@ minetest.register_node("techage:oiltower3", {
}) })
minetest.register_node("techage:oiltower4", { minetest.register_node("techage:oiltower4", {
description = I("TA3 Oil Tower"), description = S("TA3 Derrick"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_oil_tower_top.png^[transformR180", "techage_oil_tower_top.png^[transformR180",
@ -145,7 +140,7 @@ minetest.register_node("techage:oiltower4", {
}) })
minetest.register_node("techage:oiltower5", { minetest.register_node("techage:oiltower5", {
description = I("TA4 Oil Tower"), description = S("TA4 Derrick"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_oil_tower1.png", "techage_oil_tower1.png",
@ -167,7 +162,7 @@ minetest.register_node("techage:oiltower5", {
}) })
minetest.register_node("techage:oil_drillbit", { minetest.register_node("techage:oil_drillbit", {
description = I("TA3 Drill Bit"), description = S("TA3 Drill Bit"),
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"techage_oil_drillbit.png"}, tiles = {"techage_oil_drillbit.png"},
inventory_image = "techage_oil_drillbit_inv.png", inventory_image = "techage_oil_drillbit_inv.png",
@ -180,7 +175,7 @@ minetest.register_node("techage:oil_drillbit", {
}) })
minetest.register_node("techage:oil_drillbit2", { minetest.register_node("techage:oil_drillbit2", {
description = I("TA3 Drill Bit"), description = S("TA3 Drill Bit"),
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"techage_oil_drillbit.png"}, tiles = {"techage_oil_drillbit.png"},
inventory_image = "techage_oil_drillbit_inv.png", inventory_image = "techage_oil_drillbit_inv.png",
@ -274,12 +269,12 @@ techage.oiltower = {}
-- 1) mem.assemble_locked is true while the tower is being assembled/disassembled -- 1) mem.assemble_locked is true while the tower is being assembled/disassembled
-- 2) mem.assemble_build is true if the tower is assembled -- 2) mem.assemble_build is true if the tower is assembled
function techage.oiltower.build(pos, player_name) function techage.oiltower.build(pos, player_name)
minetest.chat_send_player(player_name, I("[TA] Tower is being built!")) minetest.chat_send_player(player_name, S("[TA] Derrick is being built!"))
techage.assemble.build(pos, AssemblyPlan, player_name) techage.assemble.build(pos, AssemblyPlan, player_name)
end end
function techage.oiltower.remove(pos, player_name) function techage.oiltower.remove(pos, player_name)
minetest.chat_send_player(player_name, I("[TA] Tower is being removed!")) minetest.chat_send_player(player_name, S("[TA] Derrick is being removed!"))
techage.assemble.remove(pos, AssemblyPlan, player_name) techage.assemble.remove(pos, AssemblyPlan, player_name)
end end

View File

@ -13,14 +13,9 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local Pipe = tubelib2.Tube:new({ local Pipe = tubelib2.Tube:new({
dirs_to_check = {1,2,3,4,5,6}, dirs_to_check = {1,2,3,4,5,6},
@ -63,7 +58,7 @@ end)
minetest.register_node("techage:biogas_pipeS", { minetest.register_node("techage:biogas_pipeS", {
description = I("TA3 Biogas Pipe"), description = S("TA3 Biogas Pipe"),
tiles = { tiles = {
"techage_gaspipe.png^[transformR90", "techage_gaspipe.png^[transformR90",
"techage_gaspipe.png^[transformR90", "techage_gaspipe.png^[transformR90",
@ -105,7 +100,7 @@ minetest.register_node("techage:biogas_pipeS", {
}) })
minetest.register_node("techage:biogas_pipeA", { minetest.register_node("techage:biogas_pipeA", {
description = I("TA3 Biogas Pipe"), description = S("TA3 Biogas Pipe"),
tiles = { tiles = {
"techage_gaspipe_knee2.png", "techage_gaspipe_knee2.png",
"techage_gaspipe_hole2.png^[transformR180", "techage_gaspipe_hole2.png^[transformR180",

View File

@ -13,14 +13,9 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local Axle = tubelib2.Tube:new({ local Axle = tubelib2.Tube:new({
dirs_to_check = {1,2,3,4,5,6}, dirs_to_check = {1,2,3,4,5,6},
@ -45,7 +40,7 @@ end)
techage.Axle = Axle techage.Axle = Axle
minetest.register_node("techage:axle", { minetest.register_node("techage:axle", {
description = I("TA2 Drive Axle"), description = S("TA2 Drive Axle"),
tiles = { tiles = {
"techage_axleR.png", "techage_axleR.png",
"techage_axleR.png", "techage_axleR.png",
@ -84,7 +79,7 @@ minetest.register_node("techage:axle", {
}) })
minetest.register_node("techage:axle_on", { minetest.register_node("techage:axle_on", {
description = I("TA2 Drive Axle"), description = S("TA2 Drive Axle"),
tiles = { tiles = {
{ {
image = "techage_axle4R.png", image = "techage_axle4R.png",

View File

@ -13,13 +13,9 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local Cable = tubelib2.Tube:new({ local Cable = tubelib2.Tube:new({
dirs_to_check = {1,2,3,4,5,6}, dirs_to_check = {1,2,3,4,5,6},
@ -56,7 +52,7 @@ end
minetest.register_node("techage:electric_cableS", { minetest.register_node("techage:electric_cableS", {
description = I("TA Electric Cable"), description = S("TA Electric Cable"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_electric_cable.png", "techage_electric_cable.png",
@ -99,7 +95,7 @@ minetest.register_node("techage:electric_cableS", {
}) })
minetest.register_node("techage:electric_cableA", { minetest.register_node("techage:electric_cableA", {
description = I("TA Electric Cable"), description = S("TA Electric Cable"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_electric_cable.png", "techage_electric_cable.png",

View File

@ -14,13 +14,11 @@
-- for lazy programmers -- for lazy programmers
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local Cable = techage.ElectricCable local Cable = techage.ElectricCable
local power_switched = techage.power.power_switched local power_switched = techage.power.power_switched
local power_available = techage.power.power_available
local size = 3/32 local size = 3/32
local Boxes = { local Boxes = {
@ -33,7 +31,7 @@ local Boxes = {
} }
techage.register_junction("techage:electric_junction", 2/8, Boxes, Cable, { techage.register_junction("techage:electric_junction", 2/8, Boxes, Cable, {
description = I("TA Electric Junction Box"), description = S("TA Electric Junction Box"),
tiles = {"techage_electric_junction.png"}, tiles = {"techage_electric_junction.png"},
groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 3, techage_trowel = 1}, groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 3, techage_trowel = 1},
sounds = default.node_sound_defaults(), sounds = default.node_sound_defaults(),
@ -44,6 +42,13 @@ techage.register_junction("techage:electric_junction", 2/8, Boxes, Cable, {
minetest.swap_node(pos, {name = name, param2 = 0}) minetest.swap_node(pos, {name = name, param2 = 0})
power_switched(pos) power_switched(pos)
end, end,
is_power_available = function(pos)
if power_available(pos) then
return "on"
else
return "off"
end
end,
}) })
minetest.register_craft({ minetest.register_craft({

View File

@ -12,20 +12,15 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local Cable = techage.ElectricCable local Cable = techage.ElectricCable
-- Primary techage.ElectricCable node -- Primary techage.ElectricCable node
minetest.register_node("techage:power_line", { minetest.register_node("techage:power_line", {
description = I("TA Power Line"), description = S("TA Power Line"),
tiles = {"techage_power_line.png"}, tiles = {"techage_power_line.png"},
inventory_image = 'techage_power_line_inv.png', inventory_image = 'techage_power_line_inv.png',
after_place_node = function(pos, placer, itemstack, pointed_thing) after_place_node = function(pos, placer, itemstack, pointed_thing)
@ -64,7 +59,7 @@ minetest.register_node("techage:power_line", {
}) })
minetest.register_node("techage:power_pole", { minetest.register_node("techage:power_pole", {
description = I("TA Power Pole"), description = S("TA Power Pole"),
--tiles = {"techage_power_pole.png"}, --tiles = {"techage_power_pole.png"},
tiles = { tiles = {
"default_wood.png^techage_power_pole_top.png", "default_wood.png^techage_power_pole_top.png",

View File

@ -13,13 +13,10 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local Cable = techage.ElectricCable local Cable = techage.ElectricCable
local power_cut = techage.power.power_cut local power_cut = techage.power.power_cut
@ -67,7 +64,7 @@ end
minetest.register_node("techage:powerswitch", { minetest.register_node("techage:powerswitch", {
description = I("TA Power Switch"), description = S("TA Power Switch"),
inventory_image = "techage_appl_switch_inv.png", inventory_image = "techage_appl_switch_inv.png",
tiles = { tiles = {
'techage_appl_switch_off.png', 'techage_appl_switch_off.png',
@ -97,7 +94,7 @@ minetest.register_node("techage:powerswitch", {
minetest.register_node("techage:powerswitch_on", { minetest.register_node("techage:powerswitch_on", {
description = I("TA Power Switch"), description = S("TA Power Switch"),
inventory_image = "techage_appl_switch_inv.png", inventory_image = "techage_appl_switch_inv.png",
tiles = { tiles = {
'techage_appl_switch_on.png', 'techage_appl_switch_on.png',
@ -143,7 +140,7 @@ local function on_rotate(pos, node, user, mode, new_param2)
end end
minetest.register_node("techage:powerswitch_box", { minetest.register_node("techage:powerswitch_box", {
description = I("TA Power Switch Box"), description = S("TA Power Switch Box"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
'techage_electric_switch.png', 'techage_electric_switch.png',

View File

@ -13,14 +13,9 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local Pipe = tubelib2.Tube:new({ local Pipe = tubelib2.Tube:new({
dirs_to_check = {1,2,3,4,5,6}, dirs_to_check = {1,2,3,4,5,6},
@ -43,7 +38,7 @@ techage.SteamPipe = Pipe
minetest.register_node("techage:steam_pipeS", { minetest.register_node("techage:steam_pipeS", {
description = I("TA2 Steam Pipe"), description = S("TA2 Steam Pipe"),
tiles = { tiles = {
"techage_steam_pipe.png^[transformR90", "techage_steam_pipe.png^[transformR90",
"techage_steam_pipe.png^[transformR90", "techage_steam_pipe.png^[transformR90",
@ -82,7 +77,7 @@ minetest.register_node("techage:steam_pipeS", {
}) })
minetest.register_node("techage:steam_pipeA", { minetest.register_node("techage:steam_pipeA", {
description = I("TA2 Steam Pipe"), description = S("TA2 Steam Pipe"),
tiles = { tiles = {
"techage_steam_knee2.png", "techage_steam_knee2.png",
"techage_steam_hole2.png^[transformR180", "techage_steam_hole2.png^[transformR180",

View File

@ -13,13 +13,9 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local CYCLE_TIME = 4 local CYCLE_TIME = 4
local STANDBY_TICKS = 2 local STANDBY_TICKS = 2
@ -53,7 +49,7 @@ local function formspec(self, pos, mem)
temp..":techage_form_temp_fg.png]".. temp..":techage_form_temp_fg.png]"..
"image[7,0.5;1,2;"..techage.power.formspec_power_bar(1, ratio).."]".. "image[7,0.5;1,2;"..techage.power.formspec_power_bar(1, ratio).."]"..
"image_button[6,1;1,1;".. self:get_state_button_image(mem) ..";state_button;]".. "image_button[6,1;1,1;".. self:get_state_button_image(mem) ..";state_button;]"..
"button[3,1.5;2,1;update;"..I("Update").."]".. "button[3,1.5;2,1;update;"..S("Update").."]"..
"list[current_player;main;0,3;8,4;]".. "list[current_player;main;0,3;8,4;]"..
"listring[current_name;water]".. "listring[current_name;water]"..
"listring[current_player;main]".. "listring[current_player;main]"..
@ -215,7 +211,7 @@ local function allow_metadata_inventory_take(pos, listname, index, stack, player
end end
minetest.register_node("techage:boiler1", { minetest.register_node("techage:boiler1", {
description = I("TA2 Boiler Base"), description = S("TA2 Boiler Base"),
tiles = {"techage_boiler.png"}, tiles = {"techage_boiler.png"},
drawtype = "mesh", drawtype = "mesh",
mesh = "techage_boiler.obj", mesh = "techage_boiler.obj",
@ -232,7 +228,7 @@ minetest.register_node("techage:boiler1", {
-- boiler2: Main part, needed as generator -- boiler2: Main part, needed as generator
minetest.register_node("techage:boiler2", { minetest.register_node("techage:boiler2", {
description = I("TA2 Boiler Top"), description = S("TA2 Boiler Top"),
tiles = {"techage_boiler2.png"}, tiles = {"techage_boiler2.png"},
drawtype = "mesh", drawtype = "mesh",
mesh = "techage_boiler.obj", mesh = "techage_boiler.obj",
@ -316,13 +312,12 @@ minetest.register_craft({
}, },
}) })
techage.register_help_page(I("TA2 Boiler Base"), techage.register_entry_page("ta2", "boiler1",
I([[Part of the steam engine. S("TA2 Boiler Base"),
Has to be placed on top of the Firebox S("Part of the steam engine. Has to be placed on top of the Firebox and filled with water.@n"..
and filled with water. "(see TA2 Steam Engine)"), "techage:boiler1")
(see TA2 Steam Engine)]]), "techage:boiler1")
techage.register_help_page(I("TA2 Boiler Top"), techage.register_entry_page("ta2", "boiler2",
I([[Part of the steam engine. S("TA2 Boiler Top"),
Has to be placed on top of TA2 Boiler Base. S("Part of the steam engine. Has to be placed on top of TA2 Boiler Base.@n(see TA2 Steam Engine)"),
(see TA2 Steam Engine)]]), "techage:boiler2") "techage:boiler2")

View File

@ -13,13 +13,9 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local Pipe = techage.SteamPipe local Pipe = techage.SteamPipe
@ -40,7 +36,7 @@ local function after_tube_update(node, pos, out_dir, peer_pos, peer_in_dir)
end end
minetest.register_node("techage:cylinder", { minetest.register_node("techage:cylinder", {
description = I("TA2 Cylinder"), description = S("TA2 Cylinder"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_filling_ta2.png^techage_frame_ta2.png", "techage_filling_ta2.png^techage_frame_ta2.png",
@ -60,7 +56,7 @@ minetest.register_node("techage:cylinder", {
}) })
minetest.register_node("techage:cylinder_on", { minetest.register_node("techage:cylinder_on", {
description = I("TA2 Cylinder"), description = S("TA2 Cylinder"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_filling_ta2.png^techage_frame_ta2.png", "techage_filling_ta2.png^techage_frame_ta2.png",
@ -110,7 +106,6 @@ techage.register_node({"techage:cylinder", "techage:cylinder_on"}, {
if topic == "trigger" then if topic == "trigger" then
local power = techage.transfer(pos, "R", "trigger", nil, nil, { local power = techage.transfer(pos, "R", "trigger", nil, nil, {
"techage:flywheel", "techage:flywheel_on"}) or 0 "techage:flywheel", "techage:flywheel_on"}) or 0
--print("trigger", power, mem.running)
if not power then if not power then
return 0 return 0
@ -141,8 +136,8 @@ minetest.register_craft({
}, },
}) })
techage.register_help_page(I("TA2 Cylinder"), techage.register_entry_page("ta2", "cylinder",
I([[Part of the steam engine. S("TA2 Cylinder"),
Has to be placed side by side S("Part of the steam engine. Has to be placed side by side with the TA2 Flywheel.@n"..
with the TA2 Flywheel. "(see TA2 Steam Engine)"),
(see TA2 Steam Engine)]]), "techage:cylinder") "techage:cylinder")

View File

@ -13,13 +13,9 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local firebox = techage.firebox local firebox = techage.firebox
@ -56,7 +52,7 @@ local function node_timer(pos, elapsed)
end end
minetest.register_node("techage:firebox", { minetest.register_node("techage:firebox", {
description = I("TA2 Firebox"), description = S("TA2 Firebox"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_firebox.png^techage_appl_open.png^techage_frame_ta2.png", "techage_firebox.png^techage_appl_open.png^techage_frame_ta2.png",
@ -103,7 +99,7 @@ minetest.register_node("techage:firebox", {
}) })
minetest.register_node("techage:firebox_on", { minetest.register_node("techage:firebox_on", {
description = I("TA2 Firebox"), description = S("TA2 Firebox"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_firebox.png^techage_frame_ta2.png", "techage_firebox.png^techage_frame_ta2.png",

View File

@ -13,13 +13,9 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local STANDBY_TICKS = 4 local STANDBY_TICKS = 4
local COUNTDOWN_TICKS = 4 local COUNTDOWN_TICKS = 4
@ -37,7 +33,7 @@ local function formspec(self, pos, mem)
default.gui_slots.. default.gui_slots..
"image[6,0.5;1,2;"..techage.power.formspec_power_bar(PWR_CAPA, mem.provided).."]".. "image[6,0.5;1,2;"..techage.power.formspec_power_bar(PWR_CAPA, mem.provided).."]"..
"image_button[5,1;1,1;".. self:get_state_button_image(mem) ..";state_button;]".. "image_button[5,1;1,1;".. self:get_state_button_image(mem) ..";state_button;]"..
"button[2,1.5;2,1;update;"..I("Update").."]".. "button[2,1.5;2,1;update;"..S("Update").."]"..
"list[current_player;main;0,3;8,4;]".. "list[current_player;main;0,3;8,4;]"..
default.get_hotbar_bg(0, 3) default.get_hotbar_bg(0, 3)
end end
@ -124,7 +120,7 @@ local function on_rightclick(pos)
end end
minetest.register_node("techage:flywheel", { minetest.register_node("techage:flywheel", {
description = I("TA2 Flywheel"), description = S("TA2 Flywheel"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_filling_ta2.png^techage_frame_ta2.png", "techage_filling_ta2.png^techage_frame_ta2.png",
@ -155,7 +151,7 @@ minetest.register_node("techage:flywheel", {
}) })
minetest.register_node("techage:flywheel_on", { minetest.register_node("techage:flywheel_on", {
description = I("TA2 Flywheel"), description = S("TA2 Flywheel"),
tiles = { tiles = {
-- up, down, right, left, back, front -- up, down, right, left, back, front
"techage_filling_ta2.png^techage_frame_ta2.png", "techage_filling_ta2.png^techage_frame_ta2.png",
@ -234,11 +230,9 @@ minetest.register_craft({
}, },
}) })
techage.register_help_page(I("TA2 Flywheel"), techage.register_entry_page("ta2", "flywheel",
I([[Part of the steam engine. S("TA2 Flywheel"),
Has to be placed side by side S("Part of the steam engine. Has to be placed side by side with the TA2 Cylinder.@n"..
with the TA2 Cylinder. "Used to turn on/off the steam engine. Connect the Flywheel with your TA2 machines "..
Used to turn on/off the steam engine. "by means of Axles and Gearboxes.@n"..
Connect the Flywheel with your TA2 machines "(see TA2 Steam Engine)"), "techage:flywheel")
by means of Axles and Gearboxes
(see TA2 Steam Engine)]]), "techage:flywheel")

View File

@ -13,13 +13,9 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
local PWR_NEEDED = 1 local PWR_NEEDED = 1
local CYCLE_TIME = 2 local CYCLE_TIME = 2
@ -60,7 +56,7 @@ local function after_place_node(pos, placer, itemstack, pointed_thing)
end end
minetest.register_node("techage:gearbox", { minetest.register_node("techage:gearbox", {
description = I("TA2 Gearbox"), description = S("TA2 Gearbox"),
tiles = {"techage_filling_ta2.png^techage_axle_gearbox.png^techage_frame_ta2.png"}, tiles = {"techage_filling_ta2.png^techage_axle_gearbox.png^techage_frame_ta2.png"},
on_construct = tubelib2.init_mem, on_construct = tubelib2.init_mem,

View File

@ -12,24 +12,15 @@
]]-- ]]--
-- Load support for intllib. local S = techage.S
local MP = minetest.get_modpath("techage")
local S, NS = dofile(MP.."/intllib.lua")
techage.register_chap_page(S("Steam Age (TA2)"), S([[Steam Age is the second level of the available technic stages. local HelpText = S("Build a steam engine according to the plan with TA2 Firebox, TA2 Boiler, Steam Pipes, TA2 Cylinder and TA2 Flywheel.@n"..
The goal of TA2 is build a steam engine and machines "- Heat the Firebox with coal/charcoal@n"..
to produce ores and vacuum tubes for the first "- Fill the boiler with water (more than one bucket is needed)@n"..
electronic devices and machines in TA3.]]), "techage:vacuum_tube") "- Wait until the water is heated@n"..
"- Open the steam ventil@n"..
local HelpText = S([[1. Build a steam engine according "- Start the Flywheel@n"..
to the plan with TA2 Firebox, TA2 Boiler, "- Connect the Flywheel with your machines by means of Axles and Gearboxes")
Steam Pipes, TA2 Cyclinder and TA2 Flywheel.
2. Heat the Firebox with coal/charcoal
3. Fill the boiler with water (more than one bucket is needed)
4. Wait until the water is heated
5. Open the steam ventil
6. Start the Flywheel
7. Connect the Flywheel with your machines by means of Axles and Gearboxes]])
local Images = { local Images = {
@ -44,6 +35,7 @@ local Images = {
"techage_filling_ta2.png^techage_frame_ta2.png^techage_flywheel.png^[transformFX]"}, "techage_filling_ta2.png^techage_frame_ta2.png^techage_flywheel.png^[transformFX]"},
} }
techage.register_help_page("Steam Engine", HelpText, nil, Images) techage.register_entry_page("ta2", "steam_engine",
S("Steam Engine"), HelpText, nil, Images)

BIN
textures/techage_flame.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 B

BIN
textures/techage_hopper.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -12,9 +12,8 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
--local function destroy_node(itemstack, placer, pointed_thing) --local function destroy_node(itemstack, placer, pointed_thing)
-- if pointed_thing.type == "node" then -- if pointed_thing.type == "node" then
@ -42,8 +41,8 @@ local function read_state(itemstack, user, pointed_thing)
local pos = pointed_thing.under local pos = pointed_thing.under
if pos and user then if pos and user then
local number = techage.get_node_number(pos) local number = techage.get_node_number(pos)
if number then
local ndef = minetest.registered_nodes[minetest.get_node(pos).name] local ndef = minetest.registered_nodes[minetest.get_node(pos).name]
if number then
if ndef and ndef.description then if ndef and ndef.description then
local state = techage.send_single(number, "state", nil) local state = techage.send_single(number, "state", nil)
if state and state ~= "" and state ~= "unsupported" then if state and state ~= "" and state ~= "unsupported" then
@ -61,15 +60,26 @@ local function read_state(itemstack, user, pointed_thing)
if load and load ~= "" and load ~= "unsupported" then if load and load ~= "" and load ~= "unsupported" then
minetest.chat_send_player(user:get_player_name(), ndef.description.." "..number..": load = "..load.." % ") minetest.chat_send_player(user:get_player_name(), ndef.description.." "..number..": load = "..load.." % ")
end end
local power = techage.send_single(number, "power", nil)
if power and power ~= "" and power ~= "unsupported" then
minetest.chat_send_player(user:get_player_name(), ndef.description.." "..number..": power = "..power.." % ")
end
itemstack:add_wear(65636/200)
return itemstack
end
elseif ndef and ndef.description then
if ndef.is_power_available then
local power = ndef.is_power_available(pos)
minetest.chat_send_player(user:get_player_name(), ndef.description..": power = "..power.." ")
end
itemstack:add_wear(65636/200) itemstack:add_wear(65636/200)
return itemstack return itemstack
end end
end end
end end
end
minetest.register_tool("techage:repairkit", { minetest.register_tool("techage:repairkit", {
description = "TechAge Repair Kit", description = S("TechAge Repair Kit"),
inventory_image = "techage_repairkit.png", inventory_image = "techage_repairkit.png",
wield_image = "techage_repairkit.png^[transformR270", wield_image = "techage_repairkit.png^[transformR270",
groups = {cracky=1, book=1}, groups = {cracky=1, book=1},
@ -80,7 +90,7 @@ minetest.register_tool("techage:repairkit", {
minetest.register_tool("techage:end_wrench", { minetest.register_tool("techage:end_wrench", {
description = "TechAge End Wrench (use = read status, place = cmd: on/off)", description = S("TechAge End Wrench (use = read status, place = cmd: on/off)"),
inventory_image = "techage_end_wrench.png", inventory_image = "techage_end_wrench.png",
wield_image = "techage_end_wrench.png", wield_image = "techage_end_wrench.png",
groups = {cracky=1, book=1}, groups = {cracky=1, book=1},
@ -107,3 +117,11 @@ minetest.register_craft({
{"default:steel_ingot", "", ""}, {"default:steel_ingot", "", ""},
}, },
}) })
techage.register_entry_page("ta", "end_wrench",
S("TechAge End Wrench"),
S("The End Wrench is a tool to read any kind od status information from a node with command inderface.@n"..
"- use (left mouse button) = read status@n"..
"- place (right mouse button) = send command: on/off"),
"techage:end_wrench")

View File

@ -13,13 +13,10 @@
]]-- ]]--
-- for lazy programmers -- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local S = techage.S
-- Load support for intllib.
local MP = minetest.get_modpath("techage")
local I,_ = dofile(MP.."/intllib.lua")
-- used by other tools: dug_node[player_name] = pos -- used by other tools: dug_node[player_name] = pos
techage.dug_node = {} techage.dug_node = {}
@ -81,7 +78,7 @@ local function replace_node(itemstack, placer, pointed_thing)
end end
minetest.register_node("techage:trowel", { minetest.register_node("techage:trowel", {
description = I("TechAge Trowel (uses items from the first, left inventory stack)"), description = S("TechAge Trowel"),
inventory_image = "techage_trowel.png", inventory_image = "techage_trowel.png",
wield_image = "techage_trowel.png", wield_image = "techage_trowel.png",
use_texture_alpha = true, use_texture_alpha = true,
@ -114,3 +111,9 @@ minetest.register_craft({
{"", "", "default:stick"}, {"", "", "default:stick"},
}, },
}) })
techage.register_entry_page("ta", "trowel",
S("TechAge Trowel"),
S("Tool to hide and retrieve electrical wiring in walls and floors.@n"..
"The material for hiding the cables must be in the left stack of the first row in the player inventory."),
"techage:trowel")