Moretrees' trunks can now be turned sideways when placing,

using minetest.rotate_and_place()

Requires Minetest git commit 1d856b73 or later.
This commit is contained in:
Vanessa Ezekowitz 2013-11-07 20:59:50 -05:00
parent c3e3f7ae38
commit 620a799fb4
3 changed files with 73 additions and 0 deletions

View File

@ -44,6 +44,27 @@ else
dofile(worldpath.."/moretrees_settings.txt")
end
-- Boilerplate to support localized strings if intllib mod is installed.
local S
if moretrees.intllib_modpath then
dofile(moretrees.intllib_modpath.."/intllib.lua")
S = intllib.Getter(minetest.get_current_modname())
else
S = function ( s ) return s end
end
moretrees.gettext = S
-- infinite stacks checking
if minetest.get_modpath("unified_inventory") or not minetest.setting_getbool("creative_mode") then
moretrees.expect_infinite_stacks = false
else
moretrees.expect_infinite_stacks = true
end
-- tables, load other files
moretrees.cutting_tools = {
"default:axe_bronze",
"default:axe_diamond",
@ -56,6 +77,7 @@ moretrees.cutting_tools = {
"titanium:axe",
}
dofile(modpath.."/ownership.lua")
dofile(modpath.."/tree_models.lua")
dofile(modpath.."/node_defs.lua")
dofile(modpath.."/biome_defs.lua")

View File

@ -40,6 +40,14 @@ for i in ipairs(moretrees.treelist) do
is_ground_content = true,
groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
sounds = default.node_sound_wood_defaults(),
on_place = function(itemstack, placer, pointed_thing)
local keys=placer:get_player_control()
local pos = pointed_thing.under
if not moretrees:node_is_owned(pos, placer) then
minetest.rotate_and_place(itemstack, placer, pointed_thing,
moretrees.expect_infinite_stacks, { invert_wall = keys.sneak })
end
end
})
minetest.register_node("moretrees:"..treename.."_planks", {
@ -378,6 +386,14 @@ minetest.register_node("moretrees:rubber_tree_trunk_empty", {
groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
sounds = default.node_sound_wood_defaults(),
paramtype2 = "facedir",
on_place = function(itemstack, placer, pointed_thing)
local keys=placer:get_player_control()
local pos = pointed_thing.under
if not moretrees:node_is_owned(pos, placer) then
minetest.rotate_and_place(itemstack, placer, pointed_thing,
moretrees.expect_infinite_stacks, { invert_wall = keys.sneak })
end
end
})
minetest.register_abm({

35
ownership.lua Normal file
View File

@ -0,0 +1,35 @@
local S = moretrees.gettext
function moretrees: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