MineClone/MineClonia compatibility for technic core (#328)

Co-authored-by: SX <50966843+S-S-X@users.noreply.github.com>
Co-authored-by: Freeman <freeman@gnuhacker.org>
Co-authored-by: Buckaroo Banzai <39065740+BuckarooBanzay@users.noreply.github.com>
Co-authored-by: OgelGames <olliverdc28@gmail.com>
This commit is contained in:
Github is a non-free platform owned by Microsoft. Reasonable alternatives exist, such as Gitea, Sourcehut. We need a federated, mastodon-like forge based on ForgeFed. See: https://forgefed.org 2024-01-10 07:14:15 +01:00 committed by GitHub
parent 7393d19d3a
commit da0378aead
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
57 changed files with 831 additions and 368 deletions

View File

@ -26,10 +26,11 @@ read_globals = {
"mesecon", "moretrees",
"unified_inventory", "protector",
"unifieddyes", "digiline_remote",
"drawers", "mg",
"drawers", "mg", "mcl_explosions",
"craftguide", "i3", "mtt",
"vizlib", "mcl_sounds", "mcl_vars",
"mcl_worlds", "exchangeclone",
"mcl_worlds", "mcl_buckets", "mcl_formspec",
"mcl_craftguide","exchangeclone",
-- Only used in technic/machines/MV/lighting.lua (disabled)
"isprotect", "homedecor_expect_infinite_stacks",

View File

@ -1,19 +1,23 @@
-- check if we have the necessary dependencies to allow actually using these materials in the crafts
local mesecons_materials = minetest.get_modpath("mesecons_materials")
local mat = technic.materials
local has_mcl = minetest.get_modpath("mcl_core")
-- Remove some recipes
-- Bronze
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"}
}
})
if not has_mcl then
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"}
}
})
end
-- Accelerator tube
if pipeworks.enable_accelerator_tube then
@ -38,9 +42,9 @@ if pipeworks.enable_teleport_tube then
minetest.register_craft({
output = 'pipeworks:teleport_tube_1',
recipe = {
{'default:mese_crystal', 'technic:copper_coil', 'default:mese_crystal'},
{mat.mese_crystal, 'technic:copper_coil', mat.mese_crystal},
{'pipeworks:tube_1', 'technic:control_logic_unit', 'pipeworks:tube_1'},
{'default:mese_crystal', 'technic:copper_coil', 'default:mese_crystal'},
{mat.mese_crystal, 'technic:copper_coil', mat.mese_crystal},
}
})
end
@ -62,36 +66,36 @@ minetest.register_craft( {
minetest.register_craft({
output = 'technic:diamond_drill_head',
recipe = {
{'technic:stainless_steel_ingot', 'default:diamond', 'technic:stainless_steel_ingot'},
{'default:diamond', '', 'default:diamond'},
{'technic:stainless_steel_ingot', 'default:diamond', 'technic:stainless_steel_ingot'},
{'technic:stainless_steel_ingot', mat.diamond, 'technic:stainless_steel_ingot'},
{mat.diamond, '', mat.diamond},
{'technic:stainless_steel_ingot', mat.diamond, 'technic:stainless_steel_ingot'},
}
})
minetest.register_craft({
output = 'technic:green_energy_crystal',
recipe = {
{'default:gold_ingot', 'technic:battery', 'dye:green'},
{mat.gold_ingot, 'technic:battery', mat.dye_green},
{'technic:battery', 'technic:red_energy_crystal', 'technic:battery'},
{'dye:green', 'technic:battery', 'default:gold_ingot'},
{mat.dye_green, 'technic:battery', mat.gold_ingot},
}
})
minetest.register_craft({
output = 'technic:blue_energy_crystal',
recipe = {
{'moreores:mithril_ingot', 'technic:battery', 'dye:blue'},
{mat.mithril_ingot, 'technic:battery', mat.dye_blue},
{'technic:battery', 'technic:green_energy_crystal', 'technic:battery'},
{'dye:blue', 'technic:battery', 'moreores:mithril_ingot'},
{mat.dye_blue, 'technic:battery', mat.mithril_ingot},
}
})
minetest.register_craft({
output = 'technic:red_energy_crystal',
recipe = {
{'moreores:silver_ingot', 'technic:battery', 'dye:red'},
{mat.silver_ingot, 'technic:battery', mat.dye_red},
{'technic:battery', 'basic_materials:energy_crystal_simple', 'technic:battery'},
{'dye:red', 'technic:battery', 'moreores:silver_ingot'},
{mat.dye_red, 'technic:battery', mat.silver_ingot},
}
})
@ -110,12 +114,10 @@ minetest.register_craft({
},
})
local isolation = mesecons_materials and "mesecons_materials:fiber" or "technic:rubber"
minetest.register_craft({
output = 'technic:lv_transformer',
recipe = {
{isolation, 'technic:wrought_iron_ingot', isolation},
{mat.insulation, 'technic:wrought_iron_ingot', mat.insulation},
{'technic:copper_coil', 'technic:wrought_iron_ingot', 'technic:copper_coil'},
{'technic:wrought_iron_ingot', 'technic:wrought_iron_ingot', 'technic:wrought_iron_ingot'},
}
@ -124,7 +126,7 @@ minetest.register_craft({
minetest.register_craft({
output = 'technic:mv_transformer',
recipe = {
{isolation, 'technic:carbon_steel_ingot', isolation},
{mat.insulation, 'technic:carbon_steel_ingot', mat.insulation},
{'technic:copper_coil', 'technic:carbon_steel_ingot', 'technic:copper_coil'},
{'technic:carbon_steel_ingot', 'technic:carbon_steel_ingot', 'technic:carbon_steel_ingot'},
}
@ -133,7 +135,7 @@ minetest.register_craft({
minetest.register_craft({
output = 'technic:hv_transformer',
recipe = {
{isolation, 'technic:stainless_steel_ingot', isolation},
{mat.insulation, 'technic:stainless_steel_ingot', mat.insulation},
{'technic:copper_coil', 'technic:stainless_steel_ingot', 'technic:copper_coil'},
{'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot'},
}
@ -143,7 +145,7 @@ minetest.register_craft({
output = 'technic:control_logic_unit',
recipe = {
{'', 'basic_materials:gold_wire', ''},
{'default:copper_ingot', 'technic:silicon_wafer', 'default:copper_ingot'},
{mat.bronze_ingot, 'technic:silicon_wafer', mat.bronze_ingot},
{'', 'technic:chromium_ingot', ''},
},
replacements = { {"basic_materials:gold_wire", "basic_materials:empty_spool"}, },
@ -153,8 +155,8 @@ minetest.register_craft({
output = 'technic:mixed_metal_ingot 9',
recipe = {
{'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot'},
{'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'},
{'default:tin_ingot', 'default:tin_ingot', 'default:tin_ingot'},
{mat.bronze_ingot, mat.bronze_ingot, mat.bronze_ingot},
{mat.tin_ingot, mat.tin_ingot, mat.tin_ingot},
}
})
@ -176,13 +178,13 @@ minetest.register_craft({
minetest.register_craft({
output = "default:dirt 2",
output = mat.dirt.." 2",
type = "shapeless",
replacements = {{"bucket:bucket_water","bucket:bucket_empty"}},
replacements = {{mat.bucket_water,mat.bucket_empty}},
recipe = {
"technic:stone_dust",
"group:leaves",
"bucket:bucket_water",
mat.bucket_water,
"group:sand",
},
})

View File

@ -4,6 +4,12 @@ technic = rawget(_G, "technic") or {}
technic.plus = true
technic.version = 1.2
if minetest.get_modpath("mcl_sounds") then
technic.sounds = mcl_sounds
else
technic.sounds = assert(default, "No suitable mod found for sounds")
end
technic.creative_mode = minetest.settings:get_bool("creative_mode")
local modpath = minetest.get_modpath("technic")
@ -12,6 +18,9 @@ technic.modpath = modpath
local S = minetest.get_translator("technic")
technic.getter = S
-- Read materials file
dofile(modpath.."/materials.lua")
-- Read configuration file
dofile(modpath.."/config.lua")

View File

@ -1,6 +1,8 @@
local S = technic.getter
local has_mcl = minetest.get_modpath("mcl_core")
minetest.register_craftitem("technic:silicon_wafer", {
description = S("Silicon Wafer"),
inventory_image = "technic_silicon_wafer.png",
@ -108,12 +110,14 @@ minetest.register_craftitem("technic:carbon_cloth", {
minetest.register_node("technic:machine_casing", {
description = S("Machine Casing"),
groups = {cracky=2},
groups = {cracky=2, pickaxey=2},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
sunlight_propagates = true,
paramtype = "light",
drawtype = "allfaces",
tiles = {"technic_machine_casing.png"},
sounds = default.node_sound_stone_defaults(),
sounds = technic.sounds.node_sound_stone_defaults(),
})
for p = 0, 35 do
@ -164,8 +168,10 @@ for p = 0, 35 do
tiles = {"technic_uranium_block.png"},
is_ground_content = true,
groups = {uranium_block=1, not_in_creative_inventory=nici,
cracky=1, level=2, radioactive=radioactivity},
sounds = default.node_sound_stone_defaults(),
cracky=1, level=has_mcl and 0 or 2, radioactive=radioactivity, pickaxey=4},
_mcl_blast_resistance = 1,
_mcl_hardness = 1,
sounds = technic.sounds.node_sound_stone_defaults(),
});
if not ov then
minetest.register_craft({

View File

@ -14,12 +14,14 @@ local S = technic.getter
local cable_entry = "^technic_cable_connection_overlay.png"
local mat = technic.materials
minetest.register_craft({
output = "technic:forcefield_emitter_off",
recipe = {
{"default:mese", "basic_materials:motor", "default:mese" },
{mat.mese, "basic_materials:motor", mat.mese },
{"technic:deployer_off", "technic:machine_casing", "technic:deployer_off"},
{"default:mese", "technic:hv_cable", "default:mese" },
{mat.mese, "technic:hv_cable", mat.mese },
}
})
@ -307,7 +309,9 @@ minetest.register_node("technic:forcefield_emitter_off", {
"technic_forcefield_emitter_off.png",
"technic_forcefield_emitter_off.png"
},
groups = {cracky = 1, technic_machine = 1, technic_hv = 1},
groups = {cracky = 1, technic_machine = 1, technic_hv = 1, pickaxey = 3},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
on_receive_fields = forcefield_receive_fields,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
@ -339,7 +343,9 @@ minetest.register_node("technic:forcefield_emitter_on", {
"technic_forcefield_emitter_on.png"
},
groups = {cracky = 1, technic_machine = 1, technic_hv = 1,
not_in_creative_inventory=1},
not_in_creative_inventory=1, pickaxey = 3},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
drop = "technic:forcefield_emitter_off",
on_receive_fields = forcefield_receive_fields,
on_destruct = function(pos)
@ -366,7 +372,7 @@ minetest.register_node("technic:forcefield", {
drawtype = "glasslike",
groups = {not_in_creative_inventory=1},
paramtype = "light",
light_source = default.LIGHT_MAX,
light_source = minetest.LIGHT_MAX,
diggable = false,
drop = '',
tiles = {{

View File

@ -14,6 +14,8 @@ local power_supply = 100000 -- EUs
local fuel_type = "technic:uranium_fuel" -- The reactor burns this
local digiline_meltdown = technic.config:get_bool("enable_nuclear_reactor_digiline_selfdestruct")
local has_digilines = minetest.get_modpath("digilines")
local has_mcl = minetest.get_modpath("mcl_core")
local mat = technic.materials
local S = technic.getter
@ -24,20 +26,34 @@ local cable_entry = "^technic_cable_connection_overlay.png"
minetest.register_craft({
output = 'technic:hv_nuclear_reactor_core',
recipe = {
{'technic:carbon_plate', 'default:obsidian_glass', 'technic:carbon_plate'},
{'technic:carbon_plate', mat.obsidian_glass, 'technic:carbon_plate'},
{'technic:composite_plate', 'technic:machine_casing', 'technic:composite_plate'},
{'technic:stainless_steel_ingot', 'technic:hv_cable', 'technic:stainless_steel_ingot'},
}
})
local size = minetest.get_modpath("mcl_formspec") and "size[9,9]" or "size[8,9]"
local function make_reactor_formspec(meta)
local f = "size[8,9]"..
"label[0,0;"..S("Nuclear Reactor Rod Compartment").."]"..
"list[context;src;2,1;3,2;]"..
"list[current_player;main;0,5;8,4;]"..
"listring[]"..
"button[5.5,1.5;2,1;start;"..S("Start").."]"..
"checkbox[5.5,2.5;autostart;"..S("Automatic Start")..";"..meta:get_string("autostart").."]"
local f = size..
"label[0,0;"..S("Nuclear Reactor Rod Compartment").."]"..
"list[context;src;2,1;3,2;]"..
"listring[context;src]"..
"button[5.5,1.5;2,1;start;"..S("Start").."]"..
"checkbox[5.5,2.5;autostart;"..S("Automatic Start")..";"..meta:get_string("autostart").."]"
if has_mcl then
f = f..
mcl_formspec.get_itemslot_bg(2,1,3,2)..
-- player inventory
"list[current_player;main;0,4.5;9,3;9]"..
mcl_formspec.get_itemslot_bg(0,4.5,9,3)..
"list[current_player;main;0,7.74;9,1;]"..
mcl_formspec.get_itemslot_bg(0,7.74,9,1)..
"listring[current_player;main]"
else
f = f..
"list[current_player;main;0,5;8,4;]"..
"listring[current_player;main]"
end
if not has_digilines then
return f
end
@ -149,8 +165,8 @@ local function reactor_structure_badness(pos)
local c_blast_concrete = minetest.get_content_id("technic:blast_resistant_concrete")
local c_lead = minetest.get_content_id("technic:lead_block")
local c_steel = minetest.get_content_id("technic:stainless_steel_block")
local c_water_source = minetest.get_content_id("default:water_source")
local c_water_flowing = minetest.get_content_id("default:water_flowing")
local c_water_source = minetest.get_content_id(mat.water_source)
local c_water_flowing = minetest.get_content_id(mat.water_flowing)
local blast_layer, steel_layer, lead_layer, water_layer = 0, 0, 0, 0
@ -209,9 +225,21 @@ local function reactor_structure_badness(pos)
return (25 - water_layer) + (96 - lead_layer) + (216 - blast_layer)
end
local mcl_expl_info = {
drop_chance = 1.0,
max_blast_resistance = 10,
sound = true,
particles = true,
fire = true,
griefing = true,
grief_protected = true,
}
local function melt_down_reactor(pos)
minetest.log("action", "A reactor melted down at "..minetest.pos_to_string(pos))
if minetest.get_modpath("mcl_explosions") then
mcl_explosions.explode(pos, 30, mcl_expl_info)
end
minetest.set_node(pos, {name = "technic:corium_source"})
end
@ -417,9 +445,11 @@ minetest.register_node("technic:hv_nuclear_reactor_core", {
},
drawtype = "mesh",
mesh = "technic_reactor.obj",
groups = {cracky = 1, technic_machine = 1, technic_hv = 1},
groups = {cracky = 1, technic_machine = 1, technic_hv = 1, pickaxey = 3},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
legacy_facedir_simple = true,
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
paramtype = "light",
paramtype2 = "facedir",
stack_max = 1,
@ -460,9 +490,11 @@ minetest.register_node("technic:hv_nuclear_reactor_core_active", {
drawtype = "mesh",
mesh = "technic_reactor.obj",
groups = {cracky = 1, technic_machine = 1, technic_hv = 1, radioactive = 4,
not_in_creative_inventory = 1},
not_in_creative_inventory = 1, pickaxey = 3},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
legacy_facedir_simple = true,
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
drop = "technic:hv_nuclear_reactor_core",
light_source = 14,
paramtype = "light",

View File

@ -5,6 +5,7 @@ local has_digilines = minetest.get_modpath("digilines")
local has_mesecons = minetest.get_modpath("mesecons")
local has_vizlib = minetest.get_modpath("vizlib")
local has_jumpdrive = minetest.get_modpath("jumpdrive")
local has_mcl = minetest.get_modpath("mcl_formspec")
local quarry_max_depth = technic.config:get_int("quarry_max_depth")
local quarry_dig_particles = technic.config:get_bool("quarry_dig_particles")
@ -81,6 +82,9 @@ local function can_dig_node(pos, dig_pos, node_name, owner, digger)
if not def or not def.diggable or (def.can_dig and not def.can_dig(dig_pos, digger)) then
return false
end
if def._mcl_hardness == -1 then
return false
end
return not minetest.is_protected(dig_pos, owner)
end
@ -255,11 +259,11 @@ local function reset_quarry(meta)
meta:set_int("finished", 0)
end
local base_formspec = "size[8,9]"..
local size = minetest.get_modpath("mcl_formspec") and "size[9,10]" or "size[8,9]"
local base_formspec = size..
"label[0,0;"..S("@1 Quarry", S("HV")).."]"..
"list[context;cache;0,0.7;4,3;]"..
"list[current_player;main;0,5.2;8,4;]"..
"listring[]"..
"listring[context;cache]"..
"button[6,0.6;2,1;restart;"..S("Restart").."]"..
"field[4.3,2.1;2,1;size;"..S("Radius")..";${size}]"..
"field[6.3,2.1;2,1;max_depth;"..S("Max Depth")..";${max_depth}]"..
@ -272,6 +276,21 @@ if has_digilines then
"field[4.3,4.2;4,1;channel;"..S("Digiline Channel")..";${channel}]"
end
if has_mcl then
base_formspec = base_formspec..
mcl_formspec.get_itemslot_bg(0,0.7,4,3)..
-- player inventory
"list[current_player;main;0,5.5;9,3;9]"..
mcl_formspec.get_itemslot_bg(0,5.5,9,3)..
"list[current_player;main;0,8.74;9,1;]"..
mcl_formspec.get_itemslot_bg(0,8.74,9,1)..
"listring[current_player;main]"
else
base_formspec = base_formspec..
"list[current_player;main;0,5;8,4;]"..
"listring[current_player;main]"
end
local function update_formspec(meta)
local fs = base_formspec
local status = S("Digging not started")
@ -478,7 +497,9 @@ minetest.register_node("technic:quarry", {
"technic_carbon_steel_block.png^technic_cable_connection_overlay.png",
"technic_carbon_steel_block.png^technic_cable_connection_overlay.png"
},
groups = {cracky = 2, tubedevice = 1, technic_machine = 1, technic_hv = 1},
groups = {cracky = 2, tubedevice = 1, technic_machine = 1, technic_hv = 1, pickaxey = 2},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
connect_sides = {"front", "back", "left", "right"},
tube = {
connect_sides = {top = 1},

View File

@ -1,13 +1,14 @@
-- LV Alloy furnace
local S = technic.getter
local mat = technic.materials
-- FIXME: kpoppel: I'd like to introduce an induction heating element here...
minetest.register_craft({
output = 'technic:lv_alloy_furnace',
recipe = {
{'default:brick', 'default:brick', 'default:brick'},
{'default:brick', 'technic:machine_casing', 'default:brick'},
{'default:brick', 'technic:lv_cable', 'default:brick'},
{mat.brick, mat.brick, mat.brick},
{mat.brick, 'technic:machine_casing', mat.brick},
{mat.brick, 'technic:lv_cable', mat.brick},
}
})

View File

@ -1,13 +1,14 @@
local S = technic.getter
local mat = technic.materials
minetest.register_alias("lv_cable", "technic:lv_cable")
minetest.register_craft({
output = 'technic:lv_cable 6',
recipe = {
{'default:paper', 'default:paper', 'default:paper'},
{'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'},
{'default:paper', 'default:paper', 'default:paper'},
{mat.paper, mat.paper, mat.paper},
{mat.copper_ingot, mat.copper_ingot, mat.copper_ingot},
{mat.paper, mat.paper, mat.paper},
}
})

View File

@ -1,11 +1,13 @@
local S = technic.getter
local mat = technic.materials
minetest.register_alias("compressor", "technic:lv_compressor")
minetest.register_craft({
output = 'technic:lv_compressor',
recipe = {
{'default:stone', 'basic_materials:motor', 'default:stone'},
{mat.stone, 'basic_materials:motor', mat.stone},
{'mesecons:piston', 'technic:machine_casing', 'mesecons:piston'},
{'basic_materials:silver_wire', 'technic:lv_cable', 'basic_materials:silver_wire'},
},

View File

@ -1,14 +1,15 @@
-- LV Electric Furnace
-- This is a faster version of the stone furnace which runs on EUs
local S = technic.getter
local mat = technic.materials
-- FIXME: kpoppel I'd like to introduce an induction heating element here also
minetest.register_craft({
output = 'technic:electric_furnace',
output = 'technic:lv_electric_furnace',
recipe = {
{'default:cobble', 'default:cobble', 'default:cobble'},
{'default:cobble', 'technic:machine_casing', 'default:cobble'},
{'default:cobble', 'technic:lv_cable', 'default:cobble'},
{mat.cobble, mat.cobble, mat.cobble},
{mat.cobble, 'technic:machine_casing', mat.cobble},
{mat.cobble, 'technic:lv_cable', mat.cobble},
}
})

View File

@ -3,14 +3,16 @@
-- Inefficient and expensive in fuel (200EU per tick)
-- Also only allows for LV machinery to run.
local mat = technic.materials
minetest.register_alias("lv_generator", "technic:lv_generator")
minetest.register_craft({
output = 'technic:lv_generator',
recipe = {
{'default:stone', 'default:furnace', 'default:stone'},
{'default:stone', 'technic:machine_casing', 'default:stone'},
{'default:stone', 'technic:lv_cable', 'default:stone'},
{mat.stone, mat.furnace, mat.stone},
{mat.stone, 'technic:machine_casing', mat.stone},
{mat.stone, 'technic:lv_cable', mat.stone},
}
})

View File

@ -6,11 +6,12 @@
minetest.register_alias("geothermal", "technic:geothermal")
local S = technic.getter
local mat = technic.materials
minetest.register_craft({
output = 'technic:geothermal',
recipe = {
{'technic:granite', 'default:diamond', 'technic:granite'},
{'technic:granite', mat.diamond, 'technic:granite'},
{'basic_materials:copper_wire', 'technic:machine_casing', 'basic_materials:copper_wire'},
{'technic:granite', 'technic:lv_cable', 'technic:granite'},
},
@ -26,8 +27,8 @@ minetest.register_craftitem("technic:geothermal", {
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 == mat.water_source or node.name == mat.water_flowing then return 1 end
if node.name == mat.lava_source or node.name == mat.lava_flowing then return 2 end
return 0
end
@ -87,10 +88,12 @@ minetest.register_node("technic:geothermal", {
tiles = {"technic_geothermal_top.png", "technic_machine_bottom.png", "technic_geothermal_side.png",
"technic_geothermal_side.png", "technic_geothermal_side.png", "technic_geothermal_side.png"},
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
technic_machine=1, technic_lv=1},
technic_machine=1, technic_lv=1, axey=2, handy=1},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
paramtype2 = "facedir",
legacy_facedir_simple = true,
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("infotext", S("Geothermal @1 Generator", S("LV")))
@ -105,9 +108,11 @@ minetest.register_node("technic:geothermal_active", {
"technic_geothermal_side.png", "technic_geothermal_side.png", "technic_geothermal_side.png"},
paramtype2 = "facedir",
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
technic_machine=1, technic_lv=1, not_in_creative_inventory=1},
technic_machine=1, technic_lv=1, not_in_creative_inventory=1, axey=2, handy=1},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
legacy_facedir_simple = true,
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
drop = "technic:geothermal",
technic_run = run,
})

View File

@ -1,12 +1,13 @@
local S = technic.getter
local mat = technic.materials
minetest.register_alias("grinder", "technic:lv_grinder")
minetest.register_craft({
output = 'technic:lv_grinder',
recipe = {
{'default:desert_stone', 'default:diamond', 'default:desert_stone'},
{'default:desert_stone', 'technic:machine_casing', 'default:desert_stone'},
{'technic:granite', 'technic:lv_cable', 'technic:granite'},
{mat.desert_stone, mat.diamond, mat.desert_stone},
{mat.desert_stone, 'technic:machine_casing', mat.desert_stone},
{'technic:granite', 'technic:lv_cable', 'technic:granite'},
}
})

View File

@ -3,6 +3,7 @@
-- Illuminates a 7x7x3(H) volume below itself with light bright as the sun.
local S = technic.getter
local mat = technic.materials
local demand = 50
local desc = S("@1 Lamp", S("LV"))
@ -123,7 +124,9 @@ minetest.register_node("technic:lv_lamp", {
"technic_lv_lamp_side.png",
"technic_lv_lamp_side.png"
},
groups = {cracky = 2, technic_machine = 1, technic_lv = 1},
groups = {cracky = 2, technic_machine = 1, technic_lv = 1, pickaxey = 2},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
connect_sides = {"front", "back", "left", "right", "top"},
can_dig = technic.machine_can_dig,
technic_run = lamp_run,
@ -166,7 +169,9 @@ minetest.register_node("technic:lv_lamp_active", {
paramtype = "light",
light_source = 14,
drop = "technic:lv_lamp",
groups = {cracky = 2, technic_machine = 1, technic_lv = 1, not_in_creative_inventory = 1},
groups = {cracky = 2, technic_machine = 1, technic_lv = 1, not_in_creative_inventory = 1, pickaxey = 2},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
connect_sides = {"front", "back", "left", "right", "top"},
can_dig = technic.machine_can_dig,
technic_run = lamp_run,
@ -190,7 +195,7 @@ technic.register_machine("LV", "technic:lv_lamp_active", technic.receiver)
minetest.register_craft({
output = "technic:lv_lamp",
recipe = {
{"default:glass", "default:glass", "default:glass"},
{mat.glass, mat.glass, mat.glass},
{"technic:lv_led", "technic:lv_led", "technic:lv_led"},
{"mesecons_materials:glue", "technic:lv_cable", "mesecons_materials:glue"},
}

View File

@ -41,7 +41,9 @@ minetest.register_node("technic:lv_led", {
tiles = {"technic_lv_led.png"},
inventory_image = "technic_lv_led_inv.png",
sunlight_propagates = true,
groups = {cracky = 2, technic_machine = 1, technic_lv = 1},
groups = {cracky = 2, technic_machine = 1, technic_lv = 1, pickaxey = 2},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
connect_sides = {"front", "back", "left", "right", "top", "bottom"},
can_dig = technic.machine_can_dig,
technic_run = led_run,
@ -73,7 +75,9 @@ minetest.register_node("technic:lv_led_active", {
light_source = 9,
drop = "technic:lv_led",
sunlight_propagates = true,
groups = {cracky = 2, technic_machine = 1, technic_lv = 1, not_in_creative_inventory = 1},
groups = {cracky = 2, technic_machine = 1, technic_lv = 1, not_in_creative_inventory = 1, pickaxey = 2},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
connect_sides = {"front", "back", "left", "right", "top", "bottom"},
can_dig = technic.machine_can_dig,
technic_run = led_run,

View File

@ -2,14 +2,15 @@
-- The player can play music. But it is high ampage!
local S = technic.getter
local mat = technic.materials
minetest.register_alias("music_player", "technic:music_player")
minetest.register_craft({
output = 'technic:music_player',
recipe = {
{'technic:chromium_ingot', 'default:diamond', 'technic:chromium_ingot'},
{'default:diamond', 'technic:machine_casing', 'default:diamond'},
{'default:mossycobble', 'technic:lv_cable', 'default:mossycobble'},
{'technic:chromium_ingot', mat.diamond, 'technic:chromium_ingot'},
{mat.diamond, 'technic:machine_casing', mat.diamond},
{mat.mossycobble, 'technic:lv_cable', mat.mossycobble},
}
})
@ -93,9 +94,11 @@ minetest.register_node("technic:music_player", {
tiles = {"technic_music_player_top.png", "technic_machine_bottom.png", "technic_music_player_side.png",
"technic_music_player_side.png", "technic_music_player_side.png", "technic_music_player_side.png"},
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
technic_machine=1, technic_lv=1},
technic_machine=1, technic_lv=1, axey = 2, handy=1},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
connect_sides = {"bottom"},
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("infotext", S("@1 Music Player", S("LV")))

View File

@ -48,9 +48,11 @@ minetest.register_node("technic:solar_panel", {
tiles = {"technic_solar_panel_top.png", "technic_solar_panel_bottom.png", "technic_solar_panel_side.png",
"technic_solar_panel_side.png", "technic_solar_panel_side.png", "technic_solar_panel_side.png"},
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
technic_machine=1, technic_lv=1},
technic_machine=1, technic_lv=1, axey=2, handy=1},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
connect_sides = {"bottom"},
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
description = S("Small Solar @1 Generator", S("LV")),
active = false,
drawtype = "nodebox",

View File

@ -3,6 +3,7 @@
-- It is a little over half as good as the thermal generator.
local S = technic.getter
local mat = technic.materials
local cable_entry = "^technic_cable_connection_overlay.png"
@ -11,7 +12,7 @@ minetest.register_alias("water_mill", "technic:water_mill")
minetest.register_craft({
output = 'technic:water_mill',
recipe = {
{'technic:marble', 'default:diamond', 'technic:marble'},
{'technic:marble', mat.diamond, 'technic:marble'},
{'group:wood', 'technic:machine_casing', 'group:wood'},
{'technic:marble', 'technic:lv_cable', 'technic:marble'},
}
@ -19,8 +20,7 @@ minetest.register_craft({
local function check_node_around_mill(pos)
local node = minetest.get_node(pos)
if node.name == "default:water_flowing"
or node.name == "default:river_water_flowing" then
if node.name == mat.water_flowing or node.name == mat.river_water_flowing then
return node.param2 -- returns approx. water flow, if any
end
return false
@ -78,9 +78,11 @@ minetest.register_node("technic:water_mill", {
},
paramtype2 = "facedir",
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
technic_machine=1, technic_lv=1},
technic_machine=1, technic_lv=1, axey=2, handy=1},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
legacy_facedir_simple = true,
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("infotext", S("Hydro @1 Generator", S("LV")))
@ -96,9 +98,11 @@ minetest.register_node("technic:water_mill_active", {
"technic_water_mill_side.png", "technic_water_mill_side.png"},
paramtype2 = "facedir",
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
technic_machine=1, technic_lv=1, not_in_creative_inventory=1},
technic_machine=1, technic_lv=1, not_in_creative_inventory=1, axey=2, handy=1},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
legacy_facedir_simple = true,
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
drop = "technic:water_mill",
technic_run = run,
technic_disabled_machine_name = "technic:water_mill",

View File

@ -75,9 +75,11 @@ minetest.register_node("technic:hydro_turbine", {
},
paramtype2 = "facedir",
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
technic_machine=1, technic_mv=1},
technic_machine=1, technic_mv=1, axey=2, handy=1},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
legacy_facedir_simple = true,
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("infotext", S("Hydro @1 Generator", S("MV")))
@ -92,10 +94,12 @@ minetest.register_node("technic:hydro_turbine_active", {
"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},
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, axey=2, handy=1,
technic_machine=1, technic_mv=1, not_in_creative_inventory=1},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
legacy_facedir_simple = true,
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
drop = "technic:hydro_turbine",
technic_run = run,
technic_disabled_machine_name = "technic:hydro_turbine",

View File

@ -4,28 +4,47 @@
minetest.register_alias("tool_workshop", "technic:tool_workshop")
local S = technic.getter
local mat = technic.materials
local tube_entry = "^pipeworks_tube_connection_wooden.png"
minetest.register_craft({
output = 'technic:tool_workshop',
recipe = {
{'group:wood', 'default:diamond', 'group:wood'},
{'group:wood', mat.diamond, 'group:wood'},
{'mesecons_pistons:piston_sticky_off', 'technic:machine_casing', 'technic:carbon_cloth'},
{'default:obsidian', 'technic:mv_cable', 'default:obsidian'},
{mat.obsidian, 'technic:mv_cable', mat.obsidian},
}
})
local workshop_demand = {5000, 3500, 2000}
local size = minetest.get_modpath("mcl_formspec") and "size[9,9;]" or "size[8,9;]"
local workshop_formspec =
"size[8,9;]"..
size..
"list[context;src;3,1;1,1;]"..
"label[0,0;"..S("@1 Tool Workshop", S("MV")).."]"..
"list[context;upgrade1;1,3;1,1;]"..
"list[context;upgrade2;2,3;1,1;]"..
"label[1,4;"..S("Upgrade Slots").."]"..
"list[current_player;main;0,5;8,4;]"..
"label[1,4;"..S("Upgrade Slots").."]"
if minetest.get_modpath("mcl_formspec") then
workshop_formspec = workshop_formspec..
mcl_formspec.get_itemslot_bg(3,1,1,1)..
mcl_formspec.get_itemslot_bg(1,3,1,1)..
mcl_formspec.get_itemslot_bg(2,3,1,1)..
-- player inventory
"list[current_player;main;0,4.5;9,3;9]"..
mcl_formspec.get_itemslot_bg(0,4.5,9,3)..
"list[current_player;main;0,7.74;9,1;]"..
mcl_formspec.get_itemslot_bg(0,7.74,9,1)
else
workshop_formspec = workshop_formspec..
"list[current_player;main;0,5;8,4;]"
end
-- listrings
workshop_formspec = workshop_formspec..
"listring[current_player;main]"..
"listring[context;src]"..
"listring[current_player;main]"..
@ -94,9 +113,11 @@ minetest.register_node("technic:tool_workshop", {
"technic_workshop_side.png"
},
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
technic_machine=1, technic_mv=1, tubedevice=1, tubedevice_receiver=1},
technic_machine=1, technic_mv=1, tubedevice=1, tubedevice_receiver=1, axey=2, handy=1},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
connect_sides = {"bottom", "back", "left", "right"},
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("infotext", S("@1 Tool Workshop", S("MV")))

View File

@ -24,8 +24,10 @@ minetest.register_node("technic:wind_mill_frame", {
drawtype = "glasslike_framed",
tiles = {"technic_carbon_steel_block.png", "default_glass.png"},
sunlight_propagates = true,
groups = {cracky=3},
sounds = default.node_sound_stone_defaults(),
groups = {cracky=3, pickaxey=1},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
sounds = technic.sounds.node_sound_stone_defaults(),
paramtype = "light",
})
@ -70,9 +72,11 @@ minetest.register_node("technic:wind_mill", {
description = S("Wind @1 Generator", S("MV")),
tiles = {"technic_carbon_steel_block.png"},
paramtype2 = "facedir",
groups = {cracky=1, technic_machine=1, technic_mv=1},
groups = {cracky=1, technic_machine=1, technic_mv=1, pickaxey=2},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
connect_sides = {"top", "bottom", "back", "left", "right"},
sounds = default.node_sound_stone_defaults(),
sounds = technic.sounds.node_sound_stone_defaults(),
drawtype = "nodebox",
paramtype = "light",
node_box = {

View File

@ -70,8 +70,10 @@ minetest.register_node("technic:admin_anchor", {
drawtype = "normal",
tiles = {"technic_admin_anchor.png"},
is_ground_content = true,
groups = {cracky=3, not_in_creative_inventory=1},
sounds = default.node_sound_stone_defaults(),
groups = {cracky=3, not_in_creative_inventory=1, pickaxey=1},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
sounds = technic.sounds.node_sound_stone_defaults(),
after_place_node = function (pos, placer)
local meta = minetest.get_meta(pos)
if placer and placer:is_player() then

View File

@ -2,25 +2,44 @@
-- Fuel driven alloy furnace. This uses no EUs:
local S = technic.getter
local mat = technic.materials
minetest.register_craft({
output = 'technic:coal_alloy_furnace',
recipe = {
{'default:brick', 'default:brick', 'default:brick'},
{'default:brick', '', 'default:brick'},
{'default:brick', 'default:brick', 'default:brick'},
{mat.brick, mat.brick, mat.brick},
{mat.brick, '', mat.brick},
{mat.brick, mat.brick, mat.brick},
}
})
local machine_name = S("Fuel-Fired Alloy Furnace")
local size = minetest.get_modpath("mcl_formspec") and "size[9,9]" or "size[8,9]"
local formspec =
"size[8,9]"..
size..
"label[0,0;"..machine_name.."]"..
"image[2,2;1,1;default_furnace_fire_bg.png]"..
"list[context;fuel;2,3;1,1;]"..
"list[context;src;2,1;2,1;]"..
"list[context;dst;5,1;2,2;]"..
"list[current_player;main;0,5;8,4;]"..
"list[context;dst;5,1;2,2;]"
if minetest.get_modpath("mcl_formspec") then
formspec = formspec..
mcl_formspec.get_itemslot_bg(2,3,1,1)..
mcl_formspec.get_itemslot_bg(2,1,2,1)..
mcl_formspec.get_itemslot_bg(5,1,2,2)..
-- player inventory
"list[current_player;main;0,4.5;9,3;9]"..
mcl_formspec.get_itemslot_bg(0,4.5,9,3)..
"list[current_player;main;0,7.74;9,1;]"..
mcl_formspec.get_itemslot_bg(0,7.74,9,1)
else
formspec = formspec..
"list[current_player;main;0,5;8,4;]"
end
-- listrings
formspec = formspec..
"listring[context;dst]"..
"listring[current_player;main]"..
"listring[context;src]"..
@ -34,9 +53,11 @@ minetest.register_node("technic:coal_alloy_furnace", {
"technic_coal_alloy_furnace_side.png", "technic_coal_alloy_furnace_side.png",
"technic_coal_alloy_furnace_side.png", "technic_coal_alloy_furnace_front.png"},
paramtype2 = "facedir",
groups = {cracky=2},
groups = {cracky=2, pickaxey=2},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
legacy_facedir_simple = true,
sounds = default.node_sound_stone_defaults(),
sounds = technic.sounds.node_sound_stone_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", formspec)
@ -60,9 +81,11 @@ minetest.register_node("technic:coal_alloy_furnace_active", {
paramtype2 = "facedir",
light_source = 8,
drop = "technic:coal_alloy_furnace",
groups = {cracky=2, not_in_creative_inventory=1},
groups = {cracky=2, not_in_creative_inventory=1, pickaxey=2},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
legacy_facedir_simple = true,
sounds = default.node_sound_stone_defaults(),
sounds = technic.sounds.node_sound_stone_defaults(),
can_dig = technic.machine_can_dig,
allow_metadata_inventory_put = technic.machine_inventory_put,
allow_metadata_inventory_take = technic.machine_inventory_take,
@ -123,14 +146,26 @@ minetest.register_abm({
meta:set_string("infotext", S("@1 Active", machine_name).." ("..percent.."%)")
technic.swap_node(pos, "technic:coal_alloy_furnace_active")
meta:set_string("formspec",
"size[8,9]"..
size..
"label[0,0;"..machine_name.."]"..
"image[2,2;1,1;default_furnace_fire_bg.png^[lowpart:"..
(100 - percent)..":default_furnace_fire_fg.png]"..
"list[context;fuel;2,3;1,1;]"..
"list[context;src;2,1;2,1;]"..
"list[context;dst;5,1;2,2;]"..
"list[current_player;main;0,5;8,4;]"..
(minetest.get_modpath("mcl_formspec") and
mcl_formspec.get_itemslot_bg(2,3,1,1)..
mcl_formspec.get_itemslot_bg(2,1,2,1)..
mcl_formspec.get_itemslot_bg(5,1,2,2)..
-- player inventory
"list[current_player;main;0,4.5;9,3;9]"..
mcl_formspec.get_itemslot_bg(0,4.5,9,3)..
"list[current_player;main;0,7.74;9,1;]"..
mcl_formspec.get_itemslot_bg(0,7.74,9,1)
or "list[current_player;main;0,5;8,4;]")..
-- listrings
"listring[context;dst]"..
"listring[current_player;main]"..
"listring[context;src]"..

View File

@ -1,5 +1,7 @@
local S = technic.getter
if minetest.registered_nodes["default:furnace"].description == "Furnace" then
local default_furnace = minetest.registered_nodes["default:furnace"]
if default_furnace and default_furnace.description == "Furnace" then
minetest.override_item("default:furnace", { description = S("Fuel-Fired Furnace") })
end

View File

@ -142,21 +142,43 @@ local function make_constructor(mark, length)
"technic_constructor_front_off.png"},
paramtype2 = "facedir",
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
mesecon = 2, technic_constructor = 1},
mesecon = 2, technic_constructor = 1, axey=2, handy=1},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
mesecons = {effector = {action_on = make_on(mark, length)}},
sounds = default.node_sound_stone_defaults(),
sounds = technic.sounds.node_sound_stone_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local formspec = "size[8,9;]"..
"label[0,0;"..S("Constructor Mk@1", mark).."]"..
"list[current_player;main;0,5;8,4;]"..
"listring[current_player;main]"
local size = minetest.get_modpath("mcl_formspec") and "size[9,9]" or "size[8,9]"
local formspec = size..
"label[0,0;"..S("Constructor Mk@1", mark).."]"
for i = 1, length do
formspec = formspec..
"label[5,"..(i - 1)..";"..S("Slot @1", i).."]"..
"list[context;slot"..i..";6,"..(i - 1)..";1,1;]"..
"listring[context;slot"..i.."]"
"list[context;slot"..i..";6,"..(i - 1)..";1,1;]"
end
if minetest.get_modpath("mcl_formspec") then
for i = 1, length do
formspec = formspec..
mcl_formspec.get_itemslot_bg(6,i-1,1,1)
end
formspec = formspec..
-- player inventory
"list[current_player;main;0,4.5;9,3;9]"..
mcl_formspec.get_itemslot_bg(0,4.5,9,3)..
"list[current_player;main;0,7.74;9,1;]"..
mcl_formspec.get_itemslot_bg(0,7.74,9,1)
else
formspec = formspec..
"list[current_player;main;0,5;8,4;]"
end
-- listrings
for i = 1, length do
formspec = formspec..
"listring[current_player;main]"..
"listring[context;slot"..i.."]"
end
meta:set_string("formspec", formspec)
meta:set_string("infotext", S("Constructor Mk@1", mark))
local inv = meta:get_inventory()
@ -199,9 +221,11 @@ 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, technic_constructor=1},
mesecon=2, not_in_creative_inventory=1, technic_constructor=1, axey=2, handy=1},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
mesecons= {effector = {action_off = make_off(mark)}},
sounds = default.node_sound_stone_defaults(),
sounds = technic.sounds.node_sound_stone_defaults(),
allow_metadata_inventory_put = allow_inventory_put,
allow_metadata_inventory_take = technic.machine_inventory_take,
allow_metadata_inventory_move = technic.machine_inventory_move,

View File

@ -5,17 +5,34 @@ local fs_helpers = pipeworks.fs_helpers
local tube_entry = "^pipeworks_tube_connection_metallic.png"
local mat = technic.materials
local param2_to_under = {
[0] = {x= 0,y=-1,z= 0}, [1] = {x= 0,y= 0,z=-1},
[2] = {x= 0,y= 0,z= 1}, [3] = {x=-1,y= 0,z= 0},
[4] = {x= 1,y= 0,z= 0}, [5] = {x= 0,y= 1,z= 0}
}
local base_formspec = "size[8,9;]"..
local size = minetest.get_modpath("mcl_formspec") and "size[9,10]" or "size[8,9]"
local base_formspec = size..
"label[0,0;"..S("Self-Contained Injector").."]"..
"list[context;main;0,2;8,2;]"..
"listring[context;main]"
if minetest.get_modpath("mcl_formspec") then
base_formspec = base_formspec..
mcl_formspec.get_itemslot_bg(0,2,8,2)..
-- player inventory
"list[current_player;main;0,5.5;9,3;9]"..
mcl_formspec.get_itemslot_bg(0,5.5,9,3)..
"list[current_player;main;0,8.74;9,1;]"..
mcl_formspec.get_itemslot_bg(0,8.74,9,1)..
"listring[current_player;main]"
else
base_formspec = base_formspec..
"list[current_player;main;0,5;8,4;]"..
"listring[]"
"listring[current_player;main]"
end
local function set_injector_formspec(pos)
local meta = minetest.get_meta(pos)
@ -53,7 +70,9 @@ minetest.register_node("technic:injector", {
"technic_injector_side.png"
},
paramtype2 = "facedir",
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, tubedevice=1, tubedevice_receiver=1},
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, tubedevice=1, tubedevice_receiver=1, axey=2, handy=1},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
tube = {
can_insert = function(pos, node, stack, direction)
local meta = minetest.get_meta(pos)
@ -67,7 +86,7 @@ minetest.register_node("technic:injector", {
end,
connect_sides = {left=1, right=1, back=1, top=1, bottom=1},
},
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("infotext", S("Self-Contained Injector"))
@ -140,7 +159,7 @@ minetest.register_craft({
output = "technic:injector 1",
recipe = {
{"", "technic:control_logic_unit",""},
{"", "default:chest",""},
{"", mat.chest,""},
{"", "pipeworks:tube_1",""},
}
})

View File

@ -3,6 +3,7 @@
-- similarly to the old "slave" switching stations.
local S = technic.getter
local mat = technic.materials
local cable_entry = "^technic_cable_connection_overlay.png"
@ -43,7 +44,7 @@ minetest.register_craft({
output = "technic:power_monitor",
recipe = {
{"", "", ""},
{"", "technic:machine_casing", "default:copper_ingot"},
{"", "technic:machine_casing", mat.copper_ingot},
{"technic:lv_cable", "technic:lv_cable", "technic:lv_cable"}
}
})
@ -59,9 +60,11 @@ minetest.register_node("technic:power_monitor",{
"technic_power_monitor_front.png"
},
paramtype2 = "facedir",
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_all_tiers=1},
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_all_tiers=1, axey=2, handy=1},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
connect_sides = {"bottom", "back"},
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("infotext", S("Power Monitor"))

View File

@ -1,5 +1,6 @@
local S = technic.getter
local mat = technic.materials
technic.register_recipe_type("alloy", {
description = S("Alloying"),
@ -13,29 +14,30 @@ function technic.register_alloy_recipe(data)
end
local recipes = {
{"technic:copper_dust 7", "technic:tin_dust", "default:bronze_ingot 8", 12},
{"default:copper_ingot 7", "default:tin_ingot", "default:bronze_ingot 8", 12},
{"technic:copper_dust 7", "technic:tin_dust", mat.bronze_ingot.." 8", 12},
{mat.copper_ingot.." 7", mat.tin_ingot, mat.bronze_ingot.." 8", 12},
{"technic:wrought_iron_dust 2", "technic:coal_dust", "technic:carbon_steel_ingot 2", 6},
{"technic:wrought_iron_ingot 2", "technic:coal_dust", "technic:carbon_steel_ingot 2", 6},
{"technic:carbon_steel_dust 4", "technic:chromium_dust", "technic:stainless_steel_ingot 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", "basic_materials: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"},
{mat.copper_ingot.." 2", "technic:zinc_ingot", "basic_materials:brass_ingot 3"},
{mat.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 …"
{"technic:raw_latex 4", "technic:coal_dust 2", "technic:rubber 6", 2},
{"default:ice", "bucket:bucket_empty", "bucket:bucket_water", 1 },
{"default:obsidian", "bucket:bucket_empty", "bucket:bucket_lava", 1 },
{"technic:raw_latex 2", mat.coal_lump, "technic:rubber 2", 2},
{mat.ice, mat.bucket_empty, mat.bucket_water, 1 },
{mat.obsidian, mat.bucket_empty, mat.bucket_lava, 1 },
}
if minetest.get_modpath("ethereal") then
table.insert(recipes, {"default:clay", "dye:red", "bakedclay:red"})
table.insert(recipes, {"default:clay", "dye:orange", "bakedclay:orange"})
table.insert(recipes, {"default:clay", "dye:grey", "bakedclay:grey"})
table.insert(recipes, {mat.clay, mat.dye_red, "bakedclay:red"})
table.insert(recipes, {mat.clay, mat.dye_orange, "bakedclay:orange"})
table.insert(recipes, {mat.clay, mat.dye_grey, "bakedclay:grey"})
end
if minetest.get_modpath("digilines") then

View File

@ -4,15 +4,16 @@ local digilines_path = minetest.get_modpath("digilines")
local S = technic.getter
local tube_entry = "^pipeworks_tube_connection_metallic.png"
local cable_entry = "^technic_cable_connection_overlay.png"
local mat = technic.materials
-- Battery recipes:
-- Tin-copper recipe:
minetest.register_craft({
output = "technic:battery",
recipe = {
{"group:wood", "default:copper_ingot", "group:wood"},
{"group:wood", "default:tin_ingot", "group:wood"},
{"group:wood", "default:copper_ingot", "group:wood"},
{"group:wood", mat.copper_ingot, "group:wood"},
{"group:wood", mat.tin_ingot, "group:wood"},
{"group:wood", mat.copper_ingot, "group:wood"},
}
})
-- Sulfur-lead-water recipes:
@ -22,11 +23,11 @@ minetest.register_craft({
output = "technic:battery",
recipe = {
{"group:wood", "technic:sulfur_lump", "group:wood"},
{"technic:lead_ingot", "bucket:bucket_water", "technic:lead_ingot"},
{"technic:lead_ingot", mat.bucket_water, "technic:lead_ingot"},
{"group:wood", "technic:sulfur_lump", "group:wood"},
},
replacements = {
{"bucket:bucket_water", "bucket:bucket_empty"}
{mat.bucket_water, mat.bucket_empty}
}
})
-- With oil extract:
@ -44,11 +45,11 @@ minetest.register_craft({
output = "technic:battery",
recipe = {
{"group:wood", "technic:sulfur_dust", "group:wood"},
{"technic:lead_ingot", "bucket:bucket_water", "technic:lead_ingot"},
{"technic:lead_ingot", mat.bucket_water, "technic:lead_ingot"},
{"group:wood", "technic:sulfur_dust", "group:wood"},
},
replacements = {
{"bucket:bucket_water", "bucket:bucket_empty"}
{mat.bucket_water, mat.bucket_empty}
}
})
-- With oil extract:
@ -113,8 +114,9 @@ function technic.register_battery_box(nodename, data)
local tier = def.tier
local ltier = string.lower(tier)
local size = minetest.get_modpath("mcl_formspec") and "size[9,9]" or "size[8,9]"
local formspec =
"size[8,9]"..
size..
"image[1,1;1,2;technic_power_meter_bg.png]"..
"list[context;src;3,1;1,1;]"..
"image[4,1;1,1;technic_battery_reload.png]"..
@ -123,20 +125,45 @@ function technic.register_battery_box(nodename, data)
"label[3,0;"..S("Charge").."]"..
"label[5,0;"..S("Discharge").."]"..
"label[1,3;"..S("Power level").."]"..
"list[current_player;main;0,5;8,4;]"..
"listring[context;dst]"..
"listring[current_player;main]"..
"listring[context;src]"..
"listring[current_player;main]"..
(def.upgrade and
"list[context;upgrade1;3.5,3;1,1;]"..
"list[context;upgrade2;4.5,3;1,1;]"..
"label[3.5,4;"..S("Upgrade Slots").."]"..
"listring[context;upgrade1]"..
"listring[current_player;main]"..
"listring[context;upgrade2]"..
"listring[current_player;main]"
or "")
"label[3.5,4;"..S("Upgrade Slots").."]"
or "")
if minetest.get_modpath("mcl_formspec") then
formspec = formspec..
mcl_formspec.get_itemslot_bg(3,1,1,1)..
mcl_formspec.get_itemslot_bg(5,1,1,1)..
-- player inventory
"list[current_player;main;0,4.5;9,3;9]"..
mcl_formspec.get_itemslot_bg(0,4.5,9,3)..
"list[current_player;main;0,7.74;9,1;]"..
mcl_formspec.get_itemslot_bg(0,7.74,9,1)..
-- upgrade
(def.upgrade and
mcl_formspec.get_itemslot_bg(3.5,3,1,1)..
mcl_formspec.get_itemslot_bg(4.5,3,1,1)
or "")
else
formspec = formspec..
"list[current_player;main;0,5;8,4;]"
end
-- listrings
formspec = formspec..
"listring[context;dst]"..
"listring[current_player;main]"..
"listring[context;src]"..
"listring[current_player;main]"..
(def.upgrade and
"listring[context;upgrade1]"..
"listring[current_player;main]"..
"listring[context;upgrade2]"..
"listring[current_player;main]"
or "")
--
-- Generate formspec with power meter
@ -306,7 +333,7 @@ function technic.register_battery_box(nodename, data)
for i = 0, 8 do
local groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
technic_machine=1, ["technic_"..ltier]=1}
technic_machine=1, ["technic_"..ltier]=1, axey=2, handy=1}
if i ~= 0 then
groups.not_in_creative_inventory = 1
end
@ -336,10 +363,12 @@ function technic.register_battery_box(nodename, data)
side_tex,
front_tex},
groups = groups,
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
connect_sides = {"bottom"},
tube = def.tube and tube or nil,
paramtype2 = "facedir",
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
drop = "technic:"..ltier.."_battery_box0",
on_construct = function(pos)
local meta = minetest.get_meta(pos)

View File

@ -51,10 +51,13 @@ local function cable_defaults(nodename, data)
snappy = 2,
choppy = 2,
oddly_breakable_by_hand = 2,
swordy = 1,
axey = 1,
handy = 1,
["technic_"..ltier.."_cable"] = 1
}
def.drop = def.drop or nodename
def.sounds = def.sounds or default.node_sound_wood_defaults()
def.sounds = def.sounds or technic.sounds.node_sound_wood_defaults()
def.on_construct = def.on_construct or function(pos) place_network_node(pos, {tier}, nodename) end
def.on_destruct = def.on_destruct or function(pos) remove_network_node(pos, {tier}, nodename) end
def.paramtype = def.paramtype or "light"
@ -123,6 +126,8 @@ function technic.register_cable_plate(nodename, data)
end
else
def.groups.not_in_creative_inventory = 1
def._mcl_blast_resistance = 1
def._mcl_hardness = 0.8
end
def.on_rotate = function(pos, node, user, mode, new_param2)
-- mode 1 is left-click, mode 2 is right-click
@ -142,6 +147,8 @@ function technic.register_cable(nodename, data)
def.tiles = def.tiles or {texture_basename..".png"}
def.inventory_image = def.inventory_image or def.inventory_image ~= false and texture_basename.."_wield.png" or nil
def.wield_image = def.wield_image or def.wield_image ~= false and texture_basename.."_wield.png" or nil
def._mcl_blast_resistance = 1
def._mcl_hardness = 0.8
minetest.register_node(nodename, def)
cable_tier[nodename] = def.tier
end

View File

@ -1,4 +1,5 @@
local S = technic.getter
local mat = technic.materials
technic.register_recipe_type("separating", {
description = S("Separating"),
@ -15,8 +16,8 @@ local recipes = {
{ "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 4" },
{ "technic:chernobylite_dust", mat.sand, "technic:uranium3_dust" },
{ mat.dirt.." 4", mat.sand, mat.gravel, mat.clay_lump.." 4" },
}
local function uranium_dust(p)
@ -28,19 +29,19 @@ end
if minetest.get_modpath("bushes_classic") then
for _, berry in ipairs({ "blackberry", "blueberry", "gooseberry", "raspberry", "strawberry" }) do
table.insert(recipes, { "bushes:"..berry.."_bush", "default:stick 20", "bushes:"..berry.." 4" })
table.insert(recipes, { "bushes:"..berry.."_bush", mat.stick.." 20", "bushes:"..berry.." 4" })
end
end
if minetest.get_modpath("farming") then
if minetest.get_modpath("farming") or minetest.get_modpath("mcl_farming") then
if minetest.get_modpath("cottages") then
-- work as a mechanized threshing floor
table.insert(recipes, { "farming:wheat", "farming:seed_wheat", "cottages:straw_mat" })
table.insert(recipes, { "farming:barley", "farming:seed_barley", "cottages:straw_mat" })
else
-- work in a less fancy and less efficient manner
table.insert(recipes, { "farming:wheat 4", "farming:seed_wheat 3", "default:dry_shrub 1" })
table.insert(recipes, { "farming:barley 4", "farming:seed_barley 3", "default:dry_shrub 1" })
table.insert(recipes, { mat.wheat.." 4", mat.seed_wheat.." 3", mat.dry_shrub })
table.insert(recipes, { "farming:barley 4", "farming:seed_barley 3", mat.dry_shrub })
end
end

View File

@ -1,5 +1,6 @@
local S = technic.getter
local mat = technic.materials
-- handles the machine upgrades every tick
function technic.handle_machine_upgrades(meta)
@ -35,7 +36,7 @@ end
-- handles the machine upgrades when set or removed
local function on_machine_upgrade(meta, stack)
local stack_name = stack:get_name()
if stack_name == "default:chest" then
if stack_name == mat.chest then
meta:set_int("public", 1)
return 1
elseif stack_name ~= "technic:control_logic_unit"
@ -47,7 +48,7 @@ end
-- something is about to be removed
local function on_machine_downgrade(meta, stack, list)
if stack:get_name() == "default:chest" then
if stack:get_name() == mat.chest then
local inv = meta:get_inventory()
local upg1, upg2 = inv:get_stack("upgrade1", 1), inv:get_stack("upgrade2", 1)

View File

@ -1,5 +1,7 @@
local S = technic.getter
local mat = technic.materials
local has_mcl = minetest.get_modpath("mcl_core")
technic.register_recipe_type("compressing", {
description = S("Compressing"),
@ -12,44 +14,46 @@ function technic.register_compressor_recipe(data)
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_sandstone", "default:desert_stone"},
{mat.snowblock, mat.ice},
{mat.sand.." 2", mat.sandstone},
{mat.desert_sand.." 2", mat.desert_sandstone},
{mat.silver_sand.." 2", mat.silver_sandstone},
{mat.desert_sandstone, mat.desert_stone},
{"technic:mixed_metal_ingot", "technic:composite_plate"},
{"default:copper_ingot 5", "technic:copper_plate"},
{mat.copper_ingot.." 5", "technic:copper_plate"},
{"technic:coal_dust 4", "technic:graphite"},
{"technic:carbon_cloth", "technic:carbon_plate"},
{"technic:uranium35_ingot 5", "technic:uranium_fuel"},
{"technic:graphite 25", "default:diamond"}
{"technic:graphite 25", mat.diamond}
}
if minetest.get_modpath("ethereal") then
-- the density of charcoal is ~1/10 of coal, otherwise it's pure carbon
table.insert(recipes, {"ethereal:charcoal_lump 10", "default:coal_lump 1"})
table.insert(recipes, {"ethereal:charcoal_lump 10", mat.coal_lump.." 1"})
end
-- defuse the default sandstone recipe, since we have the compressor to take over in a more realistic manner
minetest.clear_craft({
recipe = {
{"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"},
},
})
if not has_mcl then
minetest.clear_craft({
recipe = {
{"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"},
},
})
end
for _, data in pairs(recipes) do
technic.register_compressor_recipe({input = {data[1]}, output = data[2]})

View File

@ -1,5 +1,6 @@
local S = technic.getter
local mat = technic.materials
technic.register_recipe_type("freezing", {
description = S("Freezing"),
@ -12,13 +13,13 @@ function technic.register_freezer_recipe(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" } }
{mat.bucket_water, { mat.ice, mat.bucket_empty } },
{mat.bucket_river_water, { mat.ice, mat.bucket_empty } },
{mat.dirt, mat.dirt_with_snow },
{mat.bucket_lava, { mat.obsidian, mat.bucket_empty } }
}
for _, data in pairs(recipes) do
technic.register_freezer_recipe({input = {data[1]}, output = data[2]})
technic.register_freezer_recipe({input = {data[1]}, output = data[2], hidden = true})
end

View File

@ -20,13 +20,41 @@ local tube = {
connect_sides = {left=1, right=1, back=1, top=1, bottom=1},
}
local size = minetest.get_modpath("mcl_formspec") and "size[9,10]" or "size[8,9]"
local function update_generator_formspec(meta, desc, percent, form_buttons)
local generator_formspec = size..
"label[0, 0;"..desc.."]"..
"list[context;src;3,1;1,1;]"..
"listring[context;src]"..
"image[4,1;1,1;default_furnace_fire_bg.png^[lowpart:"..
(percent)..":default_furnace_fire_fg.png]"..
form_buttons
if minetest.get_modpath("mcl_formspec") then
generator_formspec = generator_formspec..
mcl_formspec.get_itemslot_bg(3,1,1,1)..
-- player inventory
"list[current_player;main;0,5.5;9,3;9]"..
mcl_formspec.get_itemslot_bg(0,5.5,9,3)..
"list[current_player;main;0,8.74;9,1;]"..
mcl_formspec.get_itemslot_bg(0,8.74,9,1)..
"listring[current_player;main]"
else
generator_formspec = generator_formspec..
"list[current_player;main;0, 5;8, 4;]"..
"listring[current_player;main]"
end
return meta:set_string("formspec", generator_formspec)
end
function technic.register_generator(data)
local tier = data.tier
local ltier = string.lower(tier)
local groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
technic_machine=1, ["technic_"..ltier]=1}
technic_machine=1, ["technic_"..ltier]=1, axey=2, handy=1}
if data.tube then
groups.tubedevice = 1
groups.tubedevice_receiver = 1
@ -34,14 +62,6 @@ function technic.register_generator(data)
local active_groups = {not_in_creative_inventory = 1}
for k, v in pairs(groups) do active_groups[k] = v end
local generator_formspec =
"size[8,9;]"..
"label[0,0;"..S("Fuel-Fired @1 Generator", S(tier)).."]"..
"list[context;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 @1 Generator", S(tier))
local run = function(pos, node)
@ -96,16 +116,7 @@ function technic.register_generator(data)
}
)..pipeworks.button_label
end
meta:set_string("formspec",
"size[8, 9]"..
"label[0, 0;"..desc.."]"..
"list[context;src;3, 1;1, 1;]"..
"image[4, 1;1, 1;default_furnace_fire_bg.png^[lowpart:"..
(percent)..":default_furnace_fire_fg.png]"..
"list[current_player;main;0, 5;8, 4;]"..
"listring[]"..
form_buttons
)
update_generator_formspec(meta, desc, percent, form_buttons)
end
local tentry = tube_entry
@ -123,9 +134,11 @@ function technic.register_generator(data)
},
paramtype2 = "facedir",
groups = groups,
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
connect_sides = {"bottom", "back", "left", "right"},
legacy_facedir_simple = true,
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
tube = data.tube and tube or nil,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
@ -146,7 +159,7 @@ function technic.register_generator(data)
}
)..pipeworks.button_label
end
meta:set_string("formspec", generator_formspec..form_buttons)
update_generator_formspec(meta, desc, 0, form_buttons)
local inv = meta:get_inventory()
inv:set_size("src", 1)
end,
@ -174,7 +187,10 @@ function technic.register_generator(data)
}
)..pipeworks.button_label
end
meta:set_string("formspec", generator_formspec..form_buttons)
local burn_totaltime = meta:get_int("burn_totaltime") or 0
local burn_time = meta:get_int("burn_time")
local percent = math.floor(burn_time / burn_totaltime * 100)
update_generator_formspec(meta, desc, percent, form_buttons)
end,
})
@ -190,9 +206,11 @@ function technic.register_generator(data)
},
paramtype2 = "facedir",
groups = active_groups,
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
connect_sides = {"bottom"},
legacy_facedir_simple = true,
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
tube = data.tube and tube or nil,
drop = "technic:"..ltier.."_generator",
can_dig = technic.machine_can_dig,
@ -239,16 +257,7 @@ function technic.register_generator(data)
}
)..pipeworks.button_label
end
meta:set_string("formspec",
"size[8, 9]"..
"label[0, 0;"..desc.."]"..
"list[context;src;3, 1;1, 1;]"..
"image[4, 1;1, 1;default_furnace_fire_bg.png^[lowpart:"..
(percent)..":default_furnace_fire_fg.png]"..
"list[current_player;main;0, 5;8, 4;]"..
"listring[]"..
form_buttons
)
update_generator_formspec(meta, desc, percent, form_buttons)
return true
end,
on_receive_fields = function(pos, formname, fields, sender)
@ -273,16 +282,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",
"size[8, 9]"..
"label[0, 0;"..desc.."]"..
"list[context;src;3, 1;1, 1;]"..
"image[4, 1;1, 1;default_furnace_fire_bg.png^[lowpart:"..
(percent)..":default_furnace_fire_fg.png]"..
"list[current_player;main;0, 5;8, 4;]"..
"listring[]"..
form_buttons
)
update_generator_formspec(meta, desc, percent, form_buttons)
end,
})

View File

@ -1,5 +1,6 @@
local S = technic.getter
local mat = technic.materials
technic.register_recipe_type("grinding", {
description = S("Grinding"),
@ -13,30 +14,30 @@ end
local recipes = {
-- Dusts
{"default:coal_lump", "technic:coal_dust 2"},
{"default:copper_lump", "technic:copper_dust 2"},
{"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"},
{mat.coal_lump, "technic:coal_dust 2"},
{mat.copper_lump, "technic:copper_dust 2"},
{mat.desert_stone, mat.desert_sand},
{mat.gold_lump, "technic:gold_dust 2"},
{mat.iron_lump, "technic:wrought_iron_dust 2"},
{mat.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"},
{"technic:lead_lump", "technic:lead_dust 2"},
{"technic:sulfur_lump", "technic:sulfur_dust 2"},
{"default:stone", "technic:stone_dust"},
{"default:sand", "technic:stone_dust"},
{"default:desert_sand", "technic:stone_dust"},
{"default:silver_sand", "technic:stone_dust"},
{mat.stone, "technic:stone_dust"},
{mat.sand, "technic:stone_dust"},
{mat.desert_sand, "technic:stone_dust"},
{mat.silver_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: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
{mat.cobble, mat.gravel},
{mat.gravel, mat.sand},
{mat.sandstone, mat.sand.." 2"}, -- reverse recipe can be found in the compressor
{mat.desert_sandstone, mat.desert_sand.." 2"}, -- reverse recipe can be found in the compressor
{mat.silver_sandstone, mat.silver_sand.." 2"}, -- reverse recipe can be found in the compressor
{"default:ice", "default:snowblock"},
{mat.ice, mat.snowblock},
}
if minetest.get_modpath("ethereal") then
@ -47,22 +48,22 @@ end
-- defuse the sandstone -> 4 sand recipe to avoid infinite sand bugs (also consult the inverse compressor recipe)
minetest.clear_craft({
recipe = {
{"default:sandstone"}
{mat.sandstone}
},
})
minetest.clear_craft({
recipe = {
{"default:desert_sandstone"}
{mat.desert_sandstone}
},
})
minetest.clear_craft({
recipe = {
{"default:silver_sandstone"}
{mat.silver_sandstone}
},
})
if minetest.get_modpath("farming") then
table.insert(recipes, {"farming:seed_wheat", "farming:flour 1"})
table.insert(recipes, {mat.seed_wheat, "farming:flour 1"})
end
if minetest.get_modpath("moreores") then
@ -106,21 +107,21 @@ end
-- Sorted alphibeticaly
register_dust("Brass", "basic_materials:brass_ingot")
register_dust("Bronze", "default:bronze_ingot")
register_dust("Bronze", mat.bronze_ingot)
register_dust("Carbon Steel", "technic:carbon_steel_ingot")
register_dust("Cast Iron", "technic:cast_iron_ingot")
register_dust("Chernobylite", "technic:chernobylite_block")
register_dust("Chromium", "technic:chromium_ingot")
register_dust("Coal", nil)
register_dust("Copper", "default:copper_ingot")
register_dust("Copper", mat.copper_ingot)
register_dust("Lead", "technic:lead_ingot")
register_dust("Gold", "default:gold_ingot")
register_dust("Mithril", "moreores:mithril_ingot")
register_dust("Silver", "moreores:silver_ingot")
register_dust("Gold", mat.gold_ingot)
register_dust("Mithril", mat.mithril_ingot)
register_dust("Silver", mat.silver_ingot)
register_dust("Stainless Steel", "technic:stainless_steel_ingot")
register_dust("Stone", "default:stone")
register_dust("Stone", mat.stone)
register_dust("Sulfur", nil)
register_dust("Tin", "default:tin_ingot")
register_dust("Tin", mat.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

View File

@ -1,6 +1,7 @@
local S = technic.getter
local moretrees = minetest.get_modpath("moretrees")
local dye = minetest.get_modpath("dye")
local mat = technic.materials
-- sawdust, the finest wood/tree grinding
local sawdust = "technic:sawdust"
@ -9,7 +10,7 @@ minetest.register_craftitem(sawdust, {
inventory_image = "technic_sawdust.png",
})
minetest.register_craft({ type = "fuel", recipe = sawdust, burntime = 6 })
technic.register_compressor_recipe({ input = {sawdust .. " 4"}, output = "default:wood" })
technic.register_compressor_recipe({ input = {sawdust .. " 4"}, output = mat.wood })
-- tree/wood grindings
local function register_tree_grinding(name, tree, wood, extract, grinding_color)
@ -54,11 +55,11 @@ local acacia_extract = dye and "dye:brown 8"
-- technic recipes don't support groups yet :/
--register_tree_grinding("Common Tree", "group:tree", "group:wood", default_extract)
register_tree_grinding("Acacia", "default:acacia_tree", "default:acacia_wood", acacia_extract)
register_tree_grinding("Common Tree", "default:tree", "default:wood", default_extract)
register_tree_grinding("Common Tree", "default:aspen_tree", "default:aspen_wood", default_extract)
register_tree_grinding("Common Tree", "default:jungletree", "default:junglewood", default_extract)
register_tree_grinding("Common Tree", "default:pine_tree", "default:pine_wood", default_extract)
register_tree_grinding("Acacia", mat.acacia_tree, mat.acacia_wood, acacia_extract)
register_tree_grinding("Common Tree", mat.tree, mat.wood, default_extract)
register_tree_grinding("Common Tree", mat.aspen_tree, mat.aspen_wood, default_extract)
register_tree_grinding("Common Tree", mat.jungletree, mat.junglewood, default_extract)
register_tree_grinding("Common Tree", mat.pine_tree, mat.pine_wood, default_extract)
register_tree_grinding("Rubber Tree", "moretrees:rubber_tree_trunk", rubber_tree_planks, "technic:raw_latex")
register_tree_grinding("Rubber Tree", "moretrees:rubber_tree_trunk_empty", nil, "technic:raw_latex")

View File

@ -44,7 +44,7 @@ function technic.register_base_machine(nodename, data)
local infotext_active = S("@1 Active", def.description)
local infotext_unpowered = S("@1 Unpowered", def.description)
local groups = {cracky = 2, technic_machine = 1, ["technic_"..ltier] = 1}
local groups = {cracky = 2, technic_machine = 1, ["technic_"..ltier] = 1, pickaxey=2}
if def.tube then
groups.tubedevice = 1
groups.tubedevice_receiver = 1
@ -52,25 +52,50 @@ function technic.register_base_machine(nodename, data)
local active_groups = table.copy(groups)
active_groups.not_in_creative_inventory = 1
local size = minetest.get_modpath("mcl_formspec") and "size[9,10]" or "size[8,9]"
local formspec =
"size[8,9;]"..
size..
"list[context;src;"..(4-input_size)..",1;"..input_size..",1;]"..
"list[context;dst;5,1;2,2;]"..
"list[current_player;main;0,5;8,4;]"..
"label[0,0;"..def.description.."]"..
"listring[context;dst]"..
"listring[current_player;main]"..
"listring[context;src]"..
"listring[current_player;main]"
"label[0,0;"..def.description.."]"
if def.upgrade then
formspec = formspec..
"list[context;upgrade1;1,3;1,1;]"..
"list[context;upgrade2;2,3;1,1;]"..
"label[1,4;"..S("Upgrade Slots").."]"..
"listring[context;upgrade1]"..
"listring[current_player;main]"..
"listring[context;upgrade2]"..
"listring[current_player;main]"
"label[1,4;"..S("Upgrade Slots").."]"
end
if minetest.get_modpath("mcl_formspec") then
formspec = formspec..
mcl_formspec.get_itemslot_bg(4-input_size,1,input_size,1)..
mcl_formspec.get_itemslot_bg(5,1,2,2)..
-- player inventory
"list[current_player;main;0,5.5;9,3;9]"..
mcl_formspec.get_itemslot_bg(0,5.5,9,3)..
"list[current_player;main;0,8.74;9,1;]"..
mcl_formspec.get_itemslot_bg(0,8.74,9,1)
if def.upgrade then
formspec = formspec..
mcl_formspec.get_itemslot_bg(1,3,1,1)..
mcl_formspec.get_itemslot_bg(2,3,1,1)
end
else
formspec = formspec..
"list[current_player;main;0,5;8,4;]"
end
-- listrings
formspec = formspec..
"listring[context;dst]"..
"listring[current_player;main]"..
"listring[context;src]"..
"listring[current_player;main]"
if def.upgrade then
formspec = formspec..
"listring[context;upgrade1]"..
"listring[current_player;main]"..
"listring[context;upgrade2]"..
"listring[current_player;main]"
end
local tube = technic.new_default_tube()
@ -172,10 +197,12 @@ function technic.register_base_machine(nodename, data)
},
paramtype2 = "facedir",
groups = groups,
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
tube = def.tube and tube or nil,
connect_sides = def.connect_sides or connect_default,
legacy_facedir_simple = true,
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
on_construct = function(pos)
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
@ -244,9 +271,11 @@ function technic.register_base_machine(nodename, data)
paramtype2 = "facedir",
drop = nodename,
groups = active_groups,
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
connect_sides = def.connect_sides or connect_default,
legacy_facedir_simple = true,
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
tube = def.tube and tube or nil,
can_dig = technic.machine_can_dig,
allow_metadata_inventory_put = technic.machine_inventory_put,

View File

@ -1,6 +1,7 @@
local have_ui = minetest.get_modpath("unified_inventory")
local have_cg = minetest.get_modpath("craftguide")
local have_mcl_cg = minetest.get_modpath("mcl_craftguide")
local have_i3 = minetest.get_modpath("i3")
technic.recipes = { cooking = { input_size = 1, output_size = 1 } }
@ -23,6 +24,12 @@ function technic.register_recipe_type(typename, origdata)
icon = data.icon,
})
end
if have_mcl_cg then
mcl_craftguide.register_craft_type(typename, {
description = data.description,
icon = data.icon,
})
end
if have_i3 then
i3.register_craft_type(typename, {
description = data.description,
@ -86,6 +93,14 @@ local function register_recipe(typename, data)
items = {table.concat(data.input, ", ")},
})
end
if have_mcl_cg then
mcl_craftguide.register_craft({
type = typename,
output = output,
items = data.input,
width = 0,
})
end
if have_i3 then
i3.register_craft({
type = typename,
@ -101,10 +116,14 @@ end
local has_exchangeclone = minetest.get_modpath("zzzz_exchangeclone_init")
function technic.register_recipe(typename, data)
if has_exchangeclone then
if has_exchangeclone then
exchangeclone.register_technic_recipe(typename, data)
end
minetest.after(0.01, register_recipe, typename, data) -- Handle aliases
if have_mcl_cg then
register_recipe(typename, data)
else
minetest.after(0.01, register_recipe, typename, data) -- Handle aliases
end
end
function technic.get_recipe(typename, items)

View File

@ -46,11 +46,12 @@ function technic.register_solar_array(nodename, data)
modname.."_"..name.."_side.png",
modname.."_"..name.."_side.png"
}
def.groups = def.groups or {
snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1, ["technic_"..ltier]=1
}
def.groups = def.groups or {snappy=2, choppy=2, oddly_breakable_by_hand=2,
technic_machine=1, ["technic_"..ltier]=1, axey=2, handy=1}
def._mcl_blast_resistance = 1
def._mcl_hardness = 0.8
def.connect_sides = def.connect_sides or {"bottom"}
def.sounds = def.sounds or default.node_sound_wood_defaults()
def.sounds = def.sounds or technic.sounds.node_sound_wood_defaults()
def.description = def.description or S("Arrayed Solar @1 Generator", S(tier))
def.active = def.active or false
def.drawtype = def.drawtype or "nodebox"

View File

@ -181,9 +181,11 @@ minetest.register_node("technic:supply_converter", {
"technic_supply_converter_side.png"
},
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
technic_machine=1, technic_all_tiers=1},
technic_machine=1, technic_all_tiers=1, axey=2, handy=1},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
connect_sides = {"top", "bottom"},
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
on_receive_fields = supply_converter_receive_fields,
on_construct = function(pos)
local meta = minetest.get_meta(pos)

View File

@ -4,6 +4,7 @@ local mesecons_path = minetest.get_modpath("mesecons")
local digilines_path = minetest.get_modpath("digilines")
local S = technic.getter
local mat = technic.materials
local cable_entry = "^technic_cable_connection_overlay.png"
@ -11,7 +12,7 @@ minetest.register_craft({
output = "technic:switching_station",
recipe = {
{"", "technic:lv_transformer", ""},
{"default:copper_ingot", "technic:machine_casing", "default:copper_ingot"},
{mat.copper_ingot, "technic:machine_casing", mat.copper_ingot},
{"technic:lv_cable", "technic:lv_cable", "technic:lv_cable"}
}
})
@ -46,9 +47,11 @@ minetest.register_node("technic:switching_station",{
"technic_water_mill_top_active.png",
"technic_water_mill_top_active.png",
"technic_water_mill_top_active.png"},
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_all_tiers=1},
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_all_tiers=1, axey=2, handy=1},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
connect_sides = {"bottom"},
sounds = default.node_sound_wood_defaults(),
sounds = technic.sounds.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("infotext", S("Switching Station"))

79
technic/materials.lua Normal file
View File

@ -0,0 +1,79 @@
local mesecons_materials = minetest.get_modpath("mesecons_materials")
local has_mcl = minetest.get_modpath("mcl_core")
local has_mcl_dye = minetest.get_modpath("mcl_dye")
local has_moreores = minetest.get_modpath("moreores")
technic.materials = {
stone = has_mcl and "mcl_core:stone" or "default:stone",
cobble = has_mcl and "mcl_core:cobble" or "default:cobble",
mossycobble = has_mcl and "mcl_core:mossycobble" or "default:mossycobble",
gold_ingot = has_mcl and "mcl_core:gold_ingot" or "default:gold_ingot",
gold_lump = has_mcl and "mcl_core:gold_nugget" or "default:gold_lump",
steel_ingot = has_mcl and "mcl_core:iron_ingot" or "default:steel_ingot",
iron_lump = has_mcl and "mcl_core:iron_nugget" or "default:iron_lump",
diamond = has_mcl and "mcl_core:diamond" or "default:diamond",
dirt = has_mcl and "mcl_core:dirt" or "default:dirt",
tin_ingot = has_mcl and "mcl_core:iron_ingot" or "default:tin_ingot",
tin_lump = has_mcl and "mcl_raw_ores:raw_iron" or "default:tin_lump",
bronze_ingot = has_mcl and "mcl_copper:copper_ingot" or "default:bronze_ingot",
copper_ingot = has_mcl and "mcl_copper:copper_ingot" or "default:copper_ingot",
copper_lump = has_mcl and "mcl_copper:raw_copper" or "default:copper_lump",
mese = has_mcl and "mesecons_torch:redstoneblock" or "default:mese",
mese_crystal = has_mcl and "mesecons:redstone" or "default:mese_crystal",
dye_green = has_mcl_dye and "mcl_dye:green" or "dye:green",
dye_red = has_mcl_dye and "mcl_dye:red" or "dye:red",
dye_blue = has_mcl_dye and "mcl_dye:blue" or "dye:blue",
dye_orange = has_mcl and "mcl_dye:orange" or "dye:orange",
dye_grey = has_mcl and "mcl_dye:grey" or "dye:grey",
insulation = mesecons_materials and "mesecons_materials:fiber" or "technic:rubber",
obsidian = has_mcl and "mcl_core:obsidian" or "default:obsidian",
obsidian_glass = has_mcl and "mcl_core:glass" or "default:obsidian_glass",
brick = has_mcl and "mcl_core:brick" or "default:brick",
paper = has_mcl and "mcl_core:paper" or "default:paper",
furnace = has_mcl and "mcl_furnaces:furnace" or "default:furnace",
chest = has_mcl and "mcl_chests:chest" or "default:chest",
sand = has_mcl and "mcl_core:sand" or "default:sand",
ice = has_mcl and "mcl_core:ice" or "default:ice",
clay = has_mcl and "mcl_core:clay" or "default:clay",
clay_lump = has_mcl and "mcl_core:clay_lump" or "default:clay_lump",
stick = has_mcl and "mcl_core:stick" or "default:stick",
dry_shrub = has_mcl and "mcl_core:deadbush" or "default:dry_shrub",
wheat = has_mcl and "mcl_farming:wheat_item" or "farming:wheat",
seed_wheat = has_mcl and "mcl_farming:wheat_seeds" or "farming:seed_wheat",
snowblock = has_mcl and "mcl_core:snowblock" or "default:snowblock",
sandstone = has_mcl and "mcl_core:sandstone" or "default:sandstone",
desert_stone = has_mcl and "mcl_core:redsandstone" or "default:desert_stone",
desert_sand = has_mcl and "mcl_core:redsand" or "default:desert_sand",
desert_sandstone = has_mcl and "mcl_core:redsandstone" or "default:desert_sandstone",
silver_sand = has_mcl and "mcl_core:sand" or "default:silver_sand",
silver_sandstone = has_mcl and "mcl_core:sandstone" or "default:silver_sandstone",
glass = has_mcl and "mcl_core:glass" or "default:glass",
coal_lump = has_mcl and "mcl_core:coal_lump" or "default:coal_lump",
bucket_empty = has_mcl and "mcl_buckets:bucket_empty" or "bucket:bucket_empty",
bucket_water = has_mcl and "mcl_buckets:bucket_water" or "bucket:bucket_water",
bucket_river_water = has_mcl and "mcl_buckets:bucket_river_water" or "bucket:bucket_river_water",
bucket_lava = has_mcl and "mcl_buckets:bucket_lava" or "bucket:bucket_lava",
dirt_with_snow = has_mcl and "mcl_core:snowblock" or "default:dirt_with_snow",
gravel = has_mcl and "mcl_core:gravel" or "default:gravel",
tree = has_mcl and "mcl_core:tree" or "default:tree",
wood = has_mcl and "mcl_core:wood" or "default:wood",
acacia_tree = has_mcl and "mcl_core:acaciatree" or "default:acacia_tree",
acacia_wood = has_mcl and "mcl_core:acaciawood" or "default:acacia_wood",
aspen_tree = has_mcl and "mcl_core:birchtree" or "default:aspen_tree",
aspen_wood = has_mcl and "mcl_core:birchwood" or "default:aspen_wood",
jungletree = has_mcl and "mcl_core:jungletree" or "default:jungletree",
junglewood = has_mcl and "mcl_core:junglewood" or "default:junglewood",
pine_tree = has_mcl and "mcl_core:sprucetree" or "default:pine_tree",
pine_wood = has_mcl and "mcl_core:sprucewood" or "default:pine_wood",
water_source = has_mcl and "mcl_core:water_source" or "default:water_source",
water_flowing = has_mcl and "mcl_core:water_flowing" or "default:water_flowing",
river_water_source = has_mcl and "mclx_core:river_water_source" or "default:river_water_source",
river_water_flowing = has_mcl and "mclx_core:river_water_flowing" or "default:river_water_flowing",
lava_source = has_mcl and "mcl_core:lava_source" or "default:lava_source",
lava_flowing = has_mcl and "mcl_core:lava_flowing" or "default:lava_flowing",
mithril_ingot = has_moreores and "moreores:mithril_ingot" or has_mcl and "mcl_core:lapis" or "default:steel_ingot",
silver_ingot = has_moreores and "moreores:silver_ingot" or has_mcl and "mcl_core:gold_ingot" or "default:gold_ingot",
pick_silver = has_moreores and "moreores:pick_silver" or has_mcl and "mcl_tools:pick_gold" or "default:gold_pickaxe",
mithril_block = has_moreores and "moreores:mithril_block" or has_mcl and "mcl_core:lapisblock" or "default:goldblock",
}

View File

@ -1,3 +1,3 @@
name = technic
depends = default, pipeworks, technic_worldgen, basic_materials, moreores
optional_depends = bucket, mesecons, mesecons_mvps, digilines, digiline_remote, unified_inventory, dye, craftguide, i3, mtt, vizlib, zzzz_exchangeclone_init
depends = pipeworks, technic_worldgen, basic_materials
optional_depends = mcl_core, mcl_sounds, default, bucket, mesecons, mesecons_mvps, digilines, digiline_remote, unified_inventory, dye, craftguide, i3, mtt, vizlib, moreores, mcl_buckets, mcl_explosions, mcl_craftguide, zzzz_exchangeclone_init

View File

@ -32,6 +32,7 @@ local MP = minetest.get_modpath("technic")
local throttle = dofile(MP .. "/util/throttle.lua")
local S = technic.getter
local has_mcl = minetest.get_modpath("mcl_core")
local rad_resistance_node = {
["default:brick"] = 13,
@ -489,12 +490,28 @@ if rawget(_G, "bucket") and bucket.register_liquid then
)
end
if minetest.get_modpath("mcl_buckets") then
mcl_buckets.register_liquid({
bucketname = "technic:bucket_corium",
source_place = "technic:corium_source",
source_take = {"technic:corium_source"},
inventory_image = "technic_bucket_corium.png",
name = S("Corium Bucket"),
longdesc = S("This bucket is filled with radioactive corium."),
usagehelp = S("Place it to empty the bucket and create a radioactive liquid source."),
tt_help = S("Danger Hight Radiation"),
groups = { radioactive = 5 },
})
end
minetest.register_node("technic:chernobylite_block", {
description = S("Chernobylite Block"),
tiles = {"technic_chernobylite_block.png"},
is_ground_content = true,
groups = {cracky=1, radioactive=4, level=2},
sounds = default.node_sound_stone_defaults(),
groups = {cracky=1, radioactive=4, level= has_mcl and 0 or 2, pickaxey=5},
_mcl_blast_resistance = 30,
_mcl_hardness = 40,
sounds = technic.sounds.node_sound_stone_defaults(),
light_source = 2,
})
@ -545,7 +562,11 @@ if griefing then
vector.new(0,-1,0),
}) do
if math.random(8) == 1 then
minetest.dig_node(vector.add(pos, offset))
local vpos = vector.add(pos, offset)
local def = minetest.registered_nodes[minetest.get_node(vpos).name]
if def and (not def._mcl_hardness or def._mcl_hardness > 0) then
minetest.dig_node(vpos)
end
end
end
end,

View File

@ -29,8 +29,12 @@ _G.technic.digilines = {
{x = 0, y = -1, z = 0}, -- along y below
}
}
_G.technic.sounds = setmetatable({}, {
__index = function(...) return function(...) return "" end end,
})
sourcefile("config")
sourcefile("materials")
sourcefile("register")
technic.register_tier("LV", "Busted LV")
technic.register_tier("MV", "Busted MV")

View File

@ -1,4 +1,5 @@
local S = technic.getter
local mat = technic.materials
local function set_can_wear(itemstack, level, max_level)
local temp
@ -87,8 +88,8 @@ technic.register_can({
can_description = S("Water Can"),
can_inventory_image = "technic_water_can.png",
can_capacity = 16,
liquid_source_name = "default:water_source",
liquid_flowing_name = "default:water_flowing",
liquid_source_name = mat.water_source,
liquid_flowing_name = mat.water_flowing,
})
minetest.register_craft({
@ -105,8 +106,8 @@ technic.register_can({
can_description = S("Lava Can"),
can_inventory_image = "technic_lava_can.png",
can_capacity = 8,
liquid_source_name = "default:lava_source",
liquid_flowing_name = "default:lava_flowing",
liquid_source_name = mat.lava_source,
liquid_flowing_name = mat.lava_flowing,
})
minetest.register_craft({
@ -123,15 +124,15 @@ technic.register_can({
can_description = S("River Water Can"),
can_inventory_image = "technic_river_water_can.png",
can_capacity = 16,
liquid_source_name = "default:river_water_source",
liquid_flowing_name = "default:river_water_flowing",
liquid_source_name = mat.river_water_source,
liquid_flowing_name = mat.river_water_flowing,
})
minetest.register_craft({
output = 'technic:river_water_can 1',
recipe = {
{'technic:zinc_ingot', 'technic:rubber', 'technic:zinc_ingot'},
{'default:steel_ingot', '', 'default:steel_ingot'},
{'technic:zinc_ingot', 'default:steel_ingot', 'technic:zinc_ingot'},
{mat.steel_ingot, '', mat.steel_ingot},
{'technic:zinc_ingot', mat.steel_ingot, 'technic:zinc_ingot'},
}
})

View File

@ -195,7 +195,9 @@ technic.register_power_tool("technic:chainsaw", {
})
local mesecons_button = minetest.get_modpath("mesecons_button")
local trigger = mesecons_button and "mesecons_button:button_off" or "default:mese_crystal_fragment"
local has_mcl = minetest.get_modpath("mcl_core")
local trigger = has_mcl and mesecons_button and "mesecons_button:button_wood_off"
or mesecons_button and "mesecons_button:button_off" or "default:mese_crystal_fragment"
minetest.register_craft({
output = "technic:chainsaw",

View File

@ -4,6 +4,7 @@
local flashlight_max_charge = 30000
local S = technic.getter
local mat = technic.materials
minetest.register_alias("technic:light_off", "air")
@ -16,7 +17,7 @@ technic.register_power_tool("technic:flashlight", {
minetest.register_craft({
output = "technic:flashlight",
recipe = {
{"technic:rubber", "default:glass", "technic:rubber"},
{"technic:rubber", mat.glass, "technic:rubber"},
{"technic:stainless_steel_ingot", "technic:battery", "technic:stainless_steel_ingot"},
{"", "technic:battery", ""}
}
@ -96,7 +97,10 @@ minetest.register_globalstep(function(dtime)
end
end)
minetest.register_node("technic:light", {
if minetest.get_modpath("mcl_core") then
minetest.register_alias("technic:light", "mcl_core:light_14")
else
minetest.register_node("technic:light", {
drawtype = "glasslike",
tiles = {"technic_light.png"},
paramtype = "light",
@ -107,4 +111,5 @@ minetest.register_node("technic:light", {
sunlight_propagates = true,
light_source = minetest.LIGHT_MAX,
pointable = false,
})
})
end

View File

@ -2,13 +2,14 @@ local max_charge = {50000, 200000, 300000}
local power_usage_per_node = {200, 500, 600}
local S = technic.getter
local mat = technic.materials
minetest.register_craft({
output = 'technic:mining_drill',
recipe = {
{'default:tin_ingot', 'technic:diamond_drill_head', 'default:tin_ingot'},
{mat.tin_ingot, 'technic:diamond_drill_head', mat.tin_ingot},
{'technic:stainless_steel_ingot', 'basic_materials:motor', 'technic:stainless_steel_ingot'},
{'', 'technic:red_energy_crystal', 'default:copper_ingot'},
{'', 'technic:red_energy_crystal', mat.copper_ingot},
}
})
minetest.register_craft({
@ -58,10 +59,10 @@ local function drill_dig_it0 (pos,player)
end
local node = minetest.get_node(pos)
if node.name == "air" or node.name == "ignore" then return end
if node.name == "default:lava_source" then return end
if node.name == "default:lava_flowing" then return end
if node.name == "default:water_source" then minetest.remove_node(pos) return end
if node.name == "default:water_flowing" then minetest.remove_node(pos) return end
if node.name == mat.lava_source then return end
if node.name == mat.lava_flowing then return end
if node.name == mat.water_source then minetest.remove_node(pos) return end
if node.name == mat.water_flowing then minetest.remove_node(pos) return end
local def = minetest.registered_nodes[node.name]
if not def then return end
def.on_dig(pos, node, player)

View File

@ -1,3 +1,6 @@
local mat = technic.materials
local mining_lasers_list = {
-- {<num>, <range of the laser shots>, <max_charge>, <charge_per_shot>},
{"1", 7, 50000, 1000},
@ -11,25 +14,25 @@ local S = technic.getter
minetest.register_craft({
output = "technic:laser_mk1",
recipe = {
{"default:diamond", "basic_materials:brass_ingot", "default:obsidian_glass"},
{mat.diamond, "basic_materials:brass_ingot", mat.obsidian_glass},
{"", "basic_materials:brass_ingot", "technic:red_energy_crystal"},
{"", "", "default:copper_ingot"},
{"", "", mat.copper_ingot},
}
})
minetest.register_craft({
output = "technic:laser_mk2",
recipe = {
{"default:diamond", "technic:carbon_steel_ingot", "technic:laser_mk1"},
{mat.diamond, "technic:carbon_steel_ingot", "technic:laser_mk1"},
{"", "technic:carbon_steel_ingot", "technic:green_energy_crystal"},
{"", "", "default:copper_ingot"},
{"", "", mat.copper_ingot},
}
})
minetest.register_craft({
output = "technic:laser_mk3",
recipe = {
{"default:diamond", "technic:carbon_steel_ingot", "technic:laser_mk2"},
{mat.diamond, "technic:carbon_steel_ingot", "technic:laser_mk2"},
{"", "technic:carbon_steel_ingot", "technic:blue_energy_crystal"},
{"", "", "default:copper_ingot"},
{"", "", mat.copper_ingot},
}
})

View File

@ -1,4 +1,5 @@
local S = technic.getter
local mat = technic.materials
local function migrate_meta(meta)
local data = meta:get("")
@ -139,7 +140,7 @@ end)
minetest.register_craft({
output = "technic:prospector",
recipe = {
{"moreores:pick_silver", "moreores:mithril_block", "pipeworks:teleport_tube_1"},
{mat.pick_silver, mat.mithril_block, "pipeworks:teleport_tube_1"},
{"basic_materials:brass_ingot", "technic:control_logic_unit", "basic_materials:brass_ingot"},
{"", "technic:blue_energy_crystal", ""},
}

View File

@ -1,6 +1,7 @@
local sonic_screwdriver_max_charge = 15000
local S = technic.getter
local mat = technic.materials
-- screwdriver handler code reused from minetest/minetest_game screwdriver @a9ac480
local ROTATE_FACE = 1
@ -78,8 +79,8 @@ technic.register_power_tool("technic:sonic_screwdriver", {
minetest.register_craft({
output = "technic:sonic_screwdriver",
recipe = {
{"", "default:diamond", ""},
{"", mat.diamond, ""},
{"mesecons_materials:fiber", "technic:battery", "mesecons_materials:fiber"},
{"mesecons_materials:fiber", "moreores:mithril_ingot", "mesecons_materials:fiber"}
{"mesecons_materials:fiber", mat.mithril_ingot, "mesecons_materials:fiber"}
}
})

View File

@ -1,7 +1,16 @@
local S = technic.getter
local mat = technic.materials
local mesecons_materials = minetest.get_modpath("mesecons_materials")
local function drop_raw_latex(pointed_thing, user)
if minetest.get_modpath("mcl_core") then
minetest.add_item(user:get_pos(), "technic:raw_latex")
else
minetest.handle_node_drops(pointed_thing.above, {"technic:raw_latex"}, user)
end
end
minetest.register_tool("technic:treetap", {
description = S("Tree Tap"),
inventory_image = "technic_tree_tap.png",
@ -21,7 +30,7 @@ minetest.register_tool("technic:treetap", {
end
node.name = "moretrees:rubber_tree_trunk_empty"
minetest.swap_node(pos, node)
minetest.handle_node_drops(pointed_thing.above, {"technic:raw_latex"}, user)
drop_raw_latex(pointed_thing, user)
if not technic.creative_mode then
local item_wear = tonumber(itemstack:get_wear())
item_wear = item_wear + 819
@ -38,8 +47,8 @@ minetest.register_tool("technic:treetap", {
minetest.register_craft({
output = "technic:treetap",
recipe = {
{"pipeworks:tube_1", "group:wood", "default:stick"},
{"", "default:stick", "default:stick"}
{"pipeworks:tube_1", "group:wood", mat.stick},
{"", mat.stick, mat.stick}
},
})

View File

@ -1,6 +1,8 @@
local S = minetest.get_translator("technic_worldgen")
local has_mcl = minetest.get_modpath("mcl_core")
minetest.register_craftitem(":technic:uranium_lump", {
description = S("Uranium Lump"),
inventory_image = "technic_uranium_lump.png",
@ -118,7 +120,7 @@ minetest.register_craft({
minetest.register_craft({
type = "cooking",
recipe = "default:steel_ingot",
recipe = has_mcl and "mcl_core:iron_ingot" or "default:steel_ingot",
output = "technic:cast_iron_ingot",
})

View File

@ -33,9 +33,20 @@ if minetest.get_modpath("mg") then
dofile(modpath.."/mg.lua")
end
minetest.register_alias("technic:wrought_iron_ingot", "default:steel_ingot")
minetest.register_alias("technic:uranium", "technic:uranium_lump")
minetest.register_alias("technic:wrought_iron_block", "default:steelblock")
minetest.register_alias("technic:diamond_block", "default:diamondblock")
minetest.register_alias("technic:diamond", "default:diamond")
minetest.register_alias("technic:mineral_diamond", "default:stone_with_diamond")
if minetest.get_modpath("default") then
minetest.register_alias("technic:wrought_iron_ingot", "default:steel_ingot")
minetest.register_alias("technic:wrought_iron_block", "default:steelblock")
minetest.register_alias("technic:diamond_block", "default:diamondblock")
minetest.register_alias("technic:diamond", "default:diamond")
minetest.register_alias("technic:mineral_diamond", "default:stone_with_diamond")
end
if minetest.get_modpath("mcl_core") then
minetest.register_alias("technic:wrought_iron_ingot", "mcl_core:iron_ingot")
minetest.register_alias("technic:wrought_iron_block", "mcl_core:ironblock")
minetest.register_alias("technic:diamond_block", "mcl_core:diamondblock")
minetest.register_alias("technic:diamond", "mcl_core:diamond")
minetest.register_alias("technic:mineral_diamond", "mcl_core:stone_with_diamond")
end