Release 1.0.3

master
Andrey2470T 2022-08-30 18:14:29 +03:00
parent 855ad4fe73
commit 7b5c81b705
10 changed files with 201 additions and 134 deletions

View File

@ -5,10 +5,10 @@ minetest.register_node(":multidecor:wolfram_ore", {
paramtype = "light",
light_source = 2,
drop = {
max_items = 4,
max_items = 3,
items = {
{
rarity = 1000,
rarity = 1,
items = {"multidecor:wolfram_lump"}
}
}
@ -24,10 +24,10 @@ minetest.register_node(":multidecor:desert_wolfram_ore", {
paramtype = "light",
light_source = 2,
drop = {
max_items = 4,
max_items = 3,
items = {
{
rarity = 1000,
rarity = 1,
items = {"multidecor:wolfram_lump"}
}
}
@ -40,7 +40,7 @@ minetest.register_ore({
ore_type = "scatter",
ore = "multidecor:wolfram_ore",
wherein = "default:stone",
clust_scarcity = 800,
clust_scarcity = 1500,
clust_num_ores = 4,
clust_size = 2,
height_min = -31000,
@ -51,7 +51,7 @@ minetest.register_ore({
ore_type = "scatter",
ore = "multidecor:desert_wolfram_ore",
wherein = "default:desert_stone",
clust_scarcity = 800,
clust_scarcity = 1500,
clust_num_ores = 4,
clust_size = 2,
height_min = -31000,
@ -87,7 +87,7 @@ minetest.register_node(":multidecor:zinc_ore", {
max_items = 5,
items = {
{
rarity = 1000,
rarity = 1,
items = {"multidecor:zinc_fragment"}
}
}
@ -106,7 +106,7 @@ minetest.register_node(":multidecor:desert_zinc_ore", {
max_items = 5,
items = {
{
rarity = 1000,
rarity = 1,
items = {"multidecor:zinc_fragment"}
}
}
@ -119,7 +119,7 @@ minetest.register_ore({
ore_type = "scatter",
ore = "multidecor:zinc_ore",
wherein = "default:stone",
clust_scarcity = 400,
clust_scarcity = 900,
clust_num_ores = 5,
clust_size = 3,
height_min = -31000,
@ -129,8 +129,8 @@ minetest.register_ore({
minetest.register_ore({
ore_type = "scatter",
ore = "multidecor:desert_zinc_ore",
wherein = "default:stone",
clust_scarcity = 400,
wherein = "default:desert_stone",
clust_scarcity = 900,
clust_num_ores = 5,
clust_size = 3,
height_min = -31000,

View File

@ -173,15 +173,14 @@ function register.register_furniture_unit(name, def, craft_def)
end
end
if def.type ~= "decoration" then
f_def.callbacks = def.callbacks or {}
for cb_name, f in pairs(f_def.callbacks) do
f_def[cb_name] = f
end
f_def.add_properties = def.add_properties or {}
f_def.callbacks = def.callbacks or {}
for cb_name, f in pairs(f_def.callbacks) do
f_def[cb_name] = f
end
f_def.add_properties = def.add_properties or {}
local f_name = "multidecor:" .. name
minetest.register_node(":" .. f_name, f_def)

View File

@ -22,6 +22,7 @@ function sitting.attach_player_to_node(attacher, seat_data)
if seat_data.model then
attacher:set_properties({mesh = seat_data.model.mesh})
attacher:set_animation(seat_data.model.anim.range, seat_data.model.anim.speed, seat_data.model.anim.blend, seat_data.model.anim.loop)
minetest.debug("anim: " .. dump({attacher:get_animation()}))
end
end
@ -71,7 +72,7 @@ function sitting.sit_player(player, node_pos)
physics = {speed = physics.speed, jump = physics.jump}
}
local node = minetest.get_node(node_pos)
local seat_data = minetest.registered_nodes[node.name].add_properties.seat_data
local seat_data = table.copy(minetest.registered_nodes[node.name].add_properties.seat_data)
local rand_model
if seat_data.models then
@ -80,6 +81,21 @@ function sitting.sit_player(player, node_pos)
prev_pdata.mesh = player:get_properties().mesh
prev_pdata.anim = {range = range, speed = speed, blend = blend, loop = loop}
local node_dir = vector.multiply(minetest.facedir_to_dir(minetest.get_node(node_pos).param2), -1)
local near_node = minetest.get_node(vector.add(node_pos, node_dir))
if minetest.get_item_group(near_node.name, "table") ~= 1 then
local models2 = {}
for i=1, #seat_data.models do
if not seat_data.models[i].is_near_block_required then
table.insert(models2, seat_data.models[i])
end
end
seat_data.models = models2
end
rand_model = seat_data.models[math.random(1, #seat_data.models)]
end

View File

@ -1,3 +1,19 @@
local models = {
{
mesh = "multidecor_character_sitting.b3d",
anim = {range = {x=1, y=80}, speed = 1}
},
{
mesh = "multidecor_character_sitting.b3d",
anim = {range = {x=81, y=82}, speed = 1}
},
{
mesh = "multidecor_character_sitting.b3d",
anim = {range = {x=83, y=84}, speed = 1},
is_near_block_required = true
}
}
register.register_seat("kitchen_modern_wooden_chair", {
style = "modern",
material = "wood",
@ -13,12 +29,7 @@ register.register_seat("kitchen_modern_wooden_chair", {
seat_data = {
pos = {x=0.0, y=0.35, z=0.0},
rot = {x=0, y=0, z=0},
models = {
{
mesh = "multidecor_character_sitting.b3d",
anim = {range = {x=1, y=80}, speed = 15}
}
}
models = models
}
},
{
@ -44,12 +55,7 @@ register.register_seat("soft_kitchen_modern_wooden_chair", {
seat_data = {
pos = {x=0.0, y=0.4, z=0.0},
rot = {x=0, y=0, z=0},
models = {
{
mesh = "multidecor_character_sitting.b3d",
anim = {range = {x=1, y=80}, speed = 15}
}
}
models = models
}
},
{
@ -75,12 +81,7 @@ register.register_seat("soft_modern_jungle_chair", {
seat_data = {
pos = {x=0.0, y=0.3, z=0.0},
rot = {x=0, y=0, z=0},
models = {
{
mesh = "multidecor_character_sitting.b3d",
anim = {range = {x=1, y=80}, speed = 15}
}
}
models = models
}
},
{
@ -106,12 +107,7 @@ register.register_seat("soft_round_modern_metallic_chair", {
seat_data = {
pos = {x=0.0, y=0.3, z=0.0},
rot = {x=0, y=0, z=0},
models = {
{
mesh = "multidecor_character_sitting.b3d",
anim = {range = {x=1, y=80}, speed = 15}
}
}
models = models
}
},
{
@ -136,12 +132,7 @@ register.register_seat("round_modern_metallic_stool", {
seat_data = {
pos = {x=0.0, y=0.4, z=0.0},
rot = {x=0, y=0, z=0},
models = {
{
mesh = "multidecor_character_sitting.b3d",
anim = {range = {x=1, y=80}, speed = 15}
}
}
models = models
}
},
{
@ -171,12 +162,7 @@ register.register_seat("armchair_with_wooden_legs", {
seat_data = {
pos = {x=0.0, y=0.2, z=0.0},
rot = {x=0, y=0, z=0},
models = {
{
mesh = "multidecor_character_sitting.b3d",
anim = {range = {x=1, y=80}, speed = 15}
}
}
models = models
}
},
{
@ -220,12 +206,7 @@ register.register_seat("sofa", {
seat_data = {
pos = {x=0.0, y=0.1, z=0.0},
rot = {x=0, y=0, z=0},
models = {
{
mesh = "multidecor_character_sitting.b3d",
anim = {range = {x=1, y=80}, speed = 15}
}
}
models = models
}
},
{

View File

@ -1,9 +1,29 @@
minetest.register_node(":multidecor:modern_floor_clock", {
local function get_current_time()
--[[local time = minetest.get_timeofday()
local total_seconds = math.floor(time * 1440)
local total_minutes = total_seconds % 60
local total_hours = total_minutes % 60
local seconds = total_seconds - (total_minutes*60)
local minutes = total_minutes - (total_hours*60)]]
local timeofday = minetest.get_timeofday()
local time = math.floor(timeofday * 1440)
local minute = time % 60
local hour = (time - minute) / 60
return hour, minute
end
local function get_formatted_time_str(hours, minutes, seconds)
return ("Current time: %d:%d"):format(hours, minutes)
end
register.register_furniture_unit("modern_floor_clock", {
type = "decoration",
style = "modern",
material = "wood",
visual_scale = 0.5,
drawtype = "mesh",
description = "Floor Clock",
paramtype = "light",
paramtype2 = "facedir",
inventory_image = "multidecor_floor_clock_inv.png",
use_texture_alpha = "blend",
mesh = "multidecor_floor_clock.b3d",
@ -13,81 +33,82 @@ minetest.register_node(":multidecor:modern_floor_clock", {
"multidecor_dial.png",
"multidecor_glass_material.png"
},
groups = {choppy=1.5},
collision_box = {
type = "fixed",
fixed = {-0.4, -0.5, -0.3, 0.4, 2, 0.4}
},
selection_box = {
type = "fixed",
fixed = {-0.4, -0.5, -0.3, 0.4, 2, 0.4}
},
on_construct = function(pos)
local wheel = minetest.add_entity(pos, "modern:floor_clock_balance_wheel")
bounding_boxes = {{-0.4, -0.5, -0.3, 0.4, 2, 0.4}},
callbacks = {
on_construct = function(pos)
local wheel = minetest.add_entity(pos, "modern:floor_clock_balance_wheel")
local dir = vector.multiply(minetest.facedir_to_dir(minetest.get_node(pos).param2), -1)
local y_rot = vector.dir_to_rotation(dir).y
local dir = vector.multiply(minetest.facedir_to_dir(minetest.get_node(pos).param2), -1)
local y_rot = vector.dir_to_rotation(dir).y
wheel:set_rotation({x=0, y=y_rot, z=0})
wheel:set_rotation({x=0, y=y_rot, z=0})
minetest.get_meta(pos):set_string("is_activated", "false")
end,
on_rightclick = function(pos, node, clicker)
local wheel = minetest.get_objects_inside_radius(pos, 0.3)
minetest.get_meta(pos):set_string("is_activated", "false")
end,
on_rightclick = function(pos, node, clicker)
local wheel = minetest.get_objects_inside_radius(pos, 0.3)
-- Not found the balance wheel
if #wheel == 0 then
return
-- Not found the balance wheel
if #wheel == 0 then
return
end
wheel = wheel[1]
if wheel:get_luaentity().name ~= "modern:floor_clock_balance_wheel" then
return
end
local meta = minetest.get_meta(pos)
if meta:get_string("is_activated") == "false" then
wheel:set_animation({x=1, y=40}, 40.0, 0.0, true)
meta:set_string("is_activated", "true")
local handle = minetest.sound_play("multidecor_clock_chime", {object=wheel, fade=1.0, max_hear_distance=10, loop=true})
meta:set_string("sound_handle", minetest.serialize(handle))
minetest.get_node_timer(pos):start(1)
else
wheel:set_animation({x=1, y=1}, 0.0)
meta:set_string("is_activated", "false")
local handle = minetest.deserialize(meta:get_string("sound_handle"))
minetest.sound_stop(handle)
minetest.get_node_timer(pos):stop()
end
end,
after_dig_node = function(pos, oldnode, oldmeta)
local wheel = minetest.get_objects_inside_radius(pos, 0.3)
-- Not found the balance wheel
if #wheel == 0 then
return
end
wheel = wheel[1]
if wheel:get_luaentity().name ~= "modern:floor_clock_balance_wheel" then
return
end
local handle = minetest.deserialize(oldmeta.fields.sound_handle)
if handle then
minetest.sound_stop(handle)
end
wheel:remove()
end,
on_timer = function(pos, elapsed)
local hours, minutes, seconds = get_current_time()
minetest.get_meta(pos):set_string("infotext", get_formatted_time_str(hours, minutes, seconds))
return true
end
wheel = wheel[1]
if wheel:get_luaentity().name ~= "modern:floor_clock_balance_wheel" then
return
end
local meta = minetest.get_meta(pos)
if meta:get_string("is_activated") == "false" then
wheel:set_animation({x=1, y=40}, 40.0, 0.0, true)
meta:set_string("is_activated", "true")
local handle = minetest.sound_play("multidecor_clock_chime", {object=wheel, fade=1.0, max_hear_distance=10, loop=true})
meta:set_string("sound_handle", minetest.serialize(handle))
else
wheel:set_animation({x=1, y=1}, 0.0)
meta:set_string("is_activated", "false")
local handle = minetest.deserialize(meta:get_string("sound_handle"))
minetest.sound_stop(handle)
end
end,
after_dig_node = function(pos, oldnode, oldmeta)
local wheel = minetest.get_objects_inside_radius(pos, 0.3)
-- Not found the balance wheel
if #wheel == 0 then
return
end
wheel = wheel[1]
if wheel:get_luaentity().name ~= "modern:floor_clock_balance_wheel" then
return
end
local handle = minetest.deserialize(oldmeta.fields.sound_handle)
if handle then
minetest.sound_stop(handle)
end
wheel:remove()
end
})
minetest.register_craft(
}
},
{
output = "multidecor:modern_floor_clock",
recipe = {
{"multidecor:jungleboard", "multidecor:jungleboard", "multidecor:jungleboard"},
{"doors:door_glass", "multidecor:digital_dial", "multidecor:jungleboard"},
@ -95,6 +116,7 @@ minetest.register_craft(
}
})
minetest.register_entity("modern:floor_clock_balance_wheel", {
visual = "mesh",
visual_size = {x=5, y=5, z=5},
@ -164,7 +186,56 @@ register.register_furniture_unit("alarm_clock", {
"multidecor_glass_material.png"
},
use_texture_alpha = "blend",
bounding_boxes = {{-0.25, -0.5, -0.175, 0.25, 0.1, 0.175}}
bounding_boxes = {{-0.25, -0.5, -0.175, 0.25, 0.1, 0.175}},
callbacks = {
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("is_activated", "false")
meta:set_int("nodetime_elapsed", -1)
end,
on_rightclick = function(pos)
local meta = minetest.get_meta(pos)
if meta:get_string("is_activated") == "false" then
meta:set_string("is_activated", "true")
minetest.get_node_timer(pos):start(1)
else
meta:set_string("is_activated", "false")
meta:set_int("nodetime_elapsed", -1)
minetest.get_node_timer(pos):stop()
local handle = minetest.deserialize(meta:get_string("sound_handle"))
if handle then
minetest.sound_stop(handle)
end
end
end,
on_timer = function(pos)
local meta = minetest.get_meta(pos)
local elapsed = meta:get_int("nodetime_elapsed")
elapsed = elapsed + 1
meta:set_int("nodetime_elapsed", elapsed)
local hours, minutes, seconds = get_current_time()
meta:set_string("infotext", get_formatted_time_str(hours, minutes, seconds))
if elapsed % 8 == 0 then
local handle = minetest.sound_play("multidecor_clock_ticking", {pos=pos, fade=1.0, max_hear_distance=10})
meta:set_string("sound_handle", minetest.serialize(handle))
end
return true
end,
after_dig_node = function(pos, oldnode, oldmeta)
local handle = minetest.deserialize(oldmeta.fields.sound_handle)
if handle then
minetest.sound_stop(handle)
end
end
}
},
{
recipe = {

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.