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

Compare commits

..

8 Commits

Author SHA1 Message Date
aa5571a18f Replace deprecated image fields in crafitem definitions
This has been a legacy field for at least 13 years now
2025-04-27 00:41:28 +02:00
b30d7b532b Merge pull request #92 from AntumMT/player_meta
Set string in PlayerMetaRef instead of in player object attribute
2025-01-10 00:02:37 +01:00
e5119cad05 Set string in PlayerMetaRef instead of in player object attribute 2025-01-06 00:22:36 -08:00
f7d5164559 fix https://github.com/mt-mods/homedecor_modpack/issues/88 - improve usage of use_texture_alpha to improve client rendering (#89) 2024-12-28 22:34:54 -05:00
ecbedd77de make the items opaque to improve rendering performance and hide bad geometry 2024-12-27 18:35:45 -05:00
7bf4f8e185 make the bottle opaque to improve rendering performance and hide bad geometry 2024-12-27 18:09:38 -05:00
b51d27135b Jump drive support for seats (#87)
* psuedo code for jump drive support

* avoid re-calculating node hash in loop

* cache new position for next move

* clean comment and minetest -> core

* cache seat offset for sofas

* use first found sitting position

* cleanup some comments

* bugfix: reported seat occupied when it wasn't

---------

Co-authored-by: Luke aka SwissalpS <Luke@SwissalpS.ws>
2024-12-22 13:59:17 -05:00
94e25c2192 free player when seat is dug (#84) 2024-11-06 23:32:14 -05:00
17 changed files with 83 additions and 33 deletions

View File

@ -2,12 +2,12 @@ local S = minetest.get_translator("building_blocks")
minetest.register_craftitem("building_blocks:sticks", {
description = S("Small bundle of sticks"),
image = "building_blocks_sticks.png",
inventory_image = "building_blocks_sticks.png",
on_place_on_ground = minetest.craftitem_place_item,
})
minetest.register_craftitem("building_blocks:tar_base", {
description = S("Tar base"),
image = "building_blocks_tar_base.png",
inventory_image = "building_blocks_tar_base.png",
})
minetest.register_tool("building_blocks:knife", {

View File

@ -23,7 +23,6 @@ if minetest.get_modpath("vessels") then
},
paramtype = "light",
paramtype2 = "facedir",
use_texture_alpha = "blend",
})
local sbox = {
@ -37,7 +36,6 @@ if minetest.get_modpath("vessels") then
tiles = {"homedecor_3d_vessels_shelf_glass.png"},
inventory_image = "homedecor_3d_vessels_glass_bottle_inv.png",
wield_image = "homedecor_3d_vessels_glass_bottle_inv.png",
use_texture_alpha = "blend",
selection_box = sbox
})
@ -56,7 +54,6 @@ if minetest.get_modpath("vessels") then
tiles = {"homedecor_3d_vessels_shelf_glass.png"},
inventory_image = "homedecor_3d_vessels_drinking_glass_inv.png",
wield_image = "homedecor_3d_vessels_drinking_glass_inv.png",
use_texture_alpha = "blend",
selection_box = sbox
})
end

View File

@ -239,7 +239,6 @@ homedecor.register("toilet_open", {
selection_box = toilet_sbox,
collision_box = toilet_cbox,
drop = "homedecor:toilet",
use_texture_alpha = "blend",
groups = {cracky=3, dig_stone = 2},
_sound_def = {
key = "node_sound_stone_defaults",

View File

@ -19,6 +19,7 @@ local door_list = {
sounds = default.node_sound_wood_defaults(),
sound_open = "homedecor_door_open",
sound_close = "homedecor_door_close",
use_texture_alpha = "opaque",
},
{
name = "exterior_fancy",
@ -26,25 +27,29 @@ local door_list = {
sounds = default.node_sound_wood_defaults(),
sound_open = "homedecor_door_open",
sound_close = "homedecor_door_close",
mesh = "homedecor_door_fancy"
mesh = "homedecor_door_fancy",
use_texture_alpha = "blend",
},
{
name = "french_oak",
description = S("French door, Oak-colored"),
sounds = default.node_sound_glass_defaults(),
mesh = "homedecor_door_french"
mesh = "homedecor_door_french",
use_texture_alpha = "blend",
},
{
name = "french_mahogany",
description = S("French door, Mahogany-colored"),
sounds = default.node_sound_glass_defaults(),
mesh = "homedecor_door_french"
mesh = "homedecor_door_french",
use_texture_alpha = "blend",
},
{
name = "french_white",
description = S("French door, White"),
sounds = default.node_sound_glass_defaults(),
mesh = "homedecor_door_french"
mesh = "homedecor_door_french",
use_texture_alpha = "blend",
},
{
name = "basic_panel",
@ -52,6 +57,7 @@ local door_list = {
sounds = default.node_sound_wood_defaults(),
sound_open = "homedecor_door_open",
sound_close = "homedecor_door_close",
use_texture_alpha = "opaque",
},
{
name = "wrought_iron",
@ -59,7 +65,8 @@ local door_list = {
sounds = default.node_sound_metal_defaults(),
sound_open = "doors_steel_door_open",
sound_close = "doors_steel_door_close",
mesh = "homedecor_door_wrought_iron"
mesh = "homedecor_door_wrought_iron",
use_texture_alpha = "clip",
},
{
name = "carolina",
@ -67,6 +74,7 @@ local door_list = {
sounds = default.node_sound_wood_defaults(),
sound_open = "homedecor_door_open",
sound_close = "homedecor_door_close",
use_texture_alpha = "blend",
},
{
name = "woodglass",
@ -74,19 +82,22 @@ local door_list = {
sounds = default.node_sound_wood_defaults(),
sound_open = "homedecor_door_open",
sound_close = "homedecor_door_close",
mesh = "homedecor_door_wood_glass_3"
mesh = "homedecor_door_wood_glass_3",
use_texture_alpha = "clip",
},
{
name = "closet_mahogany",
description = S("Mahogany Closet Door"),
sounds = default.node_sound_wood_defaults(),
mesh = "homedecor_door_closet"
mesh = "homedecor_door_closet",
use_texture_alpha = "clip",
},
{
name = "closet_oak",
description = S("Oak Closet Door"),
sounds = default.node_sound_wood_defaults(),
mesh = "homedecor_door_closet"
mesh = "homedecor_door_closet",
use_texture_alpha = "clip",
},
}
@ -99,7 +110,7 @@ local function generate_door(def)
local default_settings = {
tiles = {{ name = "homedecor_door_" .. def.name .. ".png", backface_culling = true }},
inventory_image = "homedecor_door_" .. def.name .. "_inv.png",
use_texture_alpha = "blend",
use_texture_alpha = def.use_texture_alpha or "blend",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
mesecons = {
effector = {

View File

@ -488,7 +488,6 @@ for brightness_level = 0, 14 do
description = S("Ground Lantern/Light"),
mesh = "homedecor_ground_lantern.obj",
tiles = { gen_ls_tex_yellow, "homedecor_generic_metal_wrought_iron.png" },
use_texture_alpha = "blend",
inventory_image = "homedecor_ground_lantern_inv.png",
wield_image = "homedecor_ground_lantern_inv.png",
groups = {snappy=3, not_in_creative_inventory = nici, dig_glass=1},
@ -515,7 +514,6 @@ for brightness_level = 0, 14 do
description = S("Hanging Lantern/Light"),
mesh = "homedecor_hanging_lantern.obj",
tiles = { "homedecor_generic_metal_wrought_iron.png", gen_ls_tex_yellow },
use_texture_alpha = "blend",
inventory_image = "homedecor_hanging_lantern_inv.png",
wield_image = "homedecor_hanging_lantern_inv.png",
groups = {snappy=3, not_in_creative_inventory = nici, dig_glass=1},
@ -951,7 +949,6 @@ for _, light_brightn_name in ipairs({"off", "on"}) do
gen_ls_tex_yellow,
"homedecor_generic_metal_wrought_iron.png"
},
use_texture_alpha = "blend",
inventory_image = "homedecor_wall_lamp_inv.png",
groups = {snappy=3, not_in_creative_inventory = nici, dig_glass=1},
light_source = onflag and (minetest.LIGHT_MAX - 3) or nil,

View File

@ -159,7 +159,7 @@ homedecor_roofing.register_slope = function(modname, subname, recipeitem, groups
paramtype2 = "facedir",
selection_box = slope_cbox,
collision_box = slope_cbox,
use_texture_alpha = "blend",
use_texture_alpha = "clip",
groups = groups,
is_ground_content = false,
_mcl_hardness=1.6,

View File

@ -35,6 +35,7 @@ minetest.register_node(":lrfurn:armchair", {
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
end,
on_destruct = lrfurn.on_seat_destruct,
on_movenode = lrfurn.on_seat_movenode,
})
homedecor.register("armchair", {
@ -62,6 +63,7 @@ homedecor.register("armchair", {
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
end,
on_destruct = lrfurn.on_seat_destruct,
on_movenode = lrfurn.on_seat_movenode,
})
-- crafts

View File

@ -79,6 +79,7 @@ function lrfurn.fix_sofa_rotation_nsew(pos, placer, itemstack, pointed_thing)
end
local seated_cache = {}
local offset_cache = {}
minetest.register_entity("homedecor_seating:seat", {
initial_properties = {
@ -161,14 +162,19 @@ function lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, seats)
--see if we can find a non occupied seat
local sit_pos
local sit_hash
for hash, spos in pairs(valid_seats) do
local pstatus = false
for _, ref in pairs(minetest.get_objects_inside_radius(spos, 0.5)) do
if ref:is_player() then
if ref:is_player() and seated_cache[ref:get_player_name()] then
pstatus = true
end
end
if not pstatus then sit_pos = spos end
if not pstatus then
sit_pos = spos
sit_hash = hash
break;
end
end
if not sit_pos then
minetest.chat_send_player(name, "sorry, this seat is currently occupied")
@ -194,6 +200,9 @@ function lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, seats)
xcompat.player.player_attached[name] = true
xcompat.player.set_animation(clicker, "sit", 0)
seated_cache[name] = minetest.hash_node_position(pos)
if seated_cache[name] ~= sit_hash then
offset_cache[name] = core.hash_node_position(vector.subtract(pos, sit_pos))
end
return itemstack
end
@ -203,14 +212,18 @@ function lrfurn.stand(clicker)
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
-- Check, clearobjects might have been called, etc
if attached_to then
-- Removing also detaches
attached_to:remove()
end
seated_cache[name] = nil
offset_cache[name] = nil
end
end
function lrfurn.on_seat_destruct(pos) --called when a seat is destroyed
-- Called when a seat is destroyed
function lrfurn.on_seat_destruct(pos)
for name, seatpos in pairs(seated_cache) do
if seatpos == minetest.hash_node_position(pos) then
local player = minetest.get_player_by_name(name)
@ -221,6 +234,30 @@ function lrfurn.on_seat_destruct(pos) --called when a seat is destroyed
end
end
function lrfurn.on_seat_movenode(from_pos, to_pos)
local hashed_from_pos = core.hash_node_position(from_pos)
local hashed_to_pos = core.hash_node_position(to_pos)
for name, seatpos in pairs(seated_cache) do
if seatpos == hashed_from_pos then
local player = core.get_player_by_name(name)
if player then
local attached_to = player:get_attach()
-- Check, clearobjects might have been called, etc
if attached_to then
if offset_cache[name] then
-- multi-seat node aka sofas
attached_to:set_pos(vector.subtract(to_pos,
core.get_position_from_hash(offset_cache[name])))
else
attached_to:set_pos(to_pos)
end
seated_cache[name] = hashed_to_pos
end
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

View File

@ -49,6 +49,7 @@ minetest.register_node(":lrfurn:longsofa", {
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 3)
end,
on_destruct = lrfurn.on_seat_destruct,
on_movenode = lrfurn.on_seat_movenode,
})
minetest.register_craft({

View File

@ -24,6 +24,7 @@ homedecor.register("deckchair", {
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
end,
on_destruct = lrfurn.on_seat_destruct,
on_movenode = lrfurn.on_seat_movenode,
})
minetest.register_alias("homedecor:deckchair_foot", "homedecor:deckchair")
@ -45,6 +46,7 @@ homedecor.register("deckchair_striped_blue", {
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
end,
on_destruct = lrfurn.on_seat_destruct,
on_movenode = lrfurn.on_seat_movenode,
})
homedecor.register("simple_bench", {
@ -66,6 +68,7 @@ homedecor.register("simple_bench", {
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
end,
on_destruct = lrfurn.on_seat_destruct,
on_movenode = lrfurn.on_seat_movenode,
})
local bl1_sbox = {
@ -159,6 +162,7 @@ homedecor.register("kitchen_chair_wood", {
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
end,
on_destruct = lrfurn.on_seat_destruct,
on_movenode = lrfurn.on_seat_movenode,
})
homedecor.register("kitchen_chair_padded", {
@ -186,6 +190,7 @@ homedecor.register("kitchen_chair_padded", {
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
end,
on_destruct = lrfurn.on_seat_destruct,
on_movenode = lrfurn.on_seat_movenode,
})
local ofchairs_sbox = {
@ -226,6 +231,7 @@ for _, c in pairs(chairs) do
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
end,
on_destruct = lrfurn.on_seat_destruct,
on_movenode = lrfurn.on_seat_movenode,
})
end

View File

@ -49,6 +49,7 @@ minetest.register_node(":lrfurn:sofa", {
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 2)
end,
on_destruct = lrfurn.on_seat_destruct,
on_movenode = lrfurn.on_seat_movenode,
})
minetest.register_craft({

View File

@ -57,7 +57,7 @@ minetest.register_node(":lrfurn:coffeetable", {
},
paramtype = "light",
paramtype2 = "facedir",
use_texture_alpha = "blend",
use_texture_alpha = "clip",
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3, axey=5},
is_ground_content = false,
_mcl_hardness=1.6,

View File

@ -15,7 +15,7 @@ minetest.register_node(":lrfurn:endtable", {
},
paramtype = "light",
paramtype2 = "facedir",
use_texture_alpha = "blend",
use_texture_alpha = "clip",
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3, axey=5},
is_ground_content = false,
_mcl_hardness=1.6,

View File

@ -34,7 +34,7 @@ for _, t in ipairs(leg_materials) do
inventory_image = "homedecor_table_legs_"..name..".png",
wield_image = "homedecor_table_legs_"..name..".png",
walkable = false,
use_texture_alpha = "blend",
use_texture_alpha = "clip",
groups = {snappy=3, dig_tree=2},
_sound_def = {
key = "node_sound_wood_defaults",
@ -79,7 +79,7 @@ for i, mat in ipairs(tabletop_materials) do
'blank.png',
},
wield_image = 'homedecor_'..m..'_table_'..shape..'_inv.png',
use_texture_alpha = "blend",
use_texture_alpha = "clip",
groups = { snappy = 3, dig_tree=2 },
_sound_def = {
key = s,
@ -117,7 +117,7 @@ for i, mat in ipairs(tabletop_materials) do
'homedecor_'..m..'_table_edges.png',
"homedecor_table_legs_"..leg_mat..".png",
},
use_texture_alpha = "blend",
use_texture_alpha = "clip",
groups = { snappy = 3, dig_tree=2 },
_sound_def = {
key = s

View File

@ -71,9 +71,9 @@ local function set_player_skin(player, skin, save)
if save and not skinsdb_mod_path then
if skin == default_skin then
player:set_attribute("homedecor:player_skin", "")
player:get_meta():set_string("homedecor:player_skin", "")
else
player:set_attribute("homedecor:player_skin", skin)
player:get_meta():set_string("homedecor:player_skin", skin)
end
end
end

View File

@ -12,7 +12,7 @@ homedecor.register("window_quartered", {
"homedecor_window_quartered.png",
"homedecor_window_quartered.png"
},
use_texture_alpha = "blend",
use_texture_alpha = "clip",
groups = {snappy=3, dig_glass=2},
_sound_def = {
key = "node_sound_glass_defaults",

View File

@ -22,7 +22,6 @@ minetest.register_node("lavalamp:lavalamp", {
},
},
},
use_texture_alpha = "blend",
inventory_image = "lavalamp_lamp_inv.png",
paramtype = "light",
paramtype2 = "color",