Merge branch 'master' into nuce_reactor_digiline_remote

This commit is contained in:
DS 2017-04-24 18:51:37 +02:00 committed by GitHub
commit 042f860100
42 changed files with 1153 additions and 217 deletions

View File

@ -94,9 +94,9 @@ minetest.register_node(":technic:blast_resistant_concrete", {
local box_platform = {-0.5, 0.3, -0.5, 0.5, 0.5, 0.5} local box_platform = {-0.5, 0.3, -0.5, 0.5, 0.5, 0.5}
local box_post = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15} local box_post = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15}
local box_front = {-0.1, -0.3, 0, 0.1, 0.3, -0.5} local box_front = {-0.1, -0.3, -0.5, 0.1, 0.3, 0}
local box_back = {-0.1, -0.3, 0, 0.1, 0.3, 0.5} local box_back = {-0.1, -0.3, 0, 0.1, 0.3, 0.5}
local box_left = {0, -0.3, -0.1, -0.5, 0.3, 0.1} local box_left = {-0.5, -0.3, -0.1, 0, 0.3, 0.1}
local box_right = {0, -0.3, -0.1, 0.5, 0.3, 0.1} local box_right = {0, -0.3, -0.1, 0.5, 0.3, 0.1}
minetest.register_node(":technic:concrete_post_platform", { minetest.register_node(":technic:concrete_post_platform", {

View File

@ -961,7 +961,8 @@ The primary purpose of battery boxes is to temporarily store electrical
energy to let an electrical network cope with mismatched supply and energy to let an electrical network cope with mismatched supply and
demand. They have a secondary purpose of charging and discharging demand. They have a secondary purpose of charging and discharging
powered tools. They are thus a mixture of electrical infrastructure, powered tools. They are thus a mixture of electrical infrastructure,
powered machine, and generator. powered machine, and generator. Battery boxes connect to cables only
from the bottom.
MV and HV battery boxes have upgrade slots. Energy upgrades increase MV and HV battery boxes have upgrade slots. Energy upgrades increase
the capacity of a battery box, each by 10% of the un-upgraded capacity. the capacity of a battery box, each by 10% of the un-upgraded capacity.
@ -976,10 +977,10 @@ be worth building a battery box of higher tier before one has other
infrastructure of that tier, just to get access to faster charging. infrastructure of that tier, just to get access to faster charging.
MV and HV battery boxes work with pneumatic tubes. An item can be input MV and HV battery boxes work with pneumatic tubes. An item can be input
to the charging slot through the bottom of the battery box, or to the to the charging slot through the sides or back of the battery box, or
discharging slot through the top. Items are not accepted through the to the discharging slot through the top. With a tube upgrade, fully
front, back, or sides. With a tube upgrade, fully charged/discharged charged/discharged tools (as appropriate for their slot) will be ejected
tools (as appropriate for their slot) will be ejected through a side. through a side.
### processing machines ### ### processing machines ###
@ -1243,12 +1244,12 @@ with light sources such as meselamps.
### hydro generator ### ### hydro generator ###
The hydro generator is an LV power generator that generates a small amount The hydro generator is an LV power generator that generates a respectable
of power from the natural motion of water. To operate, the generator must amount of power from the natural motion of water. To operate, the
be horizontally adjacent to water. It doesn't matter whether the water generator must be horizontally adjacent to flowing water. The power
consists of source blocks or flowing blocks. Having water adjacent on produced is dependent on how much flow there is across any or all four
more than one side, up to the full four, increases the generator's output. sides, the most flow of course coming from water that's flowing straight
The water itself is unaffected by the generator. down.
### geothermal generator ### ### geothermal generator ###

View File

@ -1,6 +1,23 @@
-- check if we have the necessary dependencies to allow actually using these materials in the crafts -- 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 mesecons_materials = minetest.get_modpath("mesecons_materials")
-- Remove some recipes
-- Bronze
minetest.clear_craft({
type = "shapeless",
output = "default:bronze_ingot"
})
-- Accelerator tube
minetest.clear_craft({
output = "pipeworks:accelerator_tube_1",
})
-- Teleport tube
minetest.clear_craft({
output = "pipeworks:teleport_tube_1",
})
-- tubes crafting recipes -- tubes crafting recipes
minetest.register_craft({ minetest.register_craft({
@ -163,33 +180,6 @@ minetest.register_craft({
}, },
}) })
-- Remove some recipes
-- Bronze
minetest.register_craft({
type = "shapeless",
output = "default:bronze_ingot 0",
recipe = {"default:copper_ingot", "default:steel_ingot"}
})
-- Accelerator tube
minetest.register_craft({
output = "pipeworks:accelerator_tube_1 0",
recipe = {
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
{ "default:mese_crystal_fragment", "default:steel_ingot", "default:mese_crystal_fragment" },
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
},
})
-- Teleport tube
minetest.register_craft({
output = "pipeworks:teleport_tube_1 0",
recipe = {
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
{ "default:desert_stone", "default:mese", "default:desert_stone" },
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
},
})
minetest.register_craft({ minetest.register_craft({
output = "default:dirt 2", output = "default:dirt 2",

View File

@ -6,10 +6,14 @@
-- How expensive is the generator? -- How expensive is the generator?
-- Leaves room for upgrades lowering the power drain? -- Leaves room for upgrades lowering the power drain?
local digilines_path = minetest.get_modpath("digilines")
local forcefield_power_drain = 10 local forcefield_power_drain = 10
local S = technic.getter local S = technic.getter
local cable_entry = "^technic_cable_connection_overlay.png"
minetest.register_craft({ minetest.register_craft({
output = "technic:forcefield_emitter_off", output = "technic:forcefield_emitter_off",
recipe = { recipe = {
@ -90,7 +94,14 @@ local function update_forcefield(pos, meta, active, first)
end end
local function set_forcefield_formspec(meta) local function set_forcefield_formspec(meta)
local formspec = "size[5,2.25]".. local formspec
if digilines_path then
formspec = "size[5,3.25]"..
"field[0.3,3;5,1;channel;Digiline Channel;"..meta:get_string("channel").."]"
else
formspec = "size[5,2.25]"
end
formspec = formspec..
"field[0.3,0.5;2,1;range;"..S("Range")..";"..meta:get_int("range").."]" "field[0.3,0.5;2,1;range;"..S("Range")..";"..meta:get_int("range").."]"
-- The names for these toggle buttons are explicit about which -- The names for these toggle buttons are explicit about which
-- state they'll switch to, so that multiple presses (arising -- state they'll switch to, so that multiple presses (arising
@ -130,9 +141,10 @@ local forcefield_receive_fields = function(pos, formname, fields, sender)
update_forcefield(pos, meta, false) update_forcefield(pos, meta, false)
end end
if range then meta:set_int("range", range) end if range then meta:set_int("range", range) end
if fields.shape0 then meta:set_int("shape", 0) end if fields.channel then meta:set_string("channel", fields.channel) end
if fields.shape1 then meta:set_int("shape", 1) end if fields.shape0 then meta:set_int("shape", 0) end
if fields.enable then meta:set_int("enabled", 1) end if fields.shape1 then meta:set_int("shape", 1) end
if fields.enable then meta:set_int("enabled", 1) end
if fields.disable then meta:set_int("enabled", 0) end if fields.disable then meta:set_int("enabled", 0) end
if fields.mesecon_mode_0 then meta:set_int("mesecon_mode", 0) end if fields.mesecon_mode_0 then meta:set_int("mesecon_mode", 0) end
if fields.mesecon_mode_1 then meta:set_int("mesecon_mode", 1) end if fields.mesecon_mode_1 then meta:set_int("mesecon_mode", 1) end
@ -150,6 +162,60 @@ local mesecons = {
} }
} }
local digiline_def = {
receptor = {action = function() end},
effector = {
action = function(pos, node, channel, msg)
local meta = minetest.get_meta(pos)
if channel ~= meta:get_string("channel") then
return
end
msg = msg:lower()
if msg == "get" then
digilines.receptor_send(pos, digilines.rules.default, channel, {
enabled = meta:get_int("enabled"),
range = meta:get_int("range"),
shape = meta:get_int("shape")
})
return
elseif msg == "off" then
meta:set_int("enabled", 0)
elseif msg == "on" then
meta:set_int("enabled", 1)
elseif msg == "toggle" then
local onn = meta:get_int("enabled")
onn = 1-onn -- Mirror onn with pivot 0.5, so switch between 1 and 0.
meta:set_int("enabled", onn)
elseif msg:sub(1, 5) == "range" then
local range = tonumber(msg:sub(7))
if not range then
return
end
range = math.max(range, 5)
range = math.min(range, 20)
update_forcefield(pos, meta, false)
meta:set_int("range", range)
elseif msg:sub(1, 5) == "shape" then
local shape = msg:sub(7):lower()
if shape == "sphere" then
shape = 0
elseif shape == "cube" then
shape = 1
end
shape = tonumber(shape)
if not shape then
return
end
update_forcefield(pos, meta, false)
meta:set_int("shape", shape)
else
return
end
set_forcefield_formspec(meta)
end
},
}
local function run(pos, node) local function run(pos, node)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local eu_input = meta:get_int("HV_EU_input") local eu_input = meta:get_int("HV_EU_input")
@ -194,7 +260,14 @@ end
minetest.register_node("technic:forcefield_emitter_off", { minetest.register_node("technic:forcefield_emitter_off", {
description = S("%s Forcefield Emitter"):format("HV"), description = S("%s Forcefield Emitter"):format("HV"),
tiles = {"technic_forcefield_emitter_off.png"}, tiles = {
"technic_forcefield_emitter_off.png",
"technic_machine_bottom.png"..cable_entry,
"technic_forcefield_emitter_off.png",
"technic_forcefield_emitter_off.png",
"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},
on_receive_fields = forcefield_receive_fields, on_receive_fields = forcefield_receive_fields,
on_construct = function(pos) on_construct = function(pos)
@ -205,16 +278,27 @@ minetest.register_node("technic:forcefield_emitter_off", {
meta:set_int("enabled", 0) meta:set_int("enabled", 0)
meta:set_int("mesecon_mode", 0) meta:set_int("mesecon_mode", 0)
meta:set_int("mesecon_effect", 0) meta:set_int("mesecon_effect", 0)
if digilines_path then
meta:set_string("channel", "forcefield"..minetest.pos_to_string(pos))
end
meta:set_string("infotext", S("%s Forcefield Emitter"):format("HV")) meta:set_string("infotext", S("%s Forcefield Emitter"):format("HV"))
set_forcefield_formspec(meta) set_forcefield_formspec(meta)
end, end,
mesecons = mesecons, mesecons = mesecons,
digiline = digiline_def,
technic_run = run, technic_run = run,
}) })
minetest.register_node("technic:forcefield_emitter_on", { minetest.register_node("technic:forcefield_emitter_on", {
description = S("%s Forcefield Emitter"):format("HV"), description = S("%s Forcefield Emitter"):format("HV"),
tiles = {"technic_forcefield_emitter_on.png"}, tiles = {
"technic_forcefield_emitter_on.png",
"technic_machine_bottom.png"..cable_entry,
"technic_forcefield_emitter_on.png",
"technic_forcefield_emitter_on.png",
"technic_forcefield_emitter_on.png",
"technic_forcefield_emitter_on.png"
},
groups = {cracky = 1, technic_machine = 1, technic_hv = 1, groups = {cracky = 1, technic_machine = 1, technic_hv = 1,
not_in_creative_inventory=1}, not_in_creative_inventory=1},
drop = "technic:forcefield_emitter_off", drop = "technic:forcefield_emitter_off",
@ -224,6 +308,7 @@ minetest.register_node("technic:forcefield_emitter_on", {
update_forcefield(pos, meta, false) update_forcefield(pos, meta, false)
end, end,
mesecons = mesecons, mesecons = mesecons,
digiline = digiline_def,
technic_run = run, technic_run = run,
technic_on_disable = function (pos, node) technic_on_disable = function (pos, node)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)

View File

@ -18,8 +18,8 @@ local digiline_remote_path = minetest.get_modpath("digiline_remote")
local S = technic.getter local S = technic.getter
local reactor_desc = S("@1 Nuclear Reactor Core", S("HV")), local reactor_desc = S("@1 Nuclear Reactor Core", S("HV"))
local cable_entry = "^technic_cable_connection_overlay.png"
-- FIXME: Recipe should make more sense like a rod recepticle, steam chamber, HV generator? -- FIXME: Recipe should make more sense like a rod recepticle, steam chamber, HV generator?
minetest.register_craft({ minetest.register_craft({
@ -44,26 +44,6 @@ if digiline_remote_path then
"field[1,4;4,1;remote_channel;Digiline Remote Channel;${remote_channel}]" "field[1,4;4,1;remote_channel;Digiline Remote Channel;${remote_channel}]"
end end
-- "Boxy sphere"
local node_box = {
{-0.353, -0.353, -0.353, 0.353, 0.353, 0.353}, -- Box
{-0.495, -0.064, -0.064, 0.495, 0.064, 0.064}, -- Circle +-x
{-0.483, -0.128, -0.128, 0.483, 0.128, 0.128},
{-0.462, -0.191, -0.191, 0.462, 0.191, 0.191},
{-0.433, -0.249, -0.249, 0.433, 0.249, 0.249},
{-0.397, -0.303, -0.303, 0.397, 0.303, 0.303},
{-0.305, -0.396, -0.305, 0.305, 0.396, 0.305}, -- Circle +-y
{-0.250, -0.432, -0.250, 0.250, 0.432, 0.250},
{-0.191, -0.461, -0.191, 0.191, 0.461, 0.191},
{-0.130, -0.482, -0.130, 0.130, 0.482, 0.130},
{-0.066, -0.495, -0.066, 0.066, 0.495, 0.066},
{-0.064, -0.064, -0.495, 0.064, 0.064, 0.495}, -- Circle +-z
{-0.128, -0.128, -0.483, 0.128, 0.128, 0.483},
{-0.191, -0.191, -0.462, 0.191, 0.191, 0.462},
{-0.249, -0.249, -0.433, 0.249, 0.249, 0.433},
{-0.303, -0.303, -0.397, 0.303, 0.303, 0.397},
}
local SS_OFF = 0 local SS_OFF = 0
local SS_DANGER = 1 local SS_DANGER = 1
local SS_CLEAR = 2 local SS_CLEAR = 2
@ -367,17 +347,18 @@ end
minetest.register_node("technic:hv_nuclear_reactor_core", { minetest.register_node("technic:hv_nuclear_reactor_core", {
description = reactor_desc, description = reactor_desc,
tiles = {"technic_hv_nuclear_reactor_core.png"}, tiles = {
groups = {cracky=1, technic_machine=1, technic_hv=1, digiline_remote_receive = 1}, "technic_hv_nuclear_reactor_core.png",
"technic_hv_nuclear_reactor_core.png"..cable_entry
},
drawtype = "mesh",
mesh = "technic_reactor.obj",
groups = {cracky = 1, technic_machine = 1, technic_hv = 1, digiline_remote_receive = 1},
legacy_facedir_simple = true, legacy_facedir_simple = true,
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
drawtype = "nodebox",
paramtype = "light", paramtype = "light",
paramtype2 = "facedir",
stack_max = 1, stack_max = 1,
node_box = {
type = "fixed",
fixed = node_box
},
on_receive_fields = nuclear_reactor_receive_fields, on_receive_fields = nuclear_reactor_receive_fields,
on_construct = function(pos) on_construct = function(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
@ -400,20 +381,21 @@ minetest.register_node("technic:hv_nuclear_reactor_core", {
}) })
minetest.register_node("technic:hv_nuclear_reactor_core_active", { minetest.register_node("technic:hv_nuclear_reactor_core_active", {
tiles = {"technic_hv_nuclear_reactor_core.png"}, tiles = {
groups = {cracky=1, technic_machine=1, technic_hv=1, radioactive=4, "technic_hv_nuclear_reactor_core.png",
not_in_creative_inventory=1, digiline_remote_receive = 1}, "technic_hv_nuclear_reactor_core.png"..cable_entry
},
drawtype = "mesh",
mesh = "technic_reactor.obj",
groups = {cracky = 1, technic_machine = 1, technic_hv = 1, radioactive = 4,
not_in_creative_inventory = 1, digiline_remote_receive = 1},
legacy_facedir_simple = true, legacy_facedir_simple = true,
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
drop = "technic:hv_nuclear_reactor_core", drop = "technic:hv_nuclear_reactor_core",
drawtype = "nodebox",
light_source = 14, light_source = 14,
paramtype = "light", paramtype = "light",
node_box = {
type = "fixed",
fixed = node_box
},
_on_digiline_remote_receive = digiline_remote_def, _on_digiline_remote_receive = digiline_remote_def,
paramtype2 = "facedir",
can_dig = technic.machine_can_dig, can_dig = technic.machine_can_dig,
after_dig_node = melt_down_reactor, after_dig_node = melt_down_reactor,
on_destruct = function(pos) siren_set_state(pos, SS_OFF) end, on_destruct = function(pos) siren_set_state(pos, SS_OFF) end,

View File

@ -1,6 +1,9 @@
local S = technic.getter local S = technic.getter
local tube_entry = "^pipeworks_tube_connection_metallic.png"
local cable_entry = "^technic_cable_connection_overlay.png"
minetest.register_craft({ minetest.register_craft({
recipe = { recipe = {
{"technic:carbon_plate", "pipeworks:filter", "technic:composite_plate"}, {"technic:carbon_plate", "pipeworks:filter", "technic:composite_plate"},
@ -207,12 +210,14 @@ end
minetest.register_node("technic:quarry", { minetest.register_node("technic:quarry", {
description = S("%s Quarry"):format("HV"), description = S("%s Quarry"):format("HV"),
tiles = {"technic_carbon_steel_block.png", "technic_carbon_steel_block.png", tiles = {
"technic_carbon_steel_block.png", "technic_carbon_steel_block.png", "technic_carbon_steel_block.png"..tube_entry,
"technic_carbon_steel_block.png^default_tool_mesepick.png", "technic_carbon_steel_block.png"}, "technic_carbon_steel_block.png"..cable_entry,
inventory_image = minetest.inventorycube("technic_carbon_steel_block.png", "technic_carbon_steel_block.png"..cable_entry,
"technic_carbon_steel_block.png^default_tool_mesepick.png", "technic_carbon_steel_block.png"..cable_entry,
"technic_carbon_steel_block.png"), "technic_carbon_steel_block.png^default_tool_mesepick.png",
"technic_carbon_steel_block.png"..cable_entry
},
paramtype2 = "facedir", paramtype2 = "facedir",
groups = {cracky=2, tubedevice=1, technic_machine=1, technic_hv=1}, groups = {cracky=2, tubedevice=1, technic_machine=1, technic_hv=1},
connect_sides = {"bottom", "front", "left", "right"}, connect_sides = {"bottom", "front", "left", "right"},

View File

@ -4,6 +4,8 @@
local S = technic.getter local S = technic.getter
local cable_entry = "^technic_cable_connection_overlay.png"
minetest.register_alias("water_mill", "technic:water_mill") minetest.register_alias("water_mill", "technic:water_mill")
minetest.register_craft({ minetest.register_craft({
@ -50,9 +52,7 @@ local run = function(pos, node)
eu_supply = math.min(35 * water_flow, max_output) eu_supply = math.min(35 * water_flow, max_output)
production_level = math.floor(100 * eu_supply / max_output) production_level = math.floor(100 * eu_supply / max_output)
if production_level > 0 then meta:set_int("LV_EU_supply", eu_supply)
meta:set_int("LV_EU_supply", eu_supply)
end
meta:set_string("infotext", meta:set_string("infotext",
S("Hydro %s Generator"):format("LV").." ("..production_level.."%)") S("Hydro %s Generator"):format("LV").." ("..production_level.."%)")
@ -70,9 +70,14 @@ end
minetest.register_node("technic:water_mill", { minetest.register_node("technic:water_mill", {
description = S("Hydro %s Generator"):format("LV"), description = S("Hydro %s Generator"):format("LV"),
tiles = {"technic_water_mill_top.png", "technic_machine_bottom.png", tiles = {
"technic_water_mill_side.png", "technic_water_mill_side.png", "technic_water_mill_top.png",
"technic_water_mill_side.png", "technic_water_mill_side.png"}, "technic_machine_bottom.png"..cable_entry,
"technic_water_mill_side.png",
"technic_water_mill_side.png",
"technic_water_mill_side.png",
"technic_water_mill_side.png"
},
paramtype2 = "facedir", paramtype2 = "facedir",
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
technic_machine=1, technic_lv=1}, technic_machine=1, technic_lv=1},

View File

@ -5,6 +5,8 @@ minetest.register_alias("tool_workshop", "technic:tool_workshop")
local S = technic.getter local S = technic.getter
local tube_entry = "^pipeworks_tube_connection_wooden.png"
minetest.register_craft({ minetest.register_craft({
output = 'technic:tool_workshop', output = 'technic:tool_workshop',
recipe = { recipe = {
@ -83,8 +85,14 @@ end
minetest.register_node("technic:tool_workshop", { minetest.register_node("technic:tool_workshop", {
description = S("%s Tool Workshop"):format("MV"), description = S("%s Tool Workshop"):format("MV"),
paramtype2 = "facedir", paramtype2 = "facedir",
tiles = {"technic_workshop_top.png", "technic_machine_bottom.png", "technic_workshop_side.png", tiles = {
"technic_workshop_side.png", "technic_workshop_side.png", "technic_workshop_side.png"}, "technic_workshop_top.png"..tube_entry,
"technic_machine_bottom.png"..tube_entry,
"technic_workshop_side.png"..tube_entry,
"technic_workshop_side.png"..tube_entry,
"technic_workshop_side.png"..tube_entry,
"technic_workshop_side.png"
},
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, 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},
connect_sides = {"bottom", "back", "left", "right"}, connect_sides = {"bottom", "back", "left", "right"},

View File

@ -2,6 +2,7 @@
local S = technic.getter local S = technic.getter
local function deploy_node(inv, slot_name, pos, node, machine_node) local function deploy_node(inv, slot_name, pos, node, machine_node)
if node.param2 > 3 then return end
if node.name ~= "air" then if node.name ~= "air" then
if node.name == "ignore" or if node.name == "ignore" or
node.name == "default:lava_source" or node.name == "default:lava_source" or
@ -162,6 +163,7 @@ local function make_constructor(mark, length)
allow_metadata_inventory_put = technic.machine_inventory_put, allow_metadata_inventory_put = technic.machine_inventory_put,
allow_metadata_inventory_take = technic.machine_inventory_take, allow_metadata_inventory_take = technic.machine_inventory_take,
allow_metadata_inventory_move = technic.machine_inventory_move, allow_metadata_inventory_move = technic.machine_inventory_move,
on_rotate = screwdriver.rotate_simple
}) })
minetest.register_node("technic:constructor_mk"..mark.."_on", { minetest.register_node("technic:constructor_mk"..mark.."_on", {
@ -180,6 +182,7 @@ local function make_constructor(mark, length)
allow_metadata_inventory_put = technic.machine_inventory_put, allow_metadata_inventory_put = technic.machine_inventory_put,
allow_metadata_inventory_take = technic.machine_inventory_take, allow_metadata_inventory_take = technic.machine_inventory_take,
allow_metadata_inventory_move = technic.machine_inventory_move, allow_metadata_inventory_move = technic.machine_inventory_move,
on_rotate = false
}) })
end end

View File

@ -1,6 +1,10 @@
local S = technic.getter local S = technic.getter
local fs_helpers = pipeworks.fs_helpers
local tube_entry = "^pipeworks_tube_connection_metallic.png"
local function inject_items (pos) local function inject_items (pos)
local meta=minetest.get_meta(pos) local meta=minetest.get_meta(pos)
local inv = meta:get_inventory() local inv = meta:get_inventory()
@ -51,37 +55,59 @@ minetest.register_craft({
local function set_injector_formspec(meta) local function set_injector_formspec(meta)
local is_stack = meta:get_string("mode") == "whole stacks" local is_stack = meta:get_string("mode") == "whole stacks"
meta:set_string("formspec", meta:set_string("formspec",
"invsize[8,9;]".. "invsize[8,9;]"..
"item_image[0,0;1,1;technic:injector]".. "item_image[0,0;1,1;technic:injector]"..
"label[1,0;"..S("Self-Contained Injector").."]".. "label[1,0;"..S("Self-Contained Injector").."]"..
(is_stack and (is_stack and
"button[0,1;2,1;mode_item;"..S("Stackwise").."]" or "button[0,1;2,1;mode_item;"..S("Stackwise").."]" or
"button[0,1;2,1;mode_stack;"..S("Itemwise").."]").. "button[0,1;2,1;mode_stack;"..S("Itemwise").."]")..
"list[current_name;main;0,2;8,2;]".. "list[current_name;main;0,2;8,2;]"..
"list[current_player;main;0,5;8,4;]".. "list[current_player;main;0,5;8,4;]"..
"listring[]") "listring[]"..
fs_helpers.cycling_button(
meta,
pipeworks.button_base,
"splitstacks",
{
pipeworks.button_off,
pipeworks.button_on
}
)..pipeworks.button_label
)
end end
minetest.register_node("technic:injector", { minetest.register_node("technic:injector", {
description = S("Self-Contained Injector"), description = S("Self-Contained Injector"),
tiles = {"technic_injector_top.png", "technic_injector_bottom.png", "technic_injector_side.png", tiles = {
"technic_injector_side.png", "technic_injector_side.png", "technic_injector_side.png"}, "technic_injector_top.png"..tube_entry,
"technic_injector_bottom.png",
"technic_injector_side.png"..tube_entry,
"technic_injector_side.png"..tube_entry,
"technic_injector_side.png"..tube_entry,
"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},
tube = { tube = {
can_insert = function(pos, node, stack, direction) can_insert = function(pos, node, stack, direction)
return minetest.get_meta(pos):get_inventory():room_for_item("main",stack) local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if meta:get_int("splitstacks") == 1 then
stack = stack:peek_item(1)
end
return meta:get_inventory():room_for_item("main", stack)
end, end,
insert_object = function(pos, node, stack, direction) insert_object = function(pos, node, stack, direction)
return minetest.get_meta(pos):get_inventory():add_item("main",stack) return minetest.get_meta(pos):get_inventory():add_item("main", stack)
end, end,
connect_sides = {left=1, right=1, front=1, back=1, top=1, bottom=1}, connect_sides = {left=1, right=1, back=1, top=1, bottom=1},
}, },
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
on_construct = function(pos) on_construct = function(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
meta:set_string("infotext", S("Self-Contained Injector")) meta:set_string("infotext", S("Self-Contained Injector"))
local inv = meta:get_inventory() local inv = meta:get_inventory()
inv:set_size("main", 8*4) inv:set_size("main", 8*2)
meta:set_string("mode","single items") meta:set_string("mode","single items")
set_injector_formspec(meta) set_injector_formspec(meta)
end, end,
@ -94,6 +120,12 @@ minetest.register_node("technic:injector", {
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
if fields.mode_item then meta:set_string("mode", "single items") end if fields.mode_item then meta:set_string("mode", "single items") end
if fields.mode_stack then meta:set_string("mode", "whole stacks") end if fields.mode_stack then meta:set_string("mode", "whole stacks") end
if fields["fs_helpers_cycling:0:splitstacks"]
or fields["fs_helpers_cycling:1:splitstacks"] then
if not pipeworks.may_configure(pos, sender) then return end
fs_helpers.on_receive_fields(pos, fields)
end
set_injector_formspec(meta) set_injector_formspec(meta)
end, end,
allow_metadata_inventory_put = technic.machine_inventory_put, allow_metadata_inventory_put = technic.machine_inventory_put,

View File

@ -4,6 +4,8 @@
local S = technic.getter local S = technic.getter
local cable_entry = "^technic_cable_connection_overlay.png"
minetest.register_craft({ minetest.register_craft({
output = "technic:power_monitor", output = "technic:power_monitor",
recipe = { recipe = {
@ -17,10 +19,10 @@ minetest.register_node("technic:power_monitor",{
description = S("Power Monitor"), description = S("Power Monitor"),
tiles = { tiles = {
"technic_power_monitor_sides.png", "technic_power_monitor_sides.png",
"technic_power_monitor_bottom_back.png", "technic_power_monitor_sides.png"..cable_entry,
"technic_power_monitor_sides.png", "technic_power_monitor_sides.png",
"technic_power_monitor_sides.png", "technic_power_monitor_sides.png",
"technic_power_monitor_bottom_back.png", "technic_power_monitor_sides.png"..cable_entry,
"technic_power_monitor_front.png" "technic_power_monitor_front.png"
}, },
paramtype2 = "facedir", paramtype2 = "facedir",

View File

@ -2,6 +2,10 @@
local digilines_path = minetest.get_modpath("digilines") local digilines_path = minetest.get_modpath("digilines")
local S = technic.getter local S = technic.getter
local tube_entry = "^pipeworks_tube_connection_metallic.png"
local cable_entry = "^technic_cable_connection_overlay.png"
local fs_helpers = pipeworks.fs_helpers
technic.register_power_tool("technic:battery", 10000) technic.register_power_tool("technic:battery", 10000)
technic.register_power_tool("technic:red_energy_crystal", 50000) technic.register_power_tool("technic:red_energy_crystal", 50000)
@ -31,34 +35,80 @@ minetest.register_tool("technic:battery", {
} }
}) })
-- x+2 + (z+2)*2
local dirtab = {
[4] = 2,
[5] = 3,
[7] = 1,
[8] = 0
}
local tube = { local tube = {
insert_object = function(pos, node, stack, direction) insert_object = function(pos, node, stack, direction)
if direction.y == 0 then print(minetest.pos_to_string(direction), dirtab[direction.x+2+(direction.z+2)*2], node.param2)
if direction.y == 1
or (direction.y == 0 and dirtab[direction.x+2+(direction.z+2)*2] == node.param2) then
return stack return stack
end end
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local inv = meta:get_inventory() local inv = meta:get_inventory()
if direction.y > 0 then if direction.y == 0 then
return inv:add_item("src", stack) return inv:add_item("src", stack)
else else
return inv:add_item("dst", stack) return inv:add_item("dst", stack)
end end
end, end,
can_insert = function(pos, node, stack, direction) can_insert = function(pos, node, stack, direction)
if direction.y == 0 then print(minetest.pos_to_string(direction), dirtab[direction.x+2+(direction.z+2)*2], node.param2)
if direction.y == 1
or (direction.y == 0 and dirtab[direction.x+2+(direction.z+2)*2] == node.param2) then
return false return false
end end
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local inv = meta:get_inventory() local inv = meta:get_inventory()
if direction.y > 0 then if direction.y == 0 then
if meta:get_int("split_src_stacks") == 1 then
stack = stack:peek_item(1)
end
return inv:room_for_item("src", stack) return inv:room_for_item("src", stack)
else else
if meta:get_int("split_dst_stacks") == 1 then
stack = stack:peek_item(1)
end
return inv:room_for_item("dst", stack) return inv:room_for_item("dst", stack)
end end
end, end,
connect_sides = {left=1, right=1, back=1, top=1, bottom=1}, connect_sides = {left=1, right=1, back=1, top=1},
} }
local function add_on_off_buttons(meta, ltier, charge_percent)
local formspec = ""
if ltier == "mv" or ltier == "hv" then
formspec = "image[1,1;1,2;technic_power_meter_bg.png"
.."^[lowpart:"..charge_percent
..":technic_power_meter_fg.png]"..
fs_helpers.cycling_button(
meta,
"image_button[3,2.0;1,0.6",
"split_src_stacks",
{
pipeworks.button_off,
pipeworks.button_on
}
).."label[3.9,2.01;Allow splitting incoming 'charge' stacks from tubes]"..
fs_helpers.cycling_button(
meta,
"image_button[3,2.5;1,0.6",
"split_dst_stacks",
{
pipeworks.button_off,
pipeworks.button_on
}
).."label[3.9,2.51;Allow splitting incoming 'discharge' stacks]"
end
return formspec
end
function technic.register_battery_box(data) function technic.register_battery_box(data)
local tier = data.tier local tier = data.tier
local ltier = string.lower(tier) local ltier = string.lower(tier)
@ -78,6 +128,7 @@ function technic.register_battery_box(data)
"listring[current_player;main]".. "listring[current_player;main]"..
"listring[context;src]".. "listring[context;src]"..
"listring[current_player;main]" "listring[current_player;main]"
if digilines_path then if digilines_path then
formspec = formspec.."button[0.6,3.7;2,1;edit_channel;edit Channel]" formspec = formspec.."button[0.6,3.7;2,1;edit_channel;edit Channel]"
end end
@ -94,7 +145,14 @@ function technic.register_battery_box(data)
end end
local run = function(pos, node) local run = function(pos, node)
local below = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z})
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
if not technic.is_tier_cable(below.name, tier) then
meta:set_string("infotext", S("%s Battery Box Has No Network"):format(tier))
return
end
local eu_input = meta:get_int(tier.."_EU_input") local eu_input = meta:get_int(tier.."_EU_input")
local current_charge = meta:get_int("internal_EU_charge") local current_charge = meta:get_int("internal_EU_charge")
@ -149,12 +207,7 @@ function technic.register_battery_box(data)
end end
local charge_percent = math.floor(current_charge / max_charge * 100) local charge_percent = math.floor(current_charge / max_charge * 100)
meta:set_string("formspec", meta:set_string("formspec", formspec..add_on_off_buttons(meta, ltier, charge_percent))
formspec..
"image[1,1;1,2;technic_power_meter_bg.png"
.."^[lowpart:"..charge_percent
..":technic_power_meter_fg.png]")
local infotext = S("@1 Battery Box: @2/@3", tier, local infotext = S("@1 Battery Box: @2/@3", tier,
technic.pretty_num(current_charge), technic.pretty_num(max_charge)) technic.pretty_num(current_charge), technic.pretty_num(max_charge))
if eu_input == 0 then if eu_input == 0 then
@ -175,15 +228,26 @@ function technic.register_battery_box(data)
groups.tubedevice_receiver = 1 groups.tubedevice_receiver = 1
end end
local top_tex = "technic_"..ltier.."_battery_box_top.png"..tube_entry
local front_tex = "technic_"..ltier.."_battery_box_front.png^technic_power_meter"..i..".png"
local side_tex = "technic_"..ltier.."_battery_box_side.png"..tube_entry
local bottom_tex = "technic_"..ltier.."_battery_box_bottom.png"..cable_entry
if ltier == "lv" then
top_tex = "technic_"..ltier.."_battery_box_top.png"
front_tex = "technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png"
side_tex = "technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png"
end
minetest.register_node("technic:"..ltier.."_battery_box"..i, { minetest.register_node("technic:"..ltier.."_battery_box"..i, {
description = S("%s Battery Box"):format(tier), description = S("%s Battery Box"):format(tier),
tiles = { tiles = {
"technic_"..ltier.."_battery_box_top.png", top_tex,
"technic_"..ltier.."_battery_box_bottom.png", bottom_tex,
"technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png", side_tex,
"technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png", side_tex,
"technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png", side_tex,
"technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png"}, front_tex},
groups = groups, groups = groups,
connect_sides = {"bottom"}, connect_sides = {"bottom"},
tube = data.tube and tube or nil, tube = data.tube and tube or nil,
@ -192,11 +256,17 @@ function technic.register_battery_box(data)
drop = "technic:"..ltier.."_battery_box0", drop = "technic:"..ltier.."_battery_box0",
on_construct = function(pos) on_construct = function(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local EU_upgrade, tube_upgrade = 0, 0
if data.upgrade then
EU_upgrade, tube_upgrade = technic.handle_machine_upgrades(meta)
end
local max_charge = data.max_charge * (1 + EU_upgrade / 10)
local charge = meta:get_int("internal_EU_charge")
local cpercent = math.floor(charge / max_charge * 100)
local inv = meta:get_inventory() local inv = meta:get_inventory()
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
meta:set_string("infotext", S("%s Battery Box"):format(tier)) meta:set_string("infotext", S("%s Battery Box"):format(tier))
meta:set_string("formspec", formspec) meta:set_string("formspec", formspec..add_on_off_buttons(meta, ltier, cpercent))
meta:set_string("channel", ltier.."_battery_box"..minetest.pos_to_string(pos)) meta:set_string("channel", ltier.."_battery_box"..minetest.pos_to_string(pos))
meta:set_int(tier.."_EU_demand", 0) meta:set_int(tier.."_EU_demand", 0)
meta:set_int(tier.."_EU_supply", 0) meta:set_int(tier.."_EU_supply", 0)
@ -212,16 +282,32 @@ function technic.register_battery_box(data)
allow_metadata_inventory_take = technic.machine_inventory_take, allow_metadata_inventory_take = technic.machine_inventory_take,
allow_metadata_inventory_move = technic.machine_inventory_move, allow_metadata_inventory_move = technic.machine_inventory_move,
technic_run = run, technic_run = run,
on_rotate = screwdriver.rotate_simple,
after_place_node = data.tube and pipeworks.after_place, after_place_node = data.tube and pipeworks.after_place,
after_dig_node = technic.machine_after_dig_node, after_dig_node = technic.machine_after_dig_node,
on_receive_fields = function(pos, formname, fields, sender) on_receive_fields = function(pos, formname, fields, sender)
if not fields.edit_channel then
return
end
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
minetest.show_formspec(sender:get_player_name(), local nodename = minetest.get_node(pos).name
if fields.edit_channel then
minetest.show_formspec(sender:get_player_name(),
"technic:battery_box_edit_channel"..minetest.pos_to_string(pos), "technic:battery_box_edit_channel"..minetest.pos_to_string(pos),
"field[channel;Digiline Channel;"..meta:get_string("channel").."]") "field[channel;Digiline Channel;"..meta:get_string("channel").."]")
elseif fields["fs_helpers_cycling:0:split_src_stacks"]
or fields["fs_helpers_cycling:0:split_dst_stacks"]
or fields["fs_helpers_cycling:1:split_src_stacks"]
or fields["fs_helpers_cycling:1:split_dst_stacks"] then
local meta = minetest.get_meta(pos)
if not pipeworks.may_configure(pos, sender) then return end
fs_helpers.on_receive_fields(pos, fields)
local EU_upgrade, tube_upgrade = 0, 0
if data.upgrade then
EU_upgrade, tube_upgrade = technic.handle_machine_upgrades(meta)
end
local max_charge = data.max_charge * (1 + EU_upgrade / 10)
local charge = meta:get_int("internal_EU_charge")
local cpercent = math.floor(charge / max_charge * 100)
meta:set_string("formspec", formspec..add_on_off_buttons(meta, ltier, cpercent))
end
end, end,
digiline = { digiline = {
receptor = {action = function() end}, receptor = {action = function() end},
@ -277,7 +363,6 @@ minetest.register_on_player_receive_fields(
end end
) )
function technic.charge_tools(meta, batt_charge, charge_step) function technic.charge_tools(meta, batt_charge, charge_step)
local inv = meta:get_inventory() local inv = meta:get_inventory()
if inv:is_empty("src") then if inv:is_empty("src") then

View File

@ -121,7 +121,8 @@ function technic.register_cable(tier, size)
local ltier = string.lower(tier) local ltier = string.lower(tier)
cable_tier["technic:"..ltier.."_cable"] = tier cable_tier["technic:"..ltier.."_cable"] = tier
local groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2} local groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
["technic_"..ltier.."_cable"] = 1}
local node_box = { local node_box = {
type = "connected", type = "connected",
@ -146,11 +147,97 @@ function technic.register_cable(tier, size)
sunlight_propagates = true, sunlight_propagates = true,
drawtype = "nodebox", drawtype = "nodebox",
node_box = node_box, node_box = node_box,
connects_to = {"technic:"..ltier.."_cable", connects_to = {"group:technic_"..ltier.."_cable",
"group:technic_"..ltier, "group:technic_all_tiers"}, "group:technic_"..ltier, "group:technic_all_tiers"},
on_construct = clear_networks, on_construct = clear_networks,
on_destruct = clear_networks, on_destruct = clear_networks,
}) })
local xyz = {
["-x"] = 1,
["-y"] = 2,
["-z"] = 3,
["x"] = 4,
["y"] = 5,
["z"] = 6,
}
local notconnects = {
[1] = "left",
[2] = "bottom",
[3] = "front",
[4] = "right",
[5] = "top",
[6] = "back",
}
local function s(p)
if p:find("-") then
return p:sub(2)
else
return "-"..p
end
end
for p, i in pairs(xyz) do
local def = {
description = S("%s Cable Plate"):format(tier),
tiles = {"technic_"..ltier.."_cable.png"},
groups = table.copy(groups),
sounds = default.node_sound_wood_defaults(),
drop = "technic:"..ltier.."_cable_plate_1",
paramtype = "light",
sunlight_propagates = true,
drawtype = "nodebox",
node_box = table.copy(node_box),
connects_to = {"group:technic_"..ltier.."_cable",
"group:technic_"..ltier, "group:technic_all_tiers"},
on_construct = clear_networks,
on_destruct = clear_networks,
}
def.node_box.fixed = {
{-size, -size, -size, size, size, size},
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}
}
def.node_box.fixed[1][xyz[p]] = 7/16 * (i-3.5)/math.abs(i-3.5)
def.node_box.fixed[2][xyz[s(p)]] = 3/8 * (i-3.5)/math.abs(i-3.5)
def.node_box["connect_"..notconnects[i]] = nil
if i == 1 then
def.on_place = function(itemstack, placer, pointed_thing)
local pointed_thing_diff = vector.subtract(pointed_thing.above, pointed_thing.under)
local num
for k, v in pairs(pointed_thing_diff) do
if v ~= 0 then
num = xyz[s(tostring(v):sub(-2, -2)..k)]
break
end
end
minetest.set_node(pointed_thing.above, {name = "technic:"..ltier.."_cable_plate_"..num})
if not (creative and creative.is_enabled_for(placer)) then
itemstack:take_item()
end
return itemstack
end
else
def.groups.not_in_creative_inventory = 1
end
minetest.register_node("technic:"..ltier.."_cable_plate_"..i, def)
cable_tier["technic:"..ltier.."_cable_plate_"..i] = tier
end
local c = "technic:"..ltier.."_cable"
minetest.register_craft({
output = "technic:"..ltier.."_cable_plate_1 5",
recipe = {
{"", "", c},
{c , c , c},
{"", "", c},
}
})
minetest.register_craft({
output = c,
recipe = {
{"technic:"..ltier.."_cable_plate_1"},
}
})
end end

View File

@ -20,11 +20,11 @@ local recipes = {
} }
-- defuse the default sandstone recipe, since we have the compressor to take over in a more realistic manner -- defuse the default sandstone recipe, since we have the compressor to take over in a more realistic manner
minetest.register_craft({ minetest.clear_craft({
output = "default:sand 0", output = "default:sandstone",
recipe = { recipe = {
{'group:sand', 'group:sand'}, {'group:sand', 'group:sand'},
{'group:sand', 'group:sand'} {'group:sand', 'group:sand'}
}, },
}) })

View File

@ -1,5 +1,8 @@
local S = technic.getter local S = technic.getter
local fs_helpers = pipeworks.fs_helpers
local tube_entry = "^pipeworks_tube_connection_metallic.png"
local tube = { local tube = {
insert_object = function(pos, node, stack, direction) insert_object = function(pos, node, stack, direction)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
@ -9,12 +12,16 @@ local tube = {
can_insert = function(pos, node, stack, direction) can_insert = function(pos, node, stack, direction)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local inv = meta:get_inventory() local inv = meta:get_inventory()
if meta:get_int("splitstacks") == 1 then
stack = stack:peek_item(1)
end
return inv:room_for_item("src", stack) return inv:room_for_item("src", stack)
end, end,
connect_sides = {left=1, right=1, back=1, top=1, bottom=1}, connect_sides = {left=1, right=1, back=1, top=1, bottom=1},
} }
function technic.register_generator(data) function technic.register_generator(data)
local tier = data.tier local tier = data.tier
local ltier = string.lower(tier) local ltier = string.lower(tier)
@ -76,21 +83,44 @@ function technic.register_generator(data)
if burn_totaltime == 0 then burn_totaltime = 1 end if burn_totaltime == 0 then burn_totaltime = 1 end
local percent = math.floor((burn_time / burn_totaltime) * 100) local percent = math.floor((burn_time / burn_totaltime) * 100)
meta:set_string("infotext", desc.." ("..percent.."%)") meta:set_string("infotext", desc.." ("..percent.."%)")
meta:set_string("formspec",
"size[8, 9]".. local form_buttons = ""
"label[0, 0;"..minetest.formspec_escape(desc).."]".. if ltier ~= "lv" then
"list[current_name;src;3, 1;1, 1;]".. form_buttons = fs_helpers.cycling_button(
"image[4, 1;1, 1;default_furnace_fire_bg.png^[lowpart:".. meta,
(percent)..":default_furnace_fire_fg.png]".. pipeworks.button_base,
"list[current_player;main;0, 5;8, 4;]".. "splitstacks",
"listring[]") {
pipeworks.button_off,
pipeworks.button_on
}
)..pipeworks.button_label
end
meta:set_string("formspec",
"size[8, 9]"..
"label[0, 0;"..minetest.formspec_escape(desc).."]"..
"list[current_name;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
)
end end
local tentry = tube_entry
if ltier == "lv" then tentry = "" end
minetest.register_node("technic:"..ltier.."_generator", { minetest.register_node("technic:"..ltier.."_generator", {
description = desc, description = desc,
tiles = {"technic_"..ltier.."_generator_top.png", "technic_machine_bottom.png", tiles = {
"technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_top.png"..tentry,
"technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_front.png"}, "technic_machine_bottom.png"..tentry,
"technic_"..ltier.."_generator_side.png"..tentry,
"technic_"..ltier.."_generator_side.png"..tentry,
"technic_"..ltier.."_generator_side.png"..tentry,
"technic_"..ltier.."_generator_front.png"
},
paramtype2 = "facedir", paramtype2 = "facedir",
groups = groups, groups = groups,
connect_sides = {"bottom", "back", "left", "right"}, connect_sides = {"bottom", "back", "left", "right"},
@ -99,11 +129,24 @@ function technic.register_generator(data)
tube = data.tube and tube or nil, tube = data.tube and tube or nil,
on_construct = function(pos) on_construct = function(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local node = minetest.get_node(pos)
meta:set_string("infotext", desc) meta:set_string("infotext", desc)
meta:set_int(data.tier.."_EU_supply", 0) meta:set_int(data.tier.."_EU_supply", 0)
meta:set_int("burn_time", 0) meta:set_int("burn_time", 0)
meta:set_int("tube_time", 0) meta:set_int("tube_time", 0)
meta:set_string("formspec", generator_formspec) local form_buttons = ""
if not string.find(node.name, ":lv_") then
form_buttons = fs_helpers.cycling_button(
meta,
pipeworks.button_base,
"splitstacks",
{
pipeworks.button_off,
pipeworks.button_on
}
)..pipeworks.button_label
end
meta:set_string("formspec", generator_formspec..form_buttons)
local inv = meta:get_inventory() local inv = meta:get_inventory()
inv:set_size("src", 1) inv:set_size("src", 1)
end, end,
@ -113,14 +156,39 @@ function technic.register_generator(data)
allow_metadata_inventory_move = technic.machine_inventory_move, allow_metadata_inventory_move = technic.machine_inventory_move,
technic_run = run, technic_run = run,
after_place_node = data.tube and pipeworks.after_place, after_place_node = data.tube and pipeworks.after_place,
after_dig_node = technic.machine_after_dig_node after_dig_node = technic.machine_after_dig_node,
on_receive_fields = function(pos, formname, fields, sender)
if not pipeworks.may_configure(pos, sender) then return end
fs_helpers.on_receive_fields(pos, fields)
local meta = minetest.get_meta(pos)
local node = minetest.get_node(pos)
local form = generator_formspec
local form_buttons = ""
if not string.find(node.name, ":lv_") then
form_buttons = fs_helpers.cycling_button(
meta,
pipeworks.button_base,
"splitstacks",
{
pipeworks.button_off,
pipeworks.button_on
}
)..pipeworks.button_label
end
meta:set_string("formspec", generator_formspec..form_buttons)
end,
}) })
minetest.register_node("technic:"..ltier.."_generator_active", { minetest.register_node("technic:"..ltier.."_generator_active", {
description = desc, description = desc,
tiles = {"technic_"..ltier.."_generator_top.png", "technic_machine_bottom.png", tiles = {
"technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_top.png"..tube_entry,
"technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_front_active.png"}, "technic_machine_bottom.png"..tube_entry,
"technic_"..ltier.."_generator_side.png"..tube_entry,
"technic_"..ltier.."_generator_side.png"..tube_entry,
"technic_"..ltier.."_generator_side.png"..tube_entry,
"technic_"..ltier.."_generator_front_active.png"
},
paramtype2 = "facedir", paramtype2 = "facedir",
groups = active_groups, groups = active_groups,
connect_sides = {"bottom"}, connect_sides = {"bottom"},
@ -129,6 +197,7 @@ function technic.register_generator(data)
tube = data.tube and tube or nil, tube = data.tube and tube or nil,
drop = "technic:"..ltier.."_generator", drop = "technic:"..ltier.."_generator",
can_dig = technic.machine_can_dig, can_dig = technic.machine_can_dig,
after_dig_node = technic.machine_after_dig_node,
allow_metadata_inventory_put = technic.machine_inventory_put, allow_metadata_inventory_put = technic.machine_inventory_put,
allow_metadata_inventory_take = technic.machine_inventory_take, allow_metadata_inventory_take = technic.machine_inventory_take,
allow_metadata_inventory_move = technic.machine_inventory_move, allow_metadata_inventory_move = technic.machine_inventory_move,
@ -139,7 +208,8 @@ function technic.register_generator(data)
end, end,
on_timer = function(pos, node) on_timer = function(pos, node)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local node = minetest.get_node(pos)
-- Connected back? -- Connected back?
if meta:get_int(tier.."_EU_timeout") > 0 then return false end if meta:get_int(tier.."_EU_timeout") > 0 then return false end
@ -157,6 +227,19 @@ function technic.register_generator(data)
burn_time = burn_time - 1 burn_time = burn_time - 1
meta:set_int("burn_time", burn_time) meta:set_int("burn_time", burn_time)
local percent = math.floor(burn_time / burn_totaltime * 100) local percent = math.floor(burn_time / burn_totaltime * 100)
local form_buttons = ""
if not string.find(node.name, ":lv_") then
form_buttons = fs_helpers.cycling_button(
meta,
pipeworks.button_base,
"splitstacks",
{
pipeworks.button_off,
pipeworks.button_on
}
)..pipeworks.button_label
end
meta:set_string("formspec", meta:set_string("formspec",
"size[8, 9]".. "size[8, 9]"..
"label[0, 0;"..minetest.formspec_escape(desc).."]".. "label[0, 0;"..minetest.formspec_escape(desc).."]"..
@ -164,9 +247,44 @@ function technic.register_generator(data)
"image[4, 1;1, 1;default_furnace_fire_bg.png^[lowpart:".. "image[4, 1;1, 1;default_furnace_fire_bg.png^[lowpart:"..
(percent)..":default_furnace_fire_fg.png]".. (percent)..":default_furnace_fire_fg.png]"..
"list[current_player;main;0, 5;8, 4;]".. "list[current_player;main;0, 5;8, 4;]"..
"listring[]") "listring[]"..
form_buttons
)
return true return true
end, end,
on_receive_fields = function(pos, formname, fields, sender)
if not pipeworks.may_configure(pos, sender) then return end
fs_helpers.on_receive_fields(pos, fields)
local meta = minetest.get_meta(pos)
local node = minetest.get_node(pos)
local form_buttons = ""
if not string.find(node.name, ":lv_") then
form_buttons = fs_helpers.cycling_button(
meta,
pipeworks.button_base,
"splitstacks",
{
pipeworks.button_off,
pipeworks.button_on
}
)..pipeworks.button_label
end
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)
meta:set_string("formspec",
"size[8, 9]"..
"label[0, 0;"..minetest.formspec_escape(desc).."]"..
"list[current_name;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
)
end,
}) })
technic.register_machine(tier, "technic:"..ltier.."_generator", technic.producer) technic.register_machine(tier, "technic:"..ltier.."_generator", technic.producer)

View File

@ -30,8 +30,7 @@ local recipes = {
} }
-- defuse the sandstone -> 4 sand recipe to avoid infinite sand bugs (also consult the inverse compressor recipe) -- defuse the sandstone -> 4 sand recipe to avoid infinite sand bugs (also consult the inverse compressor recipe)
minetest.register_craft({ minetest.clear_craft({
output = "default:sandstone 0",
recipe = { recipe = {
{'default:sandstone'} {'default:sandstone'}
}, },
@ -63,12 +62,6 @@ for _, data in pairs(recipes) do
technic.register_grinder_recipe({input = {data[1]}, output = data[2]}) technic.register_grinder_recipe({input = {data[1]}, output = data[2]})
end end
-- defuse common grinder unfriendly recipes
if minetest.get_modpath("fake_fire") then -- from homedecor_modpack
minetest.register_craft({ output='default:cobble 0', recipe={{'default:cobble'}}})
minetest.register_craft({ output='default:gravel 0', recipe={{'default:gravel'}}})
end
-- dusts -- dusts
local function register_dust(name, ingot) local function register_dust(name, ingot)
local lname = string.lower(name) local lname = string.lower(name)

View File

@ -1,6 +1,9 @@
local S = technic.getter local S = technic.getter
local fs_helpers = pipeworks.fs_helpers
local tube_entry = "^pipeworks_tube_connection_metallic.png"
local tube = { local tube = {
insert_object = function(pos, node, stack, direction) insert_object = function(pos, node, stack, direction)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
@ -10,6 +13,9 @@ local tube = {
can_insert = function(pos, node, stack, direction) can_insert = function(pos, node, stack, direction)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local inv = meta:get_inventory() local inv = meta:get_inventory()
if meta:get_int("splitstacks") == 1 then
stack = stack:peek_item(1)
end
return inv:room_for_item("src", stack) return inv:room_for_item("src", stack)
end, end,
connect_sides = {left = 1, right = 1, back = 1, top = 1, bottom = 1}, connect_sides = {left = 1, right = 1, back = 1, top = 1, bottom = 1},
@ -133,15 +139,21 @@ function technic.register_base_machine(data)
inv:set_list("dst", inv:get_list("dst_tmp")) inv:set_list("dst", inv:get_list("dst_tmp"))
end end
end end
local tentry = tube_entry
if ltier == "lv" then
tentry = ""
end
minetest.register_node("technic:"..ltier.."_"..machine_name, { minetest.register_node("technic:"..ltier.."_"..machine_name, {
description = machine_desc:format(tier), description = machine_desc:format(tier),
tiles = {"technic_"..ltier.."_"..machine_name.."_top.png", tiles = {
"technic_"..ltier.."_"..machine_name.."_bottom.png", "technic_"..ltier.."_"..machine_name.."_top.png"..tentry,
"technic_"..ltier.."_"..machine_name.."_side.png", "technic_"..ltier.."_"..machine_name.."_bottom.png"..tentry,
"technic_"..ltier.."_"..machine_name.."_side.png", "technic_"..ltier.."_"..machine_name.."_side.png"..tentry,
"technic_"..ltier.."_"..machine_name.."_side.png", "technic_"..ltier.."_"..machine_name.."_side.png"..tentry,
"technic_"..ltier.."_"..machine_name.."_front.png"}, "technic_"..ltier.."_"..machine_name.."_side.png"..tentry,
"technic_"..ltier.."_"..machine_name.."_front.png"
},
paramtype2 = "facedir", paramtype2 = "facedir",
groups = groups, groups = groups,
tube = data.tube and tube or nil, tube = data.tube and tube or nil,
@ -151,9 +163,23 @@ function technic.register_base_machine(data)
on_construct = function(pos) on_construct = function(pos)
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local form_buttons = ""
if not string.find(node.name, ":lv_") then
form_buttons = fs_helpers.cycling_button(
meta,
pipeworks.button_base,
"splitstacks",
{
pipeworks.button_off,
pipeworks.button_on
}
)..pipeworks.button_label
end
meta:set_string("infotext", machine_desc:format(tier)) meta:set_string("infotext", machine_desc:format(tier))
meta:set_int("tube_time", 0) meta:set_int("tube_time", 0)
meta:set_string("formspec", formspec) meta:set_string("formspec", formspec..form_buttons)
local inv = meta:get_inventory() local inv = meta:get_inventory()
inv:set_size("src", input_size) inv:set_size("src", input_size)
inv:set_size("dst", 4) inv:set_size("dst", 4)
@ -166,17 +192,38 @@ function technic.register_base_machine(data)
allow_metadata_inventory_move = technic.machine_inventory_move, allow_metadata_inventory_move = technic.machine_inventory_move,
technic_run = run, technic_run = run,
after_place_node = data.tube and pipeworks.after_place, after_place_node = data.tube and pipeworks.after_place,
after_dig_node = technic.machine_after_dig_node after_dig_node = technic.machine_after_dig_node,
on_receive_fields = function(pos, formname, fields, sender)
local node = minetest.get_node(pos)
if not pipeworks.may_configure(pos, sender) then return end
fs_helpers.on_receive_fields(pos, fields)
local meta = minetest.get_meta(pos)
local form_buttons = ""
if not string.find(node.name, ":lv_") then
form_buttons = fs_helpers.cycling_button(
meta,
pipeworks.button_base,
"splitstacks",
{
pipeworks.button_off,
pipeworks.button_on
}
)..pipeworks.button_label
end
meta:set_string("formspec", formspec..form_buttons)
end,
}) })
minetest.register_node("technic:"..ltier.."_"..machine_name.."_active",{ minetest.register_node("technic:"..ltier.."_"..machine_name.."_active",{
description = machine_desc:format(tier), description = machine_desc:format(tier),
tiles = {"technic_"..ltier.."_"..machine_name.."_top.png", tiles = {
"technic_"..ltier.."_"..machine_name.."_bottom.png", "technic_"..ltier.."_"..machine_name.."_top.png"..tentry,
"technic_"..ltier.."_"..machine_name.."_side.png", "technic_"..ltier.."_"..machine_name.."_bottom.png"..tentry,
"technic_"..ltier.."_"..machine_name.."_side.png", "technic_"..ltier.."_"..machine_name.."_side.png"..tentry,
"technic_"..ltier.."_"..machine_name.."_side.png", "technic_"..ltier.."_"..machine_name.."_side.png"..tentry,
"technic_"..ltier.."_"..machine_name.."_front_active.png"}, "technic_"..ltier.."_"..machine_name.."_side.png"..tentry,
"technic_"..ltier.."_"..machine_name.."_front_active.png"
},
paramtype2 = "facedir", paramtype2 = "facedir",
drop = "technic:"..ltier.."_"..machine_name, drop = "technic:"..ltier.."_"..machine_name,
groups = active_groups, groups = active_groups,
@ -190,6 +237,25 @@ function technic.register_base_machine(data)
allow_metadata_inventory_move = technic.machine_inventory_move, allow_metadata_inventory_move = technic.machine_inventory_move,
technic_run = run, technic_run = run,
technic_disabled_machine_name = "technic:"..ltier.."_"..machine_name, technic_disabled_machine_name = "technic:"..ltier.."_"..machine_name,
on_receive_fields = function(pos, formname, fields, sender)
local node = minetest.get_node(pos)
if not pipeworks.may_configure(pos, sender) then return end
fs_helpers.on_receive_fields(pos, fields)
local meta = minetest.get_meta(pos)
local form_buttons = ""
if not string.find(node.name, ":lv_") then
form_buttons = fs_helpers.cycling_button(
meta,
pipeworks.button_base,
"splitstacks",
{
pipeworks.button_off,
pipeworks.button_on
}
)..pipeworks.button_label
end
meta:set_string("formspec", formspec..form_buttons)
end,
}) })
technic.register_machine(tier, "technic:"..ltier.."_"..machine_name, technic.receiver) technic.register_machine(tier, "technic:"..ltier.."_"..machine_name, technic.receiver)

View File

@ -7,11 +7,19 @@
-- Once the receiver side is powered it will deliver power to the other side. -- Once the receiver side is powered it will deliver power to the other side.
-- Unused power is wasted just like any other producer! -- Unused power is wasted just like any other producer!
local digilines_path = minetest.get_modpath("digilines")
local S = technic.getter local S = technic.getter
local cable_entry = "^technic_cable_connection_overlay.png"
local function set_supply_converter_formspec(meta) local function set_supply_converter_formspec(meta)
local formspec = "size[5,2.25]".. local formspec = "size[5,2.25]"..
"field[0.3,0.5;2,1;power;"..S("Input Power")..";"..meta:get_int("power").."]" "field[0.3,0.5;2,1;power;"..S("Input Power")..";"..meta:get_int("power").."]"
if digilines_path then
formspec = formspec..
"field[2.3,0.5;3,1;channel;Digiline Channel;"..meta:get_string("channel").."]"
end
-- The names for these toggle buttons are explicit about which -- The names for these toggle buttons are explicit about which
-- state they'll switch to, so that multiple presses (arising -- state they'll switch to, so that multiple presses (arising
-- from the ambiguity between lag and a missed press) only make -- from the ambiguity between lag and a missed press) only make
@ -34,13 +42,14 @@ local supply_converter_receive_fields = function(pos, formname, fields, sender)
local power = nil local power = nil
if fields.power then if fields.power then
power = tonumber(fields.power) or 0 power = tonumber(fields.power) or 0
power = 100 * math.floor(power / 100)
power = math.max(power, 0) power = math.max(power, 0)
power = math.min(power, 10000) power = math.min(power, 10000)
power = 100 * math.floor(power / 100)
if power == meta:get_int("power") then power = nil end if power == meta:get_int("power") then power = nil end
end end
if power then meta:set_int("power", power) end if power then meta:set_int("power", power) end
if fields.enable then meta:set_int("enabled", 1) end if fields.channel then meta:set_string("channel", fields.channel) end
if fields.enable then meta:set_int("enabled", 1) end
if fields.disable then meta:set_int("enabled", 0) end if fields.disable then meta:set_int("enabled", 0) end
if fields.mesecon_mode_0 then meta:set_int("mesecon_mode", 0) end if fields.mesecon_mode_0 then meta:set_int("mesecon_mode", 0) end
if fields.mesecon_mode_1 then meta:set_int("mesecon_mode", 1) end if fields.mesecon_mode_1 then meta:set_int("mesecon_mode", 1) end
@ -58,6 +67,48 @@ local mesecons = {
} }
} }
local digiline_def = {
receptor = {action = function() end},
effector = {
action = function(pos, node, channel, msg)
local meta = minetest.get_meta(pos)
if channel ~= meta:get_string("channel") then
return
end
msg = msg:lower()
if msg == "get" then
digilines.receptor_send(pos, digilines.rules.default, channel, {
enabled = meta:get_int("enabled"),
power = meta:get_int("power"),
mesecon_mode = meta:get_int("mesecon_mode")
})
return
elseif msg == "off" then
meta:set_int("enabled", 0)
elseif msg == "on" then
meta:set_int("enabled", 1)
elseif msg == "toggle" then
local onn = meta:get_int("enabled")
onn = -(onn-1) -- Mirror onn with pivot 0.5, so switch between 1 and 0.
meta:set_int("enabled", onn)
elseif msg:sub(1, 5) == "power" then
local power = tonumber(msg:sub(7))
if not power then
return
end
power = math.max(power, 0)
power = math.min(power, 10000)
power = 100 * math.floor(power / 100)
meta:set_int("power", power)
elseif msg:sub(1, 12) == "mesecon_mode" then
meta:set_int("mesecon_mode", tonumber(msg:sub(14)))
end
set_supply_converter_formspec(meta)
end
},
}
local run = function(pos, node, run_stage) local run = function(pos, node, run_stage)
-- run only in producer stage. -- run only in producer stage.
if run_stage == technic.receiver then if run_stage == technic.receiver then
@ -109,9 +160,14 @@ end
minetest.register_node("technic:supply_converter", { minetest.register_node("technic:supply_converter", {
description = S("Supply Converter"), description = S("Supply Converter"),
tiles = {"technic_supply_converter_top.png", "technic_supply_converter_bottom.png", tiles = {
"technic_supply_converter_side.png", "technic_supply_converter_side.png", "technic_supply_converter_tb.png"..cable_entry,
"technic_supply_converter_side.png", "technic_supply_converter_side.png"}, "technic_supply_converter_tb.png"..cable_entry,
"technic_supply_converter_side.png",
"technic_supply_converter_side.png",
"technic_supply_converter_side.png",
"technic_supply_converter_side.png"
},
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
technic_machine=1, technic_all_tiers=1}, technic_machine=1, technic_all_tiers=1},
connect_sides = {"top", "bottom"}, connect_sides = {"top", "bottom"},
@ -120,6 +176,9 @@ minetest.register_node("technic:supply_converter", {
on_construct = function(pos) on_construct = function(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
meta:set_string("infotext", S("Supply Converter")) meta:set_string("infotext", S("Supply Converter"))
if digilines_path then
meta:set_string("channel", "supply_converter"..minetest.pos_to_string(pos))
end
meta:set_int("power", 10000) meta:set_int("power", 10000)
meta:set_int("enabled", 1) meta:set_int("enabled", 1)
meta:set_int("mesecon_mode", 0) meta:set_int("mesecon_mode", 0)
@ -127,6 +186,7 @@ minetest.register_node("technic:supply_converter", {
set_supply_converter_formspec(meta) set_supply_converter_formspec(meta)
end, end,
mesecons = mesecons, mesecons = mesecons,
digiline = digiline_def,
technic_run = run, technic_run = run,
technic_on_disable = run, technic_on_disable = run,
}) })

View File

@ -39,6 +39,8 @@ local digilines_path = minetest.get_modpath("digilines")
local S = technic.getter local S = technic.getter
local cable_entry = "^technic_cable_connection_overlay.png"
minetest.register_craft({ minetest.register_craft({
output = "technic:switching_station", output = "technic:switching_station",
recipe = { recipe = {
@ -57,9 +59,13 @@ end
minetest.register_node("technic:switching_station",{ minetest.register_node("technic:switching_station",{
description = S("Switching Station"), description = S("Switching Station"),
tiles = {"technic_water_mill_top_active.png", "technic_water_mill_top_active.png", tiles = {
"technic_water_mill_top_active.png", "technic_water_mill_top_active.png", "technic_water_mill_top_active.png",
"technic_water_mill_top_active.png", "technic_water_mill_top_active.png"}, "technic_water_mill_top_active.png"..cable_entry,
"technic_water_mill_top_active.png",
"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},
connect_sides = {"bottom"}, connect_sides = {"bottom"},
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),

View File

@ -0,0 +1,362 @@
# Blender v2.78 (sub 0) OBJ File: 'technic-reactor.blend'
# www.blender.org
o Cube.002
v 0.249998 -0.500500 -0.249998
v 0.249998 -0.500500 0.249998
v -0.249999 -0.500500 -0.249998
v -0.249999 -0.500500 0.249998
v 0.283224 0.283132 0.423876
v 0.283224 -0.283316 0.423876
v -0.283224 0.283132 0.423875
v -0.283224 -0.283316 0.423875
v 0.195088 -0.195188 0.470985
v 0.195088 0.194988 0.470985
v -0.195088 -0.195188 0.470985
v -0.195088 0.194988 0.470985
v 0.099454 -0.099560 0.499495
v 0.099454 0.099349 0.499495
v -0.099455 -0.099560 0.499495
v -0.099455 0.099349 0.499495
v -0.360476 -0.360431 -0.360476
v -0.195088 -0.195024 -0.470985
v -0.195088 0.195153 -0.470985
v 0.195089 -0.195024 -0.470985
v 0.195089 0.195153 -0.470985
v 0.283225 -0.283168 -0.423875
v 0.283225 0.283281 -0.423875
v -0.283224 -0.283168 -0.423875
v -0.283224 0.283281 -0.423875
v 0.099455 -0.099386 -0.499495
v 0.099455 0.099525 -0.499495
v -0.099455 -0.099386 -0.499495
v -0.099455 0.099525 -0.499495
v -0.360492 0.360411 0.360457
v -0.099717 0.499491 0.099455
v 0.099194 0.499491 0.099456
v -0.195335 0.470933 0.195089
v 0.195097 0.470933 0.195089
v 0.194842 0.471069 0.194640
v -0.283446 0.423808 0.283224
v 0.283003 0.424005 0.282855
v 0.360288 0.360647 0.360170
v -0.099717 0.499526 -0.099455
v 0.099194 0.499526 -0.099455
v -0.194886 0.471001 -0.195088
v 0.194842 0.471001 -0.195088
v -0.195335 0.470865 -0.195343
v -0.283076 0.423907 -0.283224
v 0.283003 0.423907 -0.283224
v -0.360358 0.360522 -0.360476
v 0.360429 0.360474 -0.360515
v 0.360664 -0.360306 -0.360247
v -0.423875 -0.283187 0.283224
v -0.423875 0.283165 0.283224
v -0.423727 -0.283464 -0.283405
v -0.423875 0.283165 -0.283224
v 0.283446 -0.423844 -0.283224
v -0.283244 -0.423843 -0.283224
v -0.470985 0.195015 -0.195088
v -0.470985 -0.195016 -0.195088
v -0.360287 -0.360683 0.360323
v 0.283446 -0.423745 0.283465
v -0.283002 -0.423942 0.283224
v 0.360664 -0.360306 0.360247
v 0.423875 0.283152 0.283225
v 0.423727 0.283428 -0.283405
v 0.424023 -0.283021 0.282947
v -0.470985 -0.195017 0.195088
v 0.470985 0.195317 0.195089
v 0.424023 -0.283021 -0.282948
v 0.470985 -0.194860 -0.195088
v 0.470883 0.195317 -0.195279
v 0.471087 -0.194860 0.194752
v -0.471087 0.194824 0.194751
v -0.499495 0.099176 0.099455
v -0.499495 -0.099735 0.099455
v -0.499495 0.099175 -0.099455
v -0.499495 -0.099735 -0.099455
v 0.499495 -0.099212 0.099456
v 0.499495 0.099699 0.099456
v 0.499495 -0.099212 -0.099455
v 0.499495 0.099699 -0.099455
v 0.254894 -0.439053 0.254894
v 0.254894 -0.438992 -0.254894
v -0.254894 -0.439019 -0.254894
v -0.254664 -0.439081 0.254894
vt 0.2500 0.0000
vt 0.2451 0.0610
vt 0.7549 0.0609
vt 0.7500 0.0000
vt 0.2500 0.0000
vt 0.2451 0.0609
vt 0.7547 0.0609
vt 0.7500 0.0000
vt 0.2500 0.0000
vt 0.2451 0.0609
vt 0.7549 0.0610
vt 0.7500 0.0000
vt 0.2498 0.0000
vt 0.2449 0.0610
vt 0.7547 0.0610
vt 0.7498 0.0000
vt 0.2168 0.2167
vt 0.1393 0.1397
vt 0.1397 0.8606
vt 0.2168 0.7831
vt 0.4004 0.4006
vt 0.3047 0.3050
vt 0.3047 0.6952
vt 0.4004 0.5995
vt 0.7830 0.2168
vt 0.8605 0.1397
vt 0.1393 0.1396
vt 0.2166 0.2168
vt 0.3049 0.3048
vt 0.3049 0.6950
vt 0.6949 0.3050
vt 0.5993 0.4006
vt 0.5993 0.5995
vt 0.6949 0.6952
vt 0.7830 0.7833
vt 0.2166 0.7833
vt 0.7832 0.7831
vt 0.6951 0.6950
vt 0.8602 0.8605
vt 0.1395 0.8605
vt 0.4005 0.5993
vt 0.5995 0.5993
vt 0.6951 0.3048
vt 0.7832 0.2167
vt 0.5995 0.4004
vt 0.8605 0.1396
vt 0.7834 0.2165
vt 0.7832 0.7832
vt 0.8605 0.8605
vt 0.4005 0.4004
vt 0.8605 0.8604
vt 0.1396 0.1395
vt 0.2170 0.2168
vt 0.2170 0.7829
vt 0.1397 0.8602
vt 0.2168 0.2168
vt 0.1397 0.1393
vt 0.1396 0.8604
vt 0.2168 0.7832
vt 0.6951 0.6950
vt 0.3053 0.6948
vt 0.6953 0.3047
vt 0.7831 0.2168
vt 0.7834 0.7832
vt 0.6953 0.6951
vt 0.8604 0.1395
vt 0.3052 0.3049
vt 0.6949 0.3049
vt 0.8602 0.1397
vt 0.7829 0.2170
vt 0.7832 0.7832
vt 0.8602 0.8606
vt 0.3052 0.6946
vt 0.3049 0.6951
vt 0.2171 0.2170
vt 0.1398 0.1397
vt 0.1395 0.8605
vt 0.2166 0.7834
vt 0.4005 0.4008
vt 0.3049 0.3051
vt 0.3047 0.6953
vt 0.4005 0.5997
vt 0.6951 0.6953
vt 0.4006 0.4003
vt 0.4006 0.5992
vt 0.5995 0.5992
vt 0.5995 0.4003
vt 0.6948 0.3051
vt 0.5995 0.4008
vt 0.5995 0.5997
vt 0.5997 0.4005
vt 0.5997 0.5995
vt 0.6951 0.3050
vt 0.3049 0.3050
vt 0.4008 0.4005
vt 0.4008 0.5995
vt 0.8603 0.1393
vt 0.2169 0.2168
vt 0.1397 0.1395
vt 0.1395 0.8605
vt 0.2166 0.7832
vt 0.8605 0.8605
vt 0.1393 0.1398
vt 0.2166 0.2168
vt 0.7832 0.2168
vt 0.8605 0.1395
vt 0.1393 0.8602
vt 0.2166 0.7835
vt 0.7830 0.7832
vt 0.8603 0.8603
vt 0.2451 0.2451
vt 0.7549 0.2451
vt 0.7547 0.7549
vt 0.2451 0.7549
vt 0.2500 0.7500
vt 0.7500 0.7500
vt 0.7500 0.2500
vt 0.2500 0.2500
vn 0.9968 -0.0794 -0.0000
vn 0.0000 -0.0794 0.9968
vn -0.9970 -0.0776 0.0002
vn 0.0000 -0.0794 -0.9968
vn 0.6360 0.0002 0.7717
vn -0.2857 0.0000 -0.9583
vn 0.0002 -0.6353 -0.7722
vn 0.4714 -0.0000 0.8819
vn 0.2857 0.0000 -0.9583
vn 0.0000 -0.2857 -0.9583
vn 0.0000 0.4714 -0.8819
vn -0.0000 0.4714 0.8819
vn 0.6346 -0.0000 -0.7728
vn -0.6347 0.0001 -0.7728
vn -0.0000 0.2857 0.9583
vn -0.0000 -0.4714 0.8819
vn -0.2857 -0.0000 0.9583
vn -0.7727 0.0001 -0.6347
vn -0.0000 -0.2857 0.9583
vn -0.4714 0.0000 -0.8819
vn 0.2857 -0.0000 0.9583
vn -0.4714 -0.0000 0.8819
vn 0.4714 0.0000 -0.8819
vn 0.0001 0.6347 0.7728
vn 0.0000 -0.4714 -0.8819
vn 0.0000 0.2857 -0.9583
vn 0.6339 0.7734 -0.0001
vn -0.7722 -0.0002 0.6353
vn -0.8820 0.4713 0.0000
vn -0.4717 0.8817 -0.0002
vn 0.0000 0.7730 -0.6344
vn 0.0000 0.8820 -0.4713
vn 0.7721 0.0002 0.6355
vn 0.4711 0.8821 -0.0002
vn 0.0000 0.0000 -1.0000
vn 0.7732 -0.0000 -0.6342
vn -0.0000 -0.0000 1.0000
vn 0.9583 0.0001 -0.2859
vn -0.7730 0.6345 -0.0000
vn 0.8815 0.4723 -0.0001
vn -1.0000 -0.0000 0.0000
vn 0.9583 0.0000 0.2857
vn 0.0000 0.6344 -0.7730
vn -0.2867 0.9580 -0.0001
vn -0.9580 -0.2867 0.0000
vn 0.0000 0.9583 -0.2858
vn 0.7733 -0.6340 0.0000
vn 1.0000 0.0000 0.0000
vn -0.8818 -0.0000 -0.4716
vn 0.9585 -0.2852 -0.0002
vn 0.2853 0.9584 -0.0001
vn 0.9582 0.2862 -0.0002
vn -0.0000 0.8819 0.4715
vn 0.0002 -0.6359 0.7718
vn -0.7728 -0.6346 0.0000
vn -0.9586 0.2849 -0.0001
vn -0.6353 -0.0002 0.7722
vn -0.0000 0.9582 0.2861
vn -0.9583 0.0000 -0.2857
vn 0.8821 -0.0001 0.4711
vn -0.6348 0.7727 -0.0001
vn -0.8821 0.0001 0.4711
vn 0.8818 0.0000 -0.4716
vn -0.9583 -0.0000 0.2857
vn -0.8820 -0.4713 -0.0000
vn 0.0000 1.0000 0.0002
vn 0.8824 -0.4705 -0.0001
vn 0.7729 0.6346 0.0000
vn 0.0001 0.7732 0.6342
vn 0.0002 -0.7722 -0.6354
vn 0.6351 -0.7724 0.0001
vn -0.6340 -0.7733 0.0000
vn 0.0000 -0.8817 -0.4719
vn -0.4716 -0.8818 0.0001
vn 0.0003 -0.7720 0.6356
vn 0.4706 -0.8823 0.0000
vn 0.0001 -0.8817 0.4718
vn 0.0000 -1.0000 0.0000
g Cube.002_Cube.002_allsides
s off
f 1/1/1 80/2/1 79/3/1 2/4/1
f 2/5/2 79/6/2 82/7/2 4/8/2
f 4/9/3 82/10/3 81/11/3 3/12/3
f 3/13/4 81/14/4 80/15/4 1/16/4
f 6/17/5 60/18/5 38/19/5 5/20/5
f 28/21/6 18/22/6 19/23/6 29/24/6
f 22/25/7 48/26/7 17/27/7 24/28/7
f 9/29/8 6/17/8 5/20/8 10/30/8
f 20/31/9 26/32/9 27/33/9 21/34/9
f 26/32/10 20/31/10 18/22/10 28/21/10
f 23/35/11 21/34/11 19/23/11 25/36/11
f 10/30/12 5/20/12 7/37/12 12/38/12
f 48/26/13 22/25/13 23/35/13 47/39/13
f 24/28/14 17/27/14 46/40/14 25/36/14
f 14/41/15 10/30/15 12/38/15 16/42/15
f 6/17/16 9/29/16 11/43/16 8/44/16
f 11/43/17 15/45/17 16/42/17 12/38/17
f 17/46/18 51/47/18 52/48/18 46/49/18
f 9/29/19 13/50/19 15/45/19 11/43/19
f 18/22/20 24/28/20 25/36/20 19/23/20
f 13/50/21 9/29/21 10/30/21 14/41/21
f 8/44/22 11/43/22 12/38/22 7/37/22
f 22/25/23 20/31/23 21/34/23 23/35/23
f 5/20/24 38/19/24 30/51/24 7/37/24
f 20/31/25 22/25/25 24/28/25 18/22/25
f 21/34/26 27/33/26 29/24/26 19/23/26
f 47/52/27 45/53/27 37/54/27 38/55/27
f 49/56/28 57/57/28 30/58/28 50/59/28
f 52/48/29 55/60/29 70/61/29 50/59/29
f 43/62/30 44/63/30 36/64/30 33/65/30
f 45/53/31 47/52/31 46/66/31 44/63/31
f 42/67/32 45/53/32 44/63/32 43/62/32 41/68/32
f 60/69/33 63/70/33 61/71/33 38/72/33
f 45/53/34 42/67/34 35/73/34 34/74/34 37/54/34
f 28/21/35 29/24/35 27/33/35 26/32/35
f 66/75/36 48/76/36 47/77/36 62/78/36
f 13/50/37 14/41/37 16/42/37 15/45/37
f 77/79/38 67/80/38 68/81/38 78/82/38
f 46/49/39 52/48/39 50/59/39 30/58/39
f 68/81/40 62/78/40 61/71/40 65/83/40
f 72/84/41 71/85/41 73/86/41 74/87/41
f 69/88/42 75/89/42 76/90/42 65/83/42
f 47/39/43 23/35/43 25/36/43 46/40/43
f 39/91/44 41/68/44 43/62/44 33/65/44 31/92/44
f 74/87/45 56/93/45 64/94/45 72/84/45
f 40/95/46 42/67/46 41/68/46 39/91/46
f 48/76/47 66/75/47 63/70/47 60/69/47
f 77/79/48 78/82/48 76/90/48 75/89/48
f 51/47/49 56/93/49 55/60/49 52/48/49
f 67/80/50 77/79/50 75/89/50 69/88/50
f 42/67/51 40/95/51 32/96/51 35/73/51
f 78/82/52 68/81/52 65/83/52 76/90/52
f 37/54/53 34/74/53 33/65/53 36/64/53
f 60/18/54 6/17/54 8/44/54 57/97/54
f 51/47/55 17/46/55 57/57/55 49/56/55
f 55/60/56 73/86/56 71/85/56 70/61/56
f 57/97/57 8/44/57 7/37/57 30/51/57
f 34/74/58 35/73/58 32/96/58 31/92/58 33/65/58
f 56/93/59 74/87/59 73/86/59 55/60/59
f 63/70/60 69/88/60 65/83/60 61/71/60
f 44/98/61 46/99/61 30/100/61 36/101/61
f 64/94/62 49/56/62 50/59/62 70/61/62
f 67/80/63 66/75/63 62/78/63 68/81/63
f 72/84/64 64/94/64 70/61/64 71/85/64
f 56/93/65 51/47/65 49/56/65 64/94/65
f 40/95/66 39/91/66 31/92/66 32/96/66
f 66/75/67 67/80/67 69/88/67 63/70/67
f 62/78/68 47/77/68 38/72/68 61/71/68
f 30/102/69 38/55/69 37/54/69 36/64/69
g Cube.002_Cube.002_bottom
f 48/103/70 53/104/70 54/105/70 17/106/70
f 53/104/71 48/103/71 60/107/71 58/108/71
f 17/106/72 54/105/72 59/109/72 57/110/72
f 53/104/73 80/111/73 81/112/73 54/105/73
f 54/105/74 81/112/74 82/113/74 59/109/74
f 58/108/75 60/107/75 57/110/75 59/109/75
f 79/114/76 80/111/76 53/104/76 58/108/76
f 82/113/77 79/114/77 58/108/77 59/109/77
f 2/115/78 4/116/78 3/117/78 1/118/78

Binary file not shown.

Before

Width:  |  Height:  |  Size: 576 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 639 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 587 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 653 B

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 777 B

After

Width:  |  Height:  |  Size: 475 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 792 B

After

Width:  |  Height:  |  Size: 575 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 738 B

After

Width:  |  Height:  |  Size: 591 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 594 B

After

Width:  |  Height:  |  Size: 236 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 337 B

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 738 B

After

Width:  |  Height:  |  Size: 591 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 587 B

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 337 B

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 506 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 738 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 738 B

View File

@ -1,4 +1,3 @@
technic.chests.groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic.chests.groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
tubedevice=1, tubedevice_receiver=1} tubedevice=1, tubedevice_receiver=1}
technic.chests.groups_noinv = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic.chests.groups_noinv = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
@ -13,6 +12,9 @@ technic.chests.tube = {
can_insert = function(pos, node, stack, direction) can_insert = function(pos, node, stack, direction)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local inv = meta:get_inventory() local inv = meta:get_inventory()
if meta:get_int("splitstacks") == 1 then
stack = stack:peek_item(1)
end
return inv:room_for_item("main",stack) return inv:room_for_item("main",stack)
end, end,
input_inventory = "main", input_inventory = "main",

View File

@ -1,9 +1,16 @@
local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end
local pipeworks = rawget(_G, "pipeworks") local pipeworks = rawget(_G, "pipeworks")
local fs_helpers = rawget(_G, "fs_helpers")
local allow_label = ""
local tube_entry = ""
local shift_edit_field = 0
if not minetest.get_modpath("pipeworks") then if not minetest.get_modpath("pipeworks") then
-- Pipeworks is not installed. Simulate using a dummy table... -- Pipeworks is not installed. Simulate using a dummy table...
pipeworks = {} pipeworks = {}
fs_helpers = {}
local pipeworks_meta = {} local pipeworks_meta = {}
setmetatable(pipeworks, pipeworks_meta) setmetatable(pipeworks, pipeworks_meta)
local dummy = function() local dummy = function()
@ -15,6 +22,12 @@ if not minetest.get_modpath("pipeworks") then
end end
pipeworks.after_place = dummy pipeworks.after_place = dummy
pipeworks.after_dig = dummy pipeworks.after_dig = dummy
fs_helpers.cycling_button = function() return "" end
else
fs_helpers = pipeworks.fs_helpers
allow_label = "label[0.9,0.36;Allow splitting incoming stacks from tubes]"
shift_edit_field = 3
tube_entry = "^pipeworks_tube_connection_metallic.png"
end end
local chest_mark_colors = { local chest_mark_colors = {
@ -72,6 +85,16 @@ local function set_formspec(pos, data, page)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
local formspec = data.base_formspec local formspec = data.base_formspec
formspec = formspec..fs_helpers.cycling_button(
meta,
"image_button[0,0.35;1,0.6",
"splitstacks",
{
pipeworks.button_off,
pipeworks.button_on
}
)..allow_label
if data.autosort then if data.autosort then
local status = meta:get_int("autosort") local status = meta:get_int("autosort")
formspec = formspec.."button["..(data.hileft+2)..","..(data.height+1.1)..";3,0.8;autosort_to_"..(1-status)..";"..S("Auto-sort is %s"):format(status == 1 and S("On") or S("Off")).."]" formspec = formspec.."button["..(data.hileft+2)..","..(data.height+1.1)..";3,0.8;autosort_to_"..(1-status)..";"..S("Auto-sort is %s"):format(status == 1 and S("On") or S("Off")).."]"
@ -79,13 +102,13 @@ local function set_formspec(pos, data, page)
if data.infotext then if data.infotext then
local formspec_infotext = minetest.formspec_escape(meta:get_string("infotext")) local formspec_infotext = minetest.formspec_escape(meta:get_string("infotext"))
if page == "main" then if page == "main" then
formspec = formspec.."image_button["..(data.hileft+2.1)..",0.1;0.8,0.8;" formspec = formspec.."image_button["..(shift_edit_field+data.hileft+2.1)..",0.1;0.8,0.8;"
.."technic_pencil_icon.png;edit_infotext;]" .."technic_pencil_icon.png;edit_infotext;]"
.."label["..(data.hileft+3)..",0;"..formspec_infotext.."]" .."label["..(shift_edit_field+data.hileft+3)..",0;"..formspec_infotext.."]"
elseif page == "edit_infotext" then elseif page == "edit_infotext" then
formspec = formspec.."image_button["..(data.hileft+2.1)..",0.1;0.8,0.8;" formspec = formspec.."image_button["..(shift_edit_field+data.hileft+2.1)..",0.1;0.8,0.8;"
.."technic_checkmark_icon.png;save_infotext;]" .."technic_checkmark_icon.png;save_infotext;]"
.."field["..(data.hileft+3.3)..",0.2;4.8,1;" .."field["..(shift_edit_field+data.hileft+3.3)..",0.2;4.8,1;"
.."infotext_box;"..S("Edit chest description:")..";" .."infotext_box;"..S("Edit chest description:")..";"
..formspec_infotext.."]" ..formspec_infotext.."]"
end end
@ -169,12 +192,17 @@ local function get_receive_fields(name, data)
local nn = "technic:"..lname..(data.locked and "_locked" or "").."_chest" local nn = "technic:"..lname..(data.locked and "_locked" or "").."_chest"
check_color_buttons(pos, meta, nn, fields) check_color_buttons(pos, meta, nn, fields)
end end
if fields["fs_helpers_cycling:0:splitstacks"]
or fields["fs_helpers_cycling:1:splitstacks"] then
if not pipeworks.may_configure(pos, sender) then return end
fs_helpers.on_receive_fields(pos, fields)
end
meta:get_inventory():set_size("main", data.width * data.height) meta:get_inventory():set_size("main", data.width * data.height)
set_formspec(pos, data, page) set_formspec(pos, data, page)
end end
end end
function technic.chests:definition(name, data) function technic.chests:definition(name, data)
local lname = name:lower() local lname = name:lower()
name = S(name) name = S(name)
@ -211,6 +239,7 @@ function technic.chests:definition(name, data)
"background["..data.hileft..",1;"..data.width..","..data.height..";technic_"..lname.."_chest_inventory.png]".. "background["..data.hileft..",1;"..data.width..","..data.height..";technic_"..lname.."_chest_inventory.png]"..
"background["..data.loleft..","..data.lotop..";8,4;technic_main_inventory.png]".. "background["..data.loleft..","..data.lotop..";8,4;technic_main_inventory.png]"..
"listring[]" "listring[]"
if data.sort then if data.sort then
data.base_formspec = data.base_formspec.."button["..data.hileft..","..(data.height+1.1)..";1,0.8;sort;"..S("Sort").."]" data.base_formspec = data.base_formspec.."button["..data.hileft..","..(data.height+1.1)..";1,0.8;sort;"..S("Sort").."]"
end end
@ -239,11 +268,24 @@ function technic.chests:definition(name, data)
desc = S("%s Chest"):format(name) desc = S("%s Chest"):format(name)
end end
local tentry = tube_entry
if tube_entry ~= "" then
if lname == "wooden" then
tentry = "^pipeworks_tube_connection_wooden.png"
elseif lname == "mithril" then
tentry = "^pipeworks_tube_connection_stony.png"
end
end
local def = { local def = {
description = desc, description = desc,
tiles = {"technic_"..lname.."_chest_top.png", "technic_"..lname.."_chest_top.png", tiles = {
"technic_"..lname.."_chest_side.png", "technic_"..lname.."_chest_side.png", "technic_"..lname.."_chest_top.png"..tentry,
"technic_"..lname.."_chest_side.png", table.concat(front, "^")}, "technic_"..lname.."_chest_top.png"..tentry,
"technic_"..lname.."_chest_side.png"..tentry,
"technic_"..lname.."_chest_side.png"..tentry,
"technic_"..lname.."_chest_side.png"..tentry,
table.concat(front, "^")
},
paramtype2 = "facedir", paramtype2 = "facedir",
groups = self.groups, groups = self.groups,
tube = self.tube, tube = self.tube,

View File

@ -1,14 +1,14 @@
local uranium_params = {offset = 0, scale = 1, spread = {x = 100, y = 100, z = 100}, seed = 420, octaves = 3, persist = 0.7} local uranium_params = {offset = 0, scale = 1, spread = {x = 100, y = 100, z = 100}, seed = 420, octaves = 3, persist = 0.7}
local uranium_threshhold = 0.55 local uranium_threshold = 0.55
local chromium_params = {offset = 0, scale = 1, spread = {x = 100, y = 100, z = 100}, seed = 421, octaves = 3, persist = 0.7} local chromium_params = {offset = 0, scale = 1, spread = {x = 100, y = 100, z = 100}, seed = 421, octaves = 3, persist = 0.7}
local chromium_threshhold = 0.55 local chromium_threshold = 0.55
local zinc_params = {offset = 0, scale = 1, spread = {x = 100, y = 100, z = 100}, seed = 422, octaves = 3, persist = 0.7} local zinc_params = {offset = 0, scale = 1, spread = {x = 100, y = 100, z = 100}, seed = 422, octaves = 3, persist = 0.7}
local zinc_threshhold = 0.5 local zinc_threshold = 0.5
local lead_params = {offset = 0, scale = 1, spread = {x = 100, y = 100, z = 100}, seed = 423, octaves = 3, persist = 0.7} local lead_params = {offset = 0, scale = 1, spread = {x = 100, y = 100, z = 100}, seed = 423, octaves = 3, persist = 0.7}
local lead_threshhold = 0.3 local lead_threshold = 0.3
minetest.register_ore({ minetest.register_ore({
ore_type = "scatter", ore_type = "scatter",
@ -20,7 +20,7 @@ minetest.register_ore({
y_min = -300, y_min = -300,
y_max = -80, y_max = -80,
noise_params = uranium_params, noise_params = uranium_params,
noise_threshhold = uranium_threshhold, noise_threshold = uranium_threshold,
}) })
minetest.register_ore({ minetest.register_ore({
@ -33,7 +33,7 @@ minetest.register_ore({
y_min = -200, y_min = -200,
y_max = -100, y_max = -100,
noise_params = chromium_params, noise_params = chromium_params,
noise_threshhold = chromium_threshhold, noise_threshold = chromium_threshold,
}) })
minetest.register_ore({ minetest.register_ore({
@ -47,7 +47,7 @@ minetest.register_ore({
y_max = -200, y_max = -200,
flags = "absheight", flags = "absheight",
noise_params = chromium_params, noise_params = chromium_params,
noise_threshhold = chromium_threshhold, noise_threshold = chromium_threshold,
}) })
minetest.register_ore({ minetest.register_ore({
@ -58,7 +58,9 @@ minetest.register_ore({
clust_num_ores = 5, clust_num_ores = 5,
clust_size = 7, clust_size = 7,
y_min = -32, y_min = -32,
y_max = 2 y_max = 2,
noise_params = zinc_params,
noise_threshold = zinc_threshold,
}) })
minetest.register_ore({ minetest.register_ore({
@ -72,7 +74,7 @@ minetest.register_ore({
y_max = -32, y_max = -32,
flags = "absheight", flags = "absheight",
noise_params = zinc_params, noise_params = zinc_params,
noise_threshhold = zinc_threshhold, noise_threshold = zinc_threshold,
}) })
minetest.register_ore({ minetest.register_ore({
@ -85,7 +87,7 @@ minetest.register_ore({
y_min = -16, y_min = -16,
y_max = 16, y_max = 16,
noise_params = lead_params, noise_params = lead_params,
noise_threshhold = lead_threshhold, noise_threshold = lead_threshold,
}) })
minetest.register_ore({ minetest.register_ore({
@ -98,7 +100,7 @@ minetest.register_ore({
y_min = -128, y_min = -128,
y_max = -16, y_max = -16,
noise_params = lead_params, noise_params = lead_params,
noise_threshhold = lead_threshhold, noise_threshold = lead_threshold,
}) })
minetest.register_ore({ minetest.register_ore({
@ -112,7 +114,7 @@ minetest.register_ore({
y_max = -128, y_max = -128,
flags = "absheight", flags = "absheight",
noise_params = lead_params, noise_params = lead_params,
noise_threshhold = lead_threshhold, noise_threshold = lead_threshold,
}) })
-- Sulfur -- Sulfur
@ -170,7 +172,7 @@ minetest.register_ore({
clust_size = 3, clust_size = 3,
y_min = -31000, y_min = -31000,
y_max = -50, y_max = -50,
noise_threshhold = 0.4, noise_threshold = 0.4,
noise_params = {offset=0, scale=15, spread={x=150, y=150, z=150}, seed=23, octaves=3, persist=0.70} noise_params = {offset=0, scale=15, spread={x=150, y=150, z=150}, seed=23, octaves=3, persist=0.70}
}) })
end end
@ -185,7 +187,7 @@ minetest.register_ore({
clust_size = 4, clust_size = 4,
y_min = -31000, y_min = -31000,
y_max = -150, y_max = -150,
noise_threshhold = 0.4, noise_threshold = 0.4,
noise_params = {offset=0, scale=15, spread={x=130, y=130, z=130}, seed=24, octaves=3, persist=0.70} noise_params = {offset=0, scale=15, spread={x=130, y=130, z=130}, seed=24, octaves=3, persist=0.70}
}) })
end end