forked from nalc/homedecor_modpack
6cadc7cf26
To maximize the palette, this uses the colorwallmounted param2 style, which necessitated modifying the models to make wallmounted look like normal facedir. This means couches and chairs can now only ever be placed upright, facing one of N/S/E/W like a couch or chair normally would, but since the screwdriver was already disabled, it was basically impossible to rotate them to any other orientation anyway. Since this is colorwallmounted, it uses the 32-color abridged Unified Dyes palette.
77 lines
2.0 KiB
Lua
77 lines
2.0 KiB
Lua
|
|
local S = homedecor_i18n.gettext
|
|
|
|
lrfurn = {}
|
|
screwdriver = screwdriver or {}
|
|
|
|
lrfurn.fdir_to_fwd = {
|
|
{ 0, 1 },
|
|
{ 1, 0 },
|
|
{ 0, -1 },
|
|
{ -1, 0 },
|
|
}
|
|
|
|
lrfurn.colors = {
|
|
"black",
|
|
"brown",
|
|
"blue",
|
|
"cyan",
|
|
"dark_grey",
|
|
"dark_green",
|
|
"green",
|
|
"grey",
|
|
"magenta",
|
|
"orange",
|
|
"pink",
|
|
"red",
|
|
"violet",
|
|
"white",
|
|
"yellow",
|
|
}
|
|
|
|
function lrfurn.check_forward(pos, fdir, long, placer)
|
|
if not fdir or fdir > 3 then fdir = 0 end
|
|
|
|
local pos2 = { x = pos.x + lrfurn.fdir_to_fwd[fdir+1][1], y=pos.y, z = pos.z + lrfurn.fdir_to_fwd[fdir+1][2] }
|
|
local pos3 = { x = pos.x + lrfurn.fdir_to_fwd[fdir+1][1] * 2, y=pos.y, z = pos.z + lrfurn.fdir_to_fwd[fdir+1][2] * 2 }
|
|
|
|
local node2 = minetest.get_node(pos2)
|
|
if node2 and node2.name ~= "air" then
|
|
return false
|
|
elseif minetest.is_protected(pos2, placer:get_player_name()) then
|
|
if not long then
|
|
minetest.chat_send_player(placer:get_player_name(), "Someone else owns the spot where other end goes!")
|
|
else
|
|
minetest.chat_send_player(placer:get_player_name(), "Someone else owns the spot where the middle or far end goes!")
|
|
end
|
|
return false
|
|
end
|
|
|
|
if long then
|
|
local node3 = minetest.get_node(pos3)
|
|
if node3 and node3.name ~= "air" then
|
|
return false
|
|
elseif minetest.is_protected(pos3, placer:get_player_name()) then
|
|
minetest.chat_send_player(placer:get_player_name(), "Someone else owns the spot where the other end goes!")
|
|
return false
|
|
end
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
function lrfurn.fix_rotation(pos, placer, itemstack, pointed_thing)
|
|
local node = minetest.get_node(pos)
|
|
local yaw = placer:get_look_yaw()
|
|
local dir = minetest.yaw_to_dir(yaw)
|
|
local fdir = minetest.dir_to_wallmounted(dir)
|
|
|
|
minetest.swap_node(pos, { name = node.name, param2 = fdir })
|
|
end
|
|
|
|
dofile(minetest.get_modpath("lrfurn").."/longsofas.lua")
|
|
dofile(minetest.get_modpath("lrfurn").."/sofas.lua")
|
|
dofile(minetest.get_modpath("lrfurn").."/armchairs.lua")
|
|
dofile(minetest.get_modpath("lrfurn").."/coffeetable.lua")
|
|
dofile(minetest.get_modpath("lrfurn").."/endtable.lua")
|