aboutsummaryrefslogtreecommitdiff
path: root/ownership.lua
diff options
context:
space:
mode:
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>2013-11-07 22:16:37 -0500
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>2013-11-07 22:16:37 -0500
commit4b4e10ff1d4f1bde96c47331738e4af27bec6142 (patch)
tree3d5a07f680e0b7eef590a995de480fae1cff2d61 /ownership.lua
parent524dcb1396aa9df0f60c6f74d91c2e24c19e9ad6 (diff)
downloadmoreblocks-4b4e10ff1d4f1bde96c47331738e4af27bec6142.tar.gz
moreblocks-4b4e10ff1d4f1bde96c47331738e4af27bec6142.tar.bz2
moreblocks-4b4e10ff1d4f1bde96c47331738e4af27bec6142.zip
Rewrite slightly to use the new 6d facedir prediction code in builtin.
Keeps the old behavior of sneak == force wall (rather than invert). Add protection/ownership checking. Can be phased out later after protection mods start taking advantage of the engine's built-in ownershi-checking functions. Got rid of the /st command, since it didn't work anyway. Minor re-arrangement of init.lua to put the mod's title block at the top where it belongs :-)
Diffstat (limited to 'ownership.lua')
-rw-r--r--ownership.lua35
1 files changed, 35 insertions, 0 deletions
diff --git a/ownership.lua b/ownership.lua
new file mode 100644
index 0000000..9cd4cb3
--- /dev/null
+++ b/ownership.lua
@@ -0,0 +1,35 @@
+
+local S = moreblocks.gettext
+
+function moreblocks.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