diff options
author | Vanessa Ezekowitz <vanessaezekowitz@gmail.com> | 2013-11-07 22:16:37 -0500 |
---|---|---|
committer | Vanessa Ezekowitz <vanessaezekowitz@gmail.com> | 2013-11-07 22:16:37 -0500 |
commit | 4b4e10ff1d4f1bde96c47331738e4af27bec6142 (patch) | |
tree | 3d5a07f680e0b7eef590a995de480fae1cff2d61 /ownership.lua | |
parent | 524dcb1396aa9df0f60c6f74d91c2e24c19e9ad6 (diff) |
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.lua | 35 |
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 |