mirror of
https://github.com/mt-mods/pipeworks.git
synced 2025-06-29 23:00:49 +02:00
Compare commits
14 Commits
2018-11-23
...
975e20f704
Author | SHA1 | Date | |
---|---|---|---|
975e20f704 | |||
75cfac34e6 | |||
d5fe933456 | |||
6ad2c9f568 | |||
2693e2ecbb | |||
05ca3e4f4f | |||
c93df73a5c | |||
27eb2ca9de | |||
dc8778d7d3 | |||
26e7b46415 | |||
839b0ed4b1 | |||
da764f4ce0 | |||
ef5d30c92d | |||
f2fff77e90 |
@ -66,8 +66,11 @@ local function run_autocrafter(pos, elapsed)
|
|||||||
local inventory = meta:get_inventory()
|
local inventory = meta:get_inventory()
|
||||||
local craft = get_craft(pos, inventory)
|
local craft = get_craft(pos, inventory)
|
||||||
local output_item = craft.output.item
|
local output_item = craft.output.item
|
||||||
|
-- NALC: existence de limitgroup ?
|
||||||
|
local limitcraft = minetest.get_item_group(output_item:get_name(), "limitcraft") or 0
|
||||||
-- only use crafts that have an actual result
|
-- only use crafts that have an actual result
|
||||||
if output_item:is_empty() then
|
-- NALC: ou si l'item n'est pas dans le group limitcraft
|
||||||
|
if output_item:is_empty() or limitcraft > 0 then
|
||||||
meta:set_string("infotext", "unconfigured Autocrafter: unknown recipe")
|
meta:set_string("infotext", "unconfigured Autocrafter: unknown recipe")
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
@ -122,7 +122,7 @@ end
|
|||||||
-- when they are updated.
|
-- when they are updated.
|
||||||
function pipeworks.on_rotate(pos, node, user, mode, new_param2)
|
function pipeworks.on_rotate(pos, node, user, mode, new_param2)
|
||||||
node.param2 = new_param2
|
node.param2 = new_param2
|
||||||
minetest.set_node(pos, node)
|
minetest.swap_node(pos, node)
|
||||||
pipeworks.scan_for_tube_objects(pos)
|
pipeworks.scan_for_tube_objects(pos)
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
default
|
default
|
||||||
basic_materials
|
basic_materials
|
||||||
mesecons
|
screwdriver
|
||||||
mesecons_mvps
|
mesecons?
|
||||||
|
mesecons_mvps?
|
||||||
digilines?
|
digilines?
|
||||||
|
signs_lib?
|
||||||
|
40
devices.lua
40
devices.lua
@ -142,7 +142,7 @@ for s in ipairs(states) do
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = dgroups,
|
groups = dgroups,
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_metal_defaults(),
|
||||||
walkable = true,
|
walkable = true,
|
||||||
pipe_connections = { top = 1 },
|
pipe_connections = { top = 1 },
|
||||||
after_place_node = function(pos)
|
after_place_node = function(pos)
|
||||||
@ -194,7 +194,7 @@ for s in ipairs(states) do
|
|||||||
fixed = { -5/16, -4/16, -8/16, 5/16, 5/16, 8/16 }
|
fixed = { -5/16, -4/16, -8/16, 5/16, 5/16, 8/16 }
|
||||||
},
|
},
|
||||||
groups = dgroups,
|
groups = dgroups,
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_metal_defaults(),
|
||||||
walkable = true,
|
walkable = true,
|
||||||
on_place = pipeworks.rotate_on_place,
|
on_place = pipeworks.rotate_on_place,
|
||||||
after_dig_node = function(pos)
|
after_dig_node = function(pos)
|
||||||
@ -240,7 +240,7 @@ minetest.register_node(nodename_valve_loaded, {
|
|||||||
fixed = { -5/16, -4/16, -8/16, 5/16, 5/16, 8/16 }
|
fixed = { -5/16, -4/16, -8/16, 5/16, 5/16, 8/16 }
|
||||||
},
|
},
|
||||||
groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
|
groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_metal_defaults(),
|
||||||
walkable = true,
|
walkable = true,
|
||||||
on_place = pipeworks.rotate_on_place,
|
on_place = pipeworks.rotate_on_place,
|
||||||
after_dig_node = function(pos)
|
after_dig_node = function(pos)
|
||||||
@ -289,7 +289,7 @@ minetest.register_node("pipeworks:grating", {
|
|||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {snappy=3, pipe=1},
|
groups = {snappy=3, pipe=1},
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_metal_defaults(),
|
||||||
walkable = true,
|
walkable = true,
|
||||||
pipe_connections = { top = 1 },
|
pipe_connections = { top = 1 },
|
||||||
after_place_node = function(pos)
|
after_place_node = function(pos)
|
||||||
@ -313,7 +313,7 @@ minetest.register_node(nodename_spigot_empty, {
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {snappy=3, pipe=1},
|
groups = {snappy=3, pipe=1},
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_metal_defaults(),
|
||||||
walkable = true,
|
walkable = true,
|
||||||
pipe_connections = { left=1, right=1, front=1, back=1,
|
pipe_connections = { left=1, right=1, front=1, back=1,
|
||||||
left_param2 = 3, right_param2 = 1, front_param2 = 2, back_param2 = 0 },
|
left_param2 = 3, right_param2 = 1, front_param2 = 2, back_param2 = 0 },
|
||||||
@ -355,7 +355,7 @@ minetest.register_node(nodename_spigot_loaded, {
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
|
groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_metal_defaults(),
|
||||||
walkable = true,
|
walkable = true,
|
||||||
pipe_connections = { left=1, right=1, front=1, back=1,
|
pipe_connections = { left=1, right=1, front=1, back=1,
|
||||||
left_param2 = 3, right_param2 = 1, front_param2 = 2, back_param2 = 0 },
|
left_param2 = 3, right_param2 = 1, front_param2 = 2, back_param2 = 0 },
|
||||||
@ -409,7 +409,7 @@ minetest.register_node(nodename_panel_empty, {
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {snappy=3, pipe=1},
|
groups = {snappy=3, pipe=1},
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_metal_defaults(),
|
||||||
walkable = true,
|
walkable = true,
|
||||||
on_place = pipeworks.rotate_on_place,
|
on_place = pipeworks.rotate_on_place,
|
||||||
after_dig_node = function(pos)
|
after_dig_node = function(pos)
|
||||||
@ -429,7 +429,7 @@ minetest.register_node(nodename_panel_loaded, {
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
|
groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_metal_defaults(),
|
||||||
walkable = true,
|
walkable = true,
|
||||||
on_place = pipeworks.rotate_on_place,
|
on_place = pipeworks.rotate_on_place,
|
||||||
after_dig_node = function(pos)
|
after_dig_node = function(pos)
|
||||||
@ -456,7 +456,7 @@ minetest.register_node(nodename_sensor_empty, {
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {snappy=3, pipe=1},
|
groups = {snappy=3, pipe=1},
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_metal_defaults(),
|
||||||
walkable = true,
|
walkable = true,
|
||||||
on_place = pipeworks.rotate_on_place,
|
on_place = pipeworks.rotate_on_place,
|
||||||
after_dig_node = function(pos)
|
after_dig_node = function(pos)
|
||||||
@ -495,7 +495,7 @@ minetest.register_node(nodename_sensor_loaded, {
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
|
groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_metal_defaults(),
|
||||||
walkable = true,
|
walkable = true,
|
||||||
on_place = pipeworks.rotate_on_place,
|
on_place = pipeworks.rotate_on_place,
|
||||||
after_dig_node = function(pos)
|
after_dig_node = function(pos)
|
||||||
@ -560,7 +560,7 @@ for fill = 0, 10 do
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {snappy=3, pipe=1, tankfill=fill+1, not_in_creative_inventory=1},
|
groups = {snappy=3, pipe=1, tankfill=fill+1, not_in_creative_inventory=1},
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_metal_defaults(),
|
||||||
walkable = true,
|
walkable = true,
|
||||||
drop = "pipeworks:storage_tank_0",
|
drop = "pipeworks:storage_tank_0",
|
||||||
pipe_connections = { top = 1, bottom = 1},
|
pipe_connections = { top = 1, bottom = 1},
|
||||||
@ -588,7 +588,7 @@ for fill = 0, 10 do
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = sgroups,
|
groups = sgroups,
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_metal_defaults(),
|
||||||
walkable = true,
|
walkable = true,
|
||||||
drop = "pipeworks:storage_tank_0",
|
drop = "pipeworks:storage_tank_0",
|
||||||
pipe_connections = { top = 1, bottom = 1},
|
pipe_connections = { top = 1, bottom = 1},
|
||||||
@ -614,7 +614,7 @@ minetest.register_node(nodename_fountain_empty, {
|
|||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {snappy=3, pipe=1},
|
groups = {snappy=3, pipe=1},
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_metal_defaults(),
|
||||||
walkable = true,
|
walkable = true,
|
||||||
pipe_connections = { bottom = 1 },
|
pipe_connections = { bottom = 1 },
|
||||||
after_place_node = function(pos)
|
after_place_node = function(pos)
|
||||||
@ -648,7 +648,7 @@ minetest.register_node(nodename_fountain_loaded, {
|
|||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
|
groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_metal_defaults(),
|
||||||
walkable = true,
|
walkable = true,
|
||||||
pipe_connections = { bottom = 1 },
|
pipe_connections = { bottom = 1 },
|
||||||
after_place_node = function(pos)
|
after_place_node = function(pos)
|
||||||
@ -698,7 +698,7 @@ minetest.register_node(nodename_sp_empty, {
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {snappy=3, pipe=1},
|
groups = {snappy=3, pipe=1},
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_metal_defaults(),
|
||||||
walkable = true,
|
walkable = true,
|
||||||
on_place = pipeworks.rotate_on_place,
|
on_place = pipeworks.rotate_on_place,
|
||||||
after_dig_node = function(pos)
|
after_dig_node = function(pos)
|
||||||
@ -706,7 +706,9 @@ minetest.register_node(nodename_sp_empty, {
|
|||||||
end,
|
end,
|
||||||
selection_box = sp_cbox,
|
selection_box = sp_cbox,
|
||||||
collision_box = sp_cbox,
|
collision_box = sp_cbox,
|
||||||
on_rotate = pipeworks.fix_after_rotation
|
on_rotate = pipeworks.fix_after_rotation,
|
||||||
|
check_for_pole = pipeworks.check_for_vert_pipe,
|
||||||
|
check_for_horiz_pole = pipeworks.check_for_horiz_pipe
|
||||||
})
|
})
|
||||||
|
|
||||||
local nodename_sp_loaded = "pipeworks:straight_pipe_loaded"
|
local nodename_sp_loaded = "pipeworks:straight_pipe_loaded"
|
||||||
@ -718,7 +720,7 @@ minetest.register_node(nodename_sp_loaded, {
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
|
groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_metal_defaults(),
|
||||||
walkable = true,
|
walkable = true,
|
||||||
on_place = pipeworks.rotate_on_place,
|
on_place = pipeworks.rotate_on_place,
|
||||||
after_dig_node = function(pos)
|
after_dig_node = function(pos)
|
||||||
@ -727,7 +729,9 @@ minetest.register_node(nodename_sp_loaded, {
|
|||||||
selection_box = sp_cbox,
|
selection_box = sp_cbox,
|
||||||
collision_box = sp_cbox,
|
collision_box = sp_cbox,
|
||||||
drop = "pipeworks:straight_pipe_empty",
|
drop = "pipeworks:straight_pipe_empty",
|
||||||
on_rotate = pipeworks.fix_after_rotation
|
on_rotate = pipeworks.fix_after_rotation,
|
||||||
|
check_for_pole = pipeworks.check_for_vert_pipe,
|
||||||
|
check_for_horiz_pole = pipeworks.check_for_horiz_pipe
|
||||||
})
|
})
|
||||||
|
|
||||||
new_flow_logic_register.directional_horizonal_rotate(nodename_sp_empty, true)
|
new_flow_logic_register.directional_horizonal_rotate(nodename_sp_empty, true)
|
||||||
|
@ -193,6 +193,8 @@ local function punch_filter(data, filtpos, filtnode, msg)
|
|||||||
["technic:mv_grinder"] = "dst",
|
["technic:mv_grinder"] = "dst",
|
||||||
["technic:mv_grinder_active"] = "dst",
|
["technic:mv_grinder_active"] = "dst",
|
||||||
["technic:tool_workshop"] = "src",
|
["technic:tool_workshop"] = "src",
|
||||||
|
["technic:mv_freezer"] = "dst",
|
||||||
|
["technic:mv_freezer_active"] = "dst"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- make sure there's something appropriate to inject the item into
|
-- make sure there's something appropriate to inject the item into
|
||||||
|
11
init.lua
11
init.lua
@ -102,6 +102,10 @@ if pipeworks.toggles.finite_water == nil then
|
|||||||
dofile(pipeworks.modpath.."/autodetect-finite-water.lua")
|
dofile(pipeworks.modpath.."/autodetect-finite-water.lua")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if minetest.get_modpath("signs_lib") then
|
||||||
|
dofile(pipeworks.modpath.."/signs_compat.lua")
|
||||||
|
end
|
||||||
|
|
||||||
dofile(pipeworks.modpath.."/common.lua")
|
dofile(pipeworks.modpath.."/common.lua")
|
||||||
dofile(pipeworks.modpath.."/models.lua")
|
dofile(pipeworks.modpath.."/models.lua")
|
||||||
dofile(pipeworks.modpath.."/autoplace_pipes.lua")
|
dofile(pipeworks.modpath.."/autoplace_pipes.lua")
|
||||||
@ -133,15 +137,16 @@ dofile(pipeworks.modpath..logicdir.."flowable_node_registry_install.lua")
|
|||||||
if pipeworks.enable_pipes then dofile(pipeworks.modpath.."/pipes.lua") end
|
if pipeworks.enable_pipes then dofile(pipeworks.modpath.."/pipes.lua") end
|
||||||
if pipeworks.enable_teleport_tube then dofile(pipeworks.modpath.."/teleport_tube.lua") end
|
if pipeworks.enable_teleport_tube then dofile(pipeworks.modpath.."/teleport_tube.lua") end
|
||||||
if pipeworks.enable_pipe_devices then dofile(pipeworks.modpath.."/devices.lua") end
|
if pipeworks.enable_pipe_devices then dofile(pipeworks.modpath.."/devices.lua") end
|
||||||
|
|
||||||
if pipeworks.enable_redefines then
|
if pipeworks.enable_redefines then
|
||||||
dofile(pipeworks.modpath.."/compat-chests.lua")
|
dofile(pipeworks.modpath.."/compat-chests.lua")
|
||||||
dofile(pipeworks.modpath.."/compat-furnaces.lua")
|
dofile(pipeworks.modpath.."/compat-furnaces.lua")
|
||||||
end
|
end
|
||||||
if pipeworks.enable_autocrafter then dofile(pipeworks.modpath.."/autocrafter.lua") end
|
if pipeworks.enable_autocrafter then dofile(pipeworks.modpath.."/autocrafter.lua") end
|
||||||
if pipeworks.enable_lua_tube then dofile(pipeworks.modpath.."/lua_tube.lua") end
|
if pipeworks.enable_lua_tube and
|
||||||
|
(minetest.get_modpath("mesecons") or minetest.get_modpath("digilines")) then
|
||||||
|
dofile(pipeworks.modpath.."/lua_tube.lua")
|
||||||
|
end
|
||||||
|
|
||||||
minetest.register_alias("pipeworks:pipe", "pipeworks:pipe_110000_empty")
|
minetest.register_alias("pipeworks:pipe", "pipeworks:pipe_110000_empty")
|
||||||
|
|
||||||
print("Pipeworks loaded!")
|
print("Pipeworks loaded!")
|
||||||
|
|
||||||
|
@ -333,8 +333,11 @@ local safe_globals = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
local function create_environment(pos, mem, event)
|
local function create_environment(pos, mem, event)
|
||||||
-- Gather variables for the environment
|
-- Make sure the tube hasn't broken.
|
||||||
local vports = minetest.registered_nodes[minetest.get_node(pos).name].virtual_portstates
|
local vports = minetest.registered_nodes[minetest.get_node(pos).name].virtual_portstates
|
||||||
|
if not vports then return {} end
|
||||||
|
|
||||||
|
-- Gather variables for the environment
|
||||||
local vports_copy = {}
|
local vports_copy = {}
|
||||||
for k, v in pairs(vports) do vports_copy[k] = v end
|
for k, v in pairs(vports) do vports_copy[k] = v end
|
||||||
local rports = get_real_port_states(pos)
|
local rports = get_real_port_states(pos)
|
||||||
|
@ -46,6 +46,11 @@ local function read_entities()
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function write_entities()
|
local function write_entities()
|
||||||
|
if not luaentity.entities then
|
||||||
|
-- This can happen if crashing on startup, causing another error that
|
||||||
|
-- masks the original one. Return gracefully in that case instead.
|
||||||
|
return
|
||||||
|
end
|
||||||
for _, entity in pairs(luaentity.entities) do
|
for _, entity in pairs(luaentity.entities) do
|
||||||
setmetatable(entity, nil)
|
setmetatable(entity, nil)
|
||||||
for _, attached in pairs(entity._attached_entities) do
|
for _, attached in pairs(entity._attached_entities) do
|
||||||
|
14
pipes.lua
14
pipes.lua
@ -73,7 +73,7 @@ for index, connects in ipairs(cconnects) do
|
|||||||
fixed = outsel
|
fixed = outsel
|
||||||
},
|
},
|
||||||
groups = pgroups,
|
groups = pgroups,
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_metal_defaults(),
|
||||||
walkable = true,
|
walkable = true,
|
||||||
drop = "pipeworks:pipe_1_empty",
|
drop = "pipeworks:pipe_1_empty",
|
||||||
after_place_node = function(pos)
|
after_place_node = function(pos)
|
||||||
@ -82,7 +82,10 @@ for index, connects in ipairs(cconnects) do
|
|||||||
after_dig_node = function(pos)
|
after_dig_node = function(pos)
|
||||||
pipeworks.scan_for_pipe_objects(pos)
|
pipeworks.scan_for_pipe_objects(pos)
|
||||||
end,
|
end,
|
||||||
on_rotate = false
|
on_rotate = false,
|
||||||
|
check_for_pole = pipeworks.check_for_vert_pipe,
|
||||||
|
check_for_horiz_pole = pipeworks.check_for_horiz_pipe,
|
||||||
|
pipenumber = index
|
||||||
})
|
})
|
||||||
|
|
||||||
local pgroups = {snappy = 3, pipe = 1, not_in_creative_inventory = 1}
|
local pgroups = {snappy = 3, pipe = 1, not_in_creative_inventory = 1}
|
||||||
@ -104,7 +107,7 @@ for index, connects in ipairs(cconnects) do
|
|||||||
fixed = outsel
|
fixed = outsel
|
||||||
},
|
},
|
||||||
groups = pgroups,
|
groups = pgroups,
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_metal_defaults(),
|
||||||
walkable = true,
|
walkable = true,
|
||||||
drop = "pipeworks:pipe_1_empty",
|
drop = "pipeworks:pipe_1_empty",
|
||||||
after_place_node = function(pos)
|
after_place_node = function(pos)
|
||||||
@ -114,7 +117,10 @@ for index, connects in ipairs(cconnects) do
|
|||||||
after_dig_node = function(pos)
|
after_dig_node = function(pos)
|
||||||
pipeworks.scan_for_pipe_objects(pos)
|
pipeworks.scan_for_pipe_objects(pos)
|
||||||
end,
|
end,
|
||||||
on_rotate = false
|
on_rotate = false,
|
||||||
|
check_for_pole = pipeworks.check_for_vert_pipe,
|
||||||
|
check_for_horiz_pole = pipeworks.check_for_horiz_pipe,
|
||||||
|
pipenumber = index
|
||||||
})
|
})
|
||||||
|
|
||||||
local emptypipe = "pipeworks:pipe_"..index.."_empty"
|
local emptypipe = "pipeworks:pipe_"..index.."_empty"
|
||||||
|
@ -162,6 +162,8 @@ if pipeworks.enable_one_way_tube then
|
|||||||
after_place_node = pipeworks.after_place,
|
after_place_node = pipeworks.after_place,
|
||||||
after_dig_node = pipeworks.after_dig,
|
after_dig_node = pipeworks.after_dig,
|
||||||
on_rotate = pipeworks.on_rotate,
|
on_rotate = pipeworks.on_rotate,
|
||||||
|
check_for_pole = pipeworks.check_for_vert_tube,
|
||||||
|
check_for_horiz_pole = pipeworks.check_for_horiz_tube
|
||||||
})
|
})
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "pipeworks:one_way_tube 2",
|
output = "pipeworks:one_way_tube 2",
|
||||||
|
241
signs_compat.lua
Normal file
241
signs_compat.lua
Normal file
@ -0,0 +1,241 @@
|
|||||||
|
-- This file adds placement rules for signs_lib, if present
|
||||||
|
|
||||||
|
local spv = {
|
||||||
|
[4] = true,
|
||||||
|
[6] = true,
|
||||||
|
[8] = true,
|
||||||
|
[10] = true,
|
||||||
|
[13] = true,
|
||||||
|
[15] = true,
|
||||||
|
[17] = true,
|
||||||
|
[19] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
local sphns = {
|
||||||
|
[1] = true,
|
||||||
|
[3] = true,
|
||||||
|
[5] = true,
|
||||||
|
[7] = true,
|
||||||
|
[9] = true,
|
||||||
|
[11] = true,
|
||||||
|
[21] = true,
|
||||||
|
[23] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
local sphew = {
|
||||||
|
[0] = true,
|
||||||
|
[2] = true,
|
||||||
|
[12] = true,
|
||||||
|
[14] = true,
|
||||||
|
[16] = true,
|
||||||
|
[18] = true,
|
||||||
|
[20] = true,
|
||||||
|
[22] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
local owtv = {
|
||||||
|
[5] = true,
|
||||||
|
[7] = true,
|
||||||
|
[9] = true,
|
||||||
|
[11] = true,
|
||||||
|
[12] = true,
|
||||||
|
[14] = true,
|
||||||
|
[16] = true,
|
||||||
|
[18] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
local owtns = {
|
||||||
|
[0] = true,
|
||||||
|
[2] = true,
|
||||||
|
[4] = true,
|
||||||
|
[6] = true,
|
||||||
|
[8] = true,
|
||||||
|
[10] = true,
|
||||||
|
[20] = true,
|
||||||
|
[22] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
local owtew = {
|
||||||
|
[1] = true,
|
||||||
|
[3] = true,
|
||||||
|
[13] = true,
|
||||||
|
[15] = true,
|
||||||
|
[17] = true,
|
||||||
|
[19] = true,
|
||||||
|
[21] = true,
|
||||||
|
[23] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
local vert_n = {
|
||||||
|
[3] = {[5] = true},
|
||||||
|
[6] = {[9] = true, [12] = true, [16] = true},
|
||||||
|
[7] = {[9] = true, [11] = true},
|
||||||
|
}
|
||||||
|
|
||||||
|
local vert_e = {
|
||||||
|
[3] = {[5] = true},
|
||||||
|
[6] = {[5] = true, [9] = true, [16] = true},
|
||||||
|
[7] = {[7] = true, [11] = true},
|
||||||
|
}
|
||||||
|
|
||||||
|
local vert_s = {
|
||||||
|
[3] = {[5] = true},
|
||||||
|
[6] = {[5] = true, [12] = true, [16] = true},
|
||||||
|
[7] = {[5] = true, [7] = true},
|
||||||
|
}
|
||||||
|
|
||||||
|
local vert_w = {
|
||||||
|
[3] = {[5] = true},
|
||||||
|
[6] = {[5] = true, [9] = true, [12] = true},
|
||||||
|
[7] = {[5] = true, [9] = true},
|
||||||
|
}
|
||||||
|
|
||||||
|
local horiz_n = {
|
||||||
|
[3] = {[0] = true},
|
||||||
|
[6] = {[0] = true, [4] = true, [20] = true},
|
||||||
|
[7] = {[2] = true, [10] = true},
|
||||||
|
[8] = {[0] = true},
|
||||||
|
[9] = {[2] = true},
|
||||||
|
}
|
||||||
|
|
||||||
|
local horiz_e = {
|
||||||
|
[3] = {[1] = true},
|
||||||
|
[6] = {[1] = true, [17] = true, [21] = true},
|
||||||
|
[7] = {[3] = true, [19] = true},
|
||||||
|
[8] = {[1] = true},
|
||||||
|
[9] = {[3] = true},
|
||||||
|
}
|
||||||
|
|
||||||
|
local horiz_s = {
|
||||||
|
[3] = {[0] = true},
|
||||||
|
[6] = {[0] = true, [8] = true, [20] = true},
|
||||||
|
[7] = {[0] = true, [4] = true},
|
||||||
|
[8] = {[0] = true},
|
||||||
|
[9] = {[0] = true},
|
||||||
|
}
|
||||||
|
|
||||||
|
local horiz_w = {
|
||||||
|
[3] = {[1] = true},
|
||||||
|
[6] = {[1] = true, [13] = true, [21] = true},
|
||||||
|
[7] = {[1] = true, [13] = true},
|
||||||
|
[8] = {[1] = true},
|
||||||
|
[9] = {[1] = true},
|
||||||
|
}
|
||||||
|
|
||||||
|
local function get_sign_dir(node, def)
|
||||||
|
if (node.param2 == 4 and def.paramtype2 == "wallmounted")
|
||||||
|
or (node.param2 == 0 and def.paramtype2 ~= "wallmounted") then
|
||||||
|
return {["N"] = true}
|
||||||
|
elseif (node.param2 == 2 and def.paramtype2 == "wallmounted")
|
||||||
|
or (node.param2 == 1 and def.paramtype2 ~= "wallmounted") then
|
||||||
|
return {["E"] = true}
|
||||||
|
elseif (node.param2 == 5 and def.paramtype2 == "wallmounted")
|
||||||
|
or (node.param2 == 2 and def.paramtype2 ~= "wallmounted") then
|
||||||
|
return {["S"] = true}
|
||||||
|
elseif node.param2 == 3 then
|
||||||
|
return {["W"] = true}
|
||||||
|
end
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
|
||||||
|
--[[
|
||||||
|
In the functions below:
|
||||||
|
|
||||||
|
pos: the (real) position of the placed sign
|
||||||
|
node: the sign node itself
|
||||||
|
def: its definition
|
||||||
|
|
||||||
|
ppos: the position of the pointed node (pipe/tube)
|
||||||
|
pnode: the node itself
|
||||||
|
pdef: its definition
|
||||||
|
|
||||||
|
--]]
|
||||||
|
|
||||||
|
|
||||||
|
-- pipes
|
||||||
|
|
||||||
|
function pipeworks.check_for_vert_pipe(pos, node, def, ppos, pnode, pdef)
|
||||||
|
local signdir = get_sign_dir(node, def)
|
||||||
|
local pipenumber = pdef.pipenumber
|
||||||
|
local pipedir = pnode.param2
|
||||||
|
if string.find(pnode.name, "straight_pipe") and spv[pipedir] then
|
||||||
|
return true
|
||||||
|
elseif signdir["N"] and vert_n[pipenumber] and vert_n[pipenumber][pipedir] then
|
||||||
|
return true
|
||||||
|
elseif signdir["E"] and vert_e[pipenumber] and vert_e[pipenumber][pipedir] then
|
||||||
|
return true
|
||||||
|
elseif signdir["S"] and vert_s[pipenumber] and vert_s[pipenumber][pipedir] then
|
||||||
|
return true
|
||||||
|
elseif signdir["W"] and vert_w[pipenumber] and vert_w[pipenumber][pipedir] then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function pipeworks.check_for_horiz_pipe(pos, node, def, ppos, pnode, pdef)
|
||||||
|
local signdir = get_sign_dir(node, def)
|
||||||
|
local pipenumber = pdef.pipenumber
|
||||||
|
local pipedir = pnode.param2
|
||||||
|
if string.find(pnode.name, "straight_pipe") then
|
||||||
|
if (signdir["N"] or signdir["S"]) and sphns[pipedir] then
|
||||||
|
return true
|
||||||
|
elseif (signdir["E"] or signdir["W"]) and sphew[pipedir] then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
elseif signdir["N"] and horiz_n[pipenumber] and horiz_n[pipenumber][pipedir] then
|
||||||
|
return true
|
||||||
|
elseif signdir["E"] and horiz_e[pipenumber] and horiz_e[pipenumber][pipedir] then
|
||||||
|
return true
|
||||||
|
elseif signdir["S"] and horiz_s[pipenumber] and horiz_s[pipenumber][pipedir] then
|
||||||
|
return true
|
||||||
|
elseif signdir["W"] and horiz_w[pipenumber] and horiz_w[pipenumber][pipedir] then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- tubes
|
||||||
|
|
||||||
|
function pipeworks.check_for_vert_tube(pos, node, def, ppos, pnode, pdef)
|
||||||
|
local signdir = get_sign_dir(node, def)
|
||||||
|
local tubenumber = pdef.tubenumber
|
||||||
|
local tubedir = pnode.param2
|
||||||
|
if pnode.name == "pipeworks:one_way_tube" and owtv[tubedir] then
|
||||||
|
return true
|
||||||
|
elseif tubenumber == 2 and (tubedir == 5 or tubedir == 7) then -- it's a stub pointing up or down
|
||||||
|
return true
|
||||||
|
elseif signdir["N"] and vert_n[tubenumber] and vert_n[tubenumber][tubedir] then
|
||||||
|
return true
|
||||||
|
elseif signdir["E"] and vert_e[tubenumber] and vert_e[tubenumber][tubedir] then
|
||||||
|
return true
|
||||||
|
elseif signdir["S"] and vert_s[tubenumber] and vert_s[tubenumber][tubedir] then
|
||||||
|
return true
|
||||||
|
elseif signdir["W"] and vert_w[tubenumber] and vert_w[tubenumber][tubedir] then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function pipeworks.check_for_horiz_tube(pos, node, def, ppos, pnode, pdef)
|
||||||
|
local signdir = get_sign_dir(node, def)
|
||||||
|
local tubenumber = pdef.tubenumber
|
||||||
|
local tubedir = pnode.param2
|
||||||
|
if tubenumber == 2 then -- it'a a stub pointing sideways
|
||||||
|
if (tubedir == 0 or tubedir == 2) and (signdir["N"] or signdir["S"]) then
|
||||||
|
return true
|
||||||
|
elseif (tubedir == 1 or tubedir == 3) and (signdir["E"] or signdir["W"]) then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
elseif pnode.name == "pipeworks:one_way_tube" then
|
||||||
|
if (signdir["N"] or signdir["S"]) and owtns[tubedir] then
|
||||||
|
return true
|
||||||
|
elseif (signdir["E"] or signdir["W"]) and owtew[tubedir] then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
elseif signdir["N"] and horiz_n[tubenumber] and horiz_n[tubenumber][tubedir] then
|
||||||
|
return true
|
||||||
|
elseif signdir["E"] and horiz_e[tubenumber] and horiz_e[tubenumber][tubedir] then
|
||||||
|
return true
|
||||||
|
elseif signdir["S"] and horiz_s[tubenumber] and horiz_s[tubenumber][tubedir] then
|
||||||
|
return true
|
||||||
|
elseif signdir["W"] and horiz_w[tubenumber] and horiz_w[tubenumber][tubedir] then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
@ -116,7 +116,10 @@ local register_one_tube = function(name, tname, dropname, desc, plain, noctrs, e
|
|||||||
end
|
end
|
||||||
minetest.swap_node(pos, {name = "pipeworks:broken_tube_1"})
|
minetest.swap_node(pos, {name = "pipeworks:broken_tube_1"})
|
||||||
pipeworks.scan_for_tube_objects(pos)
|
pipeworks.scan_for_tube_objects(pos)
|
||||||
end
|
end,
|
||||||
|
check_for_pole = pipeworks.check_for_vert_tube,
|
||||||
|
check_for_horiz_pole = pipeworks.check_for_horiz_tube,
|
||||||
|
tubenumber = tonumber(tname)
|
||||||
}
|
}
|
||||||
if style == "6d" then
|
if style == "6d" then
|
||||||
nodedef.paramtype2 = "facedir"
|
nodedef.paramtype2 = "facedir"
|
||||||
|
Reference in New Issue
Block a user