Merge branch 'master' into nuce_reactor_digiline_remote
@ -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_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_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}
|
||||
|
||||
minetest.register_node(":technic:concrete_post_platform", {
|
||||
|
23
manual.md
@ -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
|
||||
demand. They have a secondary purpose of charging and discharging
|
||||
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
|
||||
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.
|
||||
|
||||
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
|
||||
discharging slot through the top. Items are not accepted through the
|
||||
front, back, or sides. With a tube upgrade, fully charged/discharged
|
||||
tools (as appropriate for their slot) will be ejected through a side.
|
||||
to the charging slot through the sides or back of the battery box, or
|
||||
to the discharging slot through the top. With a tube upgrade, fully
|
||||
charged/discharged tools (as appropriate for their slot) will be ejected
|
||||
through a side.
|
||||
|
||||
### processing machines ###
|
||||
|
||||
@ -1243,12 +1244,12 @@ with light sources such as meselamps.
|
||||
|
||||
### hydro generator ###
|
||||
|
||||
The hydro generator is an LV power generator that generates a small amount
|
||||
of power from the natural motion of water. To operate, the generator must
|
||||
be horizontally adjacent to water. It doesn't matter whether the water
|
||||
consists of source blocks or flowing blocks. Having water adjacent on
|
||||
more than one side, up to the full four, increases the generator's output.
|
||||
The water itself is unaffected by the generator.
|
||||
The hydro generator is an LV power generator that generates a respectable
|
||||
amount of power from the natural motion of water. To operate, the
|
||||
generator must be horizontally adjacent to flowing water. The power
|
||||
produced is dependent on how much flow there is across any or all four
|
||||
sides, the most flow of course coming from water that's flowing straight
|
||||
down.
|
||||
|
||||
### geothermal generator ###
|
||||
|
||||
|
@ -1,6 +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")
|
||||
|
||||
-- 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
|
||||
|
||||
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({
|
||||
output = "default:dirt 2",
|
||||
|
@ -6,10 +6,14 @@
|
||||
|
||||
-- How expensive is the generator?
|
||||
-- Leaves room for upgrades lowering the power drain?
|
||||
local digilines_path = minetest.get_modpath("digilines")
|
||||
|
||||
local forcefield_power_drain = 10
|
||||
|
||||
local S = technic.getter
|
||||
|
||||
local cable_entry = "^technic_cable_connection_overlay.png"
|
||||
|
||||
minetest.register_craft({
|
||||
output = "technic:forcefield_emitter_off",
|
||||
recipe = {
|
||||
@ -90,7 +94,14 @@ local function update_forcefield(pos, meta, active, first)
|
||||
end
|
||||
|
||||
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").."]"
|
||||
-- The names for these toggle buttons are explicit about which
|
||||
-- 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)
|
||||
end
|
||||
if range then meta:set_int("range", range) end
|
||||
if fields.shape0 then meta:set_int("shape", 0) end
|
||||
if fields.shape1 then meta:set_int("shape", 1) end
|
||||
if fields.enable then meta:set_int("enabled", 1) end
|
||||
if fields.channel then meta:set_string("channel", fields.channel) end
|
||||
if fields.shape0 then meta:set_int("shape", 0) 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.mesecon_mode_0 then meta:set_int("mesecon_mode", 0) 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 meta = minetest.get_meta(pos)
|
||||
local eu_input = meta:get_int("HV_EU_input")
|
||||
@ -194,7 +260,14 @@ end
|
||||
|
||||
minetest.register_node("technic:forcefield_emitter_off", {
|
||||
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},
|
||||
on_receive_fields = forcefield_receive_fields,
|
||||
on_construct = function(pos)
|
||||
@ -205,16 +278,27 @@ minetest.register_node("technic:forcefield_emitter_off", {
|
||||
meta:set_int("enabled", 0)
|
||||
meta:set_int("mesecon_mode", 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"))
|
||||
set_forcefield_formspec(meta)
|
||||
end,
|
||||
mesecons = mesecons,
|
||||
digiline = digiline_def,
|
||||
technic_run = run,
|
||||
})
|
||||
|
||||
minetest.register_node("technic:forcefield_emitter_on", {
|
||||
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,
|
||||
not_in_creative_inventory=1},
|
||||
drop = "technic:forcefield_emitter_off",
|
||||
@ -224,6 +308,7 @@ minetest.register_node("technic:forcefield_emitter_on", {
|
||||
update_forcefield(pos, meta, false)
|
||||
end,
|
||||
mesecons = mesecons,
|
||||
digiline = digiline_def,
|
||||
technic_run = run,
|
||||
technic_on_disable = function (pos, node)
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
@ -18,8 +18,8 @@ local digiline_remote_path = minetest.get_modpath("digiline_remote")
|
||||
|
||||
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?
|
||||
minetest.register_craft({
|
||||
@ -44,26 +44,6 @@ if digiline_remote_path then
|
||||
"field[1,4;4,1;remote_channel;Digiline Remote Channel;${remote_channel}]"
|
||||
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_DANGER = 1
|
||||
local SS_CLEAR = 2
|
||||
@ -367,17 +347,18 @@ end
|
||||
|
||||
minetest.register_node("technic:hv_nuclear_reactor_core", {
|
||||
description = reactor_desc,
|
||||
tiles = {"technic_hv_nuclear_reactor_core.png"},
|
||||
groups = {cracky=1, technic_machine=1, technic_hv=1, digiline_remote_receive = 1},
|
||||
tiles = {
|
||||
"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,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
drawtype = "nodebox",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
stack_max = 1,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = node_box
|
||||
},
|
||||
on_receive_fields = nuclear_reactor_receive_fields,
|
||||
on_construct = function(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", {
|
||||
tiles = {"technic_hv_nuclear_reactor_core.png"},
|
||||
groups = {cracky=1, technic_machine=1, technic_hv=1, radioactive=4,
|
||||
not_in_creative_inventory=1, digiline_remote_receive = 1},
|
||||
tiles = {
|
||||
"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, radioactive = 4,
|
||||
not_in_creative_inventory = 1, digiline_remote_receive = 1},
|
||||
legacy_facedir_simple = true,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
drop = "technic:hv_nuclear_reactor_core",
|
||||
drawtype = "nodebox",
|
||||
light_source = 14,
|
||||
paramtype = "light",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = node_box
|
||||
},
|
||||
_on_digiline_remote_receive = digiline_remote_def,
|
||||
paramtype2 = "facedir",
|
||||
can_dig = technic.machine_can_dig,
|
||||
after_dig_node = melt_down_reactor,
|
||||
on_destruct = function(pos) siren_set_state(pos, SS_OFF) end,
|
||||
|
@ -1,6 +1,9 @@
|
||||
|
||||
local S = technic.getter
|
||||
|
||||
local tube_entry = "^pipeworks_tube_connection_metallic.png"
|
||||
local cable_entry = "^technic_cable_connection_overlay.png"
|
||||
|
||||
minetest.register_craft({
|
||||
recipe = {
|
||||
{"technic:carbon_plate", "pipeworks:filter", "technic:composite_plate"},
|
||||
@ -207,12 +210,14 @@ end
|
||||
|
||||
minetest.register_node("technic:quarry", {
|
||||
description = S("%s Quarry"):format("HV"),
|
||||
tiles = {"technic_carbon_steel_block.png", "technic_carbon_steel_block.png",
|
||||
"technic_carbon_steel_block.png", "technic_carbon_steel_block.png",
|
||||
"technic_carbon_steel_block.png^default_tool_mesepick.png", "technic_carbon_steel_block.png"},
|
||||
inventory_image = minetest.inventorycube("technic_carbon_steel_block.png",
|
||||
"technic_carbon_steel_block.png^default_tool_mesepick.png",
|
||||
"technic_carbon_steel_block.png"),
|
||||
tiles = {
|
||||
"technic_carbon_steel_block.png"..tube_entry,
|
||||
"technic_carbon_steel_block.png"..cable_entry,
|
||||
"technic_carbon_steel_block.png"..cable_entry,
|
||||
"technic_carbon_steel_block.png"..cable_entry,
|
||||
"technic_carbon_steel_block.png^default_tool_mesepick.png",
|
||||
"technic_carbon_steel_block.png"..cable_entry
|
||||
},
|
||||
paramtype2 = "facedir",
|
||||
groups = {cracky=2, tubedevice=1, technic_machine=1, technic_hv=1},
|
||||
connect_sides = {"bottom", "front", "left", "right"},
|
||||
|
@ -4,6 +4,8 @@
|
||||
|
||||
local S = technic.getter
|
||||
|
||||
local cable_entry = "^technic_cable_connection_overlay.png"
|
||||
|
||||
minetest.register_alias("water_mill", "technic:water_mill")
|
||||
|
||||
minetest.register_craft({
|
||||
@ -50,9 +52,7 @@ local run = function(pos, node)
|
||||
eu_supply = math.min(35 * water_flow, max_output)
|
||||
production_level = math.floor(100 * eu_supply / max_output)
|
||||
|
||||
if production_level > 0 then
|
||||
meta:set_int("LV_EU_supply", eu_supply)
|
||||
end
|
||||
meta:set_int("LV_EU_supply", eu_supply)
|
||||
|
||||
meta:set_string("infotext",
|
||||
S("Hydro %s Generator"):format("LV").." ("..production_level.."%)")
|
||||
@ -70,9 +70,14 @@ end
|
||||
|
||||
minetest.register_node("technic:water_mill", {
|
||||
description = S("Hydro %s Generator"):format("LV"),
|
||||
tiles = {"technic_water_mill_top.png", "technic_machine_bottom.png",
|
||||
"technic_water_mill_side.png", "technic_water_mill_side.png",
|
||||
"technic_water_mill_side.png", "technic_water_mill_side.png"},
|
||||
tiles = {
|
||||
"technic_water_mill_top.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",
|
||||
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
|
||||
technic_machine=1, technic_lv=1},
|
||||
|
@ -5,6 +5,8 @@ minetest.register_alias("tool_workshop", "technic:tool_workshop")
|
||||
|
||||
local S = technic.getter
|
||||
|
||||
local tube_entry = "^pipeworks_tube_connection_wooden.png"
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'technic:tool_workshop',
|
||||
recipe = {
|
||||
@ -83,8 +85,14 @@ end
|
||||
minetest.register_node("technic:tool_workshop", {
|
||||
description = S("%s Tool Workshop"):format("MV"),
|
||||
paramtype2 = "facedir",
|
||||
tiles = {"technic_workshop_top.png", "technic_machine_bottom.png", "technic_workshop_side.png",
|
||||
"technic_workshop_side.png", "technic_workshop_side.png", "technic_workshop_side.png"},
|
||||
tiles = {
|
||||
"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,
|
||||
technic_machine=1, technic_mv=1, tubedevice=1, tubedevice_receiver=1},
|
||||
connect_sides = {"bottom", "back", "left", "right"},
|
||||
|
@ -2,6 +2,7 @@
|
||||
local S = technic.getter
|
||||
|
||||
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 == "ignore" 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_take = technic.machine_inventory_take,
|
||||
allow_metadata_inventory_move = technic.machine_inventory_move,
|
||||
on_rotate = screwdriver.rotate_simple
|
||||
})
|
||||
|
||||
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_take = technic.machine_inventory_take,
|
||||
allow_metadata_inventory_move = technic.machine_inventory_move,
|
||||
on_rotate = false
|
||||
})
|
||||
end
|
||||
|
||||
|
@ -1,6 +1,10 @@
|
||||
|
||||
local S = technic.getter
|
||||
|
||||
local fs_helpers = pipeworks.fs_helpers
|
||||
|
||||
local tube_entry = "^pipeworks_tube_connection_metallic.png"
|
||||
|
||||
local function inject_items (pos)
|
||||
local meta=minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
@ -51,37 +55,59 @@ minetest.register_craft({
|
||||
local function set_injector_formspec(meta)
|
||||
local is_stack = meta:get_string("mode") == "whole stacks"
|
||||
meta:set_string("formspec",
|
||||
"invsize[8,9;]"..
|
||||
"item_image[0,0;1,1;technic:injector]"..
|
||||
"label[1,0;"..S("Self-Contained Injector").."]"..
|
||||
(is_stack and
|
||||
"button[0,1;2,1;mode_item;"..S("Stackwise").."]" or
|
||||
"button[0,1;2,1;mode_stack;"..S("Itemwise").."]")..
|
||||
"list[current_name;main;0,2;8,2;]"..
|
||||
"list[current_player;main;0,5;8,4;]"..
|
||||
"listring[]")
|
||||
"invsize[8,9;]"..
|
||||
"item_image[0,0;1,1;technic:injector]"..
|
||||
"label[1,0;"..S("Self-Contained Injector").."]"..
|
||||
(is_stack and
|
||||
"button[0,1;2,1;mode_item;"..S("Stackwise").."]" or
|
||||
"button[0,1;2,1;mode_stack;"..S("Itemwise").."]")..
|
||||
"list[current_name;main;0,2;8,2;]"..
|
||||
"list[current_player;main;0,5;8,4;]"..
|
||||
"listring[]"..
|
||||
fs_helpers.cycling_button(
|
||||
meta,
|
||||
pipeworks.button_base,
|
||||
"splitstacks",
|
||||
{
|
||||
pipeworks.button_off,
|
||||
pipeworks.button_on
|
||||
}
|
||||
)..pipeworks.button_label
|
||||
)
|
||||
end
|
||||
|
||||
minetest.register_node("technic:injector", {
|
||||
description = S("Self-Contained Injector"),
|
||||
tiles = {"technic_injector_top.png", "technic_injector_bottom.png", "technic_injector_side.png",
|
||||
"technic_injector_side.png", "technic_injector_side.png", "technic_injector_side.png"},
|
||||
tiles = {
|
||||
"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},
|
||||
tube = {
|
||||
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,
|
||||
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,
|
||||
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(),
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("infotext", S("Self-Contained Injector"))
|
||||
local inv = meta:get_inventory()
|
||||
inv:set_size("main", 8*4)
|
||||
inv:set_size("main", 8*2)
|
||||
meta:set_string("mode","single items")
|
||||
set_injector_formspec(meta)
|
||||
end,
|
||||
@ -94,6 +120,12 @@ minetest.register_node("technic:injector", {
|
||||
local meta = minetest.get_meta(pos)
|
||||
if fields.mode_item then meta:set_string("mode", "single items") end
|
||||
if fields.mode_stack then meta:set_string("mode", "whole stacks") end
|
||||
|
||||
if fields["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)
|
||||
end,
|
||||
allow_metadata_inventory_put = technic.machine_inventory_put,
|
||||
|
@ -4,6 +4,8 @@
|
||||
|
||||
local S = technic.getter
|
||||
|
||||
local cable_entry = "^technic_cable_connection_overlay.png"
|
||||
|
||||
minetest.register_craft({
|
||||
output = "technic:power_monitor",
|
||||
recipe = {
|
||||
@ -17,10 +19,10 @@ minetest.register_node("technic:power_monitor",{
|
||||
description = S("Power Monitor"),
|
||||
tiles = {
|
||||
"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_bottom_back.png",
|
||||
"technic_power_monitor_sides.png"..cable_entry,
|
||||
"technic_power_monitor_front.png"
|
||||
},
|
||||
paramtype2 = "facedir",
|
||||
|
@ -2,6 +2,10 @@
|
||||
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 fs_helpers = pipeworks.fs_helpers
|
||||
|
||||
technic.register_power_tool("technic:battery", 10000)
|
||||
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 = {
|
||||
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
|
||||
end
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
if direction.y > 0 then
|
||||
if direction.y == 0 then
|
||||
return inv:add_item("src", stack)
|
||||
else
|
||||
return inv:add_item("dst", stack)
|
||||
end
|
||||
end,
|
||||
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
|
||||
end
|
||||
local meta = minetest.get_meta(pos)
|
||||
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)
|
||||
else
|
||||
if meta:get_int("split_dst_stacks") == 1 then
|
||||
stack = stack:peek_item(1)
|
||||
end
|
||||
return inv:room_for_item("dst", 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},
|
||||
}
|
||||
|
||||
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)
|
||||
local tier = data.tier
|
||||
local ltier = string.lower(tier)
|
||||
@ -78,6 +128,7 @@ function technic.register_battery_box(data)
|
||||
"listring[current_player;main]"..
|
||||
"listring[context;src]"..
|
||||
"listring[current_player;main]"
|
||||
|
||||
if digilines_path then
|
||||
formspec = formspec.."button[0.6,3.7;2,1;edit_channel;edit Channel]"
|
||||
end
|
||||
@ -94,7 +145,14 @@ function technic.register_battery_box(data)
|
||||
end
|
||||
|
||||
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)
|
||||
|
||||
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 current_charge = meta:get_int("internal_EU_charge")
|
||||
|
||||
@ -149,12 +207,7 @@ function technic.register_battery_box(data)
|
||||
end
|
||||
|
||||
local charge_percent = math.floor(current_charge / max_charge * 100)
|
||||
meta:set_string("formspec",
|
||||
formspec..
|
||||
"image[1,1;1,2;technic_power_meter_bg.png"
|
||||
.."^[lowpart:"..charge_percent
|
||||
..":technic_power_meter_fg.png]")
|
||||
|
||||
meta:set_string("formspec", formspec..add_on_off_buttons(meta, ltier, charge_percent))
|
||||
local infotext = S("@1 Battery Box: @2/@3", tier,
|
||||
technic.pretty_num(current_charge), technic.pretty_num(max_charge))
|
||||
if eu_input == 0 then
|
||||
@ -175,15 +228,26 @@ function technic.register_battery_box(data)
|
||||
groups.tubedevice_receiver = 1
|
||||
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, {
|
||||
description = S("%s Battery Box"):format(tier),
|
||||
tiles = {
|
||||
"technic_"..ltier.."_battery_box_top.png",
|
||||
"technic_"..ltier.."_battery_box_bottom.png",
|
||||
"technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png",
|
||||
"technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png",
|
||||
"technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png",
|
||||
"technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png"},
|
||||
top_tex,
|
||||
bottom_tex,
|
||||
side_tex,
|
||||
side_tex,
|
||||
side_tex,
|
||||
front_tex},
|
||||
groups = groups,
|
||||
connect_sides = {"bottom"},
|
||||
tube = data.tube and tube or nil,
|
||||
@ -192,11 +256,17 @@ function technic.register_battery_box(data)
|
||||
drop = "technic:"..ltier.."_battery_box0",
|
||||
on_construct = function(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 node = minetest.get_node(pos)
|
||||
|
||||
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_int(tier.."_EU_demand", 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_move = technic.machine_inventory_move,
|
||||
technic_run = run,
|
||||
on_rotate = screwdriver.rotate_simple,
|
||||
after_place_node = data.tube and pipeworks.after_place,
|
||||
after_dig_node = technic.machine_after_dig_node,
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
if not fields.edit_channel then
|
||||
return
|
||||
end
|
||||
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),
|
||||
"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,
|
||||
digiline = {
|
||||
receptor = {action = function() end},
|
||||
@ -277,7 +363,6 @@ minetest.register_on_player_receive_fields(
|
||||
end
|
||||
)
|
||||
|
||||
|
||||
function technic.charge_tools(meta, batt_charge, charge_step)
|
||||
local inv = meta:get_inventory()
|
||||
if inv:is_empty("src") then
|
||||
|
@ -121,7 +121,8 @@ function technic.register_cable(tier, size)
|
||||
local ltier = string.lower(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 = {
|
||||
type = "connected",
|
||||
@ -146,11 +147,97 @@ function technic.register_cable(tier, size)
|
||||
sunlight_propagates = true,
|
||||
drawtype = "nodebox",
|
||||
node_box = node_box,
|
||||
connects_to = {"technic:"..ltier.."_cable",
|
||||
connects_to = {"group:technic_"..ltier.."_cable",
|
||||
"group:technic_"..ltier, "group:technic_all_tiers"},
|
||||
on_construct = 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
|
||||
|
||||
|
||||
|
@ -20,11 +20,11 @@ local recipes = {
|
||||
}
|
||||
|
||||
-- defuse the default sandstone recipe, since we have the compressor to take over in a more realistic manner
|
||||
minetest.register_craft({
|
||||
output = "default:sand 0",
|
||||
minetest.clear_craft({
|
||||
output = "default:sandstone",
|
||||
recipe = {
|
||||
{'group:sand', 'group:sand'},
|
||||
{'group:sand', 'group:sand'}
|
||||
{'group:sand', 'group:sand'}
|
||||
},
|
||||
})
|
||||
|
||||
|
@ -1,5 +1,8 @@
|
||||
local S = technic.getter
|
||||
|
||||
local fs_helpers = pipeworks.fs_helpers
|
||||
local tube_entry = "^pipeworks_tube_connection_metallic.png"
|
||||
|
||||
local tube = {
|
||||
insert_object = function(pos, node, stack, direction)
|
||||
local meta = minetest.get_meta(pos)
|
||||
@ -9,12 +12,16 @@ local tube = {
|
||||
can_insert = function(pos, node, stack, direction)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
if meta:get_int("splitstacks") == 1 then
|
||||
stack = stack:peek_item(1)
|
||||
end
|
||||
return inv:room_for_item("src", stack)
|
||||
end,
|
||||
connect_sides = {left=1, right=1, back=1, top=1, bottom=1},
|
||||
}
|
||||
|
||||
function technic.register_generator(data)
|
||||
function technic.register_generator(data)
|
||||
|
||||
local tier = data.tier
|
||||
local ltier = string.lower(tier)
|
||||
|
||||
@ -76,21 +83,44 @@ function technic.register_generator(data)
|
||||
if burn_totaltime == 0 then burn_totaltime = 1 end
|
||||
local percent = math.floor((burn_time / burn_totaltime) * 100)
|
||||
meta:set_string("infotext", desc.." ("..percent.."%)")
|
||||
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[]")
|
||||
|
||||
local form_buttons = ""
|
||||
if ltier ~= "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",
|
||||
"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
|
||||
|
||||
|
||||
local tentry = tube_entry
|
||||
if ltier == "lv" then tentry = "" end
|
||||
|
||||
minetest.register_node("technic:"..ltier.."_generator", {
|
||||
description = desc,
|
||||
tiles = {"technic_"..ltier.."_generator_top.png", "technic_machine_bottom.png",
|
||||
"technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_side.png",
|
||||
"technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_front.png"},
|
||||
tiles = {
|
||||
"technic_"..ltier.."_generator_top.png"..tentry,
|
||||
"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",
|
||||
groups = groups,
|
||||
connect_sides = {"bottom", "back", "left", "right"},
|
||||
@ -99,11 +129,24 @@ function technic.register_generator(data)
|
||||
tube = data.tube and tube or nil,
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
meta:set_string("infotext", desc)
|
||||
meta:set_int(data.tier.."_EU_supply", 0)
|
||||
meta:set_int("burn_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()
|
||||
inv:set_size("src", 1)
|
||||
end,
|
||||
@ -113,14 +156,39 @@ function technic.register_generator(data)
|
||||
allow_metadata_inventory_move = technic.machine_inventory_move,
|
||||
technic_run = run,
|
||||
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", {
|
||||
description = desc,
|
||||
tiles = {"technic_"..ltier.."_generator_top.png", "technic_machine_bottom.png",
|
||||
"technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_side.png",
|
||||
"technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_front_active.png"},
|
||||
tiles = {
|
||||
"technic_"..ltier.."_generator_top.png"..tube_entry,
|
||||
"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",
|
||||
groups = active_groups,
|
||||
connect_sides = {"bottom"},
|
||||
@ -129,6 +197,7 @@ function technic.register_generator(data)
|
||||
tube = data.tube and tube or nil,
|
||||
drop = "technic:"..ltier.."_generator",
|
||||
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_take = technic.machine_inventory_take,
|
||||
allow_metadata_inventory_move = technic.machine_inventory_move,
|
||||
@ -139,7 +208,8 @@ function technic.register_generator(data)
|
||||
end,
|
||||
on_timer = function(pos, node)
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
||||
local node = minetest.get_node(pos)
|
||||
|
||||
-- Connected back?
|
||||
if meta:get_int(tier.."_EU_timeout") > 0 then return false end
|
||||
|
||||
@ -157,6 +227,19 @@ function technic.register_generator(data)
|
||||
burn_time = burn_time - 1
|
||||
meta:set_int("burn_time", burn_time)
|
||||
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",
|
||||
"size[8, 9]"..
|
||||
"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:"..
|
||||
(percent)..":default_furnace_fire_fg.png]"..
|
||||
"list[current_player;main;0, 5;8, 4;]"..
|
||||
"listring[]")
|
||||
"listring[]"..
|
||||
form_buttons
|
||||
)
|
||||
return true
|
||||
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)
|
||||
|
@ -30,8 +30,7 @@ local recipes = {
|
||||
}
|
||||
|
||||
-- defuse the sandstone -> 4 sand recipe to avoid infinite sand bugs (also consult the inverse compressor recipe)
|
||||
minetest.register_craft({
|
||||
output = "default:sandstone 0",
|
||||
minetest.clear_craft({
|
||||
recipe = {
|
||||
{'default:sandstone'}
|
||||
},
|
||||
@ -63,12 +62,6 @@ for _, data in pairs(recipes) do
|
||||
technic.register_grinder_recipe({input = {data[1]}, output = data[2]})
|
||||
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
|
||||
local function register_dust(name, ingot)
|
||||
local lname = string.lower(name)
|
||||
|
@ -1,6 +1,9 @@
|
||||
|
||||
local S = technic.getter
|
||||
|
||||
local fs_helpers = pipeworks.fs_helpers
|
||||
local tube_entry = "^pipeworks_tube_connection_metallic.png"
|
||||
|
||||
local tube = {
|
||||
insert_object = function(pos, node, stack, direction)
|
||||
local meta = minetest.get_meta(pos)
|
||||
@ -10,6 +13,9 @@ local tube = {
|
||||
can_insert = function(pos, node, stack, direction)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
if meta:get_int("splitstacks") == 1 then
|
||||
stack = stack:peek_item(1)
|
||||
end
|
||||
return inv:room_for_item("src", stack)
|
||||
end,
|
||||
connect_sides = {left = 1, right = 1, back = 1, top = 1, bottom = 1},
|
||||
@ -133,15 +139,21 @@ function technic.register_base_machine(data)
|
||||
inv:set_list("dst", inv:get_list("dst_tmp"))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local tentry = tube_entry
|
||||
if ltier == "lv" then
|
||||
tentry = ""
|
||||
end
|
||||
minetest.register_node("technic:"..ltier.."_"..machine_name, {
|
||||
description = machine_desc:format(tier),
|
||||
tiles = {"technic_"..ltier.."_"..machine_name.."_top.png",
|
||||
"technic_"..ltier.."_"..machine_name.."_bottom.png",
|
||||
"technic_"..ltier.."_"..machine_name.."_side.png",
|
||||
"technic_"..ltier.."_"..machine_name.."_side.png",
|
||||
"technic_"..ltier.."_"..machine_name.."_side.png",
|
||||
"technic_"..ltier.."_"..machine_name.."_front.png"},
|
||||
tiles = {
|
||||
"technic_"..ltier.."_"..machine_name.."_top.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_bottom.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_side.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_side.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_side.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_front.png"
|
||||
},
|
||||
paramtype2 = "facedir",
|
||||
groups = groups,
|
||||
tube = data.tube and tube or nil,
|
||||
@ -151,9 +163,23 @@ function technic.register_base_machine(data)
|
||||
on_construct = function(pos)
|
||||
local node = minetest.get_node(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_int("tube_time", 0)
|
||||
meta:set_string("formspec", formspec)
|
||||
meta:set_string("formspec", formspec..form_buttons)
|
||||
local inv = meta:get_inventory()
|
||||
inv:set_size("src", input_size)
|
||||
inv:set_size("dst", 4)
|
||||
@ -166,17 +192,38 @@ function technic.register_base_machine(data)
|
||||
allow_metadata_inventory_move = technic.machine_inventory_move,
|
||||
technic_run = run,
|
||||
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",{
|
||||
description = machine_desc:format(tier),
|
||||
tiles = {"technic_"..ltier.."_"..machine_name.."_top.png",
|
||||
"technic_"..ltier.."_"..machine_name.."_bottom.png",
|
||||
"technic_"..ltier.."_"..machine_name.."_side.png",
|
||||
"technic_"..ltier.."_"..machine_name.."_side.png",
|
||||
"technic_"..ltier.."_"..machine_name.."_side.png",
|
||||
"technic_"..ltier.."_"..machine_name.."_front_active.png"},
|
||||
tiles = {
|
||||
"technic_"..ltier.."_"..machine_name.."_top.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_bottom.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_side.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_side.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_side.png"..tentry,
|
||||
"technic_"..ltier.."_"..machine_name.."_front_active.png"
|
||||
},
|
||||
paramtype2 = "facedir",
|
||||
drop = "technic:"..ltier.."_"..machine_name,
|
||||
groups = active_groups,
|
||||
@ -190,6 +237,25 @@ function technic.register_base_machine(data)
|
||||
allow_metadata_inventory_move = technic.machine_inventory_move,
|
||||
technic_run = run,
|
||||
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)
|
||||
|
@ -7,11 +7,19 @@
|
||||
-- Once the receiver side is powered it will deliver power to the other side.
|
||||
-- Unused power is wasted just like any other producer!
|
||||
|
||||
local digilines_path = minetest.get_modpath("digilines")
|
||||
|
||||
local S = technic.getter
|
||||
|
||||
local cable_entry = "^technic_cable_connection_overlay.png"
|
||||
|
||||
local function set_supply_converter_formspec(meta)
|
||||
local formspec = "size[5,2.25]"..
|
||||
"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
|
||||
-- state they'll switch to, so that multiple presses (arising
|
||||
-- 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
|
||||
if fields.power then
|
||||
power = tonumber(fields.power) or 0
|
||||
power = 100 * math.floor(power / 100)
|
||||
power = math.max(power, 0)
|
||||
power = math.min(power, 10000)
|
||||
power = 100 * math.floor(power / 100)
|
||||
if power == meta:get_int("power") then power = nil end
|
||||
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.mesecon_mode_0 then meta:set_int("mesecon_mode", 0) 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)
|
||||
-- run only in producer stage.
|
||||
if run_stage == technic.receiver then
|
||||
@ -109,9 +160,14 @@ end
|
||||
|
||||
minetest.register_node("technic:supply_converter", {
|
||||
description = S("Supply Converter"),
|
||||
tiles = {"technic_supply_converter_top.png", "technic_supply_converter_bottom.png",
|
||||
"technic_supply_converter_side.png", "technic_supply_converter_side.png",
|
||||
"technic_supply_converter_side.png", "technic_supply_converter_side.png"},
|
||||
tiles = {
|
||||
"technic_supply_converter_tb.png"..cable_entry,
|
||||
"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,
|
||||
technic_machine=1, technic_all_tiers=1},
|
||||
connect_sides = {"top", "bottom"},
|
||||
@ -120,6 +176,9 @@ minetest.register_node("technic:supply_converter", {
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
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("enabled", 1)
|
||||
meta:set_int("mesecon_mode", 0)
|
||||
@ -127,6 +186,7 @@ minetest.register_node("technic:supply_converter", {
|
||||
set_supply_converter_formspec(meta)
|
||||
end,
|
||||
mesecons = mesecons,
|
||||
digiline = digiline_def,
|
||||
technic_run = run,
|
||||
technic_on_disable = run,
|
||||
})
|
||||
|
@ -39,6 +39,8 @@ local digilines_path = minetest.get_modpath("digilines")
|
||||
|
||||
local S = technic.getter
|
||||
|
||||
local cable_entry = "^technic_cable_connection_overlay.png"
|
||||
|
||||
minetest.register_craft({
|
||||
output = "technic:switching_station",
|
||||
recipe = {
|
||||
@ -57,9 +59,13 @@ end
|
||||
|
||||
minetest.register_node("technic:switching_station",{
|
||||
description = S("Switching Station"),
|
||||
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"},
|
||||
tiles = {
|
||||
"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},
|
||||
connect_sides = {"bottom"},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
|
362
technic/models/technic_reactor.obj
Normal 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
|
Before Width: | Height: | Size: 576 B |
Before Width: | Height: | Size: 639 B |
Before Width: | Height: | Size: 587 B |
BIN
technic/textures/technic_cable_connection_overlay.png
Normal file
After Width: | Height: | Size: 299 B |
Before Width: | Height: | Size: 653 B After Width: | Height: | Size: 338 B |
BIN
technic/textures/technic_hv_battery_box_front.png
Normal file
After Width: | Height: | Size: 452 B |
Before Width: | Height: | Size: 777 B After Width: | Height: | Size: 475 B |
Before Width: | Height: | Size: 792 B After Width: | Height: | Size: 575 B |
Before Width: | Height: | Size: 738 B After Width: | Height: | Size: 591 B |
Before Width: | Height: | Size: 594 B After Width: | Height: | Size: 236 B |
Before Width: | Height: | Size: 337 B After Width: | Height: | Size: 197 B |
Before Width: | Height: | Size: 738 B After Width: | Height: | Size: 591 B |
BIN
technic/textures/technic_mv_battery_box_front.png
Normal file
After Width: | Height: | Size: 239 B |
Before Width: | Height: | Size: 587 B After Width: | Height: | Size: 159 B |
Before Width: | Height: | Size: 337 B After Width: | Height: | Size: 197 B |
Before Width: | Height: | Size: 506 B |
Before Width: | Height: | Size: 738 B |
BIN
technic/textures/technic_supply_converter_tb.png
Normal file
After Width: | Height: | Size: 656 B |
Before Width: | Height: | Size: 738 B |
@ -1,4 +1,3 @@
|
||||
|
||||
technic.chests.groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
|
||||
tubedevice=1, tubedevice_receiver=1}
|
||||
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)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
if meta:get_int("splitstacks") == 1 then
|
||||
stack = stack:peek_item(1)
|
||||
end
|
||||
return inv:room_for_item("main",stack)
|
||||
end,
|
||||
input_inventory = "main",
|
||||
|
@ -1,9 +1,16 @@
|
||||
local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end
|
||||
|
||||
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
|
||||
-- Pipeworks is not installed. Simulate using a dummy table...
|
||||
pipeworks = {}
|
||||
fs_helpers = {}
|
||||
local pipeworks_meta = {}
|
||||
setmetatable(pipeworks, pipeworks_meta)
|
||||
local dummy = function()
|
||||
@ -15,6 +22,12 @@ if not minetest.get_modpath("pipeworks") then
|
||||
end
|
||||
pipeworks.after_place = 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
|
||||
|
||||
local chest_mark_colors = {
|
||||
@ -72,6 +85,16 @@ local function set_formspec(pos, data, page)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
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
|
||||
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")).."]"
|
||||
@ -79,13 +102,13 @@ local function set_formspec(pos, data, page)
|
||||
if data.infotext then
|
||||
local formspec_infotext = minetest.formspec_escape(meta:get_string("infotext"))
|
||||
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;]"
|
||||
.."label["..(data.hileft+3)..",0;"..formspec_infotext.."]"
|
||||
.."label["..(shift_edit_field+data.hileft+3)..",0;"..formspec_infotext.."]"
|
||||
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;]"
|
||||
.."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:")..";"
|
||||
..formspec_infotext.."]"
|
||||
end
|
||||
@ -169,12 +192,17 @@ local function get_receive_fields(name, data)
|
||||
local nn = "technic:"..lname..(data.locked and "_locked" or "").."_chest"
|
||||
check_color_buttons(pos, meta, nn, fields)
|
||||
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)
|
||||
set_formspec(pos, data, page)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function technic.chests:definition(name, data)
|
||||
local lname = name:lower()
|
||||
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.loleft..","..data.lotop..";8,4;technic_main_inventory.png]"..
|
||||
"listring[]"
|
||||
|
||||
if data.sort then
|
||||
data.base_formspec = data.base_formspec.."button["..data.hileft..","..(data.height+1.1)..";1,0.8;sort;"..S("Sort").."]"
|
||||
end
|
||||
@ -239,11 +268,24 @@ function technic.chests:definition(name, data)
|
||||
desc = S("%s Chest"):format(name)
|
||||
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 = {
|
||||
description = desc,
|
||||
tiles = {"technic_"..lname.."_chest_top.png", "technic_"..lname.."_chest_top.png",
|
||||
"technic_"..lname.."_chest_side.png", "technic_"..lname.."_chest_side.png",
|
||||
"technic_"..lname.."_chest_side.png", table.concat(front, "^")},
|
||||
tiles = {
|
||||
"technic_"..lname.."_chest_top.png"..tentry,
|
||||
"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",
|
||||
groups = self.groups,
|
||||
tube = self.tube,
|
||||
|
@ -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_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_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_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_threshhold = 0.3
|
||||
local lead_threshold = 0.3
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
@ -20,7 +20,7 @@ minetest.register_ore({
|
||||
y_min = -300,
|
||||
y_max = -80,
|
||||
noise_params = uranium_params,
|
||||
noise_threshhold = uranium_threshhold,
|
||||
noise_threshold = uranium_threshold,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
@ -33,7 +33,7 @@ minetest.register_ore({
|
||||
y_min = -200,
|
||||
y_max = -100,
|
||||
noise_params = chromium_params,
|
||||
noise_threshhold = chromium_threshhold,
|
||||
noise_threshold = chromium_threshold,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
@ -47,7 +47,7 @@ minetest.register_ore({
|
||||
y_max = -200,
|
||||
flags = "absheight",
|
||||
noise_params = chromium_params,
|
||||
noise_threshhold = chromium_threshhold,
|
||||
noise_threshold = chromium_threshold,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
@ -58,7 +58,9 @@ minetest.register_ore({
|
||||
clust_num_ores = 5,
|
||||
clust_size = 7,
|
||||
y_min = -32,
|
||||
y_max = 2
|
||||
y_max = 2,
|
||||
noise_params = zinc_params,
|
||||
noise_threshold = zinc_threshold,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
@ -72,7 +74,7 @@ minetest.register_ore({
|
||||
y_max = -32,
|
||||
flags = "absheight",
|
||||
noise_params = zinc_params,
|
||||
noise_threshhold = zinc_threshhold,
|
||||
noise_threshold = zinc_threshold,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
@ -85,7 +87,7 @@ minetest.register_ore({
|
||||
y_min = -16,
|
||||
y_max = 16,
|
||||
noise_params = lead_params,
|
||||
noise_threshhold = lead_threshhold,
|
||||
noise_threshold = lead_threshold,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
@ -98,7 +100,7 @@ minetest.register_ore({
|
||||
y_min = -128,
|
||||
y_max = -16,
|
||||
noise_params = lead_params,
|
||||
noise_threshhold = lead_threshhold,
|
||||
noise_threshold = lead_threshold,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
@ -112,7 +114,7 @@ minetest.register_ore({
|
||||
y_max = -128,
|
||||
flags = "absheight",
|
||||
noise_params = lead_params,
|
||||
noise_threshhold = lead_threshhold,
|
||||
noise_threshold = lead_threshold,
|
||||
})
|
||||
|
||||
-- Sulfur
|
||||
@ -170,7 +172,7 @@ minetest.register_ore({
|
||||
clust_size = 3,
|
||||
y_min = -31000,
|
||||
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}
|
||||
})
|
||||
end
|
||||
@ -185,7 +187,7 @@ minetest.register_ore({
|
||||
clust_size = 4,
|
||||
y_min = -31000,
|
||||
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}
|
||||
})
|
||||
end
|
||||
|