1
0
mirror of https://github.com/mt-mods/homedecor_modpack.git synced 2025-07-22 15:20:22 +02:00

Compare commits

..

15 Commits

Author SHA1 Message Date
f8ee689624 free player when seat is dug 2024-11-06 23:21:40 -05:00
d8ae7a360d handle corner case where player dies while in chair 2024-11-05 01:20:34 -05:00
40898101be replace physics hell with hopefully better entity hell (#81)
* replace physics hell with hopefully better entity hell

* toss worthless optional depend

* no need to save entity if we dont remove it for some reason - crashes, etc

* fix sofas

* handle the rest of chairs

* catch malformed seating, since lua tables are 1 indexed

* niklp suggestion
2024-10-30 22:57:08 -04:00
79416b962c Add player_monoids support (#80)
* Add `player_monoids` support (*sometimes* broken for whatever reason, see xkcd#1739)

* .
2024-10-20 12:24:57 -04:00
00ee805ed7 Make half doors craftable (#79) 2024-10-15 18:44:55 -04:00
6fb69a56a5 Fix typo in German translation of "Dishwasher" 2024-10-05 19:22:13 +02:00
335559feb3 fix seating only working once till server restarts 2024-09-11 20:18:38 -04:00
a100d20d4d implements https://github.com/mt-mods/homedecor_modpack/issues/31 - show players sitting in seats (#76)
* implment https://github.com/mt-mods/homedecor_modpack/issues/31 - show players sitting in seats

* improve things
2024-09-09 12:11:43 -04:00
b2e5c81e4d switch over to using xcompats function 2024-09-08 19:26:36 -04:00
8f796e43af Replace deprecated get_metadata() call (#75) 2024-07-16 15:50:36 +10:00
1ef4837abe Use initial_properties for entities (#74) 2024-07-03 16:09:31 +10:00
d0ab9b82ce reorder registration of aliases to fix missing recipes, also reorder registration of dye recipes to show item craft first before recipe craft (#72) 2024-05-23 18:37:28 -04:00
fa3f7f816b trash unused function: homedecor.sit (#71) 2024-04-28 14:48:03 -04:00
d400e421ce Replace homedecor_blanktile.png w/ engine provided blank.png (#69) 2024-04-02 18:08:49 -04:00
792c23a7fe handle interact with node check in non mtg games with a fallback (#68) 2024-04-02 06:54:10 -04:00
18 changed files with 269 additions and 204 deletions

View File

@ -15,7 +15,8 @@ globals = {
"homedecor_doors_and_gates",
-- mod-deps
"armor"
"armor",
xcompat = {fields = {"player"}},
}
read_globals = {
@ -40,4 +41,5 @@ read_globals = {
"doors",
"i3",
"xcompat",
"player_monoids"
}

View File

@ -81,7 +81,7 @@ for _, c in ipairs(bookcolors) do
name = "homedecor:book_"..color,
param2 = fdir,
})
local text = itemstack:get_metadata() or ""
local text = itemstack:get_meta():get_string("")
local meta = minetest.get_meta(pos)
local data = minetest.deserialize(text) or {}
if type(data) ~= "table" then

View File

@ -36,11 +36,13 @@ homedecor.register("air_conditioner", {
-- fans
minetest.register_entity(":homedecor:mesh_desk_fan", {
collisionbox = homedecor.nodebox.null,
visual = "mesh",
mesh = "homedecor_desk_fan.b3d",
textures = {"homedecor_desk_fan_uv.png"},
visual_size = {x=10, y=10},
initial_properties = {
collisionbox = homedecor.nodebox.null,
visual = "mesh",
mesh = "homedecor_desk_fan.b3d",
textures = {"homedecor_desk_fan_uv.png"},
visual_size = {x=10, y=10},
}
})
local add_mesh_desk_fan_entity = function(pos)

View File

@ -61,7 +61,6 @@ dofile(modpath.."/furnaces.lua")
dofile(modpath.."/inventory.lua")
dofile(modpath.."/registration.lua")
dofile(modpath.."/water_particles.lua")
dofile(modpath.."/sit.lua")
dofile(modpath.."/crafts.lua")
if minetest.settings:get_bool("log_mod") then

View File

@ -12,22 +12,7 @@ local default_can_dig = function(pos,player)
return meta:get_inventory():is_empty("main")
end
local default_can_interact_with_node = function(player, pos)
--if we have default, use it
if default then return default.can_interact_with_node(player, pos) end
local owner = minetest.get_meta(pos):get_string("owner") or ""
--check that we have a valid player
if not player or not player:is_player() then return false end
--check there privs for compat with areas
if minetest.check_player_privs(player, "protection_bypass") then return true end
--if a normal player, check if they are the owner
if owner == "" or owner == player:get_player_name() then return true end
return false
end
local default_can_interact_with_node = xcompat.functions.can_interact_with_node
local default_inventory_formspecs = {
["4"]="size[8,6]"..

View File

@ -1,34 +0,0 @@
function homedecor.sit(pos, node, clicker)
return -- delete it when the engine is stabler for the player's physics
--[[
local meta = minetest.get_meta(pos)
local param2 = node.param2
local name = clicker:get_player_name()
if name == meta:get_string("is_sit") then
meta:set_string("is_sit", "")
pos.y = pos.y-0.5
clicker:setpos(pos)
clicker:set_eye_offset({x=0,y=0,z=0}, {x=0,y=0,z=0})
clicker:set_physics_override(1, 1, 1)
default.player_attached[name] = false
default.player_set_animation(clicker, "stand", 30)
else
meta:set_string("is_sit", clicker:get_player_name())
clicker:set_eye_offset({x=0,y=-7,z=2}, {x=0,y=0,z=0})
clicker:set_physics_override(0, 0, 0)
clicker:setpos(pos)
default.player_attached[name] = true
default.player_set_animation(clicker, "sit", 30)
if param2 == 0 then
clicker:set_look_yaw(3.15)
elseif param2 == 1 then
clicker:set_look_yaw(7.9)
elseif param2 == 2 then
clicker:set_look_yaw(6.28)
elseif param2 == 3 then
clicker:set_look_yaw(4.75)
else return end
end
--]]
end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 B

View File

@ -231,10 +231,10 @@ for i, g in ipairs(gate_list) do
if gate == "picket" or gate == "picket_white" then
tiles = {
"homedecor_blanktile.png",
"homedecor_blanktile.png",
"homedecor_blanktile.png",
"homedecor_blanktile.png",
"blank.png",
"blank.png",
"blank.png",
"blank.png",
"homedecor_gate_"..gate.."_back.png",
"homedecor_gate_"..gate.."_front.png"
}
@ -410,8 +410,8 @@ minetest.register_craft( {
type = "shapeless",
output = "homedecor:gate_half_door_closed 4",
recipe = {
"doors:homedecor_wood_plain_a",
"doors:homedecor_wood_plain_a"
"doors:homedecor_wood_plain",
"doors:homedecor_wood_plain"
},
})
@ -419,8 +419,8 @@ minetest.register_craft( {
type = "shapeless",
output = "homedecor:gate_half_door_white_closed 4",
recipe = {
"doors:homedecor_bedroom_a",
"doors:homedecor_bedroom_a"
"doors:homedecor_basic_panel",
"doors:homedecor_basic_panel"
},
})

View File

@ -49,8 +49,8 @@ end
homedecor.register("fence_picket", {
description = S("Unpainted Picket Fence"),
tiles = {
"homedecor_blanktile.png",
"homedecor_blanktile.png",
"blank.png",
"blank.png",
"homedecor_fence_picket.png",
"homedecor_fence_picket.png",
"homedecor_fence_picket_backside.png",
@ -85,8 +85,8 @@ homedecor.register("fence_picket", {
homedecor.register("fence_picket_corner", {
description = S("Unpainted Picket Fence Corner"),
tiles = {
"homedecor_blanktile.png",
"homedecor_blanktile.png",
"blank.png",
"blank.png",
"homedecor_fence_picket.png",
"homedecor_fence_picket_backside.png",
"homedecor_fence_picket_backside.png",
@ -113,8 +113,8 @@ homedecor.register("fence_picket_corner", {
homedecor.register("fence_picket_white", {
description = S("White Picket Fence"),
tiles = {
"homedecor_blanktile.png",
"homedecor_blanktile.png",
"blank.png",
"blank.png",
"homedecor_fence_picket_white.png",
"homedecor_fence_picket_white.png",
"homedecor_fence_picket_white_backside.png",
@ -149,8 +149,8 @@ homedecor.register("fence_picket_white", {
homedecor.register("fence_picket_corner_white", {
description = S("White Picket Fence Corner"),
tiles = {
"homedecor_blanktile.png",
"homedecor_blanktile.png",
"blank.png",
"blank.png",
"homedecor_fence_picket_white.png",
"homedecor_fence_picket_white_backside.png",
"homedecor_fence_picket_white_backside.png",

View File

@ -4,7 +4,7 @@ Refrigerator=Kühlschrank
Oven=Backofen
Oven (stainless steel)=Backofen (Edelstahl)
Microwave Oven=Mikrowelle
Dishwasher=Spülmachine
Dishwasher=Spülmaschine
granite=Granit
marble=Marmor
steel=Stahl

View File

@ -795,7 +795,7 @@ for _, light_brightn_name in ipairs({"off", "on"}) do
local gen_ls_tex_yellow = "homedecor_generic_light_source_off.png"
if onflag then gen_ls_tex_yellow = "homedecor_generic_light_source_yellow.png" end
local lighttex = "homedecor_blanktile.png"
local lighttex = "blank.png"
if onflag then
lighttex = {
name = "homedecor_plasma_ball_streamers.png",
@ -1421,7 +1421,71 @@ minetest.register_lbm({
end
})
-- aliases
minetest.register_alias("chains:chain_top", "homedecor:chain_steel_top")
minetest.register_alias("chains:chain_top_brass", "homedecor:chain_brass_top")
minetest.register_alias("chains:chandelier", "homedecor:chandelier_steel")
minetest.register_alias("chains:chandelier_steel", "homedecor:chandelier_steel")
minetest.register_alias("chains:chandelier_brass", "homedecor:chandelier_brass")
minetest.register_alias("homedecor:glowlight_half", "homedecor:glowlight_half_14")
minetest.register_alias("homedecor:glowlight_quarter", "homedecor:glowlight_quarter_14")
minetest.register_alias("homedecor:glowlight_small_cube", "homedecor:glowlight_small_cube_14")
minetest.register_alias("homedecor:plasma_lamp", "homedecor:plasma_lamp_14")
minetest.register_alias("homedecor:ground_lantern", "homedecor:ground_lantern_14")
minetest.register_alias("homedecor:hanging_lantern", "homedecor:hanging_lantern_14")
minetest.register_alias("homedecor:ceiling_lantern", "homedecor:ceiling_lantern_14")
minetest.register_alias("homedecor:lattice_lantern_large", "homedecor:lattice_lantern_large_14")
minetest.register_alias("homedecor:lattice_lantern_small", "homedecor:lattice_lantern_small_14")
minetest.register_alias("homedecor:desk_lamp", "homedecor:desk_lamp_14")
minetest.register_alias("homedecor:ceiling_lamp", "homedecor:ceiling_lamp_14")
minetest.register_alias("homedecor:table_lamp", "homedecor:table_lamp_14")
minetest.register_alias("homedecor:standing_lamp", "homedecor:standing_lamp_14")
minetest.register_alias("3dforniture:table_lamp", "homedecor:table_lamp_14")
minetest.register_alias("3dforniture:torch_wall", "homedecor:torch_wall")
minetest.register_alias("torch_wall", "homedecor:torch_wall")
minetest.register_alias("homedecor:plasma_ball", "homedecor:plasma_ball_on")
minetest.register_alias("homedecor:wall_lamp", "homedecor:wall_lamp_on")
minetest.register_alias("homedecor:rope_light_on_floor_0", "homedecor:rope_light_on_floor_off")
minetest.register_alias("homedecor:rope_light_on_floor_14", "homedecor:rope_light_on_floor_on")
minetest.register_alias("homedecor:rope_light_on_ceiling_0", "homedecor:rope_light_on_ceiling_off")
minetest.register_alias("homedecor:rope_light_on_ceiling_14", "homedecor:rope_light_on_ceiling_on")
for name, level in pairs(word_to_bright) do
minetest.register_alias("homedecor:glowlight_half_"..name, "homedecor:glowlight_half_"..level)
minetest.register_alias("homedecor:glowlight_quarter_"..name, "homedecor:glowlight_quarter_"..level)
minetest.register_alias("homedecor:glowlight_small_cube_"..name, "homedecor:glowlight_small_cube_"..level)
minetest.register_alias("homedecor:rope_light_on_floor_"..name, "homedecor:rope_light_on_floor_"..level)
minetest.register_alias("homedecor:rope_light_on_ceiling_"..name, "homedecor:rope_light_on_ceiling_"..level)
minetest.register_alias("homedecor:plasma_lamp_"..name, "homedecor:plasma_lamp_"..level)
minetest.register_alias("homedecor:plasma_ball_"..name, "homedecor:plasma_ball_"..level)
minetest.register_alias("homedecor:ground_lantern_"..name, "homedecor:ground_lantern_"..level)
minetest.register_alias("homedecor:hanging_lantern_"..name, "homedecor:hanging_lantern_"..level)
minetest.register_alias("homedecor:ceiling_lantern_"..name, "homedecor:ceiling_lantern_"..level)
minetest.register_alias("homedecor:lattice_lantern_large_"..name, "homedecor:lattice_lantern_large_"..level)
minetest.register_alias("homedecor:lattice_lantern_small_"..name, "homedecor:lattice_lantern_small_"..level)
minetest.register_alias("homedecor:desk_lamp_"..name, "homedecor:desk_lamp_"..level)
minetest.register_alias("homedecor:ceiling_lamp_"..name, "homedecor:ceiling_lamp_"..level)
minetest.register_alias("homedecor:table_lamp_"..name, "homedecor:table_lamp_"..level)
minetest.register_alias("homedecor:standing_lamp_"..name, "homedecor:standing_lamp_"..level)
minetest.register_alias("3dforniture:table_lamp_"..name, "homedecor:table_lamp_"..level)
end
if minetest.get_modpath("darkage") then
minetest.register_alias("homedecor:lattice_lantern_large", "darkage:lamp")
for n = 0, 14 do
minetest.register_alias("homedecor:lattice_lantern_large_"..n, "darkage:lamp")
end
for name, level in pairs(word_to_bright) do
minetest.register_alias("homedecor:lattice_lantern_large_"..name, "darkage:lamp")
end
end
-- crafting
@ -1595,6 +1659,17 @@ end
-- glowlights
unifieddyes.register_color_craft({
output = "homedecor:glowlight_half",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:glowlight_half",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft({
output = "homedecor:glowlight_half 6",
recipe = {
@ -1627,10 +1702,10 @@ minetest.register_craft({
})
unifieddyes.register_color_craft({
output = "homedecor:glowlight_half",
output = "homedecor:glowlight_quarter",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:glowlight_half",
neutral_node = "homedecor:glowlight_quarter",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
@ -1645,10 +1720,10 @@ minetest.register_craft({
})
unifieddyes.register_color_craft({
output = "homedecor:glowlight_quarter",
output = "homedecor:glowlight_small_cube",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:glowlight_quarter",
neutral_node = "homedecor:glowlight_small_cube",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
@ -1679,17 +1754,6 @@ minetest.register_craft({
}
})
unifieddyes.register_color_craft({
output = "homedecor:glowlight_small_cube",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:glowlight_small_cube",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
----
minetest.register_craft({
@ -1710,16 +1774,6 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = "homedecor:desk_lamp 2",
recipe = {
{ "", "default:steel_ingot", "homedecor:glowlight_small_cube" },
{ "", "basic_materials:steel_strip", "" },
{ "basic_materials:plastic_sheet", "basic_materials:copper_wire", "basic_materials:plastic_sheet" },
},
})
unifieddyes.register_color_craft({
output = "homedecor:desk_lamp",
palette = "wallmounted",
@ -1731,6 +1785,15 @@ unifieddyes.register_color_craft({
}
})
minetest.register_craft({
output = "homedecor:desk_lamp 2",
recipe = {
{ "", "default:steel_ingot", "homedecor:glowlight_small_cube" },
{ "", "basic_materials:steel_strip", "" },
{ "basic_materials:plastic_sheet", "basic_materials:copper_wire", "basic_materials:plastic_sheet" },
},
})
minetest.register_craft({
output = "homedecor:hanging_lantern 2",
recipe = {
@ -1791,6 +1854,17 @@ minetest.register_craft({
},
})
unifieddyes.register_color_craft({
output = "homedecor:standing_lamp_hi",
palette = "extended",
type = "shapeless",
neutral_node = "homedecor:standing_lamp_hi",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft({
output = "homedecor:standing_lamp_hi",
recipe = {
@ -1801,10 +1875,10 @@ minetest.register_craft({
})
unifieddyes.register_color_craft({
output = "homedecor:standing_lamp_hi",
output = "homedecor:table_lamp_hi",
palette = "extended",
type = "shapeless",
neutral_node = "homedecor:standing_lamp_hi",
neutral_node = "homedecor:table_lamp_hi",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
@ -1853,18 +1927,6 @@ minetest.register_craft({
},
})
unifieddyes.register_color_craft({
output = "homedecor:table_lamp_hi",
palette = "extended",
type = "shapeless",
neutral_node = "homedecor:table_lamp_hi",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft({
output = "homedecor:torch_wall 10",
recipe = {
@ -1872,69 +1934,3 @@ minetest.register_craft({
{ "default:steel_ingot" },
},
})
-- aliases
minetest.register_alias("chains:chain_top", "homedecor:chain_steel_top")
minetest.register_alias("chains:chain_top_brass", "homedecor:chain_brass_top")
minetest.register_alias("chains:chandelier", "homedecor:chandelier_steel")
minetest.register_alias("chains:chandelier_steel", "homedecor:chandelier_steel")
minetest.register_alias("chains:chandelier_brass", "homedecor:chandelier_brass")
minetest.register_alias("homedecor:glowlight_half", "homedecor:glowlight_half_14")
minetest.register_alias("homedecor:glowlight_quarter", "homedecor:glowlight_quarter_14")
minetest.register_alias("homedecor:glowlight_small_cube", "homedecor:glowlight_small_cube_14")
minetest.register_alias("homedecor:plasma_lamp", "homedecor:plasma_lamp_14")
minetest.register_alias("homedecor:ground_lantern", "homedecor:ground_lantern_14")
minetest.register_alias("homedecor:hanging_lantern", "homedecor:hanging_lantern_14")
minetest.register_alias("homedecor:ceiling_lantern", "homedecor:ceiling_lantern_14")
minetest.register_alias("homedecor:lattice_lantern_large", "homedecor:lattice_lantern_large_14")
minetest.register_alias("homedecor:lattice_lantern_small", "homedecor:lattice_lantern_small_14")
minetest.register_alias("homedecor:desk_lamp", "homedecor:desk_lamp_14")
minetest.register_alias("homedecor:ceiling_lamp", "homedecor:ceiling_lamp_14")
minetest.register_alias("homedecor:table_lamp", "homedecor:table_lamp_14")
minetest.register_alias("homedecor:standing_lamp", "homedecor:standing_lamp_14")
minetest.register_alias("3dforniture:table_lamp", "homedecor:table_lamp_14")
minetest.register_alias("3dforniture:torch_wall", "homedecor:torch_wall")
minetest.register_alias("torch_wall", "homedecor:torch_wall")
minetest.register_alias("homedecor:plasma_ball", "homedecor:plasma_ball_on")
minetest.register_alias("homedecor:wall_lamp", "homedecor:wall_lamp_on")
minetest.register_alias("homedecor:rope_light_on_floor_0", "homedecor:rope_light_on_floor_off")
minetest.register_alias("homedecor:rope_light_on_floor_14", "homedecor:rope_light_on_floor_on")
minetest.register_alias("homedecor:rope_light_on_ceiling_0", "homedecor:rope_light_on_ceiling_off")
minetest.register_alias("homedecor:rope_light_on_ceiling_14", "homedecor:rope_light_on_ceiling_on")
for name, level in pairs(word_to_bright) do
minetest.register_alias("homedecor:glowlight_half_"..name, "homedecor:glowlight_half_"..level)
minetest.register_alias("homedecor:glowlight_quarter_"..name, "homedecor:glowlight_quarter_"..level)
minetest.register_alias("homedecor:glowlight_small_cube_"..name, "homedecor:glowlight_small_cube_"..level)
minetest.register_alias("homedecor:rope_light_on_floor_"..name, "homedecor:rope_light_on_floor_"..level)
minetest.register_alias("homedecor:rope_light_on_ceiling_"..name, "homedecor:rope_light_on_ceiling_"..level)
minetest.register_alias("homedecor:plasma_lamp_"..name, "homedecor:plasma_lamp_"..level)
minetest.register_alias("homedecor:plasma_ball_"..name, "homedecor:plasma_ball_"..level)
minetest.register_alias("homedecor:ground_lantern_"..name, "homedecor:ground_lantern_"..level)
minetest.register_alias("homedecor:hanging_lantern_"..name, "homedecor:hanging_lantern_"..level)
minetest.register_alias("homedecor:ceiling_lantern_"..name, "homedecor:ceiling_lantern_"..level)
minetest.register_alias("homedecor:lattice_lantern_large_"..name, "homedecor:lattice_lantern_large_"..level)
minetest.register_alias("homedecor:lattice_lantern_small_"..name, "homedecor:lattice_lantern_small_"..level)
minetest.register_alias("homedecor:desk_lamp_"..name, "homedecor:desk_lamp_"..level)
minetest.register_alias("homedecor:ceiling_lamp_"..name, "homedecor:ceiling_lamp_"..level)
minetest.register_alias("homedecor:table_lamp_"..name, "homedecor:table_lamp_"..level)
minetest.register_alias("homedecor:standing_lamp_"..name, "homedecor:standing_lamp_"..level)
minetest.register_alias("3dforniture:table_lamp_"..name, "homedecor:table_lamp_"..level)
end
if minetest.get_modpath("darkage") then
minetest.register_alias("homedecor:lattice_lantern_large", "darkage:lamp")
for n = 0, 14 do
minetest.register_alias("homedecor:lattice_lantern_large_"..n, "darkage:lamp")
end
for name, level in pairs(word_to_bright) do
minetest.register_alias("homedecor:lattice_lantern_large_"..name, "darkage:lamp")
end
end

View File

@ -33,7 +33,8 @@ minetest.register_node(":lrfurn:armchair", {
on_rotate = unifieddyes.fix_after_screwdriver_nsew,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
end
end,
on_destruct = lrfurn.on_seat_destruct,
})
homedecor.register("armchair", {
@ -59,7 +60,8 @@ homedecor.register("armchair", {
on_rotate = unifieddyes.fix_after_screwdriver_nsew,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
end
end,
on_destruct = lrfurn.on_seat_destruct,
})
-- crafts

View File

@ -78,10 +78,66 @@ function lrfurn.fix_sofa_rotation_nsew(pos, placer, itemstack, pointed_thing)
minetest.swap_node(pos, { name = node.name, param2 = fdir+colorbits })
end
local seated_cache = {}
minetest.register_entity("homedecor_seating:seat", {
initial_properties = {
visual = "cube",
--comment out the following when testing so you can see it
textures = {"blank.png", "blank.png", "blank.png", "blank.png", "blank.png", "blank.png"},
collisionbox = { -0.01, -0.01, -0.01, 0.01, 0.01, 0.01 },
selectionbox = { -0.01, -0.01, -0.01, 0.01, 0.01, 0.01, rotate = false },
static_save = false,
},
on_punch = function(self)
self.object:remove()
end,
})
--we only care about 4 rotations, but just in case someone worldedits, etc - do something other than crash
--radians are stupid, using degrees and then converting
local p2r = {
0*math.pi/180,
0*math.pi/180, --correct
180*math.pi/180, --correct
90*math.pi/180, --correct
270*math.pi/180, --correct
0*math.pi/180,
0*math.pi/180,
0*math.pi/180,
}
p2r[0] = p2r[1]
local p2r_sofa = {
0*math.pi/180,
90*math.pi/180, --correct
270*math.pi/180, --correct
180*math.pi/180, --correct
0*math.pi/180, --correct
0*math.pi/180,
0*math.pi/180,
0*math.pi/180,
}
p2r_sofa[0] = p2r_sofa[1]
local p2r_facedir = {
[0] = 180*math.pi/180,
[1] = 90*math.pi/180,
[2] = 0*math.pi/180,
[3] = 270*math.pi/180,
}
function lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, seats)
if not clicker:is_player() then
return itemstack
end
local name = clicker:get_player_name()
if seated_cache[name] then --already sitting
lrfurn.stand(clicker)
return itemstack
end
--conversion table for param2 to dir
local p2d = {
vector.new(0, 0, 0),
@ -115,16 +171,63 @@ function lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, seats)
if not pstatus then sit_pos = spos end
end
if not sit_pos then
minetest.chat_send_player(clicker:get_player_name(), "sorry, this seat is currently occupied")
minetest.chat_send_player(name, "sorry, this seat is currently occupied")
return itemstack
end
--seat the player
sit_pos.y = sit_pos.y-0.5
clicker:set_pos(sit_pos)
local entity = minetest.add_entity(sit_pos, "homedecor_seating:seat")
if not entity then return itemstack end --catch for when the entity fails to spawn just in case
clicker:set_attach(entity, "", {x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0}, true)
local nodedef = minetest.registered_nodes[node.name]
if nodedef.paramtype2 == "facedir" then
entity:set_rotation({x = 0, y = p2r_facedir[node.param2 % 4], z = 0})
elseif string.find(node.name, "sofa") then
entity:set_rotation({x = 0, y = p2r_sofa[node.param2 % 8], z = 0})
else
entity:set_rotation({x = 0, y = p2r[node.param2 % 8], z = 0})
end
xcompat.player.player_attached[name] = true
xcompat.player.set_animation(clicker, "sit", 0)
seated_cache[name] = minetest.hash_node_position(pos)
return itemstack
end
function lrfurn.stand(clicker)
local name = clicker:get_player_name()
xcompat.player.player_attached[name] = false
if seated_cache[name] then
local attached_to = clicker:get_attach()
if attached_to then --check, a stupid clearobjects might have been called, etc
attached_to:remove() --removing also detaches
end
seated_cache[name] = nil
end
end
function lrfurn.on_seat_destruct(pos) --called when a seat is destroyed
for name, seatpos in pairs(seated_cache) do
if seatpos == minetest.hash_node_position(pos) then
local player = minetest.get_player_by_name(name)
if player then
lrfurn.stand(player)
end
end
end
end
--if the player gets killed in the seat, handle it
minetest.register_on_dieplayer(function(player)
if seated_cache[player:get_player_name()] then
lrfurn.stand(player)
end
end)
dofile(modpath.."/longsofas.lua")
dofile(modpath.."/sofas.lua")
dofile(modpath.."/armchairs.lua")

View File

@ -47,7 +47,8 @@ minetest.register_node(":lrfurn:longsofa", {
on_dig = unifieddyes.on_dig,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 3)
end
end,
on_destruct = lrfurn.on_seat_destruct,
})
minetest.register_craft({

View File

@ -22,7 +22,8 @@ homedecor.register("deckchair", {
on_rotate = minetest.get_modpath("screwdriver") and screwdriver.disallow or nil,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
end
end,
on_destruct = lrfurn.on_seat_destruct,
})
minetest.register_alias("homedecor:deckchair_foot", "homedecor:deckchair")
@ -42,7 +43,8 @@ homedecor.register("deckchair_striped_blue", {
on_rotate = minetest.get_modpath("screwdriver") and screwdriver.disallow or nil,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
end
end,
on_destruct = lrfurn.on_seat_destruct,
})
homedecor.register("simple_bench", {
@ -62,7 +64,8 @@ homedecor.register("simple_bench", {
},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
end
end,
on_destruct = lrfurn.on_seat_destruct,
})
local bl1_sbox = {
@ -154,7 +157,8 @@ homedecor.register("kitchen_chair_wood", {
on_rotate = unifieddyes.fix_after_screwdriver_nsew,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
end
end,
on_destruct = lrfurn.on_seat_destruct,
})
homedecor.register("kitchen_chair_padded", {
@ -180,7 +184,8 @@ homedecor.register("kitchen_chair_padded", {
on_rotate = unifieddyes.fix_after_screwdriver_nsew,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
end
end,
on_destruct = lrfurn.on_seat_destruct,
})
local ofchairs_sbox = {
@ -219,7 +224,8 @@ for _, c in pairs(chairs) do
on_rotate = minetest.get_modpath("screwdriver") and screwdriver.rotate_simple or nil,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
end
end,
on_destruct = lrfurn.on_seat_destruct,
})
end

View File

@ -47,7 +47,8 @@ minetest.register_node(":lrfurn:sofa", {
on_dig = unifieddyes.on_dig,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 2)
end
end,
on_destruct = lrfurn.on_seat_destruct,
})
minetest.register_craft({

View File

@ -74,9 +74,9 @@ for i, mat in ipairs(tabletop_materials) do
tiles = {
'homedecor_'..m..'_table_'..shape..'.png',
'homedecor_'..m..'_table_edges.png',
'homedecor_blanktile.png',
'homedecor_blanktile.png',
'homedecor_blanktile.png',
'blank.png',
'blank.png',
'blank.png',
},
wield_image = 'homedecor_'..m..'_table_'..shape..'_inv.png',
use_texture_alpha = "blend",
@ -111,8 +111,8 @@ for i, mat in ipairs(tabletop_materials) do
description = string.format("%s %s table with %s legs", shape, m, leg_mat),
mesh = "homedecor_table_"..shape..".obj",
tiles = {
'homedecor_blanktile.png',
'homedecor_blanktile.png',
'blank.png',
'blank.png',
'homedecor_'..m..'_table_'..shape..'.png',
'homedecor_'..m..'_table_edges.png',
"homedecor_table_legs_"..leg_mat..".png",

View File

@ -4,12 +4,14 @@ local tmp = {}
local sd_disallow = minetest.get_modpath("screwdriver") and screwdriver.disallow or nil
minetest.register_entity("itemframes:item",{
hp_max = 1,
visual="wielditem",
visual_size={x = 0.33, y = 0.33},
collisionbox = {0, 0, 0, 0, 0, 0},
physical = false,
textures = {"air"},
initial_properties = {
hp_max = 1,
visual = "wielditem",
visual_size = {x = 0.33, y = 0.33},
collisionbox = {0, 0, 0, 0, 0, 0},
physical = false,
textures = {"air"},
},
on_activate = function(self, staticdata)
if tmp.nodename ~= nil and tmp.texture ~= nil then
self.nodename = tmp.nodename