forked from mtcontrib/pipeworks
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
be2776fc46
@ -47,7 +47,7 @@ local function autocraft(inventory, craft)
|
|||||||
end
|
end
|
||||||
-- consume material
|
-- consume material
|
||||||
for itemname, number in pairs(consumption) do
|
for itemname, number in pairs(consumption) do
|
||||||
for i = 1, number do -- We have to do that since remove_item does not work if count > stack_max
|
for _ = 1, number do -- We have to do that since remove_item does not work if count > stack_max
|
||||||
inventory:remove_item("src", ItemStack(itemname))
|
inventory:remove_item("src", ItemStack(itemname))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -76,7 +76,7 @@ local function run_autocrafter(pos, elapsed)
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
for step = 1, math.floor(elapsed/craft_time) do
|
for _ = 1, math.floor(elapsed/craft_time) do
|
||||||
local continue = autocraft(inventory, craft)
|
local continue = autocraft(inventory, craft)
|
||||||
if not continue then return false end
|
if not continue then return false end
|
||||||
end
|
end
|
||||||
@ -109,7 +109,6 @@ local function after_recipe_change(pos, inventory)
|
|||||||
inventory:set_stack("output", 1, "")
|
inventory:set_stack("output", 1, "")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local recipe_changed = false
|
|
||||||
local recipe = inventory:get_list("recipe")
|
local recipe = inventory:get_list("recipe")
|
||||||
|
|
||||||
local hash = minetest.hash_node_position(pos)
|
local hash = minetest.hash_node_position(pos)
|
||||||
|
@ -81,7 +81,7 @@ local function tube_autoroute(pos)
|
|||||||
local basename = nodedef.basename
|
local basename = nodedef.basename
|
||||||
if nodedef.style == "old" then
|
if nodedef.style == "old" then
|
||||||
local nsurround = ""
|
local nsurround = ""
|
||||||
for i, n in ipairs(active) do
|
for _, n in ipairs(active) do
|
||||||
nsurround = nsurround..n
|
nsurround = nsurround..n
|
||||||
end
|
end
|
||||||
nctr.name = basename.."_"..nsurround
|
nctr.name = basename.."_"..nsurround
|
||||||
|
@ -114,7 +114,7 @@ local fs_helpers = {}
|
|||||||
pipeworks.fs_helpers = fs_helpers
|
pipeworks.fs_helpers = fs_helpers
|
||||||
function fs_helpers.on_receive_fields(pos, fields)
|
function fs_helpers.on_receive_fields(pos, fields)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
for field, value in pairs(fields) do
|
for field in pairs(fields) do
|
||||||
if pipeworks.string_startswith(field, "fs_helpers_cycling:") then
|
if pipeworks.string_startswith(field, "fs_helpers_cycling:") then
|
||||||
local l = field:split(":")
|
local l = field:split(":")
|
||||||
local new_value = tonumber(l[2])
|
local new_value = tonumber(l[2])
|
||||||
|
@ -65,7 +65,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
|
|
||||||
open_chests[pn] = nil
|
open_chests[pn] = nil
|
||||||
for k, v in pairs(open_chests) do
|
for _, v in pairs(open_chests) do
|
||||||
if v.pos.x == pos.x and v.pos.y == pos.y and v.pos.z == pos.z then
|
if v.pos.x == pos.x and v.pos.y == pos.y and v.pos.z == pos.z then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
@ -230,7 +230,7 @@ override.tiles = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
-- Add the extra groups
|
-- Add the extra groups
|
||||||
for i,v in ipairs({override_protected, override, override_open, override_protected_open}) do
|
for _,v in ipairs({override_protected, override, override_open, override_protected_open}) do
|
||||||
v.groups.tubedevice = 1
|
v.groups.tubedevice = 1
|
||||||
v.groups.tubedevice_receiver = 1
|
v.groups.tubedevice_receiver = 1
|
||||||
end
|
end
|
||||||
|
@ -7,7 +7,7 @@ local DS = minetest.get_translator("default")
|
|||||||
|
|
||||||
local fs_helpers = pipeworks.fs_helpers
|
local fs_helpers = pipeworks.fs_helpers
|
||||||
|
|
||||||
tube_entry = "^pipeworks_tube_connection_stony.png"
|
local tube_entry = "^pipeworks_tube_connection_stony.png"
|
||||||
|
|
||||||
local function active_formspec(fuel_percent, item_percent, pos, meta)
|
local function active_formspec(fuel_percent, item_percent, pos, meta)
|
||||||
local formspec =
|
local formspec =
|
||||||
|
26
devices.lua
26
devices.lua
@ -10,7 +10,7 @@ function pipeworks.fix_after_rotation(pos, node, user, mode, new_param2)
|
|||||||
|
|
||||||
if string.find(node.name, "spigot") then new_param2 = new_param2 % 4 end
|
if string.find(node.name, "spigot") then new_param2 = new_param2 % 4 end
|
||||||
|
|
||||||
newnode = string.gsub(node.name, "_on", "_off")
|
local newnode = string.gsub(node.name, "_on", "_off")
|
||||||
minetest.swap_node(pos, { name = newnode, param2 = new_param2 })
|
minetest.swap_node(pos, { name = newnode, param2 = new_param2 })
|
||||||
pipeworks.scan_for_pipe_objects(pos)
|
pipeworks.scan_for_pipe_objects(pos)
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ end
|
|||||||
function pipeworks.rotate_on_place(itemstack, placer, pointed_thing)
|
function pipeworks.rotate_on_place(itemstack, placer, pointed_thing)
|
||||||
|
|
||||||
local playername = placer:get_player_name()
|
local playername = placer:get_player_name()
|
||||||
if not minetest.is_protected(pointed_thing.under, playername)
|
if not minetest.is_protected(pointed_thing.under, playername)
|
||||||
and not minetest.is_protected(pointed_thing.above, playername) then
|
and not minetest.is_protected(pointed_thing.above, playername) then
|
||||||
|
|
||||||
local node = minetest.get_node(pointed_thing.under)
|
local node = minetest.get_node(pointed_thing.under)
|
||||||
@ -36,9 +36,7 @@ function pipeworks.rotate_on_place(itemstack, placer, pointed_thing)
|
|||||||
local under = pointed_thing.under
|
local under = pointed_thing.under
|
||||||
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
|
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
|
||||||
local undernode = minetest.get_node(under)
|
local undernode = minetest.get_node(under)
|
||||||
local abovenode = minetest.get_node(above)
|
|
||||||
local uname = undernode.name
|
local uname = undernode.name
|
||||||
local aname = abovenode.name
|
|
||||||
local isabove = (above.x == under.x) and (above.z == under.z) and (pitch > 0)
|
local isabove = (above.x == under.x) and (above.z == under.z) and (pitch > 0)
|
||||||
local pos1 = above
|
local pos1 = above
|
||||||
|
|
||||||
@ -105,6 +103,7 @@ if minetest.get_modpath("mesecons") then
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--[[
|
||||||
local pipes_devicelist = {
|
local pipes_devicelist = {
|
||||||
"pump",
|
"pump",
|
||||||
"valve",
|
"valve",
|
||||||
@ -120,14 +119,15 @@ local pipes_devicelist = {
|
|||||||
"storage_tank_9",
|
"storage_tank_9",
|
||||||
"storage_tank_10"
|
"storage_tank_10"
|
||||||
}
|
}
|
||||||
|
--]]
|
||||||
|
|
||||||
-- Now define the nodes.
|
-- Now define the nodes.
|
||||||
|
|
||||||
local states = { "on", "off" }
|
local states = { "on", "off" }
|
||||||
local dgroups = ""
|
|
||||||
|
|
||||||
for s in ipairs(states) do
|
for s in ipairs(states) do
|
||||||
|
|
||||||
|
local dgroups
|
||||||
if states[s] == "off" then
|
if states[s] == "off" then
|
||||||
dgroups = {snappy=3, pipe=1}
|
dgroups = {snappy=3, pipe=1}
|
||||||
else
|
else
|
||||||
@ -187,11 +187,11 @@ for s in ipairs(states) do
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
selection_box = {
|
selection_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
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 }
|
||||||
},
|
},
|
||||||
collision_box = {
|
collision_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
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,
|
||||||
@ -233,11 +233,11 @@ minetest.register_node(nodename_valve_loaded, {
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
selection_box = {
|
selection_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
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 }
|
||||||
},
|
},
|
||||||
collision_box = {
|
collision_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
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},
|
||||||
@ -465,7 +465,7 @@ minetest.register_node(nodename_sensor_empty, {
|
|||||||
end,
|
end,
|
||||||
on_construct = function(pos)
|
on_construct = function(pos)
|
||||||
if mesecon then
|
if mesecon then
|
||||||
mesecon.receptor_off(pos, rules)
|
mesecon.receptor_off(pos, rules)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
selection_box = {
|
selection_box = {
|
||||||
@ -504,7 +504,7 @@ minetest.register_node(nodename_sensor_loaded, {
|
|||||||
end,
|
end,
|
||||||
on_construct = function(pos)
|
on_construct = function(pos)
|
||||||
if mesecon then
|
if mesecon then
|
||||||
mesecon.receptor_on(pos, rules)
|
mesecon.receptor_on(pos, rules)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
selection_box = {
|
selection_box = {
|
||||||
@ -626,7 +626,7 @@ minetest.register_node(nodename_fountain_empty, {
|
|||||||
end,
|
end,
|
||||||
on_construct = function(pos)
|
on_construct = function(pos)
|
||||||
if mesecon then
|
if mesecon then
|
||||||
mesecon.receptor_on(pos, rules)
|
mesecon.receptor_on(pos, rules)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
selection_box = {
|
selection_box = {
|
||||||
@ -661,7 +661,7 @@ minetest.register_node(nodename_fountain_loaded, {
|
|||||||
end,
|
end,
|
||||||
on_construct = function(pos)
|
on_construct = function(pos)
|
||||||
if mesecon then
|
if mesecon then
|
||||||
mesecon.receptor_on(pos, rules)
|
mesecon.receptor_on(pos, rules)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
selection_box = {
|
selection_box = {
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
local S = minetest.get_translator("pipeworks")
|
local S = minetest.get_translator("pipeworks")
|
||||||
local fs_helpers = pipeworks.fs_helpers
|
local fs_helpers = pipeworks.fs_helpers
|
||||||
|
|
||||||
local function delay(x)
|
|
||||||
return (function() return x end)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function set_filter_infotext(data, meta)
|
local function set_filter_infotext(data, meta)
|
||||||
local infotext = S("@1 Filter-Injector", data.wise_desc)
|
local infotext = S("@1 Filter-Injector", data.wise_desc)
|
||||||
if meta:get_int("slotseq_mode") == 2 then
|
if meta:get_int("slotseq_mode") == 2 then
|
||||||
|
@ -60,8 +60,8 @@ pipeworks.check_for_inflows = function(pos,node)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if newnode then
|
if newnode then
|
||||||
minetest.add_node(pos,{name=newnode, param2 = node.param2})
|
minetest.add_node(pos,{name=newnode, param2 = node.param2})
|
||||||
minetest.get_meta(pos):set_string("source",minetest.pos_to_string(source))
|
minetest.get_meta(pos):set_string("source",minetest.pos_to_string(source))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -75,15 +75,15 @@ pipeworks.check_sources = function(pos,node)
|
|||||||
newnode = string.gsub(node.name,"loaded","empty")
|
newnode = string.gsub(node.name,"loaded","empty")
|
||||||
end
|
end
|
||||||
|
|
||||||
if newnode then
|
if newnode then
|
||||||
minetest.add_node(pos,{name=newnode, param2 = node.param2})
|
minetest.add_node(pos,{name=newnode, param2 = node.param2})
|
||||||
minetest.get_meta(pos):set_string("source","")
|
minetest.get_meta(pos):set_string("source","")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
pipeworks.spigot_check = function(pos, node)
|
pipeworks.spigot_check = function(pos, node)
|
||||||
local belowname = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name
|
local belowname = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name
|
||||||
if belowname and (belowname == "air" or belowname == "default:water_flowing" or belowname == "default:water_source") then
|
if belowname and (belowname == "air" or belowname == "default:water_flowing" or belowname == "default:water_source") then
|
||||||
local spigotname = minetest.get_node(pos).name
|
local spigotname = minetest.get_node(pos).name
|
||||||
local fdir=node.param2 % 4
|
local fdir=node.param2 % 4
|
||||||
local check = {
|
local check = {
|
||||||
@ -113,7 +113,7 @@ end
|
|||||||
|
|
||||||
pipeworks.fountainhead_check = function(pos, node)
|
pipeworks.fountainhead_check = function(pos, node)
|
||||||
local abovename = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}).name
|
local abovename = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}).name
|
||||||
if abovename and (abovename == "air" or abovename == "default:water_flowing" or abovename == "default:water_source") then
|
if abovename and (abovename == "air" or abovename == "default:water_flowing" or abovename == "default:water_source") then
|
||||||
local fountainhead_name = minetest.get_node(pos).name
|
local fountainhead_name = minetest.get_node(pos).name
|
||||||
local near_node = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z})
|
local near_node = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z})
|
||||||
if near_node and string.find(near_node.name, "_loaded") then
|
if near_node and string.find(near_node.name, "_loaded") then
|
||||||
|
2
init.lua
2
init.lua
@ -6,8 +6,6 @@
|
|||||||
|
|
||||||
pipeworks = {}
|
pipeworks = {}
|
||||||
|
|
||||||
local DEBUG = false
|
|
||||||
|
|
||||||
pipeworks.worldpath = minetest.get_worldpath()
|
pipeworks.worldpath = minetest.get_worldpath()
|
||||||
pipeworks.modpath = minetest.get_modpath("pipeworks")
|
pipeworks.modpath = minetest.get_modpath("pipeworks")
|
||||||
local S = minetest.get_translator("pipeworks")
|
local S = minetest.get_translator("pipeworks")
|
||||||
|
@ -42,7 +42,7 @@ minetest.register_globalstep(function(dtime)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
tube_item_count = {}
|
tube_item_count = {}
|
||||||
for id, entity in pairs(luaentity.entities) do
|
for _, entity in pairs(luaentity.entities) do
|
||||||
if entity.name == "pipeworks:tubed_item" then
|
if entity.name == "pipeworks:tubed_item" then
|
||||||
local h = minetest.hash_node_position(vector.round(entity._pos))
|
local h = minetest.hash_node_position(vector.round(entity._pos))
|
||||||
tube_item_count[h] = (tube_item_count[h] or 0) + 1
|
tube_item_count[h] = (tube_item_count[h] or 0) + 1
|
||||||
@ -194,6 +194,7 @@ minetest.register_entity("pipeworks:tubed_item", {
|
|||||||
|
|
||||||
from_data = function(self, itemstring)
|
from_data = function(self, itemstring)
|
||||||
local stack = ItemStack(itemstring)
|
local stack = ItemStack(itemstring)
|
||||||
|
--[[
|
||||||
local itemtable = stack:to_table()
|
local itemtable = stack:to_table()
|
||||||
local itemname = nil
|
local itemname = nil
|
||||||
if itemtable then
|
if itemtable then
|
||||||
@ -205,6 +206,7 @@ minetest.register_entity("pipeworks:tubed_item", {
|
|||||||
item_texture = minetest.registered_items[itemname].inventory_image
|
item_texture = minetest.registered_items[itemname].inventory_image
|
||||||
item_type = minetest.registered_items[itemname].type
|
item_type = minetest.registered_items[itemname].type
|
||||||
end
|
end
|
||||||
|
--]]
|
||||||
self.object:set_properties({
|
self.object:set_properties({
|
||||||
is_visible = true,
|
is_visible = true,
|
||||||
textures = {stack:get_name()}
|
textures = {stack:get_name()}
|
||||||
@ -391,7 +393,7 @@ if minetest.get_modpath("mesecons_mvps") then
|
|||||||
for _, n in ipairs(moved_nodes) do
|
for _, n in ipairs(moved_nodes) do
|
||||||
moved[minetest.hash_node_position(n.oldpos)] = vector.subtract(n.pos, n.oldpos)
|
moved[minetest.hash_node_position(n.oldpos)] = vector.subtract(n.pos, n.oldpos)
|
||||||
end
|
end
|
||||||
for id, entity in pairs(luaentity.entities) do
|
for _, entity in pairs(luaentity.entities) do
|
||||||
if entity.name == "pipeworks:tubed_item" then
|
if entity.name == "pipeworks:tubed_item" then
|
||||||
local pos = entity:get_pos()
|
local pos = entity:get_pos()
|
||||||
local rpos = vector.round(pos)
|
local rpos = vector.round(pos)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
local S = minetest.get_translator("pipeworks")
|
local S = minetest.get_translator("pipeworks")
|
||||||
|
|
||||||
if not minetest.get_modpath("auto_tree_tap") and
|
if not minetest.get_modpath("auto_tree_tap") and
|
||||||
minetest.get_modpath("technic") then
|
minetest.get_modpath("technic") then
|
||||||
|
|
||||||
minetest.register_abm({
|
minetest.register_abm({
|
||||||
@ -38,10 +38,10 @@ if not minetest.get_modpath("auto_tree_tap") and
|
|||||||
after_place_node = function (pos, placer)
|
after_place_node = function (pos, placer)
|
||||||
pipeworks.scan_for_tube_objects(pos, placer)
|
pipeworks.scan_for_tube_objects(pos, placer)
|
||||||
local placer_pos = placer:get_pos()
|
local placer_pos = placer:get_pos()
|
||||||
|
|
||||||
--correct for the player's height
|
--correct for the player's height
|
||||||
if placer:is_player() then placer_pos.y = placer_pos.y + 1.5 end
|
if placer:is_player() then placer_pos.y = placer_pos.y + 1.5 end
|
||||||
|
|
||||||
--correct for 6d facedir
|
--correct for 6d facedir
|
||||||
if placer_pos then
|
if placer_pos then
|
||||||
local dir = {
|
local dir = {
|
||||||
|
@ -969,7 +969,7 @@ for white = 0, 1 do
|
|||||||
can_go = function(pos, node, velocity, stack)
|
can_go = function(pos, node, velocity, stack)
|
||||||
local src = {name = nil}
|
local src = {name = nil}
|
||||||
-- add color of the incoming tube explicitly; referring to rules, in case they change later
|
-- add color of the incoming tube explicitly; referring to rules, in case they change later
|
||||||
for color, rule in pairs(rules) do
|
for _, rule in pairs(rules) do
|
||||||
if (-velocity.x == rule.x and -velocity.y == rule.y and -velocity.z == rule.z) then
|
if (-velocity.x == rule.x and -velocity.y == rule.y and -velocity.z == rule.z) then
|
||||||
src.name = rule.name
|
src.name = rule.name
|
||||||
break
|
break
|
||||||
|
@ -9,16 +9,16 @@ local filename = minetest.get_worldpath().."/luaentities"
|
|||||||
local function read_file()
|
local function read_file()
|
||||||
local f = io.open(filename, "r")
|
local f = io.open(filename, "r")
|
||||||
if f == nil then return {} end
|
if f == nil then return {} end
|
||||||
local t = f:read("*all")
|
local t = f:read("*all")
|
||||||
f:close()
|
f:close()
|
||||||
if t == "" or t == nil then return {} end
|
if t == "" or t == nil then return {} end
|
||||||
return minetest.deserialize(t) or {}
|
return minetest.deserialize(t) or {}
|
||||||
end
|
end
|
||||||
|
|
||||||
local function write_file(tbl)
|
local function write_file(tbl)
|
||||||
local f = io.open(filename, "w")
|
local f = io.open(filename, "w")
|
||||||
f:write(minetest.serialize(tbl))
|
f:write(minetest.serialize(tbl))
|
||||||
f:close()
|
f:close()
|
||||||
end
|
end
|
||||||
|
|
||||||
local function read_entities()
|
local function read_entities()
|
||||||
@ -36,7 +36,7 @@ local function read_entities()
|
|||||||
y=math.min(30927,y)
|
y=math.min(30927,y)
|
||||||
z=math.min(30927,z)
|
z=math.min(30927,z)
|
||||||
|
|
||||||
entity.start_pos.x = x
|
entity.start_pos.x = x
|
||||||
entity.start_pos.y = y
|
entity.start_pos.y = y
|
||||||
entity.start_pos.z = z
|
entity.start_pos.z = z
|
||||||
|
|
||||||
@ -211,7 +211,7 @@ local entitydef_default = {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
get_velocity = function(self)
|
get_velocity = function(self)
|
||||||
return vector.new(self._velocity)
|
return vector.new(self._velocity)
|
||||||
end,
|
end,
|
||||||
set_velocity = function(self, velocity)
|
set_velocity = function(self, velocity)
|
||||||
self._velocity = vector.new(velocity)
|
self._velocity = vector.new(velocity)
|
||||||
@ -289,7 +289,7 @@ function luaentity.add_entity(pos, name)
|
|||||||
_acceleration = {x = 0, y = 0, z = 0},
|
_acceleration = {x = 0, y = 0, z = 0},
|
||||||
_attached_entities = {},
|
_attached_entities = {},
|
||||||
}
|
}
|
||||||
|
|
||||||
local prototype = luaentity.registered_entities[name]
|
local prototype = luaentity.registered_entities[name]
|
||||||
setmetatable(entity, prototype) -- Default to prototype for other methods
|
setmetatable(entity, prototype) -- Default to prototype for other methods
|
||||||
luaentity.entities[index] = entity
|
luaentity.entities[index] = entity
|
||||||
@ -318,7 +318,7 @@ end
|
|||||||
function luaentity.get_objects_inside_radius(pos, radius)
|
function luaentity.get_objects_inside_radius(pos, radius)
|
||||||
local objects = {}
|
local objects = {}
|
||||||
local index = 1
|
local index = 1
|
||||||
for id, entity in pairs(luaentity.entities) do
|
for _, entity in pairs(luaentity.entities) do
|
||||||
if vector.distance(pos, entity:get_pos()) <= radius then
|
if vector.distance(pos, entity:get_pos()) <= radius then
|
||||||
objects[index] = entity
|
objects[index] = entity
|
||||||
index = index + 1
|
index = index + 1
|
||||||
@ -330,7 +330,7 @@ local move_entities_globalstep_part2 = function(dtime)
|
|||||||
if not luaentity.entities then
|
if not luaentity.entities then
|
||||||
luaentity.entities = read_entities()
|
luaentity.entities = read_entities()
|
||||||
end
|
end
|
||||||
for id, entity in pairs(luaentity.entities) do
|
for _, entity in pairs(luaentity.entities) do
|
||||||
local master = entity._attached_entities_master
|
local master = entity._attached_entities_master
|
||||||
local master_def = master and entity._attached_entities[master]
|
local master_def = master and entity._attached_entities[master]
|
||||||
local master_entity = master_def and master_def.entity
|
local master_entity = master_def and master_def.entity
|
||||||
|
20
pipes.lua
20
pipes.lua
@ -11,11 +11,11 @@ local new_flow_logic_register = pipeworks.flowables.register
|
|||||||
local polys = ""
|
local polys = ""
|
||||||
if pipeworks.enable_lowpoly then polys = "_lowpoly" end
|
if pipeworks.enable_lowpoly then polys = "_lowpoly" end
|
||||||
|
|
||||||
local vti = {4, 3, 2, 1, 6, 5}
|
--~ local vti = {4, 3, 2, 1, 6, 5}
|
||||||
local cconnects = {{}, {1}, {1, 2}, {1, 3}, {1, 3, 5}, {1, 2, 3}, {1, 2, 3, 5}, {1, 2, 3, 4}, {1, 2, 3, 4, 5}, {1, 2, 3, 4, 5, 6}}
|
local cconnects = {{}, {1}, {1, 2}, {1, 3}, {1, 3, 5}, {1, 2, 3}, {1, 2, 3, 5}, {1, 2, 3, 4}, {1, 2, 3, 4, 5}, {1, 2, 3, 4, 5, 6}}
|
||||||
for index, connects in ipairs(cconnects) do
|
for index, connects in ipairs(cconnects) do
|
||||||
local outsel = {}
|
local outsel = {}
|
||||||
|
|
||||||
local jx = 0
|
local jx = 0
|
||||||
local jy = 0
|
local jy = 0
|
||||||
local jz = 0
|
local jz = 0
|
||||||
@ -30,11 +30,13 @@ for index, connects in ipairs(cconnects) do
|
|||||||
table.insert(outsel, pipeworks.pipe_selectboxes[v])
|
table.insert(outsel, pipeworks.pipe_selectboxes[v])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--[[
|
||||||
if #connects == 1 then
|
if #connects == 1 then
|
||||||
local v = connects[1]
|
local v = connects[1]
|
||||||
v = v-1 + 2*(v%2) -- Opposite side
|
v = v-1 + 2*(v%2) -- Opposite side
|
||||||
end
|
end
|
||||||
|
--]]
|
||||||
|
|
||||||
local pgroups = {snappy = 3, pipe = 1, not_in_creative_inventory = 1}
|
local pgroups = {snappy = 3, pipe = 1, not_in_creative_inventory = 1}
|
||||||
local pipedesc = S("Pipe Segment").." "..dump(connects)
|
local pipedesc = S("Pipe Segment").." "..dump(connects)
|
||||||
|
|
||||||
@ -42,11 +44,11 @@ for index, connects in ipairs(cconnects) do
|
|||||||
pgroups = {snappy = 3, tube = 1}
|
pgroups = {snappy = 3, tube = 1}
|
||||||
pipedesc = S("Pipe Segment")
|
pipedesc = S("Pipe Segment")
|
||||||
end
|
end
|
||||||
|
|
||||||
local outimg_e = { "pipeworks_pipe_plain.png" }
|
local outimg_e = { "pipeworks_pipe_plain.png" }
|
||||||
local outimg_l = { "pipeworks_pipe_plain.png" }
|
local outimg_l = { "pipeworks_pipe_plain.png" }
|
||||||
|
|
||||||
if index == 3 then
|
if index == 3 then
|
||||||
outimg_e = { "pipeworks_pipe_3_empty.png" }
|
outimg_e = { "pipeworks_pipe_3_empty.png" }
|
||||||
outimg_l = { "pipeworks_pipe_3_loaded.png" }
|
outimg_l = { "pipeworks_pipe_3_loaded.png" }
|
||||||
end
|
end
|
||||||
@ -88,7 +90,7 @@ for index, connects in ipairs(cconnects) do
|
|||||||
check_for_horiz_pole = pipeworks.check_for_horiz_pipe,
|
check_for_horiz_pole = pipeworks.check_for_horiz_pipe,
|
||||||
pipenumber = index
|
pipenumber = index
|
||||||
})
|
})
|
||||||
|
|
||||||
local pgroups = {snappy = 3, pipe = 1, not_in_creative_inventory = 1}
|
local pgroups = {snappy = 3, pipe = 1, not_in_creative_inventory = 1}
|
||||||
|
|
||||||
minetest.register_node("pipeworks:pipe_"..index.."_loaded", {
|
minetest.register_node("pipeworks:pipe_"..index.."_loaded", {
|
||||||
@ -123,7 +125,7 @@ for index, connects in ipairs(cconnects) do
|
|||||||
check_for_horiz_pole = pipeworks.check_for_horiz_pipe,
|
check_for_horiz_pole = pipeworks.check_for_horiz_pipe,
|
||||||
pipenumber = index
|
pipenumber = index
|
||||||
})
|
})
|
||||||
|
|
||||||
local emptypipe = "pipeworks:pipe_"..index.."_empty"
|
local emptypipe = "pipeworks:pipe_"..index.."_empty"
|
||||||
local fullpipe = "pipeworks:pipe_"..index.."_loaded"
|
local fullpipe = "pipeworks:pipe_"..index.."_loaded"
|
||||||
table.insert(pipes_empty_nodenames, emptypipe)
|
table.insert(pipes_empty_nodenames, emptypipe)
|
||||||
@ -239,7 +241,7 @@ minetest.register_abm({
|
|||||||
nodenames = {"pipeworks:spigot","pipeworks:spigot_pouring"},
|
nodenames = {"pipeworks:spigot","pipeworks:spigot_pouring"},
|
||||||
interval = 1,
|
interval = 1,
|
||||||
chance = 1,
|
chance = 1,
|
||||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||||
pipeworks.spigot_check(pos,node)
|
pipeworks.spigot_check(pos,node)
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
@ -248,7 +250,7 @@ minetest.register_abm({
|
|||||||
nodenames = {"pipeworks:fountainhead","pipeworks:fountainhead_pouring"},
|
nodenames = {"pipeworks:fountainhead","pipeworks:fountainhead_pouring"},
|
||||||
interval = 1,
|
interval = 1,
|
||||||
chance = 1,
|
chance = 1,
|
||||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||||
pipeworks.fountainhead_check(pos,node)
|
pipeworks.fountainhead_check(pos,node)
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
@ -29,7 +29,7 @@ end
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
local formatvec = function(vec) local sep="," return "("..tostring(vec.x)..sep..tostring(vec.y)..sep..tostring(vec.z)..")" end
|
--~ local formatvec = function(vec) local sep="," return "("..tostring(vec.x)..sep..tostring(vec.y)..sep..tostring(vec.z)..")" end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ local formatvec = function(vec) local sep="," return "("..tostring(vec.x)..sep..
|
|||||||
local check_for_liquids_v2 = function(pos, limit)
|
local check_for_liquids_v2 = function(pos, limit)
|
||||||
local coords = make_coords_offsets(pos, false)
|
local coords = make_coords_offsets(pos, false)
|
||||||
local total = 0
|
local total = 0
|
||||||
for index, tpos in ipairs(coords) do
|
for _, tpos in ipairs(coords) do
|
||||||
if total >= limit then break end
|
if total >= limit then break end
|
||||||
local name = minetest.get_node(tpos).name
|
local name = minetest.get_node(tpos).name
|
||||||
if name == "default:water_source" then
|
if name == "default:water_source" then
|
||||||
@ -69,11 +69,13 @@ end
|
|||||||
|
|
||||||
|
|
||||||
-- logging is unreliable when something is crashing...
|
-- logging is unreliable when something is crashing...
|
||||||
|
--[[
|
||||||
local nilexplode = function(caller, label, value)
|
local nilexplode = function(caller, label, value)
|
||||||
if value == nil then
|
if value == nil then
|
||||||
error(caller..": "..label.." was nil")
|
error(caller..": "..label.." was nil")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
--]]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -151,7 +153,7 @@ local get_neighbour_positions = function(pos, node)
|
|||||||
|
|
||||||
-- then, check each possible neighbour to see if they can be reached from this node.
|
-- then, check each possible neighbour to see if they can be reached from this node.
|
||||||
local connections = {}
|
local connections = {}
|
||||||
for index, offset in ipairs(candidates) do
|
for _, offset in ipairs(candidates) do
|
||||||
local npos = vector.add(pos, offset)
|
local npos = vector.add(pos, offset)
|
||||||
local neighbour = minetest.get_node(npos)
|
local neighbour = minetest.get_node(npos)
|
||||||
local nodename = neighbour.name
|
local nodename = neighbour.name
|
||||||
@ -185,13 +187,12 @@ flowlogic.balance_pressure = function(pos, node, currentpressure)
|
|||||||
-- local dname = "flowlogic.balance_pressure()@"..formatvec(pos).." "
|
-- local dname = "flowlogic.balance_pressure()@"..formatvec(pos).." "
|
||||||
-- check the pressure of all nearby flowable nodes, and average it out.
|
-- check the pressure of all nearby flowable nodes, and average it out.
|
||||||
|
|
||||||
-- pressure handles to average over
|
|
||||||
local connections = {}
|
|
||||||
-- unconditionally include self in nodes to average over.
|
-- unconditionally include self in nodes to average over.
|
||||||
-- result of averaging will be returned as new pressure for main flow logic callback
|
-- result of averaging will be returned as new pressure for main flow logic callback
|
||||||
local totalv = currentpressure
|
local totalv = currentpressure
|
||||||
local totalc = 1
|
local totalc = 1
|
||||||
|
|
||||||
|
-- pressure handles to average over
|
||||||
local connections = get_neighbour_positions(pos, node)
|
local connections = get_neighbour_positions(pos, node)
|
||||||
|
|
||||||
-- for each neighbour, add neighbour's pressure to the total to balance out
|
-- for each neighbour, add neighbour's pressure to the total to balance out
|
||||||
@ -287,7 +288,7 @@ flowlogic.run_output = function(pos, node, currentpressure, oldpressure, outputd
|
|||||||
local upper = outputdef.upper
|
local upper = outputdef.upper
|
||||||
local lower = outputdef.lower
|
local lower = outputdef.lower
|
||||||
local result = currentpressure
|
local result = currentpressure
|
||||||
local threshold = nil
|
local threshold
|
||||||
if finitemode then threshold = lower else threshold = upper end
|
if finitemode then threshold = lower else threshold = upper end
|
||||||
if currentpressure > threshold then
|
if currentpressure > threshold then
|
||||||
local takenpressure = outputdef.outputfn(pos, node, currentpressure, finitemode)
|
local takenpressure = outputdef.outputfn(pos, node, currentpressure, finitemode)
|
||||||
@ -316,7 +317,7 @@ flowlogic.run_transition = function(node, currentpressure)
|
|||||||
local nodename_prev = simplesetdef[1].nodename
|
local nodename_prev = simplesetdef[1].nodename
|
||||||
local result_nodename = node.name
|
local result_nodename = node.name
|
||||||
|
|
||||||
for index, element in ipairs(simplesetdef) do
|
for _, element in ipairs(simplesetdef) do
|
||||||
-- find the highest element that is below the current pressure.
|
-- find the highest element that is below the current pressure.
|
||||||
local threshold = element.threshold
|
local threshold = element.threshold
|
||||||
if threshold > currentpressure then
|
if threshold > currentpressure then
|
||||||
|
@ -26,8 +26,8 @@ local insertbase = function(nodename)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local regwarning = function(kind, nodename)
|
local regwarning = function(kind, nodename)
|
||||||
local tail = ""
|
--~ local tail = ""
|
||||||
if pipeworks.toggles.pipe_mode ~= "pressure" then tail = " but pressure logic not enabled" end
|
--~ if pipeworks.toggles.pipe_mode ~= "pressure" then tail = " but pressure logic not enabled" end
|
||||||
--pipeworks.logger(kind.." flow logic registry requested for "..nodename..tail)
|
--pipeworks.logger(kind.." flow logic registry requested for "..nodename..tail)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -106,7 +106,7 @@ register.directional_horizonal_rotate = function(nodename, doubleended)
|
|||||||
end
|
end
|
||||||
local directionfn = function(node, direction)
|
local directionfn = function(node, direction)
|
||||||
local result = false
|
local result = false
|
||||||
for index, endvec in ipairs(getends(node)) do
|
for _, endvec in ipairs(getends(node)) do
|
||||||
if vector.equals(direction, endvec) then result = true end
|
if vector.equals(direction, endvec) then result = true end
|
||||||
end
|
end
|
||||||
return result
|
return result
|
||||||
|
@ -23,7 +23,7 @@ end
|
|||||||
local function migrate_tube_db()
|
local function migrate_tube_db()
|
||||||
local tmp_db = {}
|
local tmp_db = {}
|
||||||
tp_tube_db.version = nil
|
tp_tube_db.version = nil
|
||||||
for key, val in pairs(tp_tube_db) do
|
for _, val in pairs(tp_tube_db) do
|
||||||
if(val.channel ~= "") then -- skip unconfigured tubes
|
if(val.channel ~= "") then -- skip unconfigured tubes
|
||||||
tmp_db[hash(val)] = val
|
tmp_db[hash(val)] = val
|
||||||
end
|
end
|
||||||
@ -193,7 +193,7 @@ pipeworks.register_tube("pipeworks:teleport_tube", {
|
|||||||
minetest.chat_send_player(sender_name, S("Sorry, channel '@1' is reserved for exclusive use by @2",
|
minetest.chat_send_player(sender_name, S("Sorry, channel '@1' is reserved for exclusive use by @2",
|
||||||
new_channel, name))
|
new_channel, name))
|
||||||
return
|
return
|
||||||
|
|
||||||
--channels starting with '[name];' can be used by other players, but cannot be received from
|
--channels starting with '[name];' can be used by other players, but cannot be received from
|
||||||
elseif mode == ";" and (fields.cr1 or (can_receive ~= 0 and not fields.cr0)) then
|
elseif mode == ";" and (fields.cr1 or (can_receive ~= 0 and not fields.cr0)) then
|
||||||
minetest.chat_send_player(sender_name, S("Sorry, receiving from channel '@1' is reserved for @2",
|
minetest.chat_send_player(sender_name, S("Sorry, receiving from channel '@1' is reserved for @2",
|
||||||
|
12
trashcan.lua
12
trashcan.lua
@ -1,7 +1,7 @@
|
|||||||
local S = minetest.get_translator("pipeworks")
|
local S = minetest.get_translator("pipeworks")
|
||||||
minetest.register_node("pipeworks:trashcan", {
|
minetest.register_node("pipeworks:trashcan", {
|
||||||
description = S("Trash Can"),
|
description = S("Trash Can"),
|
||||||
drawtype = "normal",
|
drawtype = "normal",
|
||||||
tiles = {
|
tiles = {
|
||||||
"pipeworks_trashcan_bottom.png",
|
"pipeworks_trashcan_bottom.png",
|
||||||
"pipeworks_trashcan_bottom.png",
|
"pipeworks_trashcan_bottom.png",
|
||||||
@ -9,15 +9,15 @@ minetest.register_node("pipeworks:trashcan", {
|
|||||||
"pipeworks_trashcan_side.png",
|
"pipeworks_trashcan_side.png",
|
||||||
"pipeworks_trashcan_side.png",
|
"pipeworks_trashcan_side.png",
|
||||||
"pipeworks_trashcan_side.png",
|
"pipeworks_trashcan_side.png",
|
||||||
},
|
},
|
||||||
groups = {snappy = 3, tubedevice = 1, tubedevice_receiver = 1},
|
groups = {snappy = 3, tubedevice = 1, tubedevice_receiver = 1},
|
||||||
tube = {
|
tube = {
|
||||||
insert_object = function(pos, node, stack, direction)
|
insert_object = function(pos, node, stack, direction)
|
||||||
return ItemStack("")
|
return ItemStack("")
|
||||||
end,
|
end,
|
||||||
connect_sides = {left = 1, right = 1, front = 1, back = 1, top = 1, bottom = 1},
|
connect_sides = {left = 1, right = 1, front = 1, back = 1, top = 1, bottom = 1},
|
||||||
priority = 1, -- Lower than anything else
|
priority = 1, -- Lower than anything else
|
||||||
},
|
},
|
||||||
on_construct = function(pos)
|
on_construct = function(pos)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
meta:set_string("formspec",
|
meta:set_string("formspec",
|
||||||
@ -33,7 +33,7 @@ minetest.register_node("pipeworks:trashcan", {
|
|||||||
"listring[]")
|
"listring[]")
|
||||||
meta:set_string("infotext", S("Trash Can"))
|
meta:set_string("infotext", S("Trash Can"))
|
||||||
meta:get_inventory():set_size("trash", 1)
|
meta:get_inventory():set_size("trash", 1)
|
||||||
end,
|
end,
|
||||||
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_metadata_inventory_put = function(pos, listname, index, stack, player)
|
on_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
local S = minetest.get_translator("pipeworks")
|
local S = minetest.get_translator("pipeworks")
|
||||||
local assumed_eye_pos = vector.new(0, 1.5, 0)
|
local assumed_eye_pos = vector.new(0, 1.5, 0)
|
||||||
|
|
||||||
local function vector_copy(v)
|
|
||||||
return { x = v.x, y = v.y, z = v.z }
|
|
||||||
end
|
|
||||||
|
|
||||||
local function delay(x)
|
local function delay(x)
|
||||||
return (function() return x end)
|
return (function() return x end)
|
||||||
end
|
end
|
||||||
@ -353,7 +349,7 @@ if pipeworks.enable_node_breaker then
|
|||||||
{pos=pointed_thing.under, gain=sound.gain})
|
{pos=pointed_thing.under, gain=sound.gain})
|
||||||
end
|
end
|
||||||
wieldstack = virtplayer:get_wielded_item()
|
wieldstack = virtplayer:get_wielded_item()
|
||||||
else
|
--~ else
|
||||||
--pipeworks.logger(dname.."couldn't dig node!")
|
--pipeworks.logger(dname.."couldn't dig node!")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user