Update technic modpack to Git commit 43acec2...
https://github.com/minetest-mods/technic/tree/43acec2master
|
@ -142,7 +142,7 @@ The game includes the mods from the default [minetest_game](https://github.com/m
|
|||
* [mesecons][] ([LGPL / CC BY-SA][lic.mesecons]) -- version [1.2 (d4e05f3 Git)][ver.mesecons] *2018-07-23*
|
||||
* [minetest_game][] ([LGPL][lic.lgpl2.1] / [CC BY-SA][lic.ccbysa3.0]) -- version: [5.4.1][ver.minetest_game] *2021-04-10*
|
||||
* [moremesecons][] ([MPL][lic.mpl2.0]) -- version [8a56370 Git][ver.moremesecons] *2018-02-27*
|
||||
* [technic][] ([LGPL][lic.lgpl2.0]) -- version: [6664714 Git][ver.technic] *2018-06-28* ([patched][patch.technic])
|
||||
* [technic][] ([LGPL][lic.lgpl2.0]) -- version: [43acec2 Git][ver.technic] *2021-02-09*
|
||||
|
||||
|
||||
---
|
||||
|
@ -476,7 +476,7 @@ The game includes the mods from the default [minetest_game](https://github.com/m
|
|||
[ver.snowdrift]: https://github.com/paramat/snowdrift/tree/0a0787a
|
||||
[ver.spawneggs]: https://github.com/thefamilygrog66/spawneggs/tree/4650370
|
||||
[ver.spectator_mode]: https://github.com/minetest-mods/spectator_mode/tree/7d68bec
|
||||
[ver.technic]: https://github.com/minetest-mods/technic/tree/6664714
|
||||
[ver.technic]: https://github.com/minetest-mods/technic/tree/43acec2
|
||||
[ver.technic_armor]: https://github.com/stujones11/technic_armor/tree/694642f
|
||||
[ver.throwing]: https://github.com/PilzAdam/throwing/tree/90bcf43
|
||||
[ver.tnt]: https://github.com/PilzAdam/TNT/tree/d6a0b7d
|
||||
|
|
|
@ -1,23 +1,54 @@
|
|||
Technic
|
||||
=======
|
||||
# Technic
|
||||
|
||||
[![Build status](https://github.com/minetest-mods/technic/workflows/Check%20&%20Release/badge.svg)](https://github.com/minetest-mods/technic/actions)
|
||||
[![License](https://img.shields.io/badge/license-LGPLv2.0%2B-purple.svg)](https://www.gnu.org/licenses/old-licenses/lgpl-2.0.en.html)
|
||||
|
||||
This Minetest modpack adds machinery and automation procedure content to your
|
||||
world. A few notable features:
|
||||
|
||||
* Electric circuits
|
||||
* Automated material processing (ores, wood, ...)
|
||||
* Extended chest functionalities
|
||||
|
||||
## Dependencies
|
||||
|
||||
* Minetest 5.0.0 or newer
|
||||
* [Minetest Game](https://github.com/minetest/minetest_game/)
|
||||
* [mesecons](https://github.com/minetest-mods/mesecons) -> signalling events
|
||||
* [pipeworks](https://gitlab.com/VanessaE/pipeworks/) -> automation of item transport
|
||||
* [moreores](https://github.com/minetest-mods/moreores/) -> additional ores
|
||||
* [basic_materials](https://gitlab.com/VanessaE/basic_materials) -> basic craft items
|
||||
* Supports [moretrees](https://gitlab.com/VanessaE/moretrees) -> rubber trees
|
||||
* Consult `depends.txt` or `mod.conf` of each mod for further dependency information.
|
||||
|
||||
|
||||
## FAQ
|
||||
|
||||
The modpack is explained in the [Manual](manual.md) included in this repository.
|
||||
|
||||
1. My technic circuit doesn't work. No power is distributed.
|
||||
* Make sure you have a switching station connected.
|
||||
2. My wires do not connect to the machines.
|
||||
* Each machine type requires its own cable type. If you do not have a
|
||||
matching circuit, consider using a "Supply Converter" for simplicity.
|
||||
|
||||
The API documentation can be found here: [Technic API](technic/doc/api.md)
|
||||
|
||||
|
||||
## License
|
||||
|
||||
Unless otherwise stated, all components of this modpack are licensed under the
|
||||
LGPLv2 or later. See also the individual mod folders for their
|
||||
secondary/alternate licenses, if any.
|
||||
|
||||
|
||||
### Credits
|
||||
|
||||
Contributors in alphabetical order:
|
||||
|
||||
Credits for contributing to the project (in alphabetical order):
|
||||
* kpoppel
|
||||
* Nekogloop
|
||||
* Nore/Ekdohibs
|
||||
* ShadowNinja
|
||||
* VanessaE
|
||||
* And many others...
|
||||
|
||||
FAQ
|
||||
---
|
||||
|
||||
1. My technic circuit doesn't work. No power is distrubuted.
|
||||
* A: Make sure you have a switching station connected.
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
Unless otherwise stated, all components of this modpack are licensed under the
|
||||
LGPL, V2 or later. See also the individual mod folders for their
|
||||
secondary/alternate licenses, if any.
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
default
|
||||
basic_materials
|
||||
intllib?
|
||||
|
||||
moreblocks?
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
--Minetest 0.4.7 mod: concrete
|
||||
--Minetest 0.4.7 mod: concrete
|
||||
--(c) 2013 by RealBadAngel <mk@realbadangel.pl>
|
||||
|
||||
local technic = rawget(_G, "technic") or {}
|
||||
technic.concrete_posts = {}
|
||||
|
||||
-- Boilerplate to support localized strings if intllib mod is installed.
|
||||
local S = rawget(_G, "intllib") and (intllib.make_gettext_pair() or intllib.Getter()) or function(s) return s end
|
||||
local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end
|
||||
|
||||
for i = 0, 31 do
|
||||
minetest.register_alias("technic:concrete_post"..i,
|
||||
|
@ -23,24 +23,6 @@ else
|
|||
steel_ingot = "default:steel_ingot"
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'technic:rebar 6',
|
||||
recipe = {
|
||||
{'','', steel_ingot},
|
||||
{'',steel_ingot,''},
|
||||
{steel_ingot, '', ''},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'technic:concrete 5',
|
||||
recipe = {
|
||||
{'default:stone','technic:rebar','default:stone'},
|
||||
{'technic:rebar','default:stone','technic:rebar'},
|
||||
{'default:stone','technic:rebar','default:stone'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'technic:concrete_post_platform 6',
|
||||
recipe = {
|
||||
|
@ -51,9 +33,9 @@ minetest.register_craft({
|
|||
minetest.register_craft({
|
||||
output = 'technic:concrete_post 12',
|
||||
recipe = {
|
||||
{'default:stone','technic:rebar','default:stone'},
|
||||
{'default:stone','technic:rebar','default:stone'},
|
||||
{'default:stone','technic:rebar','default:stone'},
|
||||
{'default:stone','basic_materials:steel_bar','default:stone'},
|
||||
{'default:stone','basic_materials:steel_bar','default:stone'},
|
||||
{'default:stone','basic_materials:steel_bar','default:stone'},
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -66,18 +48,6 @@ minetest.register_craft({
|
|||
}
|
||||
})
|
||||
|
||||
minetest.register_craftitem(":technic:rebar", {
|
||||
description = S("Rebar"),
|
||||
inventory_image = "technic_rebar.png",
|
||||
})
|
||||
|
||||
minetest.register_node(":technic:concrete", {
|
||||
description = S("Concrete Block"),
|
||||
tiles = {"technic_concrete_block.png",},
|
||||
groups = {cracky=1, level=2, concrete=1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node(":technic:blast_resistant_concrete", {
|
||||
description = S("Blast-resistant Concrete Block"),
|
||||
tiles = {"technic_blast_resistant_concrete_block.png",},
|
||||
|
@ -91,6 +61,20 @@ minetest.register_node(":technic:blast_resistant_concrete", {
|
|||
end,
|
||||
})
|
||||
|
||||
if minetest.get_modpath("moreblocks") then
|
||||
stairsplus:register_all("technic","blast_resistant_concrete","technic:blast_resistant_concrete",{
|
||||
description = "Blast-resistant Concrete",
|
||||
tiles = {"technic_blast_resistant_concrete_block.png",},
|
||||
groups = {cracky=1, level=3, concrete=1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
on_blast = function(pos, intensity)
|
||||
if intensity > 1 then
|
||||
minetest.remove_node(pos)
|
||||
minetest.add_item(pos, "technic:blast_resistant_concrete")
|
||||
end
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
local box_platform = {-0.5, 0.3, -0.5, 0.5, 0.5, 0.5}
|
||||
local box_post = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15}
|
||||
|
@ -101,19 +85,19 @@ local box_right = {0, -0.3, -0.1, 0.5, 0.3, 0.1}
|
|||
|
||||
minetest.register_node(":technic:concrete_post_platform", {
|
||||
description = S("Concrete Post Platform"),
|
||||
tiles = {"technic_concrete_block.png",},
|
||||
tiles = {"basic_materials_concrete_block.png",},
|
||||
groups={cracky=1, level=2},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
paramtype = "light",
|
||||
drawtype = "nodebox",
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {box_platform}
|
||||
},
|
||||
on_place = function (itemstack, placer, pointed_thing)
|
||||
local node = minetest.get_node(pointed_thing.under)
|
||||
if node.name ~= "technic:concrete_post" then
|
||||
return minetest.item_place_node(itemstack, placer, pointed_thing)
|
||||
if node.name ~= "technic:concrete_post" then
|
||||
return minetest.item_place_node(itemstack, placer, pointed_thing)
|
||||
end
|
||||
minetest.set_node(pointed_thing.under, {name="technic:concrete_post_with_platform"})
|
||||
itemstack:take_item()
|
||||
|
@ -133,7 +117,7 @@ for platform = 0, 1 do
|
|||
|
||||
minetest.register_node(":technic:concrete_post"..(platform == 1 and "_with_platform" or ""), {
|
||||
description = S("Concrete Post"),
|
||||
tiles = {"technic_concrete_block.png"},
|
||||
tiles = {"basic_materials_concrete_block.png"},
|
||||
groups = {cracky=1, level=2, concrete_post=1, not_in_creative_inventory=platform},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
drop = (platform == 1 and "technic:concrete_post_platform" or
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
# technic_concrete translation template
|
||||
|
||||
Rebar = Armature
|
||||
Concrete Block = Bloc de béton
|
||||
Blast-resistant Concrete Block = Bloc de béton anti explosions
|
||||
Concrete Post Platform = Plateforme en béton
|
||||
Concrete Post = Pilier en béton
|
|
@ -0,0 +1,10 @@
|
|||
# Polish Translation for technic_concrete
|
||||
# Polskie tłumaczenie technic_concrete
|
||||
# by mat9117
|
||||
|
||||
Rebar = Pręt zbrojeniowy
|
||||
Concrete Block = Blok betonu
|
||||
Blast-resistant Concrete Block = Przeciwwybuchowy blok betonu
|
||||
Concrete Post Platform = Betonowa platforma
|
||||
Concrete Post = Betonowy słup
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
# Braziliam portuguese translation for technic_concrete
|
||||
# Tradução portuguesa brasileira para technic_concrete
|
||||
# By Sires
|
||||
|
||||
Rebar = Vergalhão
|
||||
Concrete Block = Bloco de Concreto
|
||||
Blast-resistant Concrete Block = Bloco de Concreto resistente-a-explosões
|
||||
Concrete Post Platform = Plataforma para Poste de Concreto
|
||||
Concrete Post = Poste de Concreto
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
name = concrete
|
||||
depends = default
|
||||
optional_depends = basic_materials, intllib, moreblocks
|
Before Width: | Height: | Size: 311 B After Width: | Height: | Size: 214 B |
Before Width: | Height: | Size: 500 B |
Before Width: | Height: | Size: 813 B |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 813 B After Width: | Height: | Size: 583 B |
|
@ -1,6 +1,9 @@
|
|||
default
|
||||
technic_worldgen
|
||||
basic_materials
|
||||
concrete
|
||||
unifieddyes?
|
||||
intllib?
|
||||
moreblocks?
|
||||
steel?
|
||||
streetsmod?
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
-- Minetest 0.4.6 mod: extranodes
|
||||
-- namespace: technic
|
||||
-- Boilerplate to support localized strings if intllib mod is installed.
|
||||
local S = rawget(_G, "intllib") and (intllib.make_gettext_pair() or intllib.Getter()) or function(s) return s end
|
||||
local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end
|
||||
|
||||
if minetest.get_modpath("moreblocks") then
|
||||
|
||||
|
@ -30,7 +30,7 @@ if minetest.get_modpath("moreblocks") then
|
|||
stairsplus:register_all("technic", "concrete", "technic:concrete", {
|
||||
description=S("Concrete"),
|
||||
groups={cracky=3, not_in_creative_inventory=1},
|
||||
tiles={"technic_concrete_block.png"},
|
||||
tiles={"basic_materials_concrete_block.png"},
|
||||
})
|
||||
|
||||
stairsplus:register_all("technic", "zinc_block", "technic:zinc_block", {
|
||||
|
@ -57,12 +57,6 @@ if minetest.get_modpath("moreblocks") then
|
|||
tiles={"technic_stainless_steel_block.png"},
|
||||
})
|
||||
|
||||
stairsplus:register_all("technic", "brass_block", "technic:brass_block", {
|
||||
description=S("Brass Block"),
|
||||
groups={cracky=1, not_in_creative_inventory=1},
|
||||
tiles={"technic_brass_block.png"},
|
||||
})
|
||||
|
||||
function register_technic_stairs_alias(modname, origname, newmod, newname)
|
||||
minetest.register_alias(modname .. ":slab_" .. origname, newmod..":slab_" .. newname)
|
||||
minetest.register_alias(modname .. ":slab_" .. origname .. "_inverted", newmod..":slab_" .. newname .. "_inverted")
|
||||
|
@ -93,7 +87,7 @@ if minetest.get_modpath("moreblocks") then
|
|||
minetest.register_alias(modname .. ":panel_" .. origname .. "_vertical", newmod..":panel_" .. newname .. "_vertical")
|
||||
minetest.register_alias(modname .. ":micro_" .. origname .. "_bottom", newmod..":micro_" .. newname .. "_bottom")
|
||||
minetest.register_alias(modname .. ":micro_" .. origname .. "_top", newmod..":micro_" .. newname .. "_top")
|
||||
end
|
||||
end
|
||||
|
||||
register_technic_stairs_alias("stairsplus", "concrete", "technic", "concrete")
|
||||
register_technic_stairs_alias("stairsplus", "marble", "technic", "marble")
|
||||
|
@ -103,7 +97,7 @@ if minetest.get_modpath("moreblocks") then
|
|||
end
|
||||
|
||||
local iclip_def = {
|
||||
description = "Insulator/cable clip",
|
||||
description = S("Insulator/cable clip"),
|
||||
drawtype = "mesh",
|
||||
mesh = "technic_insulator_clip.obj",
|
||||
tiles = {"technic_insulator_clip.png"},
|
||||
|
@ -113,7 +107,7 @@ local iclip_def = {
|
|||
}
|
||||
|
||||
local iclipfence_def = {
|
||||
description = "Insulator/cable clip",
|
||||
description = S("Insulator/cable clip"),
|
||||
tiles = {"technic_insulator_clip.png"},
|
||||
is_ground_content = false,
|
||||
paramtype = "light",
|
||||
|
@ -146,23 +140,58 @@ local iclipfence_def = {
|
|||
sounds = default.node_sound_stone_defaults(),
|
||||
}
|
||||
|
||||
local sclip_tex = {
|
||||
"technic_insulator_clip.png",
|
||||
{ name = "strut.png^technic_steel_strut_overlay.png", color = "white" },
|
||||
{ name = "strut.png", color = "white" }
|
||||
}
|
||||
|
||||
local streetsmod = minetest.get_modpath("streets") or minetest.get_modpath ("steelsupport")
|
||||
-- cheapie's fork breaks it into several individual mods, with differernt names for the same content.
|
||||
|
||||
if streetsmod then
|
||||
sclip_tex = {
|
||||
"technic_insulator_clip.png",
|
||||
{ name = "streets_support.png^technic_steel_strut_overlay.png", color = "white" },
|
||||
{ name = "streets_support.png", color = "white" }
|
||||
}
|
||||
end
|
||||
|
||||
local sclip_def = {
|
||||
description = S("Steel strut with insulator/cable clip"),
|
||||
drawtype = "mesh",
|
||||
mesh = "technic_steel_strut_with_insulator_clip.obj",
|
||||
tiles = sclip_tex,
|
||||
paramtype = "light",
|
||||
paramtype2 = "wallmounted",
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
groups = { choppy=1, cracky=1 },
|
||||
backface_culling = false
|
||||
}
|
||||
|
||||
if minetest.get_modpath("unifieddyes") then
|
||||
iclip_def.paramtype2 = "colorwallmounted"
|
||||
iclip_def.palette = "unifieddyes_palette_colorwallmounted.png"
|
||||
iclip_def.after_place_node = function(pos, placer, itemstack, pointed_thing)
|
||||
unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
|
||||
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
|
||||
end
|
||||
iclip_def.after_dig_node = unifieddyes.after_dig_node
|
||||
iclip_def.groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, ud_param2_colorable = 1}
|
||||
iclip_def.on_dig = unifieddyes.on_dig
|
||||
|
||||
iclipfence_def.paramtype2 = "color"
|
||||
iclipfence_def.palette = "unifieddyes_palette_extended.png"
|
||||
iclipfence_def.on_construct = unifieddyes.on_construct
|
||||
iclipfence_def.after_place_node = unifieddyes.recolor_on_place
|
||||
iclipfence_def.after_dig_node = unifieddyes.after_dig_node
|
||||
iclipfence_def.groups = {fence=1, choppy=1, snappy=1, oddly_breakable_by_hand=1, ud_param2_colorable = 1}
|
||||
iclipfence_def.place_param2 = 171 -- medium amber, low saturation, closest color to default:wood
|
||||
iclipfence_def.on_dig = unifieddyes.on_dig
|
||||
|
||||
sclip_def.paramtype2 = "colorwallmounted"
|
||||
sclip_def.palette = "unifieddyes_palette_colorwallmounted.png"
|
||||
sclip_def.after_place_node = function(pos, placer, itemstack, pointed_thing)
|
||||
unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
|
||||
end
|
||||
sclip_def.on_dig = unifieddyes.on_dig
|
||||
sclip_def.groups = {choppy=1, cracky=1, ud_param2_colorable = 1}
|
||||
end
|
||||
|
||||
minetest.register_node(":technic:insulator_clip", iclip_def)
|
||||
|
@ -185,3 +214,96 @@ minetest.register_craft({
|
|||
{ "technic:raw_latex", "default:fence_wood", "technic:raw_latex"},
|
||||
}
|
||||
})
|
||||
|
||||
local steelmod = minetest.get_modpath("steel")
|
||||
|
||||
if streetsmod or steelmod then
|
||||
minetest.register_node(":technic:steel_strut_with_insulator_clip", sclip_def)
|
||||
|
||||
if steelmod then
|
||||
minetest.register_craft({
|
||||
output = "technic:steel_strut_with_insulator_clip",
|
||||
recipe = {
|
||||
{"technic:insulator_clip_fencepost"},
|
||||
{"steel:strut_mount"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "technic:steel_strut_with_insulator_clip",
|
||||
recipe = {
|
||||
{"technic:insulator_clip_fencepost", "" },
|
||||
{"steel:strut", "default:steel_ingot" },
|
||||
}
|
||||
})
|
||||
|
||||
elseif streetsmod then
|
||||
minetest.register_craft({
|
||||
output = "technic:steel_strut_with_insulator_clip",
|
||||
recipe = {
|
||||
{"technic:insulator_clip_fencepost", "" },
|
||||
{"streets:steel_support", "default:steel_ingot" },
|
||||
}
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
if minetest.get_modpath("unifieddyes") then
|
||||
|
||||
unifieddyes.register_color_craft({
|
||||
output = "technic:insulator_clip_fencepost",
|
||||
palette = "extended",
|
||||
type = "shapeless",
|
||||
neutral_node = "technic:insulator_clip_fencepost",
|
||||
recipe = {
|
||||
"NEUTRAL_NODE",
|
||||
"MAIN_DYE"
|
||||
}
|
||||
})
|
||||
|
||||
unifieddyes.register_color_craft({
|
||||
output = "technic:insulator_clip",
|
||||
palette = "wallmounted",
|
||||
type = "shapeless",
|
||||
neutral_node = "technic:insulator_clip",
|
||||
recipe = {
|
||||
"NEUTRAL_NODE",
|
||||
"MAIN_DYE"
|
||||
}
|
||||
})
|
||||
|
||||
unifieddyes.register_color_craft({
|
||||
output = "technic:steel_strut_with_insulator_clip",
|
||||
palette = "wallmounted",
|
||||
type = "shapeless",
|
||||
neutral_node = "",
|
||||
recipe = {
|
||||
"technic:steel_strut_with_insulator_clip",
|
||||
"MAIN_DYE"
|
||||
}
|
||||
})
|
||||
|
||||
if steelmod then
|
||||
unifieddyes.register_color_craft({
|
||||
output = "technic:steel_strut_with_insulator_clip",
|
||||
palette = "wallmounted",
|
||||
neutral_node = "",
|
||||
recipe = {
|
||||
{ "technic:insulator_clip_fencepost", "MAIN_DYE" },
|
||||
{ "steel:strut_mount", "" },
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
if streetsmod then
|
||||
unifieddyes.register_color_craft({
|
||||
output = "technic:steel_strut_with_insulator_clip",
|
||||
palette = "wallmounted",
|
||||
neutral_node = "technic:steel_strut_with_insulator_clip",
|
||||
recipe = {
|
||||
{ "technic:insulator_clip_fencepost", "MAIN_DYE" },
|
||||
{ "streets:steel_support", "default:steel_ingot" },
|
||||
}
|
||||
})
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
# technic_extranodes translation template
|
||||
|
||||
Marble = Marbre
|
||||
Marble Bricks = Briques en marbre
|
||||
Granite = Granite
|
||||
Concrete = Béton
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
# Polish Translation for technic_extranodes
|
||||
# Polskie tłumaczenie technic_extranodes
|
||||
# by mat9117
|
||||
|
||||
Marble = Marmur
|
||||
Marble Bricks = Marmurowe cegły
|
||||
Granite = Granit
|
||||
Concrete = Beton
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
# Braziliam portuguese translation for technic_extranodes
|
||||
# Tradução portuguesa brasileira para technic_extranodes
|
||||
# By Sires
|
||||
|
||||
Marble = Mármore
|
||||
Marble Bricks = Tijolos de Mármore
|
||||
Granite = Granito
|
||||
Concrete = Concreto
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
name = extranodes
|
||||
depends = default, technic_worldgen, basic_materials, concrete
|
||||
optional_depends = unifieddyes, intllib, moreblocks, steel, streetsmod
|
|
@ -0,0 +1,246 @@
|
|||
# Blender v2.79 (sub 0) OBJ File: 'technic steel strut with insulator clip.blend'
|
||||
# www.blender.org
|
||||
o Cube_Cube_Material.001
|
||||
v -0.375000 0.500532 -0.250000
|
||||
v -0.249997 0.562500 -0.249997
|
||||
v 0.249997 0.562500 -0.249997
|
||||
v 0.375000 0.500532 -0.250000
|
||||
v 0.249997 0.562500 0.249997
|
||||
v 0.375000 0.500532 0.250000
|
||||
v -0.249997 0.562500 0.249997
|
||||
v -0.375000 0.500532 0.250000
|
||||
v 0.187500 0.562500 -0.187500
|
||||
v -0.168668 0.718750 0.168668
|
||||
v 0.168668 0.718750 0.168668
|
||||
v 0.187500 0.750000 0.187500
|
||||
v -0.187500 0.750000 0.187500
|
||||
v 0.168668 0.718750 -0.168668
|
||||
v 0.187500 0.750000 -0.187500
|
||||
v -0.168668 0.718750 -0.168668
|
||||
v -0.187500 0.750000 -0.187500
|
||||
v 0.250000 0.750000 -0.250000
|
||||
v 0.250000 0.750000 0.250000
|
||||
v -0.250000 0.750000 -0.250000
|
||||
v -0.250000 1.250000 -0.250000
|
||||
v 0.250000 1.250000 -0.250000
|
||||
v 0.250000 1.250000 0.250000
|
||||
v -0.250000 1.250000 0.250000
|
||||
v -0.250000 0.750000 0.250000
|
||||
v -0.168668 0.593750 0.168668
|
||||
v 0.168668 0.593750 0.168668
|
||||
v 0.187500 0.625000 0.187500
|
||||
v -0.187500 0.625000 0.187500
|
||||
v 0.168668 0.593750 -0.168668
|
||||
v 0.187500 0.625000 -0.187500
|
||||
v -0.168668 0.593750 -0.168668
|
||||
v -0.187500 0.625000 -0.187500
|
||||
v -0.168668 0.656250 0.168668
|
||||
v 0.168668 0.656250 0.168668
|
||||
v 0.187500 0.687500 0.187500
|
||||
v -0.187500 0.687500 0.187500
|
||||
v 0.168668 0.656250 -0.168668
|
||||
v 0.187500 0.687500 -0.187500
|
||||
v -0.168668 0.656250 -0.168668
|
||||
v -0.187500 0.687500 -0.187500
|
||||
v 0.187500 0.562500 0.187500
|
||||
v -0.187500 0.562500 0.187500
|
||||
v -0.187500 0.562500 -0.187500
|
||||
v -0.499468 -0.499468 -0.499468
|
||||
v -0.499468 0.500000 -0.499468
|
||||
v 0.499468 -0.499468 -0.499468
|
||||
v -0.499468 -0.499468 0.499468
|
||||
v -0.499468 0.500000 0.499468
|
||||
v 0.499468 -0.499468 0.499468
|
||||
v 0.499468 0.500000 -0.499468
|
||||
v 0.499468 0.500000 0.499468
|
||||
vt 1.000000 0.875000
|
||||
vt 0.937500 0.750000
|
||||
vt 0.937500 0.250000
|
||||
vt 1.000000 0.125000
|
||||
vt 0.250000 0.875000
|
||||
vt 0.250000 0.750000
|
||||
vt 0.750000 0.750000
|
||||
vt 0.750000 0.875000
|
||||
vt 0.000000 0.125000
|
||||
vt 0.062500 0.250000
|
||||
vt 0.062500 0.750000
|
||||
vt 0.000000 0.875000
|
||||
vt 0.750000 0.250000
|
||||
vt 0.687500 0.687500
|
||||
vt 0.687500 0.312500
|
||||
vt 0.312500 0.687500
|
||||
vt 0.250000 0.250000
|
||||
vt 0.312500 0.312500
|
||||
vt 0.331332 1.218750
|
||||
vt 0.668668 1.218750
|
||||
vt 0.687500 1.250000
|
||||
vt 0.312500 1.250000
|
||||
vt 0.531250 0.666667
|
||||
vt 0.531250 0.333333
|
||||
vt 0.500000 0.312500
|
||||
vt 0.500000 0.687500
|
||||
vt 0.531250 0.333333
|
||||
vt 0.531250 0.666667
|
||||
vt 0.500000 0.687500
|
||||
vt 0.500000 0.312500
|
||||
vt 0.331332 1.218750
|
||||
vt 0.668668 1.218750
|
||||
vt 0.687500 1.250000
|
||||
vt 0.312500 1.250000
|
||||
vt 0.687500 0.312500
|
||||
vt 0.750000 0.250000
|
||||
vt 0.750000 0.750000
|
||||
vt 0.687500 0.687500
|
||||
vt 0.500000 0.250000
|
||||
vt 0.500000 0.750000
|
||||
vt 0.000000 0.750000
|
||||
vt 0.000000 0.250000
|
||||
vt 0.500000 0.250000
|
||||
vt 0.000000 0.250000
|
||||
vt 0.000000 0.750000
|
||||
vt 0.500000 0.750000
|
||||
vt 0.500000 0.250000
|
||||
vt 0.500000 0.750000
|
||||
vt 0.000000 0.750000
|
||||
vt 0.000000 0.250000
|
||||
vt 0.000000 0.250000
|
||||
vt 0.500000 0.750000
|
||||
vt 0.250000 0.250000
|
||||
vt 0.750000 0.250000
|
||||
vt 0.750000 0.750000
|
||||
vt 0.250000 0.750000
|
||||
vt 0.250000 0.750000
|
||||
vt 0.312500 0.687500
|
||||
vt 0.250000 0.250000
|
||||
vt 0.312500 0.312500
|
||||
vt 0.250000 0.125000
|
||||
vt 0.750000 0.125000
|
||||
vt 0.331332 1.093750
|
||||
vt 0.668668 1.093750
|
||||
vt 0.687500 1.125000
|
||||
vt 0.312500 1.125000
|
||||
vt 0.656250 0.666667
|
||||
vt 0.656250 0.333333
|
||||
vt 0.625000 0.312500
|
||||
vt 0.625000 0.687500
|
||||
vt 0.656250 0.333333
|
||||
vt 0.656250 0.666667
|
||||
vt 0.625000 0.687500
|
||||
vt 0.625000 0.312500
|
||||
vt 0.331332 1.093750
|
||||
vt 0.668668 1.093750
|
||||
vt 0.687500 1.125000
|
||||
vt 0.312500 1.125000
|
||||
vt 0.331332 1.156250
|
||||
vt 0.668668 1.156250
|
||||
vt 0.687500 1.187500
|
||||
vt 0.312500 1.187500
|
||||
vt 0.593750 0.666667
|
||||
vt 0.593750 0.333333
|
||||
vt 0.562500 0.312500
|
||||
vt 0.562500 0.687500
|
||||
vt 0.593750 0.333333
|
||||
vt 0.593750 0.666667
|
||||
vt 0.562500 0.687500
|
||||
vt 0.562500 0.312500
|
||||
vt 0.331332 1.156250
|
||||
vt 0.668668 1.156250
|
||||
vt 0.687500 1.187500
|
||||
vt 0.312500 1.187500
|
||||
vt 0.312500 1.062500
|
||||
vt 0.687500 1.062500
|
||||
vt 0.687500 0.312500
|
||||
vt 0.687500 0.312500
|
||||
vt 0.687500 0.687500
|
||||
vt 0.312500 1.062500
|
||||
vt 0.687500 1.062500
|
||||
vt 0.000000 0.750000
|
||||
vt 0.000000 0.250000
|
||||
vt 1.000000 0.250000
|
||||
vt 1.000000 0.750000
|
||||
vt 1.000000 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.000000 -0.000000
|
||||
vt 1.000000 -0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.000000 -0.000000
|
||||
vt 1.000000 -0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 -0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt -0.000000 0.000000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.4442 0.8960 -0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.0000 1.0000 -0.0000
|
||||
vn 0.0000 -0.5161 0.8565
|
||||
vn 0.8565 -0.5161 0.0000
|
||||
vn -0.8565 -0.5161 0.0000
|
||||
vn 0.0000 -0.5161 -0.8565
|
||||
vn -0.0000 -1.0000 -0.0000
|
||||
vn 1.0000 -0.0000 0.0000
|
||||
vn -1.0000 0.0000 -0.0000
|
||||
vn -0.4442 0.8960 -0.0000
|
||||
vn -0.0000 0.5161 0.8565
|
||||
vn 0.8565 0.5161 -0.0000
|
||||
vn -0.8565 0.5161 -0.0000
|
||||
vn 0.0000 0.5161 -0.8565
|
||||
g Cube_Cube_Material.001_Cube_Cube_Material.001_clip
|
||||
s 1
|
||||
f 1/1/1 2/2/1 3/3/1 4/4/1
|
||||
f 4/5/2 3/6/2 5/7/2 6/8/2
|
||||
f 6/9/3 5/10/3 7/11/3 8/12/3
|
||||
f 7/13/4 5/7/4 42/14/4 43/15/4
|
||||
f 5/7/4 3/6/4 9/16/4 42/14/4
|
||||
f 2/17/4 7/13/4 43/15/4 44/18/4
|
||||
f 3/6/4 2/17/4 44/18/4 9/16/4
|
||||
f 10/19/5 11/20/5 12/21/5 13/22/5
|
||||
f 11/23/6 14/24/6 15/25/6 12/26/6
|
||||
f 16/27/7 10/28/7 13/29/7 17/30/7
|
||||
f 14/31/8 16/32/8 17/33/8 15/34/8
|
||||
f 15/35/9 18/36/9 19/37/9 12/38/9
|
||||
f 20/39/1 21/40/1 22/41/1 18/42/1
|
||||
f 18/43/10 22/44/10 23/45/10 19/46/10
|
||||
f 19/47/3 23/48/3 24/49/3 25/50/3
|
||||
f 21/51/11 20/39/11 25/52/11 24/49/11
|
||||
f 21/53/4 24/54/4 23/55/4 22/56/4
|
||||
f 12/38/9 19/37/9 25/57/9 13/58/9
|
||||
f 13/58/9 25/57/9 20/59/9 17/60/9
|
||||
f 17/60/9 20/59/9 18/36/9 15/35/9
|
||||
f 2/17/12 1/61/12 8/62/12 7/13/12
|
||||
f 26/63/5 27/64/5 28/65/5 29/66/5
|
||||
f 27/67/6 30/68/6 31/69/6 28/70/6
|
||||
f 32/71/7 26/72/7 29/73/7 33/74/7
|
||||
f 30/75/8 32/76/8 33/77/8 31/78/8
|
||||
f 34/79/5 35/80/5 36/81/5 37/82/5
|
||||
f 35/83/6 38/84/6 39/85/6 36/86/6
|
||||
f 40/87/7 34/88/7 37/89/7 41/90/7
|
||||
f 38/91/8 40/92/8 41/93/8 39/94/8
|
||||
f 37/82/13 36/81/13 11/20/13 10/19/13
|
||||
f 36/86/14 39/85/14 14/24/14 11/23/14
|
||||
f 41/90/15 37/89/15 10/28/15 16/27/15
|
||||
f 39/94/16 41/93/16 16/32/16 14/31/16
|
||||
f 43/95/13 42/96/13 27/64/13 26/63/13
|
||||
f 42/14/14 9/97/14 30/68/14 27/67/14
|
||||
f 44/98/15 43/99/15 26/72/15 32/71/15
|
||||
f 9/100/16 44/101/16 32/76/16 30/75/16
|
||||
f 29/66/13 28/65/13 35/80/13 34/79/13
|
||||
f 28/70/14 31/69/14 38/84/14 35/83/14
|
||||
f 33/74/15 29/73/15 34/88/15 40/87/15
|
||||
f 31/78/16 33/77/16 40/92/16 38/91/16
|
||||
f 8/102/9 1/103/9 4/104/9 6/105/9
|
||||
g Cube_Cube_Material.001_Cube_Cube_Material.001_sides_with_band
|
||||
s off
|
||||
f 47/106/10 51/107/10 52/108/10 50/109/10
|
||||
f 48/110/11 49/111/11 46/112/11 45/113/11
|
||||
f 47/114/9 50/115/9 48/116/9 45/117/9
|
||||
f 51/118/4 46/112/4 49/111/4 52/119/4
|
||||
g Cube_Cube_Material.001_Cube_Cube_Material.001_sides_without_band
|
||||
f 45/113/1 46/120/1 51/107/1 47/121/1
|
||||
f 50/109/3 52/119/3 49/111/3 48/122/3
|
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 202 B |
After Width: | Height: | Size: 103 B |
|
@ -1,241 +1,186 @@
|
|||
Minetest technic modpack user manual
|
||||
====================================
|
||||
# Technic User Manual
|
||||
|
||||
The technic modpack extends the Minetest game with many new elements,
|
||||
mainly constructable machines and tools. It is a large modpack, and
|
||||
tends to dominate gameplay when it is used. This manual describes how
|
||||
to use the technic modpack, mainly from a player's perspective.
|
||||
The technic modpack extends Minetest Game (shipped with Minetest by default)
|
||||
with many new elements, mainly constructable machines and tools. This manual
|
||||
describes how to use the modpack, mainly from a player's perspective.
|
||||
|
||||
The technic modpack depends on some other modpacks:
|
||||
Documentation of the mod dependencies can be found here:
|
||||
|
||||
* the basic Minetest game
|
||||
* mesecons, which supports the construction of logic systems based on
|
||||
signalling elements
|
||||
* pipeworks, which supports the automation of item transport
|
||||
* moreores, which provides some additional ore types
|
||||
* [Minetest Game Documentation](https://wiki.minetest.net/Main_Page)
|
||||
* [Mesecons Documentation](http://mesecons.net/items.html)
|
||||
* [Pipeworks Documentation](https://gitlab.com/VanessaE/pipeworks/-/wikis/home)
|
||||
* [Moreores Forum Post](https://forum.minetest.net/viewtopic.php?t=549)
|
||||
* [Basic materials Repository](https://gitlab.com/VanessaE/basic_materials)
|
||||
|
||||
This manual doesn't explain how to use these other modpacks, which ought
|
||||
to (but actually don't) have their own manuals.
|
||||
## Recipes
|
||||
|
||||
Recipes for constructable items in technic are generally not guessable,
|
||||
and are also not specifically documented here. You should use a
|
||||
craft guide mod to look up the recipes in-game. For the best possible
|
||||
guidance, use the unified\_inventory mod, with which technic registers
|
||||
its specialised recipe types.
|
||||
Recipes for items registered by technic are not specifically documented here.
|
||||
Please consult a craft guide mod to look up the recipes in-game.
|
||||
|
||||
substances
|
||||
----------
|
||||
**Recommended mod:** [Unified Inventory](https://github.com/minetest-mods/unified_inventory)
|
||||
|
||||
### ore ###
|
||||
## Substances
|
||||
|
||||
The technic mod makes extensive use of not just the default ores but also
|
||||
some that are added by mods. You will need to mine for all the ore types
|
||||
in the course of the game. Each ore type is found at a specific range of
|
||||
elevations, and while the ranges mostly overlap, some have non-overlapping
|
||||
ranges, so you will ultimately need to mine at more than one elevation
|
||||
to find all the ores. Also, because one of the best elevations to mine
|
||||
at is very deep, you will be unable to mine there early in the game.
|
||||
### Ores
|
||||
|
||||
Elevation is measured in meters, relative to a reference plane that
|
||||
is not quite sea level. (The standard sea level is at an elevation
|
||||
of about +1.4.) Positive elevations are above the reference plane and
|
||||
negative elevations below. Because elevations are always described this
|
||||
way round, greater numbers when higher, we avoid the word "depth".
|
||||
Technic registers a few ores which are needed to craft machines or items.
|
||||
Each ore type is found at a specific range of elevations so you will
|
||||
ultimately need to mine at more than one elevation to find all the ores.
|
||||
|
||||
The ores that matter in technic are coal, iron, copper, tin, zinc,
|
||||
chromium, uranium, silver, gold, mithril, mese, and diamond.
|
||||
Elevation (Y axis) is measured in meters. The reference is usually at sea
|
||||
level. Ores can generally be found more commonly by going downwards to -1000m.
|
||||
|
||||
Coal is part of the basic Minetest game. It is found from elevation
|
||||
+64 downwards, so is available right on the surface at the start of
|
||||
the game, but it is far less abundant above elevation 0 than below.
|
||||
It is initially used as a fuel, driving important machines in the early
|
||||
part of the game. It becomes less important as a fuel once most of your
|
||||
machines are electrically powered, but burning fuel remains a way to
|
||||
generate electrical power. Coal is also used, usually in dust form, as
|
||||
an ingredient in alloying recipes, wherever elemental carbon is required.
|
||||
Note ¹: *These ores are provided by Minetest Game. See [Ores](https://wiki.minetest.net/Ores#Ores_overview) for a rough overview*
|
||||
|
||||
Iron is part of the basic Minetest game. It is found from elevation
|
||||
+2 downwards, and its abundance increases in stages as one descends,
|
||||
reaching its maximum from elevation -64 downwards. It is a common metal,
|
||||
used frequently as a structural component. In technic, unlike the basic
|
||||
game, iron is used in multiple forms, mainly alloys based on iron and
|
||||
including carbon (coal).
|
||||
Note ²: *These ores are provided by moreores. TODO: Add reference link*
|
||||
|
||||
Copper is part of the basic Minetest game (having migrated there from
|
||||
moreores). It is found from elevation -16 downwards, but is more abundant
|
||||
from elevation -64 downwards. It is a common metal, used either on its
|
||||
own for its electrical conductivity, or as the base component of alloys.
|
||||
#### Coal ¹
|
||||
Use: Fuel, alloy as carbon
|
||||
|
||||
Burning coal is a way to generate electrical power. Coal is also used,
|
||||
usually in dust form, as an ingredient in alloying recipes, wherever
|
||||
elemental carbon is required.
|
||||
|
||||
#### Iron ¹
|
||||
Use: multiple, mainly for alloys with carbon (coal).
|
||||
|
||||
#### Copper ¹
|
||||
Copper is a common metal, used either on its own for its electrical
|
||||
conductivity, or as the base component of alloys.
|
||||
Although common, it is very heavily used, and most of the time it will
|
||||
be the material that most limits your activity.
|
||||
|
||||
Tin is supplied by the moreores mod. It is found from elevation +8
|
||||
downwards, with no elevation-dependent variations in abundance beyond
|
||||
that point. It is a common metal. Its main use in pure form is as a
|
||||
component of electrical batteries. Apart from that its main purpose is
|
||||
as the secondary ingredient in bronze (the base being copper), but bronze
|
||||
is itself little used. Its abundance is well in excess of its usage,
|
||||
so you will usually have a surplus of it.
|
||||
#### Tin ¹
|
||||
Use: batteries, bronze
|
||||
|
||||
Zinc is supplied by technic. It is found from elevation +2 downwards,
|
||||
with no elevation-dependent variations in abundance beyond that point.
|
||||
It is a common metal. Its main use is as the secondary ingredient
|
||||
in brass (the base being copper), but brass is itself little used.
|
||||
Its abundance is well in excess of its usage, so you will usually have
|
||||
a surplus of it.
|
||||
Tin is a common metal but is used rarely. Its abundance is well in excess
|
||||
of its usage, so you will usually have a surplus of it.
|
||||
|
||||
Chromium is supplied by technic. It is found from elevation -100
|
||||
downwards, with no elevation-dependent variations in abundance beyond
|
||||
that point. It is a moderately common metal. Its main use is as the
|
||||
secondary ingredient in stainless steel (the base being iron).
|
||||
#### Zinc
|
||||
Use: brass
|
||||
|
||||
Uranium is supplied by technic. It is found only from elevation -80 down
|
||||
to -300; using it therefore requires one to mine above elevation -300 even
|
||||
though deeper mining is otherwise more productive. It is a moderately
|
||||
common metal, useful only for reasons related to radioactivity: it forms
|
||||
the fuel for nuclear reactors, and is also one of the best radiation
|
||||
shielding materials available. It is not difficult to find enough uranium
|
||||
ore to satisfy these uses. Beware that the ore is slightly radioactive:
|
||||
it will slightly harm you if you stand as close as possible to it.
|
||||
It is safe when more than a meter away or when mined.
|
||||
Depth: 2m, more commonly below -32m
|
||||
|
||||
Silver is supplied by the moreores mod. It is found from elevation -2
|
||||
downwards, with no elevation-dependent variations in abundance beyond
|
||||
that point. It is a semi-precious metal. It is little used, being most
|
||||
notably used in electrical items due to its conductivity, being the best
|
||||
conductor of all the pure elements.
|
||||
Zinc only has a few uses but is a common metal.
|
||||
|
||||
Gold is part of the basic Minetest game (having migrated there from
|
||||
moreores). It is found from elevation -64 downwards, but is more
|
||||
abundant from elevation -256 downwards. It is a precious metal. It is
|
||||
little used, being most notably used in electrical items due to its
|
||||
combination of good conductivity (third best of all the pure elements)
|
||||
and corrosion resistance.
|
||||
#### Chromium
|
||||
Use: stainless steel
|
||||
|
||||
Mithril is supplied by the moreores mod. It is found from elevation
|
||||
-512 downwards, the deepest ceiling of any minable substance, with
|
||||
no elevation-dependent variations in abundance beyond that point.
|
||||
It is a rare precious metal, and unlike all the other metals described
|
||||
here it is entirely fictional, being derived from J. R. R. Tolkien's
|
||||
Depth: -100m, more commonly below -200m
|
||||
|
||||
#### Uranium
|
||||
Use: nuclear reactor fuel
|
||||
|
||||
Depth: -80m until -300m, more commonly between -100m and -200m
|
||||
|
||||
It is a moderately common metal, useful only for reasons related to radioactivity:
|
||||
it forms the fuel for nuclear reactors, and is also one of the best radiation
|
||||
shielding materials available.
|
||||
|
||||
Keep a safety distance of a meter to avoid being harmed by radiation.
|
||||
|
||||
#### Silver ²
|
||||
Use: conductors
|
||||
|
||||
Depth: -2m, evenly common
|
||||
|
||||
Silver is a semi-precious metal and is the best conductor of all the pure elements.
|
||||
|
||||
#### Gold ¹
|
||||
Use: various
|
||||
|
||||
Depth: -64m, more commonly below -256m
|
||||
|
||||
Gold is a precious metal. It is most notably used in electrical items due to
|
||||
its combination of good conductivity and corrosion resistance.
|
||||
|
||||
#### Mithril ²
|
||||
Use: chests
|
||||
|
||||
Depth: -512m, evenly common
|
||||
|
||||
Mithril is a fictional ore, being derived from J. R. R. Tolkien's
|
||||
Middle-Earth setting. It is little used.
|
||||
|
||||
Mese is part of the basic Minetest game. It is found from elevation
|
||||
-64 downwards. The ore is more abundant from elevation -256 downwards,
|
||||
and from elevation -1024 downwards there are also occasional blocks of
|
||||
solid mese (each yielding as much mese as nine blocks of ore). It is a
|
||||
precious gemstone, and unlike diamond it is entirely fictional. It is
|
||||
used in many recipes, though mainly not in large quantities, wherever
|
||||
some magical quality needs to be imparted.
|
||||
#### Mese ¹
|
||||
Use: various
|
||||
|
||||
Diamond is part of the basic Minetest game (having migrated there from
|
||||
technic). It is found from elevation -128 downwards, but is more abundant
|
||||
from elevation -256 downwards. It is a precious gemstone. It is used
|
||||
moderately, mainly for reasons connected to its extreme hardness.
|
||||
Mese is a precious gemstone, and unlike diamond it is entirely fictional.
|
||||
It is used in small quantities, wherever some magic needs to be imparted.
|
||||
|
||||
### rock ###
|
||||
#### Diamond ¹
|
||||
Use: mainly for cutting machines
|
||||
|
||||
In addition to the ores, there are multiple kinds of rock that need to be
|
||||
mined in their own right, rather than for minerals. The rock types that
|
||||
matter in technic are standard stone, desert stone, marble, and granite.
|
||||
Diamond is a precious gemstone. It is used moderately, mainly for reasons
|
||||
connected to its extreme hardness.
|
||||
|
||||
Standard stone is part of the basic Minetest game. It is extremely
|
||||
common. As in the basic game, when dug it yields cobblestone, which can
|
||||
be cooked to turn it back into standard stone. Cobblestone is used in
|
||||
recipes only for some relatively primitive machines. Standard stone is
|
||||
used in a couple of machine recipes. These rock types gain additional
|
||||
significance with technic because the grinder can be used to turn them
|
||||
into dirt and sand. This, especially when combined with an automated
|
||||
cobblestone generator, can be an easier way to acquire sand than
|
||||
collecting it where it occurs naturally.
|
||||
### Rocks
|
||||
|
||||
Desert stone is part of the basic Minetest game. It is found specifically
|
||||
in desert biomes, and only from elevation +2 upwards. Although it is
|
||||
easily accessible, therefore, its quantity is ultimately quite limited.
|
||||
It is used in a few recipes.
|
||||
This section describes the rock types added by technic. Further rock types
|
||||
are supported by technic machines. These can be processed using the grinder:
|
||||
|
||||
Marble is supplied by technic. It is found in dense clusters from
|
||||
elevation -50 downwards. It has mainly decorative use, but also appears
|
||||
in one machine recipe.
|
||||
* Stone (plain)
|
||||
* Cobblestone
|
||||
* Desert Stone
|
||||
|
||||
Granite is supplied by technic. It is found in dense clusters from
|
||||
elevation -150 downwards. It is much harder to dig than standard stone,
|
||||
so impedes mining when it is encountered. It has mainly decorative use,
|
||||
but also appears in a couple of machine recipes.
|
||||
#### Marble
|
||||
Depth: -50m, evenly common
|
||||
|
||||
### rubber ###
|
||||
Marble is found in dense clusters and has mainly decorative use, but also
|
||||
appears in one machine recipe.
|
||||
|
||||
#### Granite
|
||||
Depth: -150m, evenly common
|
||||
|
||||
Granite is found in dense clusters and is much harder to dig than standard
|
||||
stone. It has mainly decorative use, but also appears in a couple of
|
||||
machine recipes.
|
||||
|
||||
### Rubber
|
||||
Rubber is a biologically-derived material that has industrial uses due
|
||||
to its electrical resistivity and its impermeability. In technic, it
|
||||
is used in a few recipes, and it must be acquired by tapping rubber trees.
|
||||
|
||||
If you have the moretrees mod installed, the rubber trees you need
|
||||
are those defined by that mod. If not, technic supplies a copy of the
|
||||
moretrees rubber tree.
|
||||
Rubber trees are provided by technic if the moretrees mod is not present.
|
||||
|
||||
Extracting rubber requires a specific tool, a tree tap. Using the tree
|
||||
tap (by left-clicking) on a rubber tree trunk block extracts a lump of
|
||||
raw latex from the trunk. Each trunk block can be repeatedly tapped for
|
||||
latex, at intervals of several minutes; its appearance changes to show
|
||||
whether it is currently ripe for tapping. Each tree has several trunk
|
||||
blocks, so several latex lumps can be extracted from a tree in one visit.
|
||||
Extract raw latex from rubber using the "Tree Tap" tool. Punch/left-click the
|
||||
tool on a rubber tree trunk to extract a lump of raw latex from the trunk.
|
||||
Emptied trunks will regenerate at intervals of several minutes, which can be
|
||||
observed by its appearance.
|
||||
|
||||
Raw latex isn't used directly. It must be vulcanized to produce finished
|
||||
rubber. This can be performed by alloying the latex with coal dust.
|
||||
To obtain rubber from latex, alloy latex with coal dust.
|
||||
|
||||
### metal ###
|
||||
### Metals
|
||||
Generally, each metal can exist in five forms:
|
||||
|
||||
Many of the substances important in technic are metals, and there is
|
||||
a common pattern in how metals are handled. Generally, each metal can
|
||||
exist in five forms: ore, lump, dust, ingot, and block. With a couple of
|
||||
tricky exceptions in mods outside technic, metals are only *used* in dust,
|
||||
ingot, and block forms. Metals can be readily converted between these
|
||||
three forms, but can't be converted from them back to ore or lump forms.
|
||||
* ore -> stone containing the lump
|
||||
* lump -> draw metal obtained by digging ("nuggets")
|
||||
* dust -> grinder output
|
||||
* ingot -> melted/cooked lump or dust
|
||||
* block -> placeable node
|
||||
|
||||
As in the basic Minetest game, a "lump" of metal is acquired directly by
|
||||
digging ore, and will then be processed into some other form for use.
|
||||
A lump is thus more akin to ore than to refined metal. (In real life,
|
||||
metal ore rarely yields lumps ("nuggets") of pure metal directly.
|
||||
More often the desired metal is chemically bound into the rock as an
|
||||
oxide or some other compound, and the ore must be chemically processed
|
||||
to yield pure metal.)
|
||||
Metals can be converted between dust, ingot and block, but can't be converted
|
||||
from them back to ore or lump forms.
|
||||
|
||||
Not all metals occur directly as ore. Generally, elemental metals (those
|
||||
consisting of a single chemical element) occur as ore, and alloys (those
|
||||
consisting of a mixture of multiple elements) do not. In fact, if the
|
||||
fictional mithril is taken to be elemental, this pattern is currently
|
||||
followed perfectly. (It is not clear in the Middle-Earth setting whether
|
||||
mithril is elemental or an alloy.) This might change in the future:
|
||||
in real life some alloys do occur as ore, and some elemental metals
|
||||
rarely occur naturally outside such alloys. Metals that do not occur
|
||||
as ore also lack the "lump" form.
|
||||
#### Grinding
|
||||
Ores can be processed as follows:
|
||||
|
||||
The basic Minetest game offers a single way to refine metals: cook a lump
|
||||
in a furnace to produce an ingot. With technic this refinement method
|
||||
still exists, but is rarely used outside the early part of the game,
|
||||
because technic offers a more efficient method once some machines have
|
||||
been built. The grinder, available only in electrically-powered forms,
|
||||
can grind a metal lump into two piles of metal dust. Each dust pile
|
||||
can then be cooked into an ingot, yielding two ingots from one lump.
|
||||
This doubling of material value means that you should only cook a lump
|
||||
directly when you have no choice, mainly early in the game when you
|
||||
haven't yet built a grinder.
|
||||
* ore -> lump (digging) -> ingot (melting)
|
||||
* ore -> lump (digging) -> 2x dust (grinding) -> 2x ingot (melting)
|
||||
|
||||
An ingot can also be ground back to (one pile of) dust. Thus it is always
|
||||
possible to convert metal between ingot and dust forms, at the expense
|
||||
of some energy consumption. Nine ingots of a metal can be crafted into
|
||||
a block, which can be used for building. The block can also be crafted
|
||||
back to nine ingots. Thus it is possible to freely convert metal between
|
||||
ingot and block forms, which is convenient to store the metal compactly.
|
||||
Every metal has dust, ingot, and block forms.
|
||||
At the expense of some energy consumption, the grinder can extract more material
|
||||
from the lump, resulting in 2x dust which can be melted to two ingots in total.
|
||||
|
||||
#### Alloying
|
||||
Alloying recipes in which a metal is the base ingredient, to produce a
|
||||
metal alloy, always come in two forms, using the metal either as dust
|
||||
or as an ingot. If the secondary ingredient is also a metal, it must
|
||||
be supplied in the same form as the base ingredient. The output alloy
|
||||
is also returned in the same form. For example, brass can be produced
|
||||
by alloying two copper ingots with one zinc ingot to make three brass
|
||||
ingots, or by alloying two piles of copper dust with one pile of zinc
|
||||
dust to make three piles of brass dust. The two ways of alloying produce
|
||||
equivalent results.
|
||||
is also returned in the same form.
|
||||
|
||||
Example: 2x copper ingots + zinc ingot -> 3x brass ingot (alloying)
|
||||
|
||||
The same will also work for dust ingredients, resulting in brass dist.
|
||||
|
||||
### iron and its alloys ###
|
||||
|
||||
|
@ -986,7 +931,7 @@ through a side.
|
|||
|
||||
The furnace, alloy furnace, grinder, extractor, compressor, and centrifuge
|
||||
have much in common. Each implements some industrial process that
|
||||
transforms items into other items, and they manner in which they present
|
||||
transforms items into other items, and the manner in which they present
|
||||
these processes as powered machines is essentially identical.
|
||||
|
||||
Most of the processing machines operate on inputs of only a single type
|
||||
|
@ -1011,7 +956,7 @@ input slot, this is perfectly simple behavior. The alloy furnace is more
|
|||
complex: it will put an arriving item in either input slot, preferring to
|
||||
stack it with existing items of the same type. It doesn't matter which
|
||||
slot each of the alloy furnace's inputs is in, so it doesn't matter that
|
||||
there's no direct control ovar that, but there is a risk that supplying
|
||||
there's no direct control over that, but there is a risk that supplying
|
||||
a lot of one item type through tubes will result in both slots containing
|
||||
the same type of item, leaving no room for the second input.
|
||||
|
||||
|
@ -1146,7 +1091,7 @@ dig identical areas, one on each side of the square cross section.
|
|||
### forcefield emitter ###
|
||||
|
||||
The forcefield emitter is an HV powered machine that generates a
|
||||
forcefield remeniscent of those seen in many science-fiction stories.
|
||||
forcefield reminiscent of those seen in many science-fiction stories.
|
||||
|
||||
The emitter can be configured to generate a forcefield of either
|
||||
spherical or cubical shape, in either case centered on the emitter.
|
||||
|
@ -1195,7 +1140,7 @@ power generators
|
|||
|
||||
### fuel-fired generators ###
|
||||
|
||||
The fiel-fired generators are electrical power generators that generate
|
||||
The fuel-fired generators are electrical power generators that generate
|
||||
power by the combustion of fuel. Versions of them are available for
|
||||
all three voltages (LV, MV, and HV). These are all capable of burning
|
||||
any type of combustible fuel, such as coal. They are relatively easy
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
name = technic
|
|
@ -1 +0,0 @@
|
|||
|
|
@ -21,6 +21,9 @@ celeron55 (Perttu Ahola) modified by Zefram (CC BY-SA 3.0):
|
|||
sdzen (Elise Staudter) (CC BY-SA 3.0):
|
||||
* most of the older 16x16 textures
|
||||
|
||||
leftshift (CC BY-SA 3.0):
|
||||
* technic_river_water_can.png
|
||||
|
||||
RealBadAngel: (WTFPL)
|
||||
* Everything else.
|
||||
|
||||
|
@ -32,4 +35,4 @@ veikk0 (Veikko Mäkelä) (CC BY-SA 4.0):
|
|||
* technic_hv_nuclear_reactor_siren_danger_loop.ogg
|
||||
* Derived from "Nuclear alarm.wav" by Freesound.org user rene___ from <https://freesound.org/people/rene___/sounds/56778/>. Originally licensed under CC0 1.0 <https://creativecommons.org/publicdomain/zero/1.0/>
|
||||
|
||||
CC BY-SA 4.0: <https://creativecommons.org/licenses/by-sa/4.0/>
|
||||
CC BY-SA 4.0: <https://creativecommons.org/licenses/by-sa/4.0/>
|
||||
|
|
|
@ -7,6 +7,13 @@ minetest.clear_craft({
|
|||
type = "shapeless",
|
||||
output = "default:bronze_ingot"
|
||||
})
|
||||
-- Restore recipe for bronze block to ingots
|
||||
minetest.register_craft({
|
||||
output = "default:bronze_ingot 9",
|
||||
recipe = {
|
||||
{"default:bronzeblock"}
|
||||
}
|
||||
})
|
||||
|
||||
-- Accelerator tube
|
||||
if pipeworks.enable_accelerator_tube then
|
||||
|
@ -38,6 +45,18 @@ if pipeworks.enable_teleport_tube then
|
|||
})
|
||||
end
|
||||
|
||||
-- basic materials' brass ingot
|
||||
|
||||
minetest.clear_craft({
|
||||
output = "basic_materials:brass_ingot",
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "basic_materials:brass_ingot 9",
|
||||
recipe = { "basic_materials:brass_block" },
|
||||
})
|
||||
|
||||
-- tubes crafting recipes
|
||||
|
||||
minetest.register_craft({
|
||||
|
@ -71,54 +90,24 @@ minetest.register_craft({
|
|||
output = 'technic:red_energy_crystal',
|
||||
recipe = {
|
||||
{'moreores:silver_ingot', 'technic:battery', 'dye:red'},
|
||||
{'technic:battery', 'default:diamondblock', 'technic:battery'},
|
||||
{'technic:battery', 'basic_materials:energy_crystal_simple', 'technic:battery'},
|
||||
{'dye:red', 'technic:battery', 'moreores:silver_ingot'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'technic:fine_copper_wire 2',
|
||||
recipe = {
|
||||
{'', 'default:copper_ingot', ''},
|
||||
{'', 'default:copper_ingot', ''},
|
||||
{'', 'default:copper_ingot', ''},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'technic:fine_gold_wire 2',
|
||||
recipe = {
|
||||
{'', 'default:gold_ingot', ''},
|
||||
{'', 'default:gold_ingot', ''},
|
||||
{'', 'default:gold_ingot', ''},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'technic:fine_silver_wire 2',
|
||||
recipe = {
|
||||
{'', 'moreores:silver_ingot', ''},
|
||||
{'', 'moreores:silver_ingot', ''},
|
||||
{'', 'moreores:silver_ingot', ''},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'technic:copper_coil 1',
|
||||
recipe = {
|
||||
{'technic:fine_copper_wire', 'technic:wrought_iron_ingot', 'technic:fine_copper_wire'},
|
||||
{'basic_materials:copper_wire', 'technic:wrought_iron_ingot', 'basic_materials:copper_wire'},
|
||||
{'technic:wrought_iron_ingot', '', 'technic:wrought_iron_ingot'},
|
||||
{'technic:fine_copper_wire', 'technic:wrought_iron_ingot', 'technic:fine_copper_wire'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'technic:motor',
|
||||
recipe = {
|
||||
{'technic:carbon_steel_ingot', 'technic:copper_coil', 'technic:carbon_steel_ingot'},
|
||||
{'technic:carbon_steel_ingot', 'technic:copper_coil', 'technic:carbon_steel_ingot'},
|
||||
{'technic:carbon_steel_ingot', 'default:copper_ingot', 'technic:carbon_steel_ingot'},
|
||||
}
|
||||
{'basic_materials:copper_wire', 'technic:wrought_iron_ingot', 'basic_materials:copper_wire'},
|
||||
},
|
||||
replacements = {
|
||||
{"basic_materials:copper_wire", "basic_materials:empty_spool"},
|
||||
{"basic_materials:copper_wire", "basic_materials:empty_spool"},
|
||||
{"basic_materials:copper_wire", "basic_materials:empty_spool"},
|
||||
{"basic_materials:copper_wire", "basic_materials:empty_spool"}
|
||||
},
|
||||
})
|
||||
|
||||
local isolation = mesecons_materials and "mesecons_materials:fiber" or "technic:rubber"
|
||||
|
@ -153,10 +142,11 @@ minetest.register_craft({
|
|||
minetest.register_craft({
|
||||
output = 'technic:control_logic_unit',
|
||||
recipe = {
|
||||
{'', 'technic:fine_gold_wire', ''},
|
||||
{'', 'basic_materials:gold_wire', ''},
|
||||
{'default:copper_ingot', 'technic:silicon_wafer', 'default:copper_ingot'},
|
||||
{'', 'technic:chromium_ingot', ''},
|
||||
}
|
||||
},
|
||||
replacements = { {"basic_materials:gold_wire", "basic_materials:empty_spool"}, },
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
|
@ -164,7 +154,7 @@ minetest.register_craft({
|
|||
recipe = {
|
||||
{'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot'},
|
||||
{'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'},
|
||||
{'moreores:tin_ingot', 'moreores:tin_ingot', 'moreores:tin_ingot'},
|
||||
{'default:tin_ingot', 'default:tin_ingot', 'default:tin_ingot'},
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -179,12 +169,11 @@ minetest.register_craft({
|
|||
output = "technic:machine_casing",
|
||||
recipe = {
|
||||
{ "technic:cast_iron_ingot", "technic:cast_iron_ingot", "technic:cast_iron_ingot" },
|
||||
{ "technic:cast_iron_ingot", "technic:brass_ingot", "technic:cast_iron_ingot" },
|
||||
{ "technic:cast_iron_ingot", "basic_materials:brass_ingot", "technic:cast_iron_ingot" },
|
||||
{ "technic:cast_iron_ingot", "technic:cast_iron_ingot", "technic:cast_iron_ingot" },
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:dirt 2",
|
||||
type = "shapeless",
|
||||
|
@ -196,3 +185,25 @@ minetest.register_craft({
|
|||
"group:sand",
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "technic:rubber_goo",
|
||||
type = "shapeless",
|
||||
recipe = {
|
||||
"technic:raw_latex",
|
||||
"default:coal_lump",
|
||||
"default:coal_lump",
|
||||
"default:coal_lump",
|
||||
"default:coal_lump",
|
||||
"default:coal_lump",
|
||||
"default:coal_lump",
|
||||
"default:coal_lump",
|
||||
"default:coal_lump",
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "technic:rubber",
|
||||
type = "cooking",
|
||||
recipe = "technic:rubber_goo",
|
||||
})
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
default
|
||||
pipeworks
|
||||
technic_worldgen
|
||||
basic_materials
|
||||
bucket?
|
||||
screwdriver?
|
||||
mesecons?
|
||||
|
@ -10,3 +11,4 @@ digiline_remote?
|
|||
intllib?
|
||||
unified_inventory?
|
||||
vector_extras?
|
||||
dye?
|
||||
|
|
|
@ -1,38 +1,115 @@
|
|||
This file is fairly incomplete. Help is welcome.
|
||||
# technic API
|
||||
|
||||
Tiers
|
||||
-----
|
||||
The tier is a string, currently `"LV"`, `"MV"` and `"HV"` are supported.
|
||||
This file documents the functions within the technic modpack for use in mods.
|
||||
|
||||
Network
|
||||
-------
|
||||
The network is the cable with the connected machine nodes. Currently the
|
||||
switching station handles the network activity.
|
||||
|
||||
Helper functions
|
||||
----------------
|
||||
## Tiers
|
||||
Tier are network types. List of pre-registered tiers:
|
||||
|
||||
* `"LV"`, Low Voltage
|
||||
* `"MV"`, Medium Voltage
|
||||
* `"HV"`, High Voltage
|
||||
|
||||
Available functions:
|
||||
|
||||
* `technic.register_tier(tier, description)`
|
||||
* Registers a network type (tier)
|
||||
* `tier`: string, short name (ex. `LV`)
|
||||
* `description`: string, long name (ex. `Low Voltage`)
|
||||
* See also `tiers`
|
||||
|
||||
|
||||
## Cables
|
||||
* `technic.register_cable(tier, size)`
|
||||
* Registers an existing node as cable
|
||||
* `tier`: string
|
||||
* `size`: number, visual size of the wire
|
||||
* `technic.get_cable_tier(nodename)`
|
||||
* Retrieves the tier assigned to the provided node name
|
||||
* `nodename`: string, name of the node
|
||||
* Returns the tier (string) or `nil`
|
||||
* `technic.is_tier_cable(nodename, tier)`
|
||||
* Tells whether the node `nodename` is the cable of the tier `tier`.
|
||||
* Short version of `technic.get_cable_tier(nodename) == tier`
|
||||
|
||||
|
||||
## Machines
|
||||
The machine type indicates the direction of power flow.
|
||||
List of pre-registered machine types:
|
||||
|
||||
* `technic.receiver = "RE"` e.g. grinder
|
||||
* `technic.producer = "PR"` e.g. solar panel
|
||||
* `technic.producer_receiver = "PR_RE"` supply converter
|
||||
* `technic.battery = "BA"` e.g. LV battery box
|
||||
|
||||
Available functions:
|
||||
|
||||
* `technic.register_machine(tier, nodename, machine_type)`
|
||||
* Register an existing node as machine, bound to the network tier
|
||||
* `tier`: see `register_tier`
|
||||
* `nodename`: string, node name
|
||||
* `machine_type`: string, following options are possible:
|
||||
* `"RE"`: Receiver
|
||||
* `"PR"`: Producer
|
||||
* `"BA"`: Battery, energy storage
|
||||
* See also `Machine types`
|
||||
|
||||
Functions to use for callbacks:
|
||||
|
||||
* `technic.can_insert_unique_stack(pos, node, stack, direction)`
|
||||
* `technic.insert_object_unique_stack(pos, node, stack, direction)`
|
||||
* Functions for the parameters `can_insert` and `insert_object` to avoid
|
||||
filling multiple inventory slots with same type of item.
|
||||
|
||||
### Specific machines
|
||||
* `technic.register_solar_array(data)`
|
||||
* data is a table (TODO)
|
||||
|
||||
|
||||
## Tools
|
||||
* `technic.register_power_tool(itemname, max_charge)`
|
||||
* Register or configure the maximal charge held by an existing item
|
||||
* `craftitem`: string, item or node name
|
||||
* `max_charge`: number, maximal EU capacity
|
||||
|
||||
|
||||
## Helper functions
|
||||
Unsorted functions:
|
||||
|
||||
* `technic.EU_string(num)`
|
||||
* Converts num to a human-readable string (see `pretty_num`)
|
||||
and adds the `EU` unit
|
||||
* Use this function when showing players energy values
|
||||
* `technic.pretty_num(num)`
|
||||
* Converts the number `num` to a human-readable string.
|
||||
* Use this function when showing players power values.
|
||||
* `technic.swap_node(pos, nodename)`
|
||||
* Same as `mintest.swap_node` but it only changes the nodename.
|
||||
* It uses `minetest.get_node` before swapping to ensure the new nodename
|
||||
is not the same as the current one.
|
||||
* `technic.get_or_load_node(pos)`
|
||||
* If the mapblock is loaded, it returns the node at pos,
|
||||
else it loads the chunk and returns `nil`.
|
||||
* Converts the number `num` to a human-readable string with SI prefixes
|
||||
* `technic.config:get(name)`
|
||||
* Some configuration function
|
||||
* `technic.tube_inject_item(pos, start_pos, velocity, item)`
|
||||
* Same as `pipeworks.tube_inject_item`
|
||||
|
||||
### Energy modifiers
|
||||
* `technic.set_RE_wear(itemstack, item_load, max_charge)`
|
||||
* If the `wear_represents` field in the item's nodedef is
|
||||
`"technic_RE_charge"`, this function does nothing.
|
||||
* Modifies the power tool wear of the given itemstack
|
||||
* `itemstack`: ItemStack to modify
|
||||
* `item_load`: number, used energy in EU
|
||||
* `max_charge`: number, maximal EU capacity of the tool
|
||||
* The itemdef field `wear_represents` must be set to `"technic_RE_charge"`,
|
||||
otherwise this function will do nothing.
|
||||
* Returns the modified itemstack
|
||||
* `technic.refill_RE_charge(itemstack)`
|
||||
* This function fully recharges an RE chargeable item.
|
||||
* If `technic.power_tools[itemstack:get_name()]` is `nil` (or `false`), this
|
||||
function does nothing, else that value is the maximum charge.
|
||||
* The itemstack metadata is changed to contain the charge.
|
||||
* `technic.is_tier_cable(nodename, tier)`
|
||||
* Tells whether the node `nodename` is the cable of the tier `tier`.
|
||||
* `technic.get_cable_tier(nodename)`
|
||||
* Returns the tier of the cable `nodename` or `nil`.
|
||||
|
||||
### Node-specific
|
||||
* `technic.get_or_load_node(pos)`
|
||||
* If the mapblock is loaded, it returns the node at pos,
|
||||
else it loads the chunk and returns `nil`.
|
||||
* `technic.swap_node(pos, nodename)`
|
||||
* Same as `mintest.swap_node` but it only changes the nodename.
|
||||
* It uses `minetest.get_node` before swapping to ensure the new nodename
|
||||
is not the same as the current one.
|
||||
* `technic.trace_node_ray(pos, dir, range)`
|
||||
* Returns an iteration function (usable in the for loop) to iterate over the
|
||||
node positions along the specified ray.
|
||||
|
@ -40,54 +117,50 @@ Helper functions
|
|||
* `technic.trace_node_ray_fat(pos, dir, range)`
|
||||
* Like `technic.trace_node_ray` but includes extra positions near the ray.
|
||||
* The node ray functions are used for mining lasers.
|
||||
* `technic.config:get(name)`
|
||||
* Some configuration function
|
||||
* `technic.tube_inject_item(pos, start_pos, velocity, item)`
|
||||
* Same as `pipeworks.tube_inject_item`
|
||||
|
||||
Registration functions
|
||||
----------------------
|
||||
* `technic.register_power_tool(itemname, max_charge)`
|
||||
* Same as `technic.power_tools[itemname] = max_charge`
|
||||
* This function makes the craftitem `itemname` chargeable.
|
||||
* `technic.register_machine(tier, nodename, machine_type)`
|
||||
* Same as `technic.machines[tier][nodename] = machine_type`
|
||||
* Currently this is requisite to make technic recognize your node.
|
||||
* See also `Machine types`
|
||||
* `technic.register_tier(tier)`
|
||||
* Same as `technic.machines[tier] = {}`
|
||||
* See also `tiers`
|
||||
|
||||
### Specific machines
|
||||
* `technic.register_solar_array(data)`
|
||||
* data is a table
|
||||
## Item Definition fields
|
||||
Groups:
|
||||
|
||||
Used itemdef fields
|
||||
-------------------
|
||||
* groups:
|
||||
* `technic_<ltier> = 1` ltier is a tier in small letters; this group makes
|
||||
the node connect to the cable(s) of the right tier.
|
||||
* `technic_machine = 1` Currently used for
|
||||
* `connect_sides`
|
||||
* In addition to the default use (see lua_api.txt), this tells where the
|
||||
machine can be connected.
|
||||
#
|
||||
#
|
||||
* `technic_run(pos, node)`
|
||||
* `technic_<tier> = 1`
|
||||
* Makes the node connect to the cables of the matching tier name
|
||||
* `<tier>`: name of the tier, in lowercase (ex. `lv`)
|
||||
* `technic_machine = 1`
|
||||
* UNRELIABLE. Indicates whether the item or node belongs to technic
|
||||
* `connect_sides = {"top", "left", ...}`
|
||||
* Extends the Minetest API. Indicates where the machine can be connected.
|
||||
|
||||
Additional definition fields:
|
||||
|
||||
* `wear_represents = "string"`
|
||||
* Specifies how the tool wear level is handled. Available modes:
|
||||
* `"mechanical_wear"`: represents physical damage
|
||||
* `"technic_RE_charge"`: represents electrical charge
|
||||
* `<itemdef>.technic_run(pos, node)`
|
||||
* This function is currently used to update the node.
|
||||
Modders have to manually change the information about supply etc. in the
|
||||
node metadata.
|
||||
|
||||
Machine types
|
||||
-------------
|
||||
There are currently following types:
|
||||
* `technic.receiver = "RE"` e.g. grinder
|
||||
* `technic.producer = "PR"` e.g. solar panel
|
||||
* `technic.producer_receiver = "PR_RE"` supply converter
|
||||
* `technic.battery = "BA"` e.g. LV batbox
|
||||
## Node Metadata fields
|
||||
Nodes connected to the network will have one or more of these parameters as meta
|
||||
data:
|
||||
|
||||
Switching Station
|
||||
-----------------
|
||||
* `<tier>_EU_supply` - direction: output
|
||||
* For nodes registered as `PR` or `BA` tier
|
||||
* This is the EU value supplied by the node.
|
||||
* `<tier>_EU_demand` - direction: output
|
||||
* For nodes registered as `RE` or `BA` tier
|
||||
* This is the EU value the node requires to run.
|
||||
* `<tier>_EU_input` - direction: input
|
||||
* For nodes registered as `RE` or `BA` tier
|
||||
* This is the actual EU value the network can give the node.
|
||||
|
||||
`<tier>` corresponds to the tier name registered using
|
||||
`technic.register_tier` (ex. `LV`). It is possible for the machine to depend on
|
||||
multiple tiers (or networks).
|
||||
|
||||
|
||||
## Switching Station mechanics
|
||||
The switching station is the center of all power distribution on an electric
|
||||
network.
|
||||
|
||||
|
@ -115,16 +188,12 @@ down. We have a brown-out situation.
|
|||
|
||||
Hence for now all the power distribution logic resides in this single node.
|
||||
|
||||
### Node meta usage
|
||||
Nodes connected to the network will have one or more of these parameters as meta
|
||||
data:
|
||||
* `<LV|MV|HV>_EU_supply` : Exists for PR and BA node types.
|
||||
This is the EU value supplied by the node. Output
|
||||
* `<LV|MV|HV>_EU_demand` : Exists for RE and BA node types.
|
||||
This is the EU value the node requires to run. Output
|
||||
* `<LV|MV|HV>_EU_input` : Exists for RE and BA node types.
|
||||
This is the actual EU value the network can give the node. Input
|
||||
## Deprecated functions
|
||||
|
||||
The reason the LV|MV|HV type is prepended to meta data is because some machine
|
||||
could require several supplies to work.
|
||||
This way the supplies are separated per network.
|
||||
Following functions are either no longer used by technic, or are planned to
|
||||
be removed soon. Please update mods depending on technic accordingly.
|
||||
|
||||
* `technic.get_RE_item_load`
|
||||
* Scales the tool wear to a certain numeric range
|
||||
* `technic.set_RE_item_load`
|
||||
* Scales a certain numeric range to the tool wear
|
||||
|
|
|
@ -1,23 +1,56 @@
|
|||
local digit_sep_esc
|
||||
do
|
||||
local sep = technic.config:get("digit_separator")
|
||||
sep = tonumber(sep) and string.char(sep) or sep or " "
|
||||
-- Escape for gsub
|
||||
for magic in ("().%+-*?[^$"):gmatch(".") do
|
||||
if sep == magic then
|
||||
sep = "%"..sep
|
||||
end
|
||||
local constant_digit_count = technic.config:get("constant_digit_count")
|
||||
|
||||
-- converts a number to a readable string with SI prefix, e.g. 10000 → "10 k",
|
||||
-- 15 → "15 ", 0.1501 → "150.1 m"
|
||||
-- a non-breaking space (U+a0) instead of a usual one is put after number
|
||||
-- The precision is 4 digits
|
||||
local prefixes = {[-8] = "y", [-7] = "z", [-6] = "a", [-5] = "f", [-4] = "p",
|
||||
[-3] = "n", [-2] = "µ", [-1] = "m", [0] = "", [1] = "k", [2] = "M",
|
||||
[3] = "G", [4] = "T", [5] = "P", [6] = "E", [7] = "Z", [8] = "Y"}
|
||||
function technic.pretty_num(num)
|
||||
-- the small number added is due to floating point inaccuracy
|
||||
local b = math.floor(math.log10(math.abs(num)) +0.000001)
|
||||
local pref_i
|
||||
if b ~= 0 then
|
||||
-- b is decremented by 1 to avoid a single digit with many decimals,
|
||||
-- e.g. instead of 1.021 MEU, 1021 kEU is shown
|
||||
pref_i = math.floor((b - 1) / 3)
|
||||
else
|
||||
-- as special case, avoid showing e.g. 1100 mEU instead of 1.1 EU
|
||||
pref_i = 0
|
||||
end
|
||||
digit_sep_esc = sep
|
||||
if not prefixes[pref_i] then
|
||||
-- This happens for 0, nan, inf, very big values, etc.
|
||||
if num == 0 then
|
||||
-- handle 0 explicilty to avoid showing "-0"
|
||||
if not constant_digit_count then
|
||||
return "0 "
|
||||
end
|
||||
-- gives 0.000
|
||||
return string.format("%.3f ", 0)
|
||||
end
|
||||
return string.format("%.4g ", num)
|
||||
end
|
||||
|
||||
num = num * 10 ^ (-3 * pref_i)
|
||||
if constant_digit_count then
|
||||
local comma_digits_cnt = 3 - (b - 3 * pref_i)
|
||||
return string.format("%." .. comma_digits_cnt .. "f %s",
|
||||
num, prefixes[pref_i])
|
||||
end
|
||||
return string.format("%.4g %s", num, prefixes[pref_i])
|
||||
end
|
||||
|
||||
-- some unittests
|
||||
assert(technic.pretty_num(-0) == "0 ")
|
||||
assert(technic.pretty_num(0) == "0 ")
|
||||
assert(technic.pretty_num(1234) == "1234 ")
|
||||
assert(technic.pretty_num(123456789) == "123.5 M")
|
||||
|
||||
function technic.pretty_num(num)
|
||||
local str, k = tostring(num), nil
|
||||
repeat
|
||||
str, k = str:gsub("^(-?%d+)(%d%d%d)", "%1"..digit_sep_esc.."%2")
|
||||
until k == 0
|
||||
return str
|
||||
|
||||
-- used to display power values
|
||||
function technic.EU_string(num)
|
||||
return technic.pretty_num(num) .. "EU"
|
||||
end
|
||||
|
||||
|
||||
|
@ -50,7 +83,7 @@ function technic.get_or_load_node(pos)
|
|||
local node = minetest.get_node_or_nil(pos)
|
||||
if node then return node end
|
||||
local vm = VoxelManip()
|
||||
local MinEdge, MaxEdge = vm:read_from_map(pos, pos)
|
||||
local _, _ = vm:read_from_map(pos, pos)
|
||||
return nil
|
||||
end
|
||||
|
||||
|
@ -58,8 +91,8 @@ end
|
|||
technic.tube_inject_item = pipeworks.tube_inject_item or function(pos, start_pos, velocity, item)
|
||||
local tubed = pipeworks.tube_item(vector.new(pos), item)
|
||||
tubed:get_luaentity().start_pos = vector.new(start_pos)
|
||||
tubed:setvelocity(velocity)
|
||||
tubed:setacceleration(vector.new(0, 0, 0))
|
||||
tubed:set_velocity(velocity)
|
||||
tubed:set_acceleration(vector.new(0, 0, 0))
|
||||
end
|
||||
|
||||
|
||||
|
@ -188,4 +221,3 @@ function technic.trace_node_ray_fat(pos, dir, range)
|
|||
return p
|
||||
end, vector.round(pos)
|
||||
end
|
||||
|
||||
|
|
|
@ -14,11 +14,7 @@ technic.modpath = modpath
|
|||
|
||||
-- Boilerplate to support intllib
|
||||
if rawget(_G, "intllib") then
|
||||
if intllib.make_gettext_pair then
|
||||
technic.getter = intllib.make_gettext_pair()
|
||||
else
|
||||
technic.getter = intllib.Getter()
|
||||
end
|
||||
technic.getter = intllib.Getter()
|
||||
else
|
||||
technic.getter = function(s,a,...)if a==nil then return s end a={a,...}return s:gsub("(@?)@(%(?)(%d+)(%)?)",function(e,o,n,c)if e==""then return a[tonumber(n)]..(o==""and c or"")else return"@"..o..n..c end end) end
|
||||
end
|
||||
|
@ -30,10 +26,10 @@ dofile(modpath.."/config.lua")
|
|||
-- Helper functions
|
||||
dofile(modpath.."/helpers.lua")
|
||||
|
||||
-- Items
|
||||
-- Items
|
||||
dofile(modpath.."/items.lua")
|
||||
|
||||
-- Craft recipes for items
|
||||
-- Craft recipes for items
|
||||
dofile(modpath.."/crafts.lua")
|
||||
|
||||
-- Register functions
|
||||
|
|
|
@ -35,7 +35,7 @@ minetest.register_tool("technic:blue_energy_crystal", {
|
|||
fleshy = {times={}, uses=10000, maxlevel=0}
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
minetest.register_tool("technic:green_energy_crystal", {
|
||||
description = S("Green Energy Crystal"),
|
||||
|
@ -51,7 +51,7 @@ minetest.register_tool("technic:green_energy_crystal", {
|
|||
fleshy = {times={}, uses=10000, maxlevel=0}
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
minetest.register_tool("technic:red_energy_crystal", {
|
||||
description = S("Red Energy Crystal"),
|
||||
|
@ -67,22 +67,6 @@ minetest.register_tool("technic:red_energy_crystal", {
|
|||
fleshy = {times={}, uses=10000, maxlevel=0}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
minetest.register_craftitem("technic:fine_copper_wire", {
|
||||
description = S("Fine Copper Wire"),
|
||||
inventory_image = "technic_fine_copper_wire.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("technic:fine_gold_wire", {
|
||||
description = S("Fine Gold Wire"),
|
||||
inventory_image = "technic_fine_gold_wire.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("technic:fine_silver_wire", {
|
||||
description = S("Fine Silver Wire"),
|
||||
inventory_image = "technic_fine_silver_wire.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("technic:copper_coil", {
|
||||
|
@ -90,11 +74,6 @@ minetest.register_craftitem("technic:copper_coil", {
|
|||
inventory_image = "technic_copper_coil.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("technic:motor", {
|
||||
description = S("Electric Motor"),
|
||||
inventory_image = "technic_motor.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("technic:lv_transformer", {
|
||||
description = S("Low Voltage Transformer"),
|
||||
inventory_image = "technic_lv_transformer.png",
|
||||
|
@ -155,6 +134,11 @@ minetest.register_node("technic:machine_casing", {
|
|||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_craftitem("technic:rubber_goo", {
|
||||
description = S("Rubber Goo"),
|
||||
inventory_image = "technic_rubber_goo.png",
|
||||
})
|
||||
|
||||
for p = 0, 35 do
|
||||
local nici = (p ~= 0 and p ~= 7 and p ~= 35) and 1 or nil
|
||||
local psuffix = p == 7 and "" or p
|
||||
|
|
|
@ -25,7 +25,7 @@ Mixed Metal Ingot = Mischmetallbarren
|
|||
Composite Plate = Verbundplatte
|
||||
Copper Plate = Kupferplatte
|
||||
Carbon Plate = Kohlefaserplatte
|
||||
Graphite = Graphit
|
||||
Graphite = Graphit
|
||||
Carbon Cloth = Kohlefasergewebe
|
||||
Raw Latex = Rohlatex
|
||||
Rubber Fiber = Gummifaser
|
||||
|
@ -42,7 +42,7 @@ Inventory move disallowed due to protection = Das Inventar ist geschuetzt, Zugri
|
|||
%s Enabled =
|
||||
%s Idle = %s ist bereit
|
||||
%s Improperly Placed = %s ist falsch plaziert
|
||||
%s Unpowered = %s hat keine Stromversorgung
|
||||
%s Unpowered = %s hat keine Stromversorgung
|
||||
%s Out Of Fuel = %s hat keinen Brennstoff
|
||||
%s Has Bad Cabling = %s ist falsch verkabelt
|
||||
%s Has No Network = %s hat kein Netzwerk
|
||||
|
@ -67,10 +67,9 @@ Disabled =
|
|||
%s Alloy Furnace = %s Legierungsofen
|
||||
%s Battery Box = %s Batteriebox
|
||||
%s Cable = %s Kabel
|
||||
%s CNC Machine = %s CNC-Maschine
|
||||
%s Compressor = %s Kompressor
|
||||
%s Extractor = %s Extraktor
|
||||
%s Forcefield Emitter = %s Kraftfeld-Emitter
|
||||
%s Forcefield Emitter = %s Kraftfeld-Emitter
|
||||
%s Furnace = %s Ofen
|
||||
%s Grinder = %s Schleifmaschine
|
||||
%s Music Player = %s Musikspieler
|
||||
|
@ -106,7 +105,7 @@ Administrative World Anchor =
|
|||
Charge = Aufladen
|
||||
Discharge = Entladen
|
||||
Power level = Energiestufe
|
||||
# $1: Tier $2: current_charge $3: max_charge
|
||||
# $1: Tier $2: current_charge $3: max_charge
|
||||
@1 Battery Box: @2/@3 = @1 Batteriebox: @2/@3
|
||||
# $1: Machine name $2: Supply $3: Demand
|
||||
@1. Supply: @2 Demand: @3 = @1. Versorgung: @2 Bedarf: @3
|
||||
|
@ -121,41 +120,6 @@ Digging finished =
|
|||
Digging %d m above machine =
|
||||
Digging %d m below machine =
|
||||
|
||||
## CNC
|
||||
Cylinder = Zylinder
|
||||
Element Cross = Halbes Kreuzelement
|
||||
Element Cross Double = Kreuzelement
|
||||
Element Edge = Halbes Eckelement
|
||||
Element Edge Double = Eckelement
|
||||
Element End = Halbes Endelement
|
||||
Element End Double = Endelement
|
||||
Element Straight = Halbes aufrechtes Element
|
||||
Element Straight Double = Aufrechtes Element
|
||||
Element T = Halbes T-Element
|
||||
Element T Double = T-Element
|
||||
Horizontal Cylinder = Liegender Zylinder
|
||||
One Curved Edge Block = Block mit einer abgerundeten Kante
|
||||
Pyramid = Pyramide
|
||||
Slope = Schraege
|
||||
Slope Edge = Schraege mit Ecke
|
||||
Slope Inner Edge = Schraege mit Innenecke
|
||||
Slope Lying = Liegende Schraege
|
||||
Slope Upside Down = Umgedrehte Schraege
|
||||
Slope Upside Down Edge = Umgedrehte Schraege mit Ecke
|
||||
Slope Upside Down Inner Edge = Umgedrehte Schraege mit Innenecke
|
||||
Sphere = Kugel
|
||||
Spike = Spitze
|
||||
Stick = Stange
|
||||
Two Curved Edge Block = Block mit zwei abgerundeten Kanten
|
||||
Brick = Ziegel:
|
||||
Cobble = Pflasterstein:
|
||||
Dirt = Erde:
|
||||
Leaves = Laub:
|
||||
Sandstone = Sandstein:
|
||||
Stone = Stein:
|
||||
Tree = Baumstamm:
|
||||
Wooden = Holz:
|
||||
|
||||
## Grinder Recipes
|
||||
# $1: Name
|
||||
%s Dust = %sstaub
|
||||
|
|
|
@ -63,7 +63,6 @@ Disabled =
|
|||
%s Alloy Furnace = Horno de Aleacion %s
|
||||
%s Battery Box = Caja de Bateria %s
|
||||
%s Cable = Cable %s
|
||||
%s CNC Machine = Maquina CNC %s
|
||||
%s Compressor = Compresor %s
|
||||
%s Extractor = Extractor %s
|
||||
%s Forcefield Emitter = Emisor de Campo de Fuerza %s
|
||||
|
@ -102,7 +101,7 @@ Administrative World Anchor =
|
|||
Charge = Cargar
|
||||
Discharge = Descargar
|
||||
Power level = Nivel de Poder
|
||||
# $1: Tier $2: current_charge $3: max_charge
|
||||
# $1: Tier $2: current_charge $3: max_charge
|
||||
@1 Battery Box: @2/@3 = Caja de Bateria @1: @2/@3
|
||||
# $1: Machine name $2: Supply $3: Demand
|
||||
@1. Supply: @2 Demand: @3 = @1. Alimentacion: @2 Demanda: @3
|
||||
|
@ -115,40 +114,6 @@ Digging finished =
|
|||
Digging %d m above machine =
|
||||
Digging %d m below machine =
|
||||
|
||||
## CNC Machine
|
||||
Element Edge = Elemento Borde
|
||||
Tree = Arbol
|
||||
Element Cross Double = Elemento Cruz Doble
|
||||
Spike = Pica
|
||||
Element Edge Double = Elemento Borde Doble
|
||||
Two Curved Edge Block = Dos Bloques de Borde Curvados
|
||||
Pyramid = Piramide
|
||||
Slope Upside Down Inner Edge = Borde Interno de Rampa Al Reves
|
||||
Slope Upside Down Edge = Borde de Rampa Al Reves
|
||||
Element Straight Double = Elemento Doble Recto
|
||||
Sphere = Esfera
|
||||
Element End Double = Doble Fin de Elemento
|
||||
Element Straight = Recta de Elemento
|
||||
Horizontal Cylinder = Cilindro Horizontal
|
||||
Slope Inner Edge = Borde Interno de Rampa
|
||||
One Curved Edge Block = Un Bloque de Borde Curvado
|
||||
Element Cross = Cruce de Elementos
|
||||
Stick = Varita
|
||||
Element End = Fin de Elemento
|
||||
Slope Lying = Rampa en Reposo
|
||||
Slope Upside Down = Rampa Al Reves
|
||||
Slope Edge = Borde de Rampa
|
||||
Slope = Rampa
|
||||
Element T = Elemento T
|
||||
Cylinder = Cilindro
|
||||
Cobble = Adoquines
|
||||
Stone = Piedra
|
||||
Brick = Ladrillo
|
||||
Dirt = Tierra
|
||||
Sandstone = Arenisca
|
||||
Wooden = Madera
|
||||
Leaves = Hojas
|
||||
|
||||
## Grinder Recipes
|
||||
# $1: Name
|
||||
%s Dust = Polvo de %s
|
||||
|
|
|
@ -0,0 +1,215 @@
|
|||
# template.txt
|
||||
# Template for translations of Technic
|
||||
|
||||
## Misc
|
||||
[Technic] Loaded in %f seconds = [Technic] Chargement en %f secondes
|
||||
|
||||
## Items
|
||||
Silicon Wafer = Tranche de silicium
|
||||
Doped Silicon Wafer = Tranche de silicium doppée
|
||||
Enriched Uranium = Uranium enrichi
|
||||
Uranium Fuel = Uranium 235
|
||||
Diamond Drill Head = Tête de forage en diamant
|
||||
Blue Energy Crystal = Cristal d'énergie bleu
|
||||
Green Energy Crystal = Cristal d'énergie vert
|
||||
Red Energy Crystal = Cristal d'énergie rouge
|
||||
Fine Copper Wire = Fil en cuivre fin
|
||||
Fine Gold Wire = Fil en or fin
|
||||
Fine Silver Wire = Fil en argent fin
|
||||
Copper Coil = Bobine de cuivre
|
||||
Electric Motor = Moteur électrique
|
||||
Low Voltage Transformer = Transformateur basse tension
|
||||
Medium Voltage Transformer = Transformateur moyenne tension
|
||||
High Voltage Transformer = Transformateur haute tension
|
||||
Control Logic Unit = Unité de contrôle logique
|
||||
Mixed Metal Ingot = Lingot de métal allié
|
||||
Composite Plate = Plaque composite
|
||||
Copper Plate = Plaque de cuivre
|
||||
Carbon Plate = Plaque de carbone
|
||||
Graphite = Graphite
|
||||
Carbon Cloth = Fibre de carbone
|
||||
Raw Latex = Latex brut
|
||||
Rubber Fiber = Fibre de caoutchouc
|
||||
%.1f%%-Fissile Uranium Ingot = Lingot d'uranium fissile (%.1f%%)
|
||||
%.1f%%-Fissile Uranium Block = Bloc d'uranium fissile (%.1f%%)
|
||||
|
||||
## Machine misc
|
||||
Machine cannot be removed because it is not empty = La machine ne peut pas être retirée car elle n'est pas vide
|
||||
Inventory move disallowed due to protection = Le mouvement d'inventaire n'est pas autorisé en raison de la protection
|
||||
|
||||
# $1: Machine name (Includes tier)
|
||||
@1 Active (@2 EU) = @1 Active (@2 EU)
|
||||
%s Active = %s actif
|
||||
%s Disabled = %s désactivé
|
||||
%s Enabled = %s activé
|
||||
%s Idle = %s au repos
|
||||
%s Improperly Placed = %s est mal placé
|
||||
%s is empty = %s est vide
|
||||
%s Unpowered = %s non alimenté en énergie
|
||||
%s Out Of Fuel = %s plus de carburant
|
||||
%s Has Bad Cabling = %s est mal cablé
|
||||
%s (Slave) = %s (esclave)
|
||||
%s Has No Network = %s n'a pas de réseau
|
||||
%s Finished = %s a fini
|
||||
Enable/Disable = Activer/Désactiver
|
||||
Range = Plage
|
||||
Upgrade Slots = Emplacement d'amélioration
|
||||
In: = Entrée :
|
||||
Out: = Sortie :
|
||||
Slot %d = Emplacement %d
|
||||
Itemwise = Item par Item
|
||||
Stackwise = Stack par Stack
|
||||
Ignoring Mesecon Signal = Ignorer le signal Mesecon
|
||||
Controlled by Mesecon Signal = Contrôlé par signal Mesecon
|
||||
Owner: = Propriétaire :
|
||||
Unlocked = Déverrouillé
|
||||
Locked = Verrouillé
|
||||
Radius: = Rayon :
|
||||
Enabled = Activé
|
||||
Disabled = Désactivé
|
||||
|
||||
## Machine names
|
||||
# $1: Tier
|
||||
%s Alloy Furnace = Four à alliage %s
|
||||
%s Battery Box = Batterie %s
|
||||
%s Cable = Câble %s
|
||||
%s CNC Machine = Machine-outils %s
|
||||
%s Centrifuge = Centrifugeuse %s
|
||||
%s Compressor = Compresseur %s
|
||||
%s Extractor = Extracteur %s
|
||||
%s Forcefield Emitter = Emetteur de champ de force %s
|
||||
%s Furnace = Four %s
|
||||
%s Grinder = Broyeur %s
|
||||
%s Music Player = Grammophone %s
|
||||
%s Quarry = Carrière %s
|
||||
%s Tool Workshop = Atelier d'outillage %s
|
||||
Arrayed Solar %s Generator = Générateur solaire %s
|
||||
Fuel-Fired %s Generator = Générateur thermique %s
|
||||
Geothermal %s Generator = Géénarteur géothermique %s
|
||||
Hydro %s Generator = Générateur hydroélectrique %s
|
||||
Nuclear %s Generator Core = Générateur nucléaire %
|
||||
Small Solar %s Generator = Petit générateur solaire %s
|
||||
Wind %s Generator = Générateur éolien %s
|
||||
Self-Contained Injector = Injecteur autonome
|
||||
Constructor Mk%d = Constructeur Mk%d
|
||||
Frame = Cadre
|
||||
Frame Motor = Cadre de moteur
|
||||
Template = Modèle
|
||||
Template (replacing) =
|
||||
Template Motor =
|
||||
Template Tool =
|
||||
Battery Box = Compartiment à batterie
|
||||
Supply Converter = Convertisseur de tension
|
||||
Switching Station = Station de commutation
|
||||
Fuel-Fired Alloy Furnace = Four à alliage à carburant
|
||||
Fuel-Fired Furnace = Four à carburant
|
||||
Wind Mill Frame = Cadre d'éolienne
|
||||
Forcefield = Champ de force
|
||||
Nuclear Reactor Rod Compartment = Compartiment à barres du réacteur nucléaire
|
||||
Administrative World Anchor =
|
||||
|
||||
## Machine-specific
|
||||
# $1: Pruduced EU
|
||||
Charge = Charger
|
||||
Discharge = Décharger
|
||||
Power level = Niveau d'énergie
|
||||
|
||||
# $1: Tier $2: current_charge $3: max_charge
|
||||
@1 Battery Box: @2/@3 = @1 batterie : @2/@3
|
||||
|
||||
# $1: Machine name $2: Supply $3: Demand
|
||||
@1. Supply: @2 Demand: @3 = @1. fournit : @2 demande : @3
|
||||
Production at %d%% = Production à %d%%
|
||||
Choose Milling Program: = Choisissez le programme de fraisage :
|
||||
Slim Elements half / normal height: =
|
||||
Current track %s = Morceau actuel %s
|
||||
Stopped = Arrêté
|
||||
Keeping %d/%d map blocks loaded =
|
||||
Digging not started = Creusement non démarré
|
||||
Digging finished = Creusement terminé
|
||||
Digging %d m above machine = Creusement à %dm au dessus de la machine
|
||||
Digging %d m below machine = Creusement à %dm en dessous de la machine
|
||||
@1 (@2 @3 -> @4 @5) = @1 (@2 @3 -> @4 @5)
|
||||
|
||||
## CNC
|
||||
Cylinder =
|
||||
Element Cross = Elément croisé
|
||||
Element Cross Double = Elément croisé (double)
|
||||
Element Edge = Elément de bordure
|
||||
Element Edge Double = Elément de bordure (double)
|
||||
Element End = Elément de fin
|
||||
Element End Double = Elément de fin (double)
|
||||
Element Straight = Elément droit
|
||||
Element Straight Double = Elément droit (double)
|
||||
Element T = Elément en T
|
||||
Element T Double = Elément en T (double)
|
||||
Horizontal Cylinder = Cylindre horizontal
|
||||
One Curved Edge Block = Bloc à un bord incurvé
|
||||
Pyramid = Pyramide
|
||||
Slope = Pente
|
||||
Slope Edge =
|
||||
Slope Inner Edge =
|
||||
Slope Lying =
|
||||
Slope Upside Down =
|
||||
Slope Upside Down Edge =
|
||||
Slope Upside Down Inner Edge =
|
||||
Sphere = Sphère
|
||||
Spike = Pointe
|
||||
Stick = Bâton
|
||||
Two Curved Edge Block = Bloc à deux bords incurvés
|
||||
Brick = Brique
|
||||
Cobble = Pierre taillée
|
||||
Dirt = Terre
|
||||
Leaves = Feuilles
|
||||
Sandstone = Grès
|
||||
Stone = Pierre
|
||||
Tree = Arbre
|
||||
Wooden = Bois
|
||||
|
||||
## Grinder Recipes
|
||||
# $1: Name
|
||||
%s Dust = Poudre de %s
|
||||
Akalin =
|
||||
Alatro =
|
||||
Arol =
|
||||
Brass = Laiton
|
||||
Bronze = Bronze
|
||||
Carbon Steel = Acier au carbone
|
||||
Cast Iron = Fonte
|
||||
Chromium = Chrome
|
||||
Coal = Charbon
|
||||
Copper = Cuivre
|
||||
Gold = Or
|
||||
Mithril = Mithril
|
||||
Silver = Argent
|
||||
Stainless Steel = Acier inoxydable
|
||||
Talinite = Talanite
|
||||
Tin = Etain
|
||||
Wrought Iron = Fer
|
||||
Zinc = Zinc
|
||||
%.1f%%-Fissile Uranium = Uranium fissile (%.1f%%)
|
||||
|
||||
## Tools
|
||||
RE Battery = Batterie RE
|
||||
Water Can = Jerrycan d'eau
|
||||
Lava Can = Jerrycan de lave
|
||||
Chainsaw = Tronçonneuse
|
||||
Flashlight = Lampe-torche
|
||||
3 nodes deep. =
|
||||
3 nodes tall. =
|
||||
3 nodes wide. =
|
||||
3x3 nodes. =
|
||||
Use while sneaking to change Mining Drill Mk%d modes. =
|
||||
Mining Drill Mk%d Mode %d = Foreuse Mk%d Mode %d
|
||||
Mining Drill Mk%d = Foreuse Mk%d
|
||||
Mining Laser Mk%d = Foreuse laser Mk%d
|
||||
Single node. = Mode simple.
|
||||
Sonic Screwdriver = Tournevis supersonique
|
||||
Tree Tap = Robinet à sève
|
||||
|
||||
## Craft descriptions
|
||||
Alloy cooking = Fonderie d'alliage
|
||||
Grinding = Broyage
|
||||
Compressing = Compression
|
||||
Extracting = Extraction
|
||||
Separating = Séparation
|
|
@ -64,7 +64,6 @@ Disabled = Disabilitato
|
|||
%s Alloy Furnace = %s Fornace per leghe
|
||||
%s Battery Box = %s Box batterie
|
||||
%s Cable = Cavo %s
|
||||
%s CNC Machine = Tornio CNC %s
|
||||
%s Compressor = Compressore %s
|
||||
%s Extractor = Estrattore %s
|
||||
%s Forcefield Emitter = Emettitore di campo di forza %s
|
||||
|
@ -118,41 +117,6 @@ Digging finished = Scavo finito
|
|||
Digging %d m above machine = Scavo di %d m sopra la macchina
|
||||
Digging %d m below machine = Scavo di %d m sotto la macchina
|
||||
|
||||
## CNC
|
||||
Cylinder = Cilindro
|
||||
Element Cross = Elemento a croce
|
||||
Element Cross Double = Elemento a croce doppio
|
||||
Element Edge = Elemento bordo
|
||||
Element Edge Double = Elemento bordo doppio
|
||||
Element End = Elemento finale
|
||||
Element End Double = Elemento finale doppio
|
||||
Element Straight = Elemento dritto
|
||||
Element Straight Double = Elemento dritto doppio
|
||||
Element T = Elemento a T
|
||||
Element T Double = Elemento a T doppio
|
||||
Horizontal Cylinder = Cilindro orizzontale
|
||||
One Curved Edge Block = Blocco con bordo curvo
|
||||
Pyramid = Piramide
|
||||
Slope = Inclinato
|
||||
Slope Edge = Bordo inclinato
|
||||
Slope Inner Edge = Bordo interno inclinato
|
||||
Slope Lying = Pendenza bugiarda
|
||||
Slope Upside Down = Pendenza capovolta
|
||||
Slope Upside Down Edge = Bordo inclinato capovolto
|
||||
Slope Upside Down Inner Edge = Bordo interno inclinato capovolto
|
||||
Sphere = Sfera
|
||||
Spike = Spuntone
|
||||
Stick = Bastone
|
||||
Two Curved Edge Block = Blocco con bordo a doppia curva
|
||||
Brick = Mattone
|
||||
Cobble = Ciottolato
|
||||
Dirt = Terra
|
||||
Leaves = Foglie
|
||||
Sandstone = Arenaria
|
||||
Stone = Pietra
|
||||
Tree = Albero
|
||||
Wooden = Legno
|
||||
|
||||
## Grinder Recipes
|
||||
# $1: Name
|
||||
%s Dust = Polvere di %s
|
||||
|
|
|
@ -0,0 +1,175 @@
|
|||
# Polish Translation for Technic mod
|
||||
# Polskie tłumaczenie Technic mod
|
||||
# by mat9117
|
||||
|
||||
## Misc
|
||||
[Technic] Loaded in %f seconds = [Technic] Wczytany w %f sekund
|
||||
|
||||
## Items
|
||||
Silicon Wafer = Płytka krzemowa
|
||||
Doped Silicon Wafer = Domieszkowana płytka krzemowa
|
||||
Enriched Uranium = Wzbogacony uran
|
||||
Uranium Fuel = Paliwo uranowe
|
||||
Diamond Drill Head = Diamentowa głowica wiertła
|
||||
Blue Energy Crystal = Niebieski kryształ energii
|
||||
Green Energy Crystal = Zielony kryształ energii
|
||||
Red Energy Crystal = Czerwony kryształ energii
|
||||
Fine Copper Wire = Cienki miedziany drut
|
||||
Copper Coil = Miedziana cewka
|
||||
Electric Motor = Silnik elektryczny
|
||||
Low Voltage Transformer = Transformator niskiego napięcia
|
||||
Medium Voltage Transformer = Transformator średniego napięcia
|
||||
High Voltage Transformer = Transformator wysokiego napięcia
|
||||
Control Logic Unit = Jednostka sterująca
|
||||
Mixed Metal Ingot = Sztabka zmieszanych metali
|
||||
Composite Plate = Płytka kompozytowa
|
||||
Copper Plate = Płytka miedziana
|
||||
Carbon Plate = Płytka węglowa
|
||||
Graphite = Grafit
|
||||
Carbon Cloth = Włókno węglowe
|
||||
Raw Latex = Lateks naturalny
|
||||
Rubber Fiber = Włókno gumowe
|
||||
%.1f%%-Fissile Uranium Ingot = %.1f%% Sztabka uranu
|
||||
%.1f%%-Fissile Uranium Block = %.1f%% Blok uranu
|
||||
|
||||
## Machine misc
|
||||
Machine cannot be removed because it is not empty = Nie można usunąć maszyny, ponieważ nie jest pusta
|
||||
Inventory move disallowed due to protection = Przenoszenie rzeczy z ekwipunku niemożliwe z powodu ochrony
|
||||
# $1: Machine name (Includes tier)
|
||||
@1 Active (@2 EU) = @1 Aktywny (@2 EU)
|
||||
%s Active = %s Aktywny/a
|
||||
%s Disabled = %s Wyłączony/a
|
||||
%s Enabled = %s Włączony/a
|
||||
%s Idle = %s Bezczynny/a
|
||||
%s Improperly Placed = %s Ustawiony/a nieprawidłowo
|
||||
%s is empty = %s jest pusty/a
|
||||
%s Unpowered = %s brak zasilania
|
||||
%s Out Of Fuel = %s brak paliwa
|
||||
%s Has Bad Cabling = %s Źle podłączono kable
|
||||
%s (Slave) =
|
||||
%s Has No Network = %s Nie podłączony/a do sieci
|
||||
%s Finished = %s Ukończony
|
||||
Enable/Disable = Włącz/Wyłącz
|
||||
Range = Zasięg
|
||||
Upgrade Slots = Miejsca na ulepszenia
|
||||
In: = Wejście
|
||||
Out: = Wyjście
|
||||
Slot %d = Otwór %d
|
||||
Itemwise = Jeden przedmiot
|
||||
Stackwise = Cały stack
|
||||
Ignoring Mesecon Signal = Ignoruj sygnał Mesecon
|
||||
Controlled by Mesecon Signal = Sterowany sygnałem Mesecon
|
||||
Owner: = Właściciel:
|
||||
Unlocked = Odblokowany/a
|
||||
Locked = Zablokowany/a
|
||||
Radius: = Promień:
|
||||
Enabled = Włączony/a
|
||||
Disabled = Wyłączony/a
|
||||
|
||||
## Machine names
|
||||
# $1: Tier
|
||||
%s Alloy Furnace = %s Piec stopowy
|
||||
%s Battery Box = %s Skrzynka baterii
|
||||
%s Cable = %s Przewód
|
||||
%s Centrifuge = %s Centryfuga
|
||||
%s Compressor = %s Kompresor
|
||||
%s Extractor = %s Ekstraktor
|
||||
%s Forcefield Emitter = %s Emiter pola siłowego
|
||||
%s Furnace = %s Piec
|
||||
%s Grinder = %s Młynek
|
||||
%s Music Player = %s Odtwarzacz muzyki
|
||||
%s Quarry = %s Kamieniołom
|
||||
%s Tool Workshop = %s Warsztat narzędzi
|
||||
Arrayed Solar %s Generator = %s Szeregowy generator słoneczny
|
||||
Fuel-Fired %s Generator = %s Generator zasilany paliwem
|
||||
Geothermal %s Generator = %s Generator geotermalny
|
||||
Hydro %s Generator = %s Hydrogenerator
|
||||
Nuclear %s Generator Core = %s Reaktor atomowy
|
||||
Small Solar %s Generator = %s Mały generator słoneczny
|
||||
Wind %s Generator = %s Generator wiatrowy
|
||||
Self-Contained Injector = Samowystarczalny wtryskiwacz
|
||||
Constructor Mk%d = Konstruktor Mk%d
|
||||
Frame = Klatka
|
||||
Frame Motor = Silnik klatkowy
|
||||
Template = Szablon
|
||||
Template (replacing) = Szablon (zastępczy)
|
||||
Template Motor =Szablon silnika
|
||||
Template Tool = Szablon narzędzia
|
||||
Battery Box = Skrzynka baterii
|
||||
Supply Converter = Konwerter zasilania
|
||||
Switching Station = Rozdzielnia
|
||||
Fuel-Fired Alloy Furnace = Piec stopowy zasilany paliwem
|
||||
Fuel-Fired Furnace = Piec zasilany paliwem
|
||||
Wind Mill Frame = Klatka wiatraka
|
||||
Forcefield = Pole siłowe
|
||||
Nuclear Reactor Rod Compartment = Komora rdzenia reaktora atomowego
|
||||
Administrative World Anchor = Administracyjna kotwica świata
|
||||
|
||||
## Machine-specific
|
||||
# $1: Pruduced EU
|
||||
Charge = Ładuj
|
||||
Discharge = Rozładuj
|
||||
Power level = Poziom zasilania
|
||||
# $1: Tier $2: current_charge $3: max_charge
|
||||
@1 Battery Box: @2/@3 = @1 Skrzynka baterii: @2/@3
|
||||
# $1: Machine name $2: Supply $3: Demand
|
||||
@1. Supply: @2 Demand: @3 = @1. Zapas: @2 Pobór: @3
|
||||
Production at %d%% = Produkowanie w %d%%
|
||||
Choose Milling Program: = Wybierz program mielenia:
|
||||
Slim Elements half / normal height: = Małe elementy połowa / normalna wysokość:
|
||||
Current track %s =
|
||||
Stopped = Zatrzymany/a
|
||||
Keeping %d/%d map blocks loaded = Ciągle ładuję %d/%d bloki mapy
|
||||
Digging not started = Nie rozpoczęto kopania
|
||||
Digging finished = Kopanie skończone
|
||||
Digging %d m above machine = Kopię %d m nad maszyną
|
||||
Digging %d m below machine = Kopię %d m pod maszyną
|
||||
@1 (@2 @3 -> @4 @5) = @1 (@2 @3 -> @4 @5)
|
||||
|
||||
## Grinder Recipes
|
||||
# $1: Name
|
||||
%s Dust = %s Pył
|
||||
Akalin = Akalinowy
|
||||
Alatro = Alatrowy
|
||||
Arol = Arolowy
|
||||
Brass = Mosiądzu
|
||||
Bronze = Brązu
|
||||
Carbon Steel = Stali węglowej
|
||||
Cast Iron = Żeliwa
|
||||
Chromium = Chromu
|
||||
Coal = Węglowy
|
||||
Copper = Miedzi
|
||||
Gold = Złoty
|
||||
Mithril = Mithrilu
|
||||
Silver = Srebrny
|
||||
Stainless Steel = Stali nierdzewnej
|
||||
Talinite = Talinitu
|
||||
Tin = Cyny
|
||||
Wrought Iron = Kutego żelaza
|
||||
Zinc = Cynku
|
||||
%.1f%%-Fissile Uranium = %.1f%% Uranu
|
||||
|
||||
## Tools
|
||||
RE Battery = Bateria ładowalna
|
||||
Water Can = Kanister wody
|
||||
Lava Can = Kanister lawy
|
||||
Chainsaw = Piła łańcuchowa
|
||||
Flashlight = Latarka
|
||||
3 nodes deep. = Głęboki na 3 bloki.
|
||||
3 nodes tall. = Wysoki na 3 bloki.
|
||||
3 nodes wide. = Szeroki na 3 bloki.
|
||||
3x3 nodes. = 3x3 bloki.
|
||||
Use while sneaking to change Mining Drill Mk%d modes. = Użyj podczas skradania, aby zmienić tryby wiertła górniczego Mk%d
|
||||
Mining Drill Mk%d Mode %d = Tryb wiertła górniczego Mk%d
|
||||
Mining Drill Mk%d = Wiertło górnicze Mk%d
|
||||
Mining Laser Mk%d = Laser górniczy Mk%d
|
||||
Single node. = Pojedynczy blok.
|
||||
Sonic Screwdriver = Dźwiękowy śrubokręt
|
||||
Tree Tap = Nacinak drzewny
|
||||
|
||||
## Craft descriptions
|
||||
Alloy cooking = Stapianie
|
||||
Grinding = Mielenie
|
||||
Compressing = Kompresowanie
|
||||
Extracting = Ekstrakcja
|
||||
Separating = Oddzielanie
|
|
@ -0,0 +1,211 @@
|
|||
# Braziliam portuguese translation for technic
|
||||
# Tradução portuguesa brasileira para technic
|
||||
# By Sires
|
||||
|
||||
## Misc
|
||||
[Technic] Loaded in %f seconds = [Technic] Carregado em %f segundos
|
||||
|
||||
## Items
|
||||
Silicon Wafer = Pastilha de Silício
|
||||
Doped Silicon Wafer = Pastilha de Silício Dopada
|
||||
Enriched Uranium = Urânio Enriquecido
|
||||
Uranium Fuel = Combustivel de Urânio
|
||||
Diamond Drill Head = Cabeça de Broca de Diamante
|
||||
Blue Energy Crystal = Cristal de Energia Azul
|
||||
Green Energy Crystal = Cristal de Energia Verde
|
||||
Red Energy Crystal = Cristal de Energia Vermelho
|
||||
Fine Copper Wire = Fio Fino de Cobre
|
||||
Copper Coil = Bobina de Cobre
|
||||
Electric Motor = Motor Elétrico
|
||||
Low Voltage Transformer = Transformador de Baixa Voltagem
|
||||
Medium Voltage Transformer = Transformador de Média Voltagem
|
||||
High Voltage Transformer = Transformador de Alta Voltagem
|
||||
Control Logic Unit = Unidade de Controle Lógico
|
||||
Mixed Metal Ingot = Lingote de Metal Misturado
|
||||
Composite Plate = Placa Composta
|
||||
Copper Plate = Placa de Cobre
|
||||
Carbon Plate = Placa de Carbono
|
||||
Graphite = Grafite
|
||||
Carbon Cloth = Recido de Carbono
|
||||
Raw Latex = Latex bruto
|
||||
Rubber Fiber = Fibra de Borracha
|
||||
%.1f%%-Fissile Uranium Ingot = Lingote de Urânio %.1f%%-Físsil
|
||||
%.1f%%-Fissile Uranium Block = Bloco de Urânio %.1f%%-Físsil
|
||||
|
||||
## Machine Misc
|
||||
Machine cannot be removed because it is not empty = A máquina não pode ser removida porque ela não está vazia
|
||||
Inventory move disallowed due to protection = Movimento de inventário não permitido pela proteção
|
||||
# $1: Machine name (includes tier)
|
||||
@1 Active (@2 EU) = @1 Ativo (@2 EU)
|
||||
%s Active = %s Ativo
|
||||
%s Disabled = %s Ativado
|
||||
%s Enabled = %s Desativado
|
||||
%s Idle = Ócio
|
||||
%s Improperly Placed = %s Colocado Inapropriadamente
|
||||
%s is empty = %s está vazio
|
||||
%s Unpowered = %s Sem energia
|
||||
%s Out Of Fuel = %s Sem Combustível
|
||||
%s Has Bad Cabling = %s Tem Cabeamento Ruim
|
||||
%s (Slave) = %s (Servo)
|
||||
%s Has No Network = %s Não Tem Rede
|
||||
%s Finished = %s Acabou
|
||||
Enable/Disable = Ativar/Desativar
|
||||
Range = Alcance
|
||||
Upgrade Slots = Lugares para Melhoria
|
||||
In: = Entrada:
|
||||
Out: = Saída:
|
||||
Slot %d = Lugar %d
|
||||
Itemwise = Por item
|
||||
Stackwise = Por pilha
|
||||
Ignoring Mesecon Signal = Ignorar Sinaal de Mesecon
|
||||
Controlled by Mesecon Signal = Controlado por Sinal de Mesecon
|
||||
Owner: = Dono:
|
||||
Unlocked = Destravado
|
||||
Locked = Travado
|
||||
Radius: = Raio:
|
||||
Enabled = Ativado
|
||||
Disabled = Desativado
|
||||
|
||||
## Machine names
|
||||
# $1: Tier
|
||||
%s Alloy Furnace = Fornalha de Liga %s
|
||||
%s Battery Box = Caixa de Bateria %s
|
||||
%s Cable = Cabo %s
|
||||
%s CNC Machine = Máquina CNC %s
|
||||
%s Centrifuge = Centrifuga %s
|
||||
%s Compressor = Compresso %s
|
||||
%s Extractor = Extrator %s
|
||||
%s Forcefield Emitter = Emissor de Campo de Força %s
|
||||
%s Furnace = Fornalha %s
|
||||
%s Grinder = Triturador %s
|
||||
%s Music Player = Tocador de Música %s
|
||||
%s Quarry = Pedreira %s
|
||||
%s Tool Workshop = Oficina de Ferramentas %s
|
||||
Arrayed Solar %s Generator = Gerador Solar Equipado %s
|
||||
Fuel-Fired %s Generator = Gerador Alimentado-por-Combustível %s
|
||||
Geothermal %s Generator = Gerador Geotermal %s
|
||||
Hydro %s Generator = Gerador Hidráulico %s
|
||||
Nuclear %s Generator Core = Núcleo de Gerador Nuclear %s
|
||||
Small Solar %s Generator = Gerador Solar Pequeno %s
|
||||
Wind %s Generator = Gerador de Energia Eólica %s
|
||||
Self-Contained Injector = Injetor Auto-Contido
|
||||
Constructor Mk%d = Construtor Nv%d
|
||||
Frame = Armação
|
||||
Frame Motor = Motor de Armação
|
||||
Template = Modelo
|
||||
Template (replacing) = Modelo (recolocando)
|
||||
Template Motor = Modelo de Motor
|
||||
Template Tool = Modelo de Ferramenta
|
||||
Battery Box = Caixa de Bateria
|
||||
Supply Converter = Conversor de Energia
|
||||
Switching Station = Estação de Comutação
|
||||
Fuel-Fired Alloy Furnace = Fornalha de Liga Alimentada-por-Combustível
|
||||
Fuel-Fired Furnace = Fornalha Alimentada-por-Combustível
|
||||
Wind Mill Frame = Armação de Moinho de Vento
|
||||
Forcefield = Campo de Força
|
||||
Nuclear Reactor Rod Compartment = Compartimento de Barra do Reator Nuclear
|
||||
Administrative World Anchor = Âncora de Mundo Administrativa
|
||||
|
||||
## Machine-specific
|
||||
# $1: Pruduced EU
|
||||
Charge = Carregar
|
||||
Discharge = Descarregar
|
||||
Power level = Nível de Energia
|
||||
# $1: Tier $2: current_charge $3: max_charge
|
||||
@1 Battery Box: @2/@3 = Caixa de Baterias @1: @2/@3
|
||||
# $1: Machine name $2: Supply $3: Demand
|
||||
@1. Supply: @2 Demand: @3 = @1. Suprimento: @2 Demanda: @3
|
||||
Production at %d%% = Produção em %d%%
|
||||
Choose Milling Program: = Escolha o Programa de Serragem:
|
||||
Slim Elements half / normal height: = Metade de Elementos Finos / altura normal:
|
||||
Current track %s = Música Atual %s
|
||||
Stopped = Parado
|
||||
Keeping %d/%d map blocks loaded = Mantendo %d/%d blocos de mapa carregados
|
||||
Digging not started = Escavação não começada
|
||||
Digging finished = Escavação terminada
|
||||
Digging %d m above machine = Escavando %d m acima da máquina
|
||||
Digging %d m below machine = Escavando %d m abaixo da máquina
|
||||
@1 (@2 @3 -> @4 @5) = @1 (@2 @3 -> @4 @5)
|
||||
|
||||
## CNC
|
||||
Cylinder = Cilindro
|
||||
Element Cross = Cruz do Elemento
|
||||
Element Cross Double = Cruz Dupla do Elemento
|
||||
Element Edge = Borda do Elemento
|
||||
Element Edge Double = Borda Dupla do Elemento
|
||||
Element End = Final do Elemento
|
||||
Element End Double = Final Duplo do Elemento
|
||||
Element Straight = Elemento Contínuo
|
||||
Element Straight Double = Elemento Contínuo duplo
|
||||
Element T = Elemento em T
|
||||
Element T Double = Elemento em T Duplo
|
||||
Horizontal Cylinder = Cilindro Horizontal
|
||||
One Curved Edge Block = Uma Borda de Bloco Curvada
|
||||
Pyramid = Pirâmide
|
||||
Slope = Ladeira
|
||||
Slope Edge = Canto de Ladeira
|
||||
Slope Inner Edge = Canto de Dentro de Ladeira
|
||||
Slope Lying = Ladeira Deitada
|
||||
Slope Upside Down = Ladeira de Cabeça para Baixo
|
||||
Slope Upside Down Edge = Cande de Ladeira de Cabeça para Baixo
|
||||
Slope Upside Down Inner Edge = Canto de Dentro de Ladeira de Cabeça para Baixo
|
||||
Sphere = Esfera
|
||||
Spike = Espinho
|
||||
Stick = Graveto
|
||||
Two Curved Edge Block = Bloco de Duas Bordas Curvadas
|
||||
Brick = Tijolo
|
||||
Cobble = Pedregulho
|
||||
Dirt = Terra
|
||||
Leaves = Folhas
|
||||
Sandstone = Arenito
|
||||
Stone = Pedra
|
||||
Tree = Árvore
|
||||
Wooden = de Madeira
|
||||
|
||||
## Grinder Recipes
|
||||
# $1: Name
|
||||
%s Dust = Pó de %s
|
||||
Akalin = Akalin
|
||||
Alatro = Alatro
|
||||
Arol = Arol
|
||||
Brass = Latão
|
||||
Bronze = Bronze
|
||||
Carbon Steel = Aço Carbono
|
||||
Cast Iron = Ferro Fundido
|
||||
Chromium = Crômio
|
||||
Coal = Carvão
|
||||
Copper = Cobre
|
||||
Gold = Ouro
|
||||
Mithril = Mithril
|
||||
Silver = Prata
|
||||
Stainless Steel = Aço Inoxidável
|
||||
Talinite = Talinite
|
||||
Tin = Estanho
|
||||
Wrought Iron = Ferro Forjado
|
||||
Zinc = Zinco
|
||||
%.1f%%-Fissile Uranium = Urânio %.1f%%-Físsil
|
||||
|
||||
## Tools
|
||||
RE Battery = Bateria RE
|
||||
Water Can = Lata de Água
|
||||
Lava Can = Lata de Lava
|
||||
Chainsaw = Motosserra
|
||||
Flashlight = Lanterna
|
||||
3 nodes deep. = 3 nodes de profundidade.
|
||||
3 nodes tall. = 3 nodes de altura.
|
||||
3 nodes wide. = 3 nodes de largura.
|
||||
3x3 nodes. = 3x3 nodes.
|
||||
Use while sneaking to change Mining Drill Mk%d modes. = Use enquanto esgueirando para mudar os modos da Broca de Mineração Nv%d.
|
||||
Mining Drill Mk%d Mode %d = Broca de Mineração Nv%d Modo %d
|
||||
Mining Drill Mk%d = Broca de Mineração Nv%d
|
||||
Mining Laser Mk%d = Laser de Mineração Nv%d
|
||||
Single node. = Unico node.
|
||||
Sonic Screwdriver = Chave de Fenda Sônica.
|
||||
Tree Tap = Torneira de Árvore
|
||||
|
||||
## Craft descriptions
|
||||
Alloy cooking = Cozinhando em liga
|
||||
Grinding = Triturando
|
||||
Compressing = Comprimindo
|
||||
Extracting = Extraindo
|
||||
Separating = Separando
|
|
@ -15,6 +15,8 @@ Blue Energy Crystal =
|
|||
Green Energy Crystal =
|
||||
Red Energy Crystal =
|
||||
Fine Copper Wire =
|
||||
Fine Gold Wire =
|
||||
Fine Silver Wire =
|
||||
Copper Coil =
|
||||
Electric Motor =
|
||||
Low Voltage Transformer =
|
||||
|
@ -71,7 +73,6 @@ Disabled =
|
|||
%s Alloy Furnace =
|
||||
%s Battery Box =
|
||||
%s Cable =
|
||||
%s CNC Machine =
|
||||
%s Centrifuge =
|
||||
%s Compressor =
|
||||
%s Extractor =
|
||||
|
@ -111,7 +112,7 @@ Administrative World Anchor =
|
|||
Charge =
|
||||
Discharge =
|
||||
Power level =
|
||||
# $1: Tier $2: current_charge $3: max_charge
|
||||
# $1: Tier $2: current_charge $3: max_charge
|
||||
@1 Battery Box: @2/@3 =
|
||||
# $1: Machine name $2: Supply $3: Demand
|
||||
@1. Supply: @2 Demand: @3 =
|
||||
|
@ -127,40 +128,6 @@ Digging %d m above machine =
|
|||
Digging %d m below machine =
|
||||
@1 (@2 @3 -> @4 @5) =
|
||||
|
||||
## CNC
|
||||
Cylinder =
|
||||
Element Cross =
|
||||
Element Cross Double =
|
||||
Element Edge =
|
||||
Element Edge Double =
|
||||
Element End =
|
||||
Element End Double =
|
||||
Element Straight =
|
||||
Element Straight Double =
|
||||
Element T =
|
||||
Element T Double =
|
||||
Horizontal Cylinder =
|
||||
One Curved Edge Block =
|
||||
Pyramid =
|
||||
Slope =
|
||||
Slope Edge =
|
||||
Slope Inner Edge =
|
||||
Slope Lying =
|
||||
Slope Upside Down =
|
||||
Slope Upside Down Edge =
|
||||
Slope Upside Down Inner Edge =
|
||||
Sphere =
|
||||
Spike =
|
||||
Stick =
|
||||
Two Curved Edge Block =
|
||||
Brick =
|
||||
Cobble =
|
||||
Dirt =
|
||||
Leaves =
|
||||
Sandstone =
|
||||
Stone =
|
||||
Tree =
|
||||
Wooden =
|
||||
|
||||
## Grinder Recipes
|
||||
# $1: Name
|
||||
|
|
|
@ -6,7 +6,7 @@ minetest.register_craft({
|
|||
{'technic:mv_cable', 'technic:mv_cable', 'technic:mv_cable'},
|
||||
{'homedecor:plastic_sheeting', 'homedecor:plastic_sheeting', 'homedecor:plastic_sheeting'},
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
technic.register_cable("HV", 3/16)
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ local cable_entry = "^technic_cable_connection_overlay.png"
|
|||
minetest.register_craft({
|
||||
output = "technic:forcefield_emitter_off",
|
||||
recipe = {
|
||||
{"default:mese", "technic:motor", "default:mese" },
|
||||
{"default:mese", "basic_materials:motor", "default:mese" },
|
||||
{"technic:deployer_off", "technic:machine_casing", "technic:deployer_off"},
|
||||
{"default:mese", "technic:hv_cable", "default:mese" },
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ end)
|
|||
-- | |
|
||||
-- \___/\___/
|
||||
|
||||
local function update_forcefield(pos, meta, active, first)
|
||||
local function update_forcefield(pos, meta, active)
|
||||
local shape = meta:get_int("shape")
|
||||
local range = meta:get_int("range")
|
||||
local vm = VoxelManip()
|
||||
|
@ -86,11 +86,6 @@ local function update_forcefield(pos, meta, active, first)
|
|||
vm:set_data(data)
|
||||
vm:update_liquids()
|
||||
vm:write_to_map()
|
||||
-- update_map is very slow, but if we don't call it we'll
|
||||
-- get phantom blocks on the client.
|
||||
if not active or first then
|
||||
vm:update_map()
|
||||
end
|
||||
end
|
||||
|
||||
local function set_forcefield_formspec(meta)
|
||||
|
@ -126,6 +121,12 @@ local function set_forcefield_formspec(meta)
|
|||
end
|
||||
|
||||
local forcefield_receive_fields = function(pos, formname, fields, sender)
|
||||
local player_name = sender:get_player_name()
|
||||
if minetest.is_protected(pos, player_name) then
|
||||
minetest.chat_send_player(player_name, "You are not allowed to edit this!")
|
||||
minetest.record_protection_violation(pos, player_name)
|
||||
return
|
||||
end
|
||||
local meta = minetest.get_meta(pos)
|
||||
local range = nil
|
||||
if fields.range then
|
||||
|
@ -273,13 +274,11 @@ local function run(pos, node)
|
|||
technic.swap_node(pos, "technic:forcefield_emitter_off")
|
||||
end
|
||||
elseif eu_input >= power_requirement then
|
||||
local first = false
|
||||
if node.name == "technic:forcefield_emitter_off" then
|
||||
first = true
|
||||
technic.swap_node(pos, "technic:forcefield_emitter_on")
|
||||
meta:set_string("infotext", S("%s Active"):format(machine_name))
|
||||
end
|
||||
update_forcefield(pos, meta, true, first)
|
||||
update_forcefield(pos, meta, true)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -217,24 +217,33 @@ end
|
|||
|
||||
|
||||
local function start_reactor(pos, meta)
|
||||
local correct_fuel_count = 6
|
||||
local msg_fuel_missing = "Error: You need to insert " .. correct_fuel_count .. " pieces of Uranium Fuel."
|
||||
|
||||
if minetest.get_node(pos).name ~= "technic:hv_nuclear_reactor_core" then
|
||||
return false
|
||||
return msg_fuel_missing
|
||||
end
|
||||
local inv = meta:get_inventory()
|
||||
if inv:is_empty("src") then
|
||||
return false
|
||||
return msg_fuel_missing
|
||||
end
|
||||
local src_list = inv:get_list("src")
|
||||
local correct_fuel_count = 0
|
||||
local fuel_count = 0
|
||||
for _, src_stack in pairs(src_list) do
|
||||
if src_stack and src_stack:get_name() == fuel_type then
|
||||
correct_fuel_count = correct_fuel_count + 1
|
||||
fuel_count = fuel_count + 1
|
||||
end
|
||||
end
|
||||
-- Check that the reactor is complete and has the correct fuel
|
||||
if correct_fuel_count ~= 6 or reactor_structure_badness(pos) ~= 0 then
|
||||
return false
|
||||
-- Check that the has the correct fuel
|
||||
if fuel_count ~= correct_fuel_count then
|
||||
return msg_fuel_missing
|
||||
end
|
||||
|
||||
-- Check that the reactor is complete
|
||||
if reactor_structure_badness(pos) ~= 0 then
|
||||
return "Error: The power plant seems to be built incorrectly."
|
||||
end
|
||||
|
||||
meta:set_int("burn_time", 1)
|
||||
technic.swap_node(pos, "technic:hv_nuclear_reactor_core_active")
|
||||
meta:set_int("HV_EU_supply", power_supply)
|
||||
|
@ -242,7 +251,8 @@ local function start_reactor(pos, meta)
|
|||
src_stack:take_item()
|
||||
inv:set_stack("src", idx, src_stack)
|
||||
end
|
||||
return true
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
|
||||
|
@ -281,7 +291,7 @@ local function run(pos, node)
|
|||
"fuel used", 6, true)
|
||||
end
|
||||
if meta:get_string("autostart") == "true" then
|
||||
if start_reactor(pos, meta) then
|
||||
if not start_reactor(pos, meta) then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
@ -313,11 +323,11 @@ local nuclear_reactor_receive_fields = function(pos, formname, fields, sender)
|
|||
meta:set_string("remote_channel", fields.remote_channel)
|
||||
end
|
||||
if fields.start then
|
||||
local b = start_reactor(pos, meta)
|
||||
if b then
|
||||
local start_error_msg = start_reactor(pos, meta)
|
||||
if not start_error_msg then
|
||||
minetest.chat_send_player(player_name, "Start successful")
|
||||
else
|
||||
minetest.chat_send_player(player_name, "Error")
|
||||
minetest.chat_send_player(player_name, start_error_msg)
|
||||
end
|
||||
end
|
||||
if fields.autostart then
|
||||
|
@ -385,11 +395,11 @@ local digiline_remote_def = function(pos, channel, msg)
|
|||
melt_down_reactor(pos)
|
||||
end
|
||||
elseif msg.command == "start" then
|
||||
local b = start_reactor(pos, meta)
|
||||
if b then
|
||||
local start_error_msg = start_reactor(pos, meta)
|
||||
if not start_error_msg then
|
||||
digiline_remote.send_to_node(pos, channel, "Start successful", 6, true)
|
||||
else
|
||||
digiline_remote.send_to_node(pos, channel, "Error", 6, true)
|
||||
digiline_remote.send_to_node(pos, channel, start_error_msg, 6, true)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -455,7 +465,7 @@ minetest.register_node("technic:hv_nuclear_reactor_core_active", {
|
|||
technic_run = run,
|
||||
technic_on_disable = function(pos, node)
|
||||
local timer = minetest.get_node_timer(pos)
|
||||
timer:start(1)
|
||||
timer:start(1)
|
||||
end,
|
||||
on_timer = function(pos, node)
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
|
|
@ -7,7 +7,7 @@ local cable_entry = "^technic_cable_connection_overlay.png"
|
|||
minetest.register_craft({
|
||||
recipe = {
|
||||
{"technic:carbon_plate", "pipeworks:filter", "technic:composite_plate"},
|
||||
{"technic:motor", "technic:machine_casing", "technic:diamond_drill_head"},
|
||||
{"basic_materials:motor", "technic:machine_casing", "technic:diamond_drill_head"},
|
||||
{"technic:carbon_steel_block", "technic:hv_cable", "technic:carbon_steel_block"}},
|
||||
output = "technic:quarry",
|
||||
})
|
||||
|
@ -60,6 +60,12 @@ local function set_quarry_demand(meta)
|
|||
end
|
||||
|
||||
local function quarry_receive_fields(pos, formname, fields, sender)
|
||||
local player_name = sender:get_player_name()
|
||||
if minetest.is_protected(pos, player_name) then
|
||||
minetest.chat_send_player(player_name, "You are not allowed to edit this!")
|
||||
minetest.record_protection_violation(pos, player_name)
|
||||
return
|
||||
end
|
||||
local meta = minetest.get_meta(pos)
|
||||
if fields.size and string.find(fields.size, "^[0-9]+$") then
|
||||
local size = tonumber(fields.size)
|
||||
|
@ -112,6 +118,11 @@ local function quarry_run(pos, node)
|
|||
|
||||
if meta:get_int("enabled") and meta:get_int("HV_EU_input") >= quarry_demand and meta:get_int("purge_on") == 0 then
|
||||
local pdir = minetest.facedir_to_dir(node.param2)
|
||||
if pdir.y ~= 0 then
|
||||
-- faces up or down, not valid, otherwise depth-check would run endless and hang up the server
|
||||
return
|
||||
end
|
||||
|
||||
local qdir = pdir.x == 1 and vector.new(0,0,-1) or
|
||||
(pdir.z == -1 and vector.new(-1,0,0) or
|
||||
(pdir.x == -1 and vector.new(0,0,1) or
|
||||
|
@ -124,7 +135,7 @@ local function quarry_run(pos, node)
|
|||
vector.multiply(qdir, -radius))
|
||||
local owner = meta:get_string("owner")
|
||||
local nd = meta:get_int("dug")
|
||||
while nd ~= diameter*diameter * (quarry_dig_above_nodes+1+quarry_max_depth) do
|
||||
while nd < diameter*diameter * (quarry_dig_above_nodes+1+quarry_max_depth) do
|
||||
local ry = math.floor(nd / (diameter*diameter))
|
||||
local ndl = nd % (diameter*diameter)
|
||||
if ry % 2 == 1 then
|
||||
|
@ -146,15 +157,9 @@ local function quarry_run(pos, node)
|
|||
dignode = technic.get_or_load_node(digpos) or minetest.get_node(digpos)
|
||||
local dignodedef = minetest.registered_nodes[dignode.name] or {diggable=false}
|
||||
-- doors mod among other thing does NOT like a nil digger...
|
||||
local fakedigger = {
|
||||
get_player_name = function()
|
||||
return "!technic_quarry_fake_digger"
|
||||
end,
|
||||
is_player = function() return false end,
|
||||
get_wielded_item = function()
|
||||
return ItemStack("air")
|
||||
end,
|
||||
}
|
||||
local fakedigger = pipeworks.create_fake_player({
|
||||
name = owner
|
||||
})
|
||||
if not dignodedef.diggable or (dignodedef.can_dig and not dignodedef.can_dig(digpos, fakedigger)) then
|
||||
can_dig = false
|
||||
end
|
||||
|
|
|
@ -8,7 +8,7 @@ minetest.register_craft({
|
|||
{'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'},
|
||||
{'default:paper', 'default:paper', 'default:paper'},
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
technic.register_cable("LV", 2/16)
|
||||
|
||||
|
|
|
@ -1,91 +0,0 @@
|
|||
-- REGISTER MATERIALS AND PROPERTIES FOR NONCUBIC ELEMENTS:
|
||||
-----------------------------------------------------------
|
||||
|
||||
local S = technic.getter
|
||||
|
||||
-- DIRT
|
||||
-------
|
||||
technic.cnc.register_all("default:dirt",
|
||||
{snappy=2,choppy=2,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
|
||||
{"default_grass.png", "default_dirt.png", "default_grass.png"},
|
||||
S("Dirt"))
|
||||
-- WOOD
|
||||
-------
|
||||
technic.cnc.register_all("default:wood",
|
||||
{snappy=2, choppy=2, oddly_breakable_by_hand=2, not_in_creative_inventory=1},
|
||||
{"default_wood.png"},
|
||||
S("Wooden"))
|
||||
-- STONE
|
||||
--------
|
||||
technic.cnc.register_all("default:stone",
|
||||
{cracky=3, not_in_creative_inventory=1},
|
||||
{"default_stone.png"},
|
||||
S("Stone"))
|
||||
-- COBBLE
|
||||
---------
|
||||
technic.cnc.register_all("default:cobble",
|
||||
{cracky=3, not_in_creative_inventory=1},
|
||||
{"default_cobble.png"},
|
||||
S("Cobble"))
|
||||
-- BRICK
|
||||
--------
|
||||
technic.cnc.register_all("default:brick",
|
||||
{cracky=3, not_in_creative_inventory=1},
|
||||
{"default_brick.png"},
|
||||
S("Brick"))
|
||||
|
||||
-- SANDSTONE
|
||||
------------
|
||||
technic.cnc.register_all("default:sandstone",
|
||||
{crumbly=2, cracky=3, not_in_creative_inventory=1},
|
||||
{"default_sandstone.png"},
|
||||
S("Sandstone"))
|
||||
|
||||
-- LEAVES
|
||||
---------
|
||||
technic.cnc.register_all("default:leaves",
|
||||
{snappy=2, choppy=2, oddly_breakable_by_hand=3, not_in_creative_inventory=1},
|
||||
{"default_leaves.png"},
|
||||
S("Leaves"))
|
||||
-- TREE
|
||||
-------
|
||||
technic.cnc.register_all("default:tree",
|
||||
{snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3, wood=1, not_in_creative_inventory=1},
|
||||
{"default_tree.png"},
|
||||
S("Tree"))
|
||||
|
||||
-- WROUGHT IRON
|
||||
---------------
|
||||
technic.cnc.register_all("default:steelblock",
|
||||
{cracky=1, level=2, not_in_creative_inventory=1},
|
||||
{"technic_wrought_iron_block.png"},
|
||||
S("Wrought Iron"))
|
||||
|
||||
-- Bronze
|
||||
--------
|
||||
technic.cnc.register_all("default:bronzeblock",
|
||||
{cracky=1, level=2, not_in_creative_inventory=1},
|
||||
{"default_bronze_block.png"},
|
||||
S("Bronze"))
|
||||
|
||||
-- Stainless Steel
|
||||
--------
|
||||
technic.cnc.register_all("technic:stainless_steel_block",
|
||||
{cracky=1, level=2, not_in_creative_inventory=1},
|
||||
{"technic_stainless_steel_block.png"},
|
||||
S("Stainless Steel"))
|
||||
|
||||
-- Marble
|
||||
------------
|
||||
technic.cnc.register_all("technic:marble",
|
||||
{cracky=3, not_in_creative_inventory=1},
|
||||
{"technic_marble.png"},
|
||||
S("Marble"))
|
||||
|
||||
-- Granite
|
||||
------------
|
||||
technic.cnc.register_all("technic:granite",
|
||||
{cracky=1, not_in_creative_inventory=1},
|
||||
{"technic_granite.png"},
|
||||
S("Granite"))
|
||||
|
|
@ -4,10 +4,14 @@ minetest.register_alias("compressor", "technic:lv_compressor")
|
|||
minetest.register_craft({
|
||||
output = 'technic:lv_compressor',
|
||||
recipe = {
|
||||
{'default:stone', 'technic:motor', 'default:stone'},
|
||||
{'default:stone', 'basic_materials:motor', 'default:stone'},
|
||||
{'mesecons:piston', 'technic:machine_casing', 'mesecons:piston'},
|
||||
{'technic:fine_silver_wire', 'technic:lv_cable', 'technic:fine_silver_wire'},
|
||||
}
|
||||
{'basic_materials:silver_wire', 'technic:lv_cable', 'basic_materials:silver_wire'},
|
||||
},
|
||||
replacements = {
|
||||
{"basic_materials:silver_wire", "basic_materials:empty_spool"},
|
||||
{"basic_materials:silver_wire", "basic_materials:empty_spool"}
|
||||
},
|
||||
})
|
||||
|
||||
technic.register_compressor({tier = "LV", demand = {300}, speed = 1})
|
||||
|
|
|
@ -4,7 +4,7 @@ minetest.register_alias("extractor", "technic:lv_extractor")
|
|||
minetest.register_craft({
|
||||
output = 'technic:lv_extractor',
|
||||
recipe = {
|
||||
{'technic:treetap', 'technic:motor', 'technic:treetap'},
|
||||
{'technic:treetap', 'basic_materials:motor', 'technic:treetap'},
|
||||
{'technic:treetap', 'technic:machine_casing', 'technic:treetap'},
|
||||
{'', 'technic:lv_cable', ''},
|
||||
}
|
||||
|
|
|
@ -11,19 +11,23 @@ minetest.register_craft({
|
|||
output = 'technic:geothermal',
|
||||
recipe = {
|
||||
{'technic:granite', 'default:diamond', 'technic:granite'},
|
||||
{'technic:fine_copper_wire', 'technic:machine_casing', 'technic:fine_copper_wire'},
|
||||
{'basic_materials:copper_wire', 'technic:machine_casing', 'basic_materials:copper_wire'},
|
||||
{'technic:granite', 'technic:lv_cable', 'technic:granite'},
|
||||
}
|
||||
},
|
||||
replacements = {
|
||||
{"basic_materials:copper_wire", "basic_materials:empty_spool"},
|
||||
{"basic_materials:copper_wire", "basic_materials:empty_spool"}
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craftitem("technic:geothermal", {
|
||||
description = S("Geothermal %s Generator"):format("LV"),
|
||||
})
|
||||
})
|
||||
|
||||
local check_node_around = function(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
if node.name == "default:water_source" or node.name == "default:water_flowing" then return 1 end
|
||||
if node.name == "default:lava_source" or node.name == "default:lava_flowing" then return 2 end
|
||||
if node.name == "default:lava_source" or node.name == "default:lava_flowing" then return 2 end
|
||||
return 0
|
||||
end
|
||||
|
||||
|
|
|
@ -22,8 +22,3 @@ dofile(path.."/extractor.lua")
|
|||
dofile(path.."/compressor.lua")
|
||||
|
||||
dofile(path.."/music_player.lua")
|
||||
|
||||
dofile(path.."/cnc.lua")
|
||||
dofile(path.."/cnc_api.lua")
|
||||
dofile(path.."/cnc_nodes.lua")
|
||||
|
||||
|
|
|
@ -24,7 +24,6 @@ local run = function(pos, node)
|
|||
local meta = minetest.get_meta(pos)
|
||||
local eu_input = meta:get_int("LV_EU_input")
|
||||
local machine_name = S("%s Music Player"):format("LV")
|
||||
local machine_node = "technic:music_player"
|
||||
local demand = 150
|
||||
|
||||
local current_track = meta:get_int("current_track")
|
||||
|
|
|
@ -9,9 +9,9 @@ minetest.register_craft({
|
|||
output = 'technic:solar_panel',
|
||||
recipe = {
|
||||
{'technic:doped_silicon_wafer', 'technic:doped_silicon_wafer', 'technic:doped_silicon_wafer'},
|
||||
{'technic:fine_silver_wire', 'technic:lv_cable', 'mesecons_materials:glue'},
|
||||
|
||||
}
|
||||
{'basic_materials:silver_wire', 'technic:lv_cable', 'mesecons_materials:glue'},
|
||||
},
|
||||
replacements = { {"basic_materials:silver_wire", "basic_materials:empty_spool"}, },
|
||||
})
|
||||
|
||||
|
||||
|
@ -35,7 +35,8 @@ local run = function(pos, node)
|
|||
local charge_to_give = math.floor((light + pos1.y) * 3)
|
||||
charge_to_give = math.max(charge_to_give, 0)
|
||||
charge_to_give = math.min(charge_to_give, 200)
|
||||
meta:set_string("infotext", S("@1 Active (@2 EU)", machine_name, technic.pretty_num(charge_to_give)))
|
||||
meta:set_string("infotext", S("@1 Active (@2)", machine_name,
|
||||
technic.EU_string(charge_to_give)))
|
||||
meta:set_int("LV_EU_supply", charge_to_give)
|
||||
else
|
||||
meta:set_string("infotext", S("%s Idle"):format(machine_name))
|
||||
|
@ -50,11 +51,11 @@ minetest.register_node("technic:solar_panel", {
|
|||
technic_machine=1, technic_lv=1},
|
||||
connect_sides = {"bottom"},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
description = S("Small Solar %s Generator"):format("LV"),
|
||||
description = S("Small Solar %s Generator"):format("LV"),
|
||||
active = false,
|
||||
drawtype = "nodebox",
|
||||
paramtype = "light",
|
||||
is_ground_content = true,
|
||||
is_ground_content = true,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
-- A water mill produces LV EUs by exploiting flowing water across it
|
||||
-- It is a LV EU supplyer and fairly low yield (max 120EUs)
|
||||
-- It is a little under half as good as the thermal generator.
|
||||
-- It is a LV EU supplier and fairly low yield (max 180EUs)
|
||||
-- It is a little over half as good as the thermal generator.
|
||||
|
||||
local S = technic.getter
|
||||
|
||||
|
@ -29,11 +29,9 @@ end
|
|||
local run = function(pos, node)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local water_flow = 0
|
||||
local lava_nodes = 0
|
||||
local production_level = 0
|
||||
local eu_supply = 0
|
||||
local max_output = 35 * 45 -- four param2's at 15 makes 60, cap it lower for "overload protection"
|
||||
-- (plus we want the gen to report 100% if three sides have full flow)
|
||||
local production_level
|
||||
local eu_supply
|
||||
local max_output = 4 * 45 -- keeping it around 180, little more than previous 150 :)
|
||||
|
||||
local positions = {
|
||||
{x=pos.x+1, y=pos.y, z=pos.z},
|
||||
|
@ -49,7 +47,7 @@ local run = function(pos, node)
|
|||
end
|
||||
end
|
||||
|
||||
eu_supply = math.min(35 * water_flow, max_output)
|
||||
eu_supply = math.min(4 * water_flow, max_output)
|
||||
production_level = math.floor(100 * eu_supply / max_output)
|
||||
|
||||
meta:set_int("LV_EU_supply", eu_supply)
|
||||
|
|
|
@ -8,7 +8,7 @@ minetest.register_craft({
|
|||
{'technic:lv_cable', 'technic:lv_cable', 'technic:lv_cable'},
|
||||
{'technic:rubber', 'technic:rubber', 'technic:rubber'},
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
technic.register_cable("MV", 2.5/16)
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
minetest.register_craft({
|
||||
output = "technic:mv_centrifuge",
|
||||
recipe = {
|
||||
{"technic:motor", "technic:copper_plate", "technic:diamond_drill_head"},
|
||||
{"basic_materials:motor", "technic:copper_plate", "technic:diamond_drill_head"},
|
||||
{"technic:copper_plate", "technic:machine_casing", "technic:copper_plate" },
|
||||
{"pipeworks:one_way_tube", "technic:mv_cable", "pipeworks:mese_filter" },
|
||||
}
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
-- MV freezer
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'technic:mv_freezer',
|
||||
recipe = {
|
||||
{'technic:stainless_steel_ingot', 'technic:motor', 'technic:stainless_steel_ingot'},
|
||||
{'pipeworks:pipe_1_empty', 'technic:mv_transformer', 'pipeworks:pipe_1_empty'},
|
||||
{'technic:stainless_steel_ingot', 'technic:mv_cable', 'technic:stainless_steel_ingot'},
|
||||
}
|
||||
})
|
||||
|
||||
technic.register_freezer({tier = "MV", demand = {800, 600, 400}, speed = 0.5, upgrade = 1, tube = 1})
|
|
@ -0,0 +1,105 @@
|
|||
-- A Hydro Turbine produces MV EUs by exploiting flowing water across it
|
||||
-- It is a MV EU supplier and fairly high yield (max 1800EUs)
|
||||
|
||||
local S = technic.getter
|
||||
|
||||
local cable_entry = "^technic_cable_connection_overlay.png"
|
||||
|
||||
minetest.register_alias("hydro_turbine", "technic:hydro_turbine")
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'technic:hydro_turbine',
|
||||
recipe = {
|
||||
{'technic:stainless_steel_ingot', 'technic:water_mill', 'technic:stainless_steel_ingot'},
|
||||
{'technic:water_mill', 'technic:mv_transformer', 'technic:water_mill'},
|
||||
{'technic:stainless_steel_ingot', 'technic:mv_cable', 'technic:stainless_steel_ingot'},
|
||||
}
|
||||
})
|
||||
|
||||
local function get_water_flow(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
if minetest.get_item_group(node.name, "water") == 3 and string.find(node.name, "flowing") then
|
||||
return node.param2 -- returns approx. water flow, if any
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
---
|
||||
-- 10 times better than LV hydro because of 2 extra water mills and 4 stainless steel, a transformer and whatnot ;P.
|
||||
-- Man hydro turbines are tough and long lasting. So, give it some value :)
|
||||
local run = function(pos, node)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local water_flow = 0
|
||||
local production_level
|
||||
local eu_supply
|
||||
local max_output = 40 * 45 -- Generates 1800EU/s
|
||||
|
||||
local positions = {
|
||||
{x=pos.x+1, y=pos.y, z=pos.z},
|
||||
{x=pos.x-1, y=pos.y, z=pos.z},
|
||||
{x=pos.x, y=pos.y, z=pos.z+1},
|
||||
{x=pos.x, y=pos.y, z=pos.z-1},
|
||||
}
|
||||
|
||||
for _, p in pairs(positions) do
|
||||
water_flow = water_flow + get_water_flow(p)
|
||||
end
|
||||
|
||||
eu_supply = math.min(40 * water_flow, max_output)
|
||||
production_level = math.floor(100 * eu_supply / max_output)
|
||||
|
||||
meta:set_int("MV_EU_supply", eu_supply)
|
||||
|
||||
meta:set_string("infotext",
|
||||
S("Hydro %s Generator"):format("MV").." ("..production_level.."%)")
|
||||
if production_level > 0 and
|
||||
minetest.get_node(pos).name == "technic:hydro_turbine" then
|
||||
technic.swap_node(pos, "technic:hydro_turbine_active")
|
||||
meta:set_int("MV_EU_supply", 0)
|
||||
return
|
||||
end
|
||||
if production_level == 0 then
|
||||
technic.swap_node(pos, "technic:hydro_turbine")
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_node("technic:hydro_turbine", {
|
||||
description = S("Hydro %s Generator"):format("MV"),
|
||||
tiles = {
|
||||
"technic_hydro_turbine_top.png",
|
||||
"technic_machine_bottom.png"..cable_entry,
|
||||
"technic_hydro_turbine_side.png",
|
||||
"technic_hydro_turbine_side.png",
|
||||
"technic_hydro_turbine_side.png",
|
||||
"technic_hydro_turbine_side.png"
|
||||
},
|
||||
paramtype2 = "facedir",
|
||||
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
|
||||
technic_machine=1, technic_mv=1},
|
||||
legacy_facedir_simple = true,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("infotext", S("Hydro %s Generator"):format("MV"))
|
||||
meta:set_int("MV_EU_supply", 0)
|
||||
end,
|
||||
technic_run = run,
|
||||
})
|
||||
|
||||
minetest.register_node("technic:hydro_turbine_active", {
|
||||
description = S("Hydro %s Generator"):format("MV"),
|
||||
tiles = {"technic_hydro_turbine_top_active.png", "technic_machine_bottom.png",
|
||||
"technic_hydro_turbine_side.png", "technic_hydro_turbine_side.png",
|
||||
"technic_hydro_turbine_side.png", "technic_hydro_turbine_side.png"},
|
||||
paramtype2 = "facedir",
|
||||
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
|
||||
technic_machine=1, technic_mv=1, not_in_creative_inventory=1},
|
||||
legacy_facedir_simple = true,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
drop = "technic:hydro_turbine",
|
||||
technic_run = run,
|
||||
technic_disabled_machine_name = "technic:hydro_turbine",
|
||||
})
|
||||
|
||||
technic.register_machine("MV", "technic:hydro_turbine", technic.producer)
|
||||
technic.register_machine("MV", "technic:hydro_turbine_active", technic.producer)
|
|
@ -13,6 +13,7 @@ if technic.config:get_bool("enable_wind_mill") then
|
|||
end
|
||||
dofile(path.."/generator.lua")
|
||||
dofile(path.."/solar_array.lua")
|
||||
dofile(path.."/hydro_turbine.lua")
|
||||
|
||||
-- Machines
|
||||
dofile(path.."/alloy_furnace.lua")
|
||||
|
@ -24,6 +25,8 @@ dofile(path.."/centrifuge.lua")
|
|||
|
||||
dofile(path.."/tool_workshop.lua")
|
||||
|
||||
dofile(path.."/freezer.lua")
|
||||
|
||||
-- The power radiator supplies appliances with inductive coupled power:
|
||||
-- Lighting and associated textures is taken directly from VanessaE's homedecor and made electric.
|
||||
-- This is currently useless, slow, and mostly copied
|
||||
|
|
|
@ -7,31 +7,14 @@
|
|||
local S
|
||||
if (minetest.get_modpath("intllib")) then
|
||||
dofile(minetest.get_modpath("intllib").."/intllib.lua")
|
||||
if (intllib.make_gettext_pair) then
|
||||
S = intllib.make_gettext_pair(minetest.get_current_modname())
|
||||
else
|
||||
S = intllib.Getter(minetest.get_current_modname())
|
||||
end
|
||||
S = intllib.Getter(minetest.get_current_modname())
|
||||
else
|
||||
S = function (s) return s end
|
||||
end
|
||||
|
||||
function technic_homedecor_node_is_owned(pos, placer)
|
||||
local ownername = false
|
||||
if type(IsPlayerNodeOwner) == "function" then -- node_ownership mod
|
||||
if HasOwner(pos, placer) then
|
||||
if not IsPlayerNodeOwner(pos, placer:get_player_name()) then
|
||||
if type(getLastOwner) == "function" then -- ...is an old version
|
||||
ownername = getLastOwner(pos)
|
||||
elseif type(GetNodeOwnerName) == "function" then -- ...is a recent version
|
||||
ownername = GetNodeOwnerName(pos)
|
||||
else
|
||||
ownername = S("someone")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
elseif type(isprotect) == "function" then -- glomie's protection mod
|
||||
if type(isprotect) == "function" then -- glomie's protection mod
|
||||
if not isprotect(5, pos, placer) then
|
||||
ownername = S("someone")
|
||||
end
|
||||
|
@ -49,11 +32,10 @@ function technic_homedecor_node_is_owned(pos, placer)
|
|||
end
|
||||
end
|
||||
|
||||
local dirs1 = {20, 23, 22, 21}
|
||||
local dirs2 = {9, 18, 7, 12}
|
||||
|
||||
local technic_homedecor_rotate_and_place = function(itemstack, placer, pointed_thing)
|
||||
if not technic_homedecor_node_is_owned(pointed_thing.under, placer)
|
||||
if not technic_homedecor_node_is_owned(pointed_thing.under, placer)
|
||||
and not technic_homedecor_node_is_owned(pointed_thing.above, placer) then
|
||||
local node = minetest.get_node(pointed_thing.under)
|
||||
if not minetest.registered_nodes[node.name] or not minetest.registered_nodes[node.name].on_rightclick then
|
||||
|
@ -62,7 +44,6 @@ local technic_homedecor_rotate_and_place = function(itemstack, placer, pointed_t
|
|||
local under = pointed_thing.under
|
||||
local pitch = placer:get_look_pitch()
|
||||
local pname = minetest.get_node(under).name
|
||||
local node = minetest.get_node(above)
|
||||
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
|
||||
local wield_name = itemstack:get_name()
|
||||
|
||||
|
@ -80,7 +61,7 @@ local technic_homedecor_rotate_and_place = function(itemstack, placer, pointed_t
|
|||
|
||||
if not minetest.registered_nodes[minetest.get_node(pos1).name]["buildable_to"] then return end
|
||||
|
||||
if iswall then
|
||||
if iswall then
|
||||
minetest.add_node(pos1, {name = wield_name, param2 = dirs2[fdir+1] }) -- place wall variant
|
||||
elseif isceiling then
|
||||
minetest.add_node(pos1, {name = wield_name, param2 = 20 }) -- place upside down variant
|
||||
|
@ -163,7 +144,7 @@ minetest.register_node('technic:homedecor_glowlight_half_yellow_active', {
|
|||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
light_source = LIGHT_MAX,
|
||||
light_source = minetest.LIGHT_MAX,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
|
||||
groups = { snappy = 3, not_in_creative_inventory=1},
|
||||
|
@ -244,7 +225,7 @@ minetest.register_node('technic:homedecor_glowlight_quarter_yellow_active', {
|
|||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
light_source = LIGHT_MAX-1,
|
||||
light_source = minetest.LIGHT_MAX-1,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
|
||||
groups = { snappy = 3, not_in_creative_inventory=1},
|
||||
|
@ -326,7 +307,7 @@ minetest.register_node('technic:homedecor_glowlight_half_white_active', {
|
|||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
light_source = LIGHT_MAX,
|
||||
light_source = minetest.LIGHT_MAX,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
|
||||
groups = { snappy = 3, not_in_creative_inventory=1},
|
||||
|
@ -407,7 +388,7 @@ minetest.register_node('technic:homedecor_glowlight_quarter_white_active', {
|
|||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
light_source = LIGHT_MAX-1,
|
||||
light_source = minetest.LIGHT_MAX-1,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
|
||||
groups = { snappy = 3, not_in_creative_inventory=1},
|
||||
|
@ -488,7 +469,7 @@ minetest.register_node('technic:homedecor_glowlight_small_cube_yellow_active', {
|
|||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
light_source = LIGHT_MAX-1,
|
||||
light_source = minetest.LIGHT_MAX-1,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
|
||||
groups = { snappy = 3, not_in_creative_inventory=1},
|
||||
|
@ -569,7 +550,7 @@ minetest.register_node('technic:homedecor_glowlight_small_cube_white_active', {
|
|||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
light_source = LIGHT_MAX-1,
|
||||
light_source = minetest.LIGHT_MAX-1,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
|
||||
groups = { snappy = 3, not_in_creative_inventory=1},
|
||||
|
|
|
@ -177,8 +177,6 @@ minetest.register_abm({
|
|||
-- The supply radius
|
||||
local rad = power_radius
|
||||
|
||||
local meta1 = nil
|
||||
local pos1 = {}
|
||||
local used_charge = 0
|
||||
|
||||
-- Index all nodes within supply range
|
||||
|
|
|
@ -19,7 +19,7 @@ minetest.register_craft({
|
|||
local workshop_demand = {5000, 3500, 2000}
|
||||
|
||||
local workshop_formspec =
|
||||
"invsize[8,9;]"..
|
||||
"size[8,9;]"..
|
||||
"list[current_name;src;3,1;1,1;]"..
|
||||
"label[0,0;"..S("%s Tool Workshop"):format("MV").."]"..
|
||||
"list[current_name;upgrade1;1,3;1,1;]"..
|
||||
|
@ -34,19 +34,11 @@ local workshop_formspec =
|
|||
"listring[current_name;upgrade2]"..
|
||||
"listring[current_player;main]"
|
||||
|
||||
-- Setting for enabling/disabling tool wear & break
|
||||
local tool_wear = minetest.settings:get_bool("enable_tool_wear")
|
||||
if tool_wear == nil then
|
||||
-- Default is enabled
|
||||
tool_wear = true
|
||||
end
|
||||
|
||||
local run = function(pos, node)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
local eu_input = meta:get_int("MV_EU_input")
|
||||
local machine_name = S("%s Tool Workshop"):format("MV")
|
||||
local machine_node = "technic:tool_workshop"
|
||||
|
||||
-- Setup meta data if it does not exist.
|
||||
if not eu_input then
|
||||
|
@ -78,14 +70,12 @@ local run = function(pos, node)
|
|||
meta:set_int("MV_EU_demand", 0)
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
if eu_input < workshop_demand[EU_upgrade+1] then
|
||||
meta:set_string("infotext", S("%s Unpowered"):format(machine_name))
|
||||
elseif eu_input >= workshop_demand[EU_upgrade+1] then
|
||||
meta:set_string("infotext", S("%s Active"):format(machine_name))
|
||||
if enable_wear then
|
||||
srcstack:add_wear(-1000)
|
||||
end
|
||||
srcstack:add_wear(-1000)
|
||||
inv:set_stack("src", 1, srcstack)
|
||||
end
|
||||
meta:set_int("MV_EU_demand", workshop_demand[EU_upgrade+1])
|
||||
|
@ -114,7 +104,7 @@ minetest.register_node("technic:tool_workshop", {
|
|||
inv:set_size("src", 1)
|
||||
inv:set_size("upgrade1", 1)
|
||||
inv:set_size("upgrade2", 1)
|
||||
end,
|
||||
end,
|
||||
can_dig = technic.machine_can_dig,
|
||||
allow_metadata_inventory_put = technic.machine_inventory_put,
|
||||
allow_metadata_inventory_take = technic.machine_inventory_take,
|
||||
|
|
|
@ -13,7 +13,7 @@ minetest.register_craft({
|
|||
minetest.register_craft({
|
||||
output = 'technic:wind_mill',
|
||||
recipe = {
|
||||
{'', 'technic:motor', ''},
|
||||
{'', 'basic_materials:motor', ''},
|
||||
{'technic:carbon_steel_ingot', 'technic:carbon_steel_block', 'technic:carbon_steel_ingot'},
|
||||
{'', 'technic:mv_cable', ''},
|
||||
}
|
||||
|
@ -60,7 +60,8 @@ local run = function(pos, node)
|
|||
elseif check == true then
|
||||
local power = math.min(pos.y * 100, 5000)
|
||||
meta:set_int("MV_EU_supply", power)
|
||||
meta:set_string("infotext", S("@1 (@2 EU)", machine_name, technic.pretty_num(power)))
|
||||
meta:set_string("infotext", S("@1 (@2)", machine_name,
|
||||
technic.EU_string(power)))
|
||||
end
|
||||
-- check == nil: assume nothing has changed
|
||||
end
|
||||
|
|
|
@ -77,14 +77,12 @@ minetest.register_abm({
|
|||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
|
||||
|
||||
if inv:get_size("src") == 1 then -- Old furnace -> convert it
|
||||
inv:set_size("src", 2)
|
||||
inv:set_stack("src", 2, inv:get_stack("src2", 1))
|
||||
inv:set_size("src2", 0)
|
||||
end
|
||||
|
||||
local recipe = nil
|
||||
|
||||
for i, name in pairs({
|
||||
"fuel_totaltime",
|
||||
|
|
|
@ -88,6 +88,7 @@ minetest.register_craft({
|
|||
local function make_on(mark, length)
|
||||
return function(pos, node)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local owner = meta:get_string("owner")
|
||||
local inv = meta:get_inventory()
|
||||
local dir = vector.new()
|
||||
if node.param2 == 3 then dir.x = 1 end
|
||||
|
@ -99,9 +100,12 @@ local function make_on(mark, length)
|
|||
|
||||
if node.name == "technic:constructor_mk"..mark.."_off" then
|
||||
technic.swap_node(pos, "technic:constructor_mk"..mark.."_on")
|
||||
nodeupdate(pos)
|
||||
minetest.check_for_falling(pos)
|
||||
for i = 1, length do
|
||||
place_pos = vector.add(place_pos, dir)
|
||||
if owner ~= "" and minetest.is_protected(place_pos, owner) then
|
||||
return
|
||||
end
|
||||
local place_node = minetest.get_node(place_pos)
|
||||
deploy_node(inv, "slot"..i, place_pos, place_node, node)
|
||||
end
|
||||
|
@ -113,11 +117,17 @@ local function make_off(mark)
|
|||
return function(pos, node)
|
||||
if node.name == "technic:constructor_mk"..mark.."_on" then
|
||||
technic.swap_node(pos,"technic:constructor_mk"..mark.."_off")
|
||||
nodeupdate(pos)
|
||||
minetest.check_for_falling(pos)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function allow_inventory_put(pos, listname, index, stack, player)
|
||||
if stack and minetest.get_item_group(stack:get_name(), "technic_constructor") == 1 then
|
||||
return 0
|
||||
end
|
||||
return technic.machine_inventory_put(pos, listname, index, stack, player)
|
||||
end
|
||||
|
||||
local function make_constructor(mark, length)
|
||||
minetest.register_node("technic:constructor_mk"..mark.."_off", {
|
||||
|
@ -129,7 +139,8 @@ local function make_constructor(mark, length)
|
|||
"technic_constructor_back.png",
|
||||
"technic_constructor_front_off.png"},
|
||||
paramtype2 = "facedir",
|
||||
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, mesecon = 2},
|
||||
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
|
||||
mesecon = 2, technic_constructor = 1},
|
||||
mesecons = {effector = {action_on = make_on(mark, length)}},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
on_construct = function(pos)
|
||||
|
@ -149,6 +160,11 @@ local function make_constructor(mark, length)
|
|||
for i = 1, length do
|
||||
inv:set_size("slot"..i, 1)
|
||||
end
|
||||
meta:set_string("owner", "?")
|
||||
end,
|
||||
after_place_node = function(pos, placer)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("owner", (placer and placer:get_player_name() or "?"))
|
||||
end,
|
||||
can_dig = function(pos, player)
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
@ -160,7 +176,7 @@ local function make_constructor(mark, length)
|
|||
end
|
||||
return true
|
||||
end,
|
||||
allow_metadata_inventory_put = technic.machine_inventory_put,
|
||||
allow_metadata_inventory_put = allow_inventory_put,
|
||||
allow_metadata_inventory_take = technic.machine_inventory_take,
|
||||
allow_metadata_inventory_move = technic.machine_inventory_move,
|
||||
on_rotate = screwdriver.rotate_simple
|
||||
|
@ -176,10 +192,10 @@ local function make_constructor(mark, length)
|
|||
paramtype2 = "facedir",
|
||||
drop = "technic:constructor_mk"..mark.."_off",
|
||||
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
|
||||
mesecon=2, not_in_creative_inventory=1},
|
||||
mesecon=2, not_in_creative_inventory=1, technic_constructor=1},
|
||||
mesecons= {effector = {action_off = make_off(mark)}},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
allow_metadata_inventory_put = technic.machine_inventory_put,
|
||||
allow_metadata_inventory_put = allow_inventory_put,
|
||||
allow_metadata_inventory_take = technic.machine_inventory_take,
|
||||
allow_metadata_inventory_move = technic.machine_inventory_move,
|
||||
on_rotate = false
|
||||
|
|
|
@ -6,7 +6,7 @@ local fs_helpers = pipeworks.fs_helpers
|
|||
local tube_entry = "^pipeworks_tube_connection_metallic.png"
|
||||
|
||||
local function inject_items (pos)
|
||||
local meta=minetest.get_meta(pos)
|
||||
local meta=minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
local mode=meta:get_string("mode")
|
||||
if mode=="single items" then
|
||||
|
@ -15,8 +15,8 @@ local function inject_items (pos)
|
|||
i=i+1
|
||||
if stack then
|
||||
local item0=stack:to_table()
|
||||
if item0 then
|
||||
item0["count"] = "1"
|
||||
if item0 then
|
||||
item0["count"] = 1
|
||||
technic.tube_inject_item(pos, pos, vector.new(0, -1, 0), item0)
|
||||
stack:take_item(1)
|
||||
inv:set_stack("main", i, stack)
|
||||
|
@ -31,7 +31,7 @@ local function inject_items (pos)
|
|||
i=i+1
|
||||
if stack then
|
||||
local item0=stack:to_table()
|
||||
if item0 then
|
||||
if item0 then
|
||||
technic.tube_inject_item(pos, pos, vector.new(0, -1, 0), item0)
|
||||
stack:clear()
|
||||
inv:set_stack("main", i, stack)
|
||||
|
@ -40,7 +40,7 @@ local function inject_items (pos)
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
|
@ -55,12 +55,15 @@ minetest.register_craft({
|
|||
local function set_injector_formspec(meta)
|
||||
local is_stack = meta:get_string("mode") == "whole stacks"
|
||||
meta:set_string("formspec",
|
||||
"invsize[8,9;]"..
|
||||
"size[8,9;]"..
|
||||
"item_image[0,0;1,1;technic:injector]"..
|
||||
"label[1,0;"..S("Self-Contained Injector").."]"..
|
||||
(is_stack and
|
||||
"button[0,1;2,1;mode_item;"..S("Stackwise").."]" or
|
||||
"button[0,1;2,1;mode_stack;"..S("Itemwise").."]")..
|
||||
(meta:get_int("public") == 1 and
|
||||
"button[2,1;2,1;mode_private;"..S("Public").."]" or
|
||||
"button[2,1;2,1;mode_public;"..S("Private").."]")..
|
||||
"list[current_name;main;0,2;8,2;]"..
|
||||
"list[current_player;main;0,5;8,4;]"..
|
||||
"listring[]"..
|
||||
|
@ -95,7 +98,7 @@ minetest.register_node("technic:injector", {
|
|||
if meta:get_int("splitstacks") == 1 then
|
||||
stack = stack:peek_item(1)
|
||||
end
|
||||
return meta:get_inventory():room_for_item("main", stack)
|
||||
return inv:room_for_item("main", stack)
|
||||
end,
|
||||
insert_object = function(pos, node, stack, direction)
|
||||
return minetest.get_meta(pos):get_inventory():add_item("main", stack)
|
||||
|
@ -117,10 +120,15 @@ minetest.register_node("technic:injector", {
|
|||
return inv:is_empty("main")
|
||||
end,
|
||||
on_receive_fields = function(pos, formanme, fields, sender)
|
||||
if minetest.is_protected(pos, sender:get_player_name()) then return end
|
||||
|
||||
local meta = minetest.get_meta(pos)
|
||||
if fields.mode_item then meta:set_string("mode", "single items") end
|
||||
if fields.mode_stack then meta:set_string("mode", "whole stacks") end
|
||||
|
||||
if fields.mode_private then meta:set_int("public", 0) end
|
||||
if fields.mode_public then meta:set_int("public", 1) end
|
||||
|
||||
if fields["fs_helpers_cycling:0:splitstacks"]
|
||||
or fields["fs_helpers_cycling:1:splitstacks"] then
|
||||
if not pipeworks.may_configure(pos, sender) then return end
|
||||
|
@ -142,7 +150,7 @@ minetest.register_abm({
|
|||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local pos1 = vector.add(pos, vector.new(0, -1, 0))
|
||||
local node1 = minetest.get_node(pos1)
|
||||
local node1 = minetest.get_node(pos1)
|
||||
if minetest.get_item_group(node1.name, "tubedevice") > 0 then
|
||||
inject_items(pos)
|
||||
end
|
||||
|
|
|
@ -55,7 +55,7 @@ minetest.register_abm({
|
|||
local demand = sw_meta:get_int("demand")
|
||||
meta:set_string("infotext",
|
||||
S("Power Monitor. Supply: @1 Demand: @2",
|
||||
technic.pretty_num(supply), technic.pretty_num(demand)))
|
||||
technic.EU_string(supply), technic.EU_string(demand)))
|
||||
else
|
||||
meta:set_string("infotext",S("Power Monitor Has No Network"))
|
||||
end
|
||||
|
|
|
@ -1,10 +1,50 @@
|
|||
|
||||
local S = technic.getter
|
||||
|
||||
function technic.insert_object_unique_stack(pos, node, incoming_stack, direction)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
local incoming_name = incoming_stack:get_name()
|
||||
local stack_index = nil
|
||||
for inv_index, inv_stack in pairs(inv:get_list("src")) do
|
||||
if inv_stack:get_name() == incoming_name then
|
||||
stack_index = inv_index
|
||||
break
|
||||
end
|
||||
end
|
||||
if stack_index == nil then
|
||||
return inv:add_item("src", incoming_stack)
|
||||
end
|
||||
local present_stack = inv:get_stack("src", stack_index)
|
||||
local leftover = present_stack:add_item(incoming_stack)
|
||||
inv:set_stack("src", stack_index, present_stack)
|
||||
return leftover
|
||||
end
|
||||
|
||||
function technic.can_insert_unique_stack(pos, node, incoming_stack, direction)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
local incoming_name = incoming_stack:get_name()
|
||||
if meta:get_int("splitstacks") == 0 then
|
||||
-- avoid looping second time with inv:contains_item("src", incoming_stack)
|
||||
for _, inv_stack in pairs(inv:get_list("src")) do
|
||||
if inv_stack:get_name() == incoming_name then
|
||||
return inv_stack:item_fits(incoming_stack)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return technic.default_can_insert(pos, node, incoming_stack, direction)
|
||||
end
|
||||
|
||||
function technic.register_alloy_furnace(data)
|
||||
data.typename = "alloy"
|
||||
data.machine_name = "alloy_furnace"
|
||||
data.machine_desc = S("%s Alloy Furnace")
|
||||
|
||||
data.insert_object = technic.insert_object_unique_stack
|
||||
data.can_insert = technic.can_insert_unique_stack
|
||||
|
||||
technic.register_base_machine(data)
|
||||
end
|
||||
|
||||
|
|
|
@ -12,22 +12,23 @@ function technic.register_alloy_recipe(data)
|
|||
end
|
||||
|
||||
local recipes = {
|
||||
{"technic:copper_dust 3", "technic:tin_dust", "technic:bronze_dust 4"},
|
||||
{"default:copper_ingot 3", "moreores:tin_ingot", "default:bronze_ingot 4"},
|
||||
{"technic:wrought_iron_dust", "technic:coal_dust", "technic:carbon_steel_dust", 3},
|
||||
{"technic:wrought_iron_ingot", "technic:coal_dust", "technic:carbon_steel_ingot", 3},
|
||||
{"technic:carbon_steel_dust", "technic:coal_dust", "technic:cast_iron_dust", 3},
|
||||
{"technic:carbon_steel_ingot", "technic:coal_dust", "technic:cast_iron_ingot", 3},
|
||||
{"technic:carbon_steel_dust 3", "technic:chromium_dust", "technic:stainless_steel_dust 4"},
|
||||
{"technic:carbon_steel_ingot 3", "technic:chromium_ingot", "technic:stainless_steel_ingot 4"},
|
||||
{"technic:copper_dust 7", "technic:tin_dust", "technic:bronze_dust 8", 12},
|
||||
{"default:copper_ingot 7", "default:tin_ingot", "default:bronze_ingot 8", 12},
|
||||
{"technic:wrought_iron_dust 2", "technic:coal_dust", "technic:carbon_steel_dust 2", 6},
|
||||
{"technic:wrought_iron_ingot 2", "technic:coal_dust", "technic:carbon_steel_ingot 2", 6},
|
||||
{"technic:carbon_steel_dust 2", "technic:coal_dust", "technic:cast_iron_dust 2", 6},
|
||||
{"technic:carbon_steel_ingot 2", "technic:coal_dust", "technic:cast_iron_ingot 2", 6},
|
||||
{"technic:carbon_steel_dust 4", "technic:chromium_dust", "technic:stainless_steel_dust 5", 7.5},
|
||||
{"technic:carbon_steel_ingot 4", "technic:chromium_ingot", "technic:stainless_steel_ingot 5", 7.5},
|
||||
{"technic:copper_dust 2", "technic:zinc_dust", "technic:brass_dust 3"},
|
||||
{"default:copper_ingot 2", "technic:zinc_ingot", "technic:brass_ingot 3"},
|
||||
{"default:copper_ingot 2", "technic:zinc_ingot", "basic_materials:brass_ingot 3"},
|
||||
{"default:sand 2", "technic:coal_dust 2", "technic:silicon_wafer"},
|
||||
{"technic:silicon_wafer", "technic:gold_dust", "technic:doped_silicon_wafer"},
|
||||
-- from https://en.wikipedia.org/wiki/Carbon_black
|
||||
-- The highest volume use of carbon black is as a reinforcing filler in rubber products, especially tires.
|
||||
-- "[Compounding a] pure gum vulcanizate … with 50% of its weight of carbon black improves its tensile strength and wear resistance …"
|
||||
-- "[Compounding a] pure gum vulcanizate … with 50% of its weight of carbon black improves its tensile strength and wear resistance …"
|
||||
{"technic:raw_latex 4", "technic:coal_dust 2", "technic:rubber 6", 2},
|
||||
{"default:ice", "bucket:bucket_empty", "bucket:bucket_water", 1 },
|
||||
}
|
||||
|
||||
for _, data in pairs(recipes) do
|
||||
|
|
|
@ -18,7 +18,7 @@ minetest.register_craft({
|
|||
output = "technic:battery",
|
||||
recipe = {
|
||||
{"group:wood", "default:copper_ingot", "group:wood"},
|
||||
{"group:wood", "moreores:tin_ingot", "group:wood"},
|
||||
{"group:wood", "default:tin_ingot", "group:wood"},
|
||||
{"group:wood", "default:copper_ingot", "group:wood"},
|
||||
}
|
||||
})
|
||||
|
@ -129,11 +129,11 @@ local tube = {
|
|||
}
|
||||
|
||||
local function add_on_off_buttons(meta, ltier, charge_percent)
|
||||
local formspec = ""
|
||||
if ltier == "mv" or ltier == "hv" then
|
||||
formspec = "image[1,1;1,2;technic_power_meter_bg.png"
|
||||
local formspec = "image[1,1;1,2;technic_power_meter_bg.png"
|
||||
.."^[lowpart:"..charge_percent
|
||||
..":technic_power_meter_fg.png]"..
|
||||
..":technic_power_meter_fg.png]"
|
||||
if ltier == "mv" or ltier == "hv" then
|
||||
formspec = formspec..
|
||||
fs_helpers.cycling_button(
|
||||
meta,
|
||||
"image_button[3,2.0;1,0.6",
|
||||
|
@ -255,8 +255,9 @@ function technic.register_battery_box(data)
|
|||
|
||||
local charge_percent = math.floor(current_charge / max_charge * 100)
|
||||
meta:set_string("formspec", formspec..add_on_off_buttons(meta, ltier, charge_percent))
|
||||
local infotext = S("@1 Battery Box: @2/@3", tier,
|
||||
technic.pretty_num(current_charge), technic.pretty_num(max_charge))
|
||||
local infotext = S("@1 Battery Box: @2 / @3", tier,
|
||||
technic.EU_string(current_charge),
|
||||
technic.EU_string(max_charge))
|
||||
if eu_input == 0 then
|
||||
infotext = S("%s Idle"):format(infotext)
|
||||
end
|
||||
|
@ -311,7 +312,6 @@ function technic.register_battery_box(data)
|
|||
local charge = meta:get_int("internal_EU_charge")
|
||||
local cpercent = math.floor(charge / max_charge * 100)
|
||||
local inv = meta:get_inventory()
|
||||
local node = minetest.get_node(pos)
|
||||
meta:set_string("infotext", S("%s Battery Box"):format(tier))
|
||||
meta:set_string("formspec", formspec..add_on_off_buttons(meta, ltier, cpercent))
|
||||
meta:set_string("channel", ltier.."_battery_box"..minetest.pos_to_string(pos))
|
||||
|
@ -334,7 +334,6 @@ function technic.register_battery_box(data)
|
|||
after_dig_node = technic.machine_after_dig_node,
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local nodename = minetest.get_node(pos).name
|
||||
if fields.edit_channel then
|
||||
minetest.show_formspec(sender:get_player_name(),
|
||||
"technic:battery_box_edit_channel"..minetest.pos_to_string(pos),
|
||||
|
@ -343,7 +342,7 @@ function technic.register_battery_box(data)
|
|||
or fields["fs_helpers_cycling:0:split_dst_stacks"]
|
||||
or fields["fs_helpers_cycling:1:split_src_stacks"]
|
||||
or fields["fs_helpers_cycling:1:split_dst_stacks"] then
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta = minetest.get_meta(pos)
|
||||
if not pipeworks.may_configure(pos, sender) then return end
|
||||
fs_helpers.on_receive_fields(pos, fields)
|
||||
local EU_upgrade, tube_upgrade = 0, 0
|
||||
|
@ -451,7 +450,7 @@ function technic.discharge_tools(meta, batt_charge, charge_step, max_charge)
|
|||
if inv:is_empty("dst") then
|
||||
return batt_charge, false
|
||||
end
|
||||
srcstack = inv:get_stack("dst", 1)
|
||||
local srcstack = inv:get_stack("dst", 1)
|
||||
local toolname = srcstack:get_name()
|
||||
if technic.power_tools[toolname] == nil then
|
||||
return batt_charge, false
|
||||
|
|
|
@ -117,6 +117,19 @@ local function clear_networks(pos)
|
|||
end
|
||||
end
|
||||
|
||||
local function item_place_override_node(itemstack, placer, pointed, node)
|
||||
-- Call the default on_place function with a fake itemstack
|
||||
local temp_itemstack = ItemStack(itemstack)
|
||||
temp_itemstack:set_name(node.name)
|
||||
local original_count = temp_itemstack:get_count()
|
||||
temp_itemstack =
|
||||
minetest.item_place(temp_itemstack, placer, pointed, node.param2) or
|
||||
temp_itemstack
|
||||
-- Remove the same number of items from the real itemstack
|
||||
itemstack:take_item(original_count - temp_itemstack:get_count())
|
||||
return itemstack
|
||||
end
|
||||
|
||||
function technic.register_cable(tier, size)
|
||||
local ltier = string.lower(tier)
|
||||
cable_tier["technic:"..ltier.."_cable"] = tier
|
||||
|
@ -202,7 +215,7 @@ function technic.register_cable(tier, size)
|
|||
if i == 1 then
|
||||
def.on_place = function(itemstack, placer, pointed_thing)
|
||||
local pointed_thing_diff = vector.subtract(pointed_thing.above, pointed_thing.under)
|
||||
local num
|
||||
local num = 1
|
||||
local changed
|
||||
for k, v in pairs(pointed_thing_diff) do
|
||||
if v ~= 0 then
|
||||
|
@ -212,7 +225,7 @@ function technic.register_cable(tier, size)
|
|||
end
|
||||
end
|
||||
local crtl = placer:get_player_control()
|
||||
if (crtl.aux1 or crtl.sneak) and not (crtl.aux1 and crtl.sneak) then
|
||||
if (crtl.aux1 or crtl.sneak) and not (crtl.aux1 and crtl.sneak) and changed then
|
||||
local fine_pointed = minetest.pointed_thing_to_face_pos(placer, pointed_thing)
|
||||
fine_pointed = vector.subtract(fine_pointed, pointed_thing.above)
|
||||
fine_pointed[changed] = nil
|
||||
|
@ -228,11 +241,10 @@ function technic.register_cable(tier, size)
|
|||
num = xyz[((fine_pointed[bigger] < 0 and "-") or "") .. bigger]
|
||||
end
|
||||
end
|
||||
minetest.set_node(pointed_thing.above, {name = "technic:"..ltier.."_cable_plate_"..num})
|
||||
if not (creative and creative.is_enabled_for(placer)) then
|
||||
itemstack:take_item()
|
||||
end
|
||||
return itemstack
|
||||
return item_place_override_node(
|
||||
itemstack, placer, pointed_thing,
|
||||
{name = "technic:"..ltier.."_cable_plate_"..num}
|
||||
)
|
||||
end
|
||||
else
|
||||
def.groups.not_in_creative_inventory = 1
|
||||
|
|
|
@ -11,8 +11,8 @@ function technic.register_separating_recipe(data)
|
|||
end
|
||||
|
||||
local recipes = {
|
||||
{ "technic:bronze_dust 4", "technic:copper_dust 3", "technic:tin_dust" },
|
||||
{ "technic:stainless_steel_dust 4", "technic:wrought_iron_dust 3", "technic:chromium_dust" },
|
||||
{ "technic:bronze_dust 8", "technic:copper_dust 7", "technic:tin_dust" },
|
||||
{ "technic:stainless_steel_dust 5", "technic:wrought_iron_dust 4", "technic:chromium_dust" },
|
||||
{ "technic:brass_dust 3", "technic:copper_dust 2", "technic:zinc_dust" },
|
||||
{ "technic:chernobylite_dust", "default:sand", "technic:uranium3_dust" },
|
||||
{ "default:dirt 4", "default:sand", "default:gravel", "default:clay_lump 2" },
|
||||
|
|
|
@ -65,16 +65,16 @@ function technic.send_items(pos, x_velocity, z_velocity, output_name)
|
|||
if output_name == nil then
|
||||
output_name = "dst"
|
||||
end
|
||||
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
local i = 0
|
||||
for _, stack in ipairs(inv:get_list(output_name)) do
|
||||
i = i + 1
|
||||
if stack then
|
||||
local item0 = stack:to_table()
|
||||
if item0 then
|
||||
item0["count"] = "1"
|
||||
if item0 then
|
||||
item0["count"] = 1
|
||||
technic.tube_inject_item(pos, pos, vector.new(x_velocity, 0, z_velocity), item0)
|
||||
stack:take_item(1)
|
||||
inv:set_stack(output_name, i, stack)
|
||||
|
@ -84,7 +84,6 @@ function technic.send_items(pos, x_velocity, z_velocity, output_name)
|
|||
end
|
||||
end
|
||||
|
||||
|
||||
function technic.smelt_item(meta, result, speed)
|
||||
local inv = meta:get_inventory()
|
||||
meta:set_int("cook_time", meta:get_int("cook_time") + 1)
|
||||
|
@ -109,10 +108,9 @@ function technic.handle_machine_pipeworks(pos, tube_upgrade, send_function)
|
|||
if send_function == nil then
|
||||
send_function = technic.send_items
|
||||
end
|
||||
|
||||
|
||||
local node = minetest.get_node(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
local pos1 = vector.new(pos)
|
||||
local x_velocity = 0
|
||||
local z_velocity = 0
|
||||
|
@ -124,7 +122,7 @@ function technic.handle_machine_pipeworks(pos, tube_upgrade, send_function)
|
|||
if node.param2 == 0 then pos1.x = pos1.x + 1 x_velocity = 1 end
|
||||
|
||||
local output_tube_connected = false
|
||||
local node1 = minetest.get_node(pos1)
|
||||
local node1 = minetest.get_node(pos1)
|
||||
if minetest.get_item_group(node1.name, "tubedevice") > 0 then
|
||||
output_tube_connected = true
|
||||
end
|
||||
|
|
|
@ -11,6 +11,8 @@ end
|
|||
local recipes = {
|
||||
{"default:snowblock", "default:ice"},
|
||||
{"default:sand 2", "default:sandstone"},
|
||||
{"default:desert_sand 2", "default:desert_sandstone"},
|
||||
{"default:silver_sand 2", "default:silver_sandstone"},
|
||||
{"default:desert_sand", "default:desert_stone"},
|
||||
{"technic:mixed_metal_ingot", "technic:composite_plate"},
|
||||
{"default:copper_ingot 5", "technic:copper_plate"},
|
||||
|
@ -21,10 +23,21 @@ local recipes = {
|
|||
|
||||
-- defuse the default sandstone recipe, since we have the compressor to take over in a more realistic manner
|
||||
minetest.clear_craft({
|
||||
output = "default:sandstone",
|
||||
recipe = {
|
||||
{'group:sand', 'group:sand'},
|
||||
{'group:sand', 'group:sand'}
|
||||
{"default:sand", "default:sand"},
|
||||
{"default:sand", "default:sand"},
|
||||
},
|
||||
})
|
||||
minetest.clear_craft({
|
||||
recipe = {
|
||||
{"default:desert_sand", "default:desert_sand"},
|
||||
{"default:desert_sand", "default:desert_sand"},
|
||||
},
|
||||
})
|
||||
minetest.clear_craft({
|
||||
recipe = {
|
||||
{"default:silver_sand", "default:silver_sand"},
|
||||
{"default:silver_sand", "default:silver_sand"},
|
||||
},
|
||||
})
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ if minetest.get_modpath("dye") then
|
|||
-- register recipes with the same crafting ratios as `dye` provides
|
||||
local dye_recipes = {
|
||||
{"technic:coal_dust", "dye:black 2"},
|
||||
{"default:blueberries", "dye:violet 2"},
|
||||
{"default:grass_1", "dye:green 1"},
|
||||
{"default:dry_shrub", "dye:brown 1"},
|
||||
{"default:junglegrass", "dye:green 2"},
|
||||
|
@ -36,13 +37,21 @@ if minetest.get_modpath("dye") then
|
|||
-- overwrite the existing crafting recipes
|
||||
local dyes = {"white", "red", "yellow", "blue", "violet", "orange"}
|
||||
for _, color in ipairs(dyes) do
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "dye:"..color.." 1",
|
||||
recipe = {"group:flower,color_"..color},
|
||||
minetest.clear_craft({
|
||||
type = "shapeless",
|
||||
recipe = {"group:flower,color_"..color},
|
||||
})
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "dye:"..color.." 1",
|
||||
recipe = {"group:flower,color_"..color},
|
||||
})
|
||||
|
||||
end
|
||||
|
||||
minetest.clear_craft({
|
||||
type = "shapeless",
|
||||
recipe = {"group:coal"},
|
||||
})
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "dye:black 1",
|
||||
|
@ -50,6 +59,10 @@ if minetest.get_modpath("dye") then
|
|||
})
|
||||
|
||||
if unifieddyes then
|
||||
minetest.clear_craft({
|
||||
type = "shapeless",
|
||||
recipe = {"default:cactus"},
|
||||
})
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "dye:green 1",
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
|
||||
local S = technic.getter
|
||||
|
||||
function technic.register_freezer(data)
|
||||
data.typename = "freezing"
|
||||
data.machine_name = "freezer"
|
||||
data.machine_desc = S("%s Freezer")
|
||||
technic.register_base_machine(data)
|
||||
end
|
|
@ -0,0 +1,21 @@
|
|||
|
||||
local S = technic.getter
|
||||
|
||||
technic.register_recipe_type("freezing", { description = S("Freezing") })
|
||||
|
||||
function technic.register_freezer_recipe(data)
|
||||
data.time = data.time or 5
|
||||
technic.register_recipe("freezing", data)
|
||||
end
|
||||
|
||||
local recipes = {
|
||||
{"bucket:bucket_water", { "default:ice", "bucket:bucket_empty" } },
|
||||
{"bucket:bucket_river_water", { "default:ice", "bucket:bucket_empty" } },
|
||||
{"default:dirt", "default:dirt_with_snow" },
|
||||
{"bucket:bucket_lava", { "default:obsidian", "bucket:bucket_empty" } }
|
||||
}
|
||||
|
||||
for _, data in pairs(recipes) do
|
||||
technic.register_freezer_recipe({input = {data[1]}, output = data[2]})
|
||||
end
|
||||
|
|
@ -35,15 +35,15 @@ function technic.register_generator(data)
|
|||
for k, v in pairs(groups) do active_groups[k] = v end
|
||||
|
||||
local generator_formspec =
|
||||
"invsize[8,9;]"..
|
||||
"size[8,9;]"..
|
||||
"label[0,0;"..S("Fuel-Fired %s Generator"):format(tier).."]"..
|
||||
"list[current_name;src;3,1;1,1;]"..
|
||||
"image[4,1;1,1;default_furnace_fire_bg.png]"..
|
||||
"list[current_player;main;0,5;8,4;]"..
|
||||
"listring[]"
|
||||
|
||||
|
||||
local desc = S("Fuel-Fired %s Generator"):format(tier)
|
||||
|
||||
|
||||
local run = function(pos, node)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local burn_time = meta:get_int("burn_time")
|
||||
|
@ -57,7 +57,7 @@ function technic.register_generator(data)
|
|||
-- Burn another piece of fuel
|
||||
if burn_time == 0 then
|
||||
local inv = meta:get_inventory()
|
||||
if not inv:is_empty("src") then
|
||||
if not inv:is_empty("src") then
|
||||
local fuellist = inv:get_list("src")
|
||||
local fuel
|
||||
local afterfuel
|
||||
|
@ -96,7 +96,7 @@ function technic.register_generator(data)
|
|||
}
|
||||
)..pipeworks.button_label
|
||||
end
|
||||
meta:set_string("formspec",
|
||||
meta:set_string("formspec",
|
||||
"size[8, 9]"..
|
||||
"label[0, 0;"..minetest.formspec_escape(desc).."]"..
|
||||
"list[current_name;src;3, 1;1, 1;]"..
|
||||
|
@ -120,7 +120,7 @@ function technic.register_generator(data)
|
|||
"technic_"..ltier.."_generator_side.png"..tentry,
|
||||
"technic_"..ltier.."_generator_side.png"..tentry,
|
||||
"technic_"..ltier.."_generator_front.png"
|
||||
},
|
||||
},
|
||||
paramtype2 = "facedir",
|
||||
groups = groups,
|
||||
connect_sides = {"bottom", "back", "left", "right"},
|
||||
|
@ -162,7 +162,6 @@ function technic.register_generator(data)
|
|||
fs_helpers.on_receive_fields(pos, fields)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
local form = generator_formspec
|
||||
local form_buttons = ""
|
||||
if not string.find(node.name, ":lv_") then
|
||||
form_buttons = fs_helpers.cycling_button(
|
||||
|
@ -204,15 +203,15 @@ function technic.register_generator(data)
|
|||
technic_run = run,
|
||||
technic_on_disable = function(pos, node)
|
||||
local timer = minetest.get_node_timer(pos)
|
||||
timer:start(1)
|
||||
end,
|
||||
timer:start(1)
|
||||
end,
|
||||
on_timer = function(pos, node)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
|
||||
-- Connected back?
|
||||
if meta:get_int(tier.."_EU_timeout") > 0 then return false end
|
||||
|
||||
|
||||
local burn_time = meta:get_int("burn_time") or 0
|
||||
|
||||
if burn_time <= 0 then
|
||||
|
@ -240,7 +239,7 @@ function technic.register_generator(data)
|
|||
}
|
||||
)..pipeworks.button_label
|
||||
end
|
||||
meta:set_string("formspec",
|
||||
meta:set_string("formspec",
|
||||
"size[8, 9]"..
|
||||
"label[0, 0;"..minetest.formspec_escape(desc).."]"..
|
||||
"list[current_name;src;3, 1;1, 1;]"..
|
||||
|
@ -274,7 +273,7 @@ function technic.register_generator(data)
|
|||
local burn_time = meta:get_int("burn_time")
|
||||
local percent = math.floor(burn_time / burn_totaltime * 100)
|
||||
|
||||
meta:set_string("formspec",
|
||||
meta:set_string("formspec",
|
||||
"size[8, 9]"..
|
||||
"label[0, 0;"..minetest.formspec_escape(desc).."]"..
|
||||
"list[current_name;src;3, 1;1, 1;]"..
|
||||
|
|
|
@ -15,6 +15,7 @@ local recipes = {
|
|||
{"default:desert_stone", "default:desert_sand"},
|
||||
{"default:gold_lump", "technic:gold_dust 2"},
|
||||
{"default:iron_lump", "technic:wrought_iron_dust 2"},
|
||||
{"default:tin_lump", "technic:tin_dust 2"},
|
||||
{"technic:chromium_lump", "technic:chromium_dust 2"},
|
||||
{"technic:uranium_lump", "technic:uranium_dust 2"},
|
||||
{"technic:zinc_lump", "technic:zinc_dust 2"},
|
||||
|
@ -22,17 +23,31 @@ local recipes = {
|
|||
{"technic:sulfur_lump", "technic:sulfur_dust 2"},
|
||||
{"default:stone", "technic:stone_dust"},
|
||||
{"default:sand", "technic:stone_dust"},
|
||||
|
||||
|
||||
-- Other
|
||||
{"default:cobble", "default:gravel"},
|
||||
{"default:gravel", "default:sand"},
|
||||
{"default:sandstone", "default:sand 2"}, -- reverse recipe can be found in the compressor
|
||||
{"default:cobble", "default:gravel"},
|
||||
{"default:gravel", "default:sand"},
|
||||
{"default:sandstone", "default:sand 2"}, -- reverse recipe can be found in the compressor
|
||||
{"default:desert_sandstone", "default:desert_sand 2"}, -- reverse recipe can be found in the compressor
|
||||
{"default:silver_sandstone", "default:silver_sand 2"}, -- reverse recipe can be found in the compressor
|
||||
|
||||
{"default:ice", "default:snowblock"},
|
||||
}
|
||||
|
||||
-- defuse the sandstone -> 4 sand recipe to avoid infinite sand bugs (also consult the inverse compressor recipe)
|
||||
minetest.clear_craft({
|
||||
recipe = {
|
||||
{'default:sandstone'}
|
||||
{"default:sandstone"}
|
||||
},
|
||||
})
|
||||
minetest.clear_craft({
|
||||
recipe = {
|
||||
{"default:desert_sandstone"}
|
||||
},
|
||||
})
|
||||
minetest.clear_craft({
|
||||
recipe = {
|
||||
{"default:silver_sandstone"}
|
||||
},
|
||||
})
|
||||
|
||||
|
@ -43,7 +58,6 @@ end
|
|||
if minetest.get_modpath("moreores") then
|
||||
table.insert(recipes, {"moreores:mithril_lump", "technic:mithril_dust 2"})
|
||||
table.insert(recipes, {"moreores:silver_lump", "technic:silver_dust 2"})
|
||||
table.insert(recipes, {"moreores:tin_lump", "technic:tin_dust 2"})
|
||||
end
|
||||
|
||||
if minetest.get_modpath("gloopores") or minetest.get_modpath("glooptest") then
|
||||
|
@ -81,7 +95,7 @@ local function register_dust(name, ingot)
|
|||
end
|
||||
|
||||
-- Sorted alphibeticaly
|
||||
register_dust("Brass", "technic:brass_ingot")
|
||||
register_dust("Brass", "basic_materials:brass_ingot")
|
||||
register_dust("Bronze", "default:bronze_ingot")
|
||||
register_dust("Carbon Steel", "technic:carbon_steel_ingot")
|
||||
register_dust("Cast Iron", "technic:cast_iron_ingot")
|
||||
|
@ -94,9 +108,9 @@ register_dust("Gold", "default:gold_ingot")
|
|||
register_dust("Mithril", "moreores:mithril_ingot")
|
||||
register_dust("Silver", "moreores:silver_ingot")
|
||||
register_dust("Stainless Steel", "technic:stainless_steel_ingot")
|
||||
register_dust("Stone", "default:stone")
|
||||
register_dust("Stone", "default:stone")
|
||||
register_dust("Sulfur", nil)
|
||||
register_dust("Tin", "moreores:tin_ingot")
|
||||
register_dust("Tin", "default:tin_ingot")
|
||||
register_dust("Wrought Iron", "technic:wrought_iron_ingot")
|
||||
register_dust("Zinc", "technic:zinc_ingot")
|
||||
if minetest.get_modpath("gloopores") or minetest.get_modpath("glooptest") then
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
local S = technic.getter
|
||||
local moretrees = minetest.get_modpath("moretrees")
|
||||
local mesecons_materials = minetest.get_modpath("mesecons_materials")
|
||||
local dye = minetest.get_modpath("dye")
|
||||
|
||||
-- sawdust, the finest wood/tree grinding
|
||||
|
|
|
@ -20,6 +20,7 @@ dofile(path.."/grinder_recipes.lua")
|
|||
dofile(path.."/extractor_recipes.lua")
|
||||
dofile(path.."/compressor_recipes.lua")
|
||||
dofile(path.."/centrifuge_recipes.lua")
|
||||
dofile(path.."/freezer_recipes.lua")
|
||||
|
||||
-- Multi-Machine Recipes
|
||||
dofile(path.."/grindings.lua")
|
||||
|
@ -31,3 +32,4 @@ dofile(path.."/grinder.lua")
|
|||
dofile(path.."/extractor.lua")
|
||||
dofile(path.."/compressor.lua")
|
||||
dofile(path.."/centrifuge.lua")
|
||||
dofile(path.."/freezer.lua")
|
||||
|
|
|
@ -4,22 +4,26 @@ local S = technic.getter
|
|||
local fs_helpers = pipeworks.fs_helpers
|
||||
local tube_entry = "^pipeworks_tube_connection_metallic.png"
|
||||
|
||||
local tube = {
|
||||
insert_object = function(pos, node, stack, direction)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
return inv:add_item("src", stack)
|
||||
end,
|
||||
can_insert = function(pos, node, stack, direction)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
if meta:get_int("splitstacks") == 1 then
|
||||
stack = stack:peek_item(1)
|
||||
end
|
||||
return inv:room_for_item("src", stack)
|
||||
end,
|
||||
connect_sides = {left = 1, right = 1, back = 1, top = 1, bottom = 1},
|
||||
}
|
||||
function technic.default_can_insert(pos, node, stack, direction)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
if meta:get_int("splitstacks") == 1 then
|
||||
stack = stack:peek_item(1)
|
||||
end
|
||||
return inv:room_for_item("src", stack)
|
||||
end
|
||||
|
||||
function technic.new_default_tube()
|
||||
return {
|
||||
insert_object = function(pos, node, stack, direction)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
return inv:add_item("src", stack)
|
||||
end,
|
||||
can_insert = technic.default_can_insert,
|
||||
connect_sides = {left = 1, right = 1, back = 1, top = 1, bottom = 1},
|
||||
}
|
||||
end
|
||||
|
||||
local connect_default = {"bottom", "back", "left", "right"}
|
||||
|
||||
|
@ -35,6 +39,8 @@ function technic.register_base_machine(data)
|
|||
local tier = data.tier
|
||||
local ltier = string.lower(tier)
|
||||
|
||||
data.modname = data.modname or minetest.get_current_modname()
|
||||
|
||||
local groups = {cracky = 2, technic_machine = 1, ["technic_"..ltier] = 1}
|
||||
if data.tube then
|
||||
groups.tubedevice = 1
|
||||
|
@ -44,7 +50,7 @@ function technic.register_base_machine(data)
|
|||
for k, v in pairs(groups) do active_groups[k] = v end
|
||||
|
||||
local formspec =
|
||||
"invsize[8,9;]"..
|
||||
"size[8,9;]"..
|
||||
"list[current_name;src;"..(4-input_size)..",1;"..input_size..",1;]"..
|
||||
"list[current_name;dst;5,1;2,2;]"..
|
||||
"list[current_player;main;0,5;8,4;]"..
|
||||
|
@ -64,13 +70,21 @@ function technic.register_base_machine(data)
|
|||
"listring[current_player;main]"
|
||||
end
|
||||
|
||||
local tube = technic.new_default_tube()
|
||||
if data.can_insert then
|
||||
tube.can_insert = data.can_insert
|
||||
end
|
||||
if data.insert_object then
|
||||
tube.insert_object = data.insert_object
|
||||
end
|
||||
|
||||
local run = function(pos, node)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
local eu_input = meta:get_int(tier.."_EU_input")
|
||||
|
||||
local machine_desc_tier = machine_desc:format(tier)
|
||||
local machine_node = "technic:"..ltier.."_"..machine_name
|
||||
local machine_node = data.modname..":"..ltier.."_"..machine_name
|
||||
local machine_demand = data.demand
|
||||
|
||||
-- Setup meta data if it does not exist.
|
||||
|
@ -144,15 +158,16 @@ function technic.register_base_machine(data)
|
|||
if ltier == "lv" then
|
||||
tentry = ""
|
||||
end
|
||||
minetest.register_node("technic:"..ltier.."_"..machine_name, {
|
||||
|
||||
minetest.register_node(data.modname..":"..ltier.."_"..machine_name, {
|
||||
description = machine_desc:format(tier),
|
||||
tiles = {
|
||||
"technic_"..ltier.."_"..machine_name.."_top.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_bottom.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_side.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_side.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_side.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_front.png"
|
||||
data.modname.."_"..ltier.."_"..machine_name.."_top.png"..tentry,
|
||||
data.modname.."_"..ltier.."_"..machine_name.."_bottom.png"..tentry,
|
||||
data.modname.."_"..ltier.."_"..machine_name.."_side.png"..tentry,
|
||||
data.modname.."_"..ltier.."_"..machine_name.."_side.png"..tentry,
|
||||
data.modname.."_"..ltier.."_"..machine_name.."_side.png"..tentry,
|
||||
data.modname.."_"..ltier.."_"..machine_name.."_front.png"
|
||||
},
|
||||
paramtype2 = "facedir",
|
||||
groups = groups,
|
||||
|
@ -194,9 +209,10 @@ function technic.register_base_machine(data)
|
|||
after_place_node = data.tube and pipeworks.after_place,
|
||||
after_dig_node = technic.machine_after_dig_node,
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
local node = minetest.get_node(pos)
|
||||
if fields.quit then return end
|
||||
if not pipeworks.may_configure(pos, sender) then return end
|
||||
fs_helpers.on_receive_fields(pos, fields)
|
||||
local node = minetest.get_node(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local form_buttons = ""
|
||||
if not string.find(node.name, ":lv_") then
|
||||
|
@ -214,18 +230,18 @@ function technic.register_base_machine(data)
|
|||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("technic:"..ltier.."_"..machine_name.."_active",{
|
||||
minetest.register_node(data.modname..":"..ltier.."_"..machine_name.."_active",{
|
||||
description = machine_desc:format(tier),
|
||||
tiles = {
|
||||
"technic_"..ltier.."_"..machine_name.."_top.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_bottom.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_side.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_side.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_side.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_front_active.png"
|
||||
data.modname.."_"..ltier.."_"..machine_name.."_top.png"..tentry,
|
||||
data.modname.."_"..ltier.."_"..machine_name.."_bottom.png"..tentry,
|
||||
data.modname.."_"..ltier.."_"..machine_name.."_side.png"..tentry,
|
||||
data.modname.."_"..ltier.."_"..machine_name.."_side.png"..tentry,
|
||||
data.modname.."_"..ltier.."_"..machine_name.."_side.png"..tentry,
|
||||
data.modname.."_"..ltier.."_"..machine_name.."_front_active.png"
|
||||
},
|
||||
paramtype2 = "facedir",
|
||||
drop = "technic:"..ltier.."_"..machine_name,
|
||||
drop = data.modname..":"..ltier.."_"..machine_name,
|
||||
groups = active_groups,
|
||||
connect_sides = data.connect_sides or connect_default,
|
||||
legacy_facedir_simple = true,
|
||||
|
@ -236,11 +252,12 @@ function technic.register_base_machine(data)
|
|||
allow_metadata_inventory_take = technic.machine_inventory_take,
|
||||
allow_metadata_inventory_move = technic.machine_inventory_move,
|
||||
technic_run = run,
|
||||
technic_disabled_machine_name = "technic:"..ltier.."_"..machine_name,
|
||||
technic_disabled_machine_name = data.modname..":"..ltier.."_"..machine_name,
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
local node = minetest.get_node(pos)
|
||||
if fields.quit then return end
|
||||
if not pipeworks.may_configure(pos, sender) then return end
|
||||
fs_helpers.on_receive_fields(pos, fields)
|
||||
local node = minetest.get_node(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local form_buttons = ""
|
||||
if not string.find(node.name, ":lv_") then
|
||||
|
@ -258,8 +275,8 @@ function technic.register_base_machine(data)
|
|||
end,
|
||||
})
|
||||
|
||||
technic.register_machine(tier, "technic:"..ltier.."_"..machine_name, technic.receiver)
|
||||
technic.register_machine(tier, "technic:"..ltier.."_"..machine_name.."_active", technic.receiver)
|
||||
technic.register_machine(tier, data.modname..":"..ltier.."_"..machine_name, technic.receiver)
|
||||
technic.register_machine(tier, data.modname..":"..ltier.."_"..machine_name.."_active", technic.receiver)
|
||||
|
||||
end -- End registration
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ local function register_recipe(typename, data)
|
|||
else
|
||||
data.output = ItemStack(data.output):to_string()
|
||||
end
|
||||
|
||||
|
||||
local recipe = {time = data.time, input = {}, output = data.output}
|
||||
local index = get_recipe_index(data.input)
|
||||
if not index then
|
||||
|
@ -49,7 +49,7 @@ local function register_recipe(typename, data)
|
|||
for _, stack in ipairs(data.input) do
|
||||
recipe.input[ItemStack(stack):get_name()] = ItemStack(stack):get_count()
|
||||
end
|
||||
|
||||
|
||||
technic.recipes[typename].recipes[index] = recipe
|
||||
if have_ui and technic.recipes[typename].output_size == 1 then
|
||||
unified_inventory.register_craft({
|
||||
|
|
|
@ -30,14 +30,15 @@ function technic.register_solar_array(data)
|
|||
local charge_to_give = math.floor((light + pos.y) * data.power)
|
||||
charge_to_give = math.max(charge_to_give, 0)
|
||||
charge_to_give = math.min(charge_to_give, data.power * 50)
|
||||
meta:set_string("infotext", S("@1 Active (@2 EU)", machine_name, technic.pretty_num(charge_to_give)))
|
||||
meta:set_string("infotext", S("@1 Active (@2)", machine_name,
|
||||
technic.EU_string(charge_to_give)))
|
||||
meta:set_int(tier.."_EU_supply", charge_to_give)
|
||||
else
|
||||
meta:set_string("infotext", S("%s Idle"):format(machine_name))
|
||||
meta:set_int(tier.."_EU_supply", 0)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
minetest.register_node("technic:solar_array_"..ltier, {
|
||||
tiles = {"technic_"..ltier.."_solar_array_top.png", "technic_"..ltier.."_solar_array_bottom.png",
|
||||
"technic_"..ltier.."_solar_array_side.png", "technic_"..ltier.."_solar_array_side.png",
|
||||
|
@ -55,7 +56,6 @@ function technic.register_solar_array(data)
|
|||
},
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local name = minetest.get_node(pos).name
|
||||
meta:set_int(tier.."_EU_supply", 0)
|
||||
end,
|
||||
technic_run = run,
|
||||
|
|
|
@ -149,7 +149,9 @@ local run = function(pos, node, run_stage)
|
|||
meta:set_int(from.."_EU_supply", 0)
|
||||
meta:set_int(to.."_EU_demand", 0)
|
||||
meta:set_int(to.."_EU_supply", input * remain)
|
||||
meta:set_string("infotext", S("@1 (@2 @3 -> @4 @5)", machine_name, technic.pretty_num(input), from, technic.pretty_num(input * remain), to))
|
||||
meta:set_string("infotext", S("@1 (@2 @3 -> @4 @5)", machine_name,
|
||||
technic.EU_string(input), from,
|
||||
technic.EU_string(input * remain), to))
|
||||
else
|
||||
meta:set_string("infotext", S("%s Has Bad Cabling"):format(machine_name))
|
||||
if to then
|
||||
|
@ -199,10 +201,11 @@ minetest.register_node("technic:supply_converter", {
|
|||
minetest.register_craft({
|
||||
output = 'technic:supply_converter 1',
|
||||
recipe = {
|
||||
{'technic:fine_gold_wire', 'technic:rubber', 'technic:doped_silicon_wafer'},
|
||||
{'basic_materials:gold_wire', 'technic:rubber', 'technic:doped_silicon_wafer'},
|
||||
{'technic:mv_transformer', 'technic:machine_casing', 'technic:lv_transformer'},
|
||||
{'technic:mv_cable', 'technic:rubber', 'technic:lv_cable'},
|
||||
}
|
||||
},
|
||||
replacements = { {"basic_materials:gold_wire", "basic_materials:empty_spool"}, },
|
||||
})
|
||||
|
||||
for tier, machines in pairs(technic.machines) do
|
||||
|
|
|
@ -119,13 +119,13 @@ end
|
|||
-- Generic function to add found connected nodes to the right classification array
|
||||
local check_node_subp = function(PR_nodes, RE_nodes, BA_nodes, SP_nodes, all_nodes, pos, machines, tier, sw_pos, from_below, network_id, queue)
|
||||
technic.get_or_load_node(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local name = minetest.get_node(pos).name
|
||||
|
||||
if technic.is_tier_cable(name, tier) then
|
||||
add_cable_node(all_nodes, pos,network_id, queue)
|
||||
elseif machines[name] then
|
||||
--dprint(name.." is a "..machines[name])
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string(tier.."_network",minetest.pos_to_string(sw_pos))
|
||||
if machines[name] == technic.producer then
|
||||
add_network_node(PR_nodes, pos, network_id)
|
||||
|
@ -227,6 +227,20 @@ minetest.register_chatcommand("powerctrl", {
|
|||
end
|
||||
})
|
||||
|
||||
-- Run all the nodes
|
||||
local function run_nodes(list, run_stage)
|
||||
for _, pos in ipairs(list) do
|
||||
technic.get_or_load_node(pos)
|
||||
local node = minetest.get_node_or_nil(pos)
|
||||
if node and node.name then
|
||||
local nodedef = minetest.registered_nodes[node.name]
|
||||
if nodedef and nodedef.technic_run then
|
||||
nodedef.technic_run(pos, node, run_stage)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"technic:switching_station"},
|
||||
label = "Switching Station", -- allows the mtt profiler to profile this abm individually
|
||||
|
@ -235,12 +249,8 @@ minetest.register_abm({
|
|||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
if not technic.powerctrl_state then return end
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta1 = nil
|
||||
local meta1
|
||||
local pos1 = {}
|
||||
local PR_EU = 0 -- EUs from PR nodes
|
||||
local BA_PR_EU = 0 -- EUs from BA nodes (discharching)
|
||||
local BA_RE_EU = 0 -- EUs to BA nodes (charging)
|
||||
local RE_EU = 0 -- EUs to RE nodes
|
||||
|
||||
local tier = ""
|
||||
local PR_nodes
|
||||
|
@ -281,21 +291,6 @@ minetest.register_abm({
|
|||
return
|
||||
end
|
||||
|
||||
-- Run all the nodes
|
||||
local function run_nodes(list, run_stage)
|
||||
for _, pos2 in ipairs(list) do
|
||||
technic.get_or_load_node(pos2)
|
||||
local node2 = minetest.get_node(pos2)
|
||||
local nodedef
|
||||
if node2 and node2.name then
|
||||
nodedef = minetest.registered_nodes[node2.name]
|
||||
end
|
||||
if nodedef and nodedef.technic_run then
|
||||
nodedef.technic_run(pos2, node2, run_stage)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
run_nodes(PR_nodes, technic.producer)
|
||||
run_nodes(RE_nodes, technic.receiver)
|
||||
run_nodes(BA_nodes, technic.battery)
|
||||
|
@ -361,9 +356,9 @@ minetest.register_abm({
|
|||
end
|
||||
--dprint("Total BA demand:"..BA_eu_demand)
|
||||
|
||||
meta:set_string("infotext",
|
||||
S("@1. Supply: @2 Demand: @3",
|
||||
machine_name, technic.pretty_num(PR_eu_supply), technic.pretty_num(RE_eu_demand)))
|
||||
meta:set_string("infotext", S("@1. Supply: @2 Demand: @3",
|
||||
machine_name, technic.EU_string(PR_eu_supply),
|
||||
technic.EU_string(RE_eu_demand)))
|
||||
|
||||
-- If mesecon signal and power supply or demand changed then
|
||||
-- send them via digilines.
|
||||
|
@ -467,7 +462,6 @@ minetest.register_abm({
|
|||
interval = 1,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local meta = minetest.get_meta(pos)
|
||||
for tier, machines in pairs(technic.machines) do
|
||||
if machines[node.name] and switching_station_timeout_count(pos, tier) then
|
||||
local nodedef = minetest.registered_nodes[node.name]
|
||||
|
@ -493,7 +487,6 @@ minetest.register_abm({
|
|||
interval = 1,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local pos1 = {x=pos.x,y=pos.y-1,z=pos.z}
|
||||
local tier = technic.get_cable_tier(minetest.get_node(pos1).name)
|
||||
if not tier then return end
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
name = technic
|
||||
depends = default, pipeworks, technic_worldgen, basic_materials
|
||||
optional_depends = bucket, screwdriver, mesecons, mesecons_mvps, digilines, digiline_remote, intllib, unified_inventory, vector_extras, dye
|
|
@ -54,6 +54,7 @@ local rad_resistance_node = {
|
|||
["default:lava_source"] = 17,
|
||||
["default:mese"] = 21,
|
||||
["default:mossycobble"] = 15,
|
||||
["default:tinblock"] = 37,
|
||||
["pbj_pup:pbj_pup"] = 10000,
|
||||
["pbj_pup:pbj_pup_candies"] = 10000,
|
||||
["gloopblocks:rainbow_block_diagonal"] = 5000,
|
||||
|
@ -76,6 +77,7 @@ local rad_resistance_node = {
|
|||
["default:stone_with_gold"] = 34,
|
||||
["default:stone_with_iron"] = 20,
|
||||
["default:stone_with_mese"] = 17,
|
||||
["default:stone_with_tin"] = 19,
|
||||
["default:stonebrick"] = 17,
|
||||
["default:water_flowing"] = 2.8,
|
||||
["default:water_source"] = 5.6,
|
||||
|
@ -141,12 +143,10 @@ local rad_resistance_node = {
|
|||
["moreblocks:wood_tile_up"] = 1.7,
|
||||
["moreores:mineral_mithril"] = 18,
|
||||
["moreores:mineral_silver"] = 21,
|
||||
["moreores:mineral_tin"] = 19,
|
||||
["moreores:mithril_block"] = 26,
|
||||
["moreores:silver_block"] = 53,
|
||||
["moreores:tin_block"] = 37,
|
||||
["snow:snow_brick"] = 2.8,
|
||||
["technic:brass_block"] = 43,
|
||||
["basic_materials:brass_block"] = 43,
|
||||
["technic:carbon_steel_block"] = 40,
|
||||
["technic:cast_iron_block"] = 40,
|
||||
["technic:chernobylite_block"] = 40,
|
||||
|
@ -244,7 +244,6 @@ to be safe, and limits the range at which source/player interactions
|
|||
need to be considered.
|
||||
--]]
|
||||
local abdomen_offset = 1
|
||||
local cache_scaled_shielding = {}
|
||||
local rad_dmg_cutoff = 0.2
|
||||
local radiated_players = {}
|
||||
|
||||
|
@ -294,6 +293,8 @@ local function calculate_damage_multiplier(object)
|
|||
end
|
||||
if ag.radiation then
|
||||
return 0.01 * ag.radiation
|
||||
elseif armor_enabled then
|
||||
return 0
|
||||
end
|
||||
if ag.fleshy then
|
||||
return math.sqrt(0.01 * ag.fleshy)
|
||||
|
@ -309,7 +310,7 @@ local function calculate_object_center(object)
|
|||
end
|
||||
|
||||
local function dmg_object(pos, object, strength)
|
||||
local obj_pos = vector.add(object:getpos(), calculate_object_center(object))
|
||||
local obj_pos = vector.add(object:get_pos(), calculate_object_center(object))
|
||||
local mul
|
||||
if armor_enabled or entity_damage then
|
||||
-- we need to check may the object be damaged even if armor is disabled
|
||||
|
@ -338,7 +339,7 @@ local function dmg_abm(pos, node)
|
|||
local max_dist = strength * rad_dmg_mult_sqrt
|
||||
for _, o in pairs(minetest.get_objects_inside_radius(pos,
|
||||
max_dist + abdomen_offset)) do
|
||||
if entity_damage or o:is_player() then
|
||||
if (entity_damage or o:is_player()) and o:get_hp() > 0 then
|
||||
dmg_object(pos, o, strength)
|
||||
end
|
||||
end
|
||||
|
@ -513,4 +514,3 @@ if griefing then
|
|||
end,
|
||||
})
|
||||
end
|
||||
|
||||
|
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 896 B After Width: | Height: | Size: 675 B |
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 248 KiB After Width: | Height: | Size: 210 KiB |
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 463 B After Width: | Height: | Size: 405 B |
Before Width: | Height: | Size: 207 B After Width: | Height: | Size: 184 B |
Before Width: | Height: | Size: 873 B After Width: | Height: | Size: 648 B |
Before Width: | Height: | Size: 240 B After Width: | Height: | Size: 168 B |
Before Width: | Height: | Size: 241 B After Width: | Height: | Size: 168 B |
Before Width: | Height: | Size: 227 B After Width: | Height: | Size: 168 B |
Before Width: | Height: | Size: 247 B After Width: | Height: | Size: 245 B |