summaryrefslogtreecommitdiff
path: root/init.lua
blob: 020db122f30248e831bd3f5923b82323fbbf02b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
-- Pipeworks mod by Vanessa Ezekowitz - 2013-07-13
--
-- This mod supplies various steel pipes and plastic pneumatic tubes
-- and devices that they can connect to.
--
-- License: WTFPL
--

-- Copy and/or read the config file

local worldpath = minetest.get_worldpath()
local modpath = minetest.get_modpath("pipeworks")

if io.open(worldpath.."/pipeworks_settings.txt","r") == nil then

	dofile(modpath.."/default_settings.txt")

	io.input(modpath.."/default_settings.txt")
	io.output(worldpath.."/pipeworks_settings.txt")

	local size = 2^13      -- good buffer size (8K)
	while true do
		local block = io.read(size)
		if not block then break end
		io.write(block)
	end

else
	dofile(worldpath.."/pipeworks_settings.txt")
end

-- Helper functions

if minetest.get_modpath("unified_inventory") or not minetest.setting_getbool("creative_mode") then
	pipeworks_expect_infinite_stacks = false
else
	pipeworks_expect_infinite_stacks = true
end

function pipeworks_fix_image_names(table, replacement)
	outtable={}
	for i in ipairs(table) do
		outtable[i]=string.gsub(table[i], "_XXXXX", replacement)
	end

	return outtable
end

function pipeworks_add_pipebox(t, b)
	for i in ipairs(b)
		do table.insert(t, b[i])
	end
end

function pipeworks_node_is_owned(pos, placer)
	local ownername = false
	if type(IsPlayerNodeOwner) == "function" then					-- node_ownership mod
		if HasOwner(pos, placer) then						-- returns true if the node is owned
			if not IsPlayerNodeOwner(pos, placer:get_player_name()) then
				if type(getLastOwner) == "function" then		-- ...is an old version
					ownername = getLastOwner(pos)
				elseif type(GetNodeOwnerName) == "function" then	-- ...is a recent version
					ownername = GetNodeOwnerName(pos)
				else
					ownername = S("someone")
				end
			end
		end

	elseif type(isprotect)=="function" then 					-- glomie's protection mod
		if not isprotect(5, pos, placer) then
			ownername = S("someone")
		end
	elseif type(protector)=="table" and type(protector.can_dig)=="function" then 	-- Zeg9's protection mod
		if not protector.can_dig(5, pos, placer) then
			ownername = S("someone")
		end
	end

	if ownername ~= false then
		minetest.chat_send_player( placer:get_player_name(), S("Sorry, %s owns that spot."):format(ownername) )
		return true
	else
		return false
	end
end

function pipeworks_replace_name(tbl,tr,name)
	local ntbl={}
	for key,i in pairs(tbl) do
		if type(i)=="string" then
			ntbl[key]=string.gsub(i,tr,name)
		elseif type(i)=="table" then
			ntbl[key]=pipeworks_replace_name(i,tr,name)
		else
			ntbl[key]=i
		end
	end
	return ntbl
end

-- Load the various parts of the mod

dofile(modpath.."/autoplace.lua")
dofile(modpath.."/item_transport.lua")
dofile(modpath.."/flowing_logic.lua")
dofile(modpath.."/crafts.lua")

dofile(modpath.."/tubes.lua")

if enable_pipes then dofile(modpath.."/pipes.lua") end
if enable_teleport_tube then dofile(modpath.."/teleport_tube.lua") end
if enable_pipe_devices then dofile(modpath.."/devices.lua") end
if enable_redefines then dofile(modpath.."/compat.lua") end
if enable_autocrafter then dofile(modpath.."/autocrafter.lua") end
if enable_deployer then dofile(modpath.."/deployer.lua") end
if enable_node_breaker then dofile(modpath.."/node_breaker.lua") end

minetest.register_alias("pipeworks:pipe", "pipeworks:pipe_110000_empty")
local DEBUG = false
local CYCLIC = true

print("Pipeworks loaded!")