Release 1.0.3
parent
855ad4fe73
commit
7b5c81b705
|
@ -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,
|
||||
|
|
|
@ -173,14 +173,13 @@ 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 {}
|
||||
end
|
||||
|
||||
local f_name = "multidecor:" .. name
|
||||
minetest.register_node(":" .. f_name, f_def)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
@ -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,15 +33,8 @@ 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}
|
||||
},
|
||||
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")
|
||||
|
||||
|
@ -54,12 +67,16 @@ minetest.register_node(":multidecor:modern_floor_clock", {
|
|||
|
||||
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)
|
||||
|
@ -82,12 +99,16 @@ minetest.register_node(":multidecor:modern_floor_clock", {
|
|||
minetest.sound_stop(handle)
|
||||
end
|
||||
wheel:remove()
|
||||
end
|
||||
})
|
||||
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))
|
||||
|
||||
minetest.register_craft(
|
||||
return true
|
||||
end
|
||||
}
|
||||
},
|
||||
{
|
||||
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.
Binary file not shown.
Loading…
Reference in New Issue