Compare commits
5 Commits
3aaf38d80e
...
5f55b1398e
Author | SHA1 | Date |
---|---|---|
Andrey | 5f55b1398e | |
Andrey2470T | 7b5c81b705 | |
Andrey2470T | 855ad4fe73 | |
Andrey2470T | 6b6eb9e627 | |
Andrey | e7b123063c |
13
README.md
13
README.md
|
@ -1,16 +1,19 @@
|
|||
# MultiDecor 1.0.0. Modpack For Minetest.
|
||||
# MultiDecor 1.0.3. Modpack For Minetest.
|
||||
![logo](https://user-images.githubusercontent.com/25750346/185758916-9acf0ba5-5953-484f-825c-347c6ca7cddd.png)
|
||||
|
||||
## Description
|
||||
This modpack adds various detailed furniture components, decorations and exterior stuff with various designs and styles of each epoch. Inspired by Homedecor and based on my abandoned Luxury Decor. Currently it contains the decor stuff only of "modern" style. A simple cheap style without any quaintness and luxury. In future there will be added still few sorts of that: baroque, high-tech, classic and royal.
|
||||
|
||||
## Changelog List
|
||||
### [20.08.22] Release 1.0.0.
|
||||
### [20.08.22] 1.0.0-beta.
|
||||
### [10.01.22] The mod is born.
|
||||
#### [30.08.22] Release 1.0.3.
|
||||
#### [28.08.22] Release 1.0.2.
|
||||
#### [22.08.22] Release 1.0.1.
|
||||
#### [20.08.22] Release 1.0.0.
|
||||
#### [20.08.22] 1.0.0-beta.
|
||||
#### [10.01.22] The mod is born.
|
||||
|
||||
License (code & media): MIT.
|
||||
|
||||
Dependencies: default, wool, dye, xpanes, beds, flowers, moreores.
|
||||
|
||||
Minimal MT version supported: 5.6.0.
|
||||
Minimal MT version supported: 5.5.0.
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -85,7 +85,8 @@ function doors.convert_to_entity(pos)
|
|||
|
||||
minetest.remove_node(pos)
|
||||
|
||||
local is_open = minetest.registered_nodes[node.name].add_properties.door.mode == "open"
|
||||
local add_props = minetest.registered_nodes[node.name].add_properties
|
||||
local is_open = add_props.door.mode == "open"
|
||||
|
||||
local obj_name = is_open and node.name:gsub("_open", "") or node.name
|
||||
|
||||
|
@ -108,6 +109,10 @@ function doors.convert_to_entity(pos)
|
|||
rot = rot2
|
||||
end
|
||||
|
||||
if add_props.door.sounds and not is_open then
|
||||
minetest.sound_play(add_props.door.sounds.open, {pos=pos, max_hear_distance=10})
|
||||
end
|
||||
|
||||
local obj = minetest.add_entity(new_pos, obj_name)
|
||||
obj:set_rotation(rot)
|
||||
obj:set_properties({
|
||||
|
@ -129,6 +134,13 @@ function doors.convert_from_entity(obj)
|
|||
|
||||
local pos = obj:get_pos()
|
||||
local self = obj:get_luaentity()
|
||||
|
||||
local add_props = minetest.registered_nodes[self.name].add_properties
|
||||
|
||||
if add_props.door.sounds and self.action == "close" then
|
||||
minetest.sound_play(add_props.door.sounds.close, {pos=pos, max_hear_distance=10})
|
||||
end
|
||||
|
||||
obj:remove()
|
||||
|
||||
local name = self.action == "open" and self.name .. "_open" or self.name
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -105,6 +105,12 @@ function shelves.open_shelf(obj, dir_sign)
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
if shelf.sounds then
|
||||
local play_sound = dir_sign == 1 and shelf.sounds.open or shelf.sounds.close
|
||||
|
||||
minetest.sound_play(play_sound, {pos=obj:get_pos(), fade=1.0, max_hear_distance=10})
|
||||
end
|
||||
end
|
||||
|
||||
-- Adds shelf objects for the node with 'pos' position. They should save formspec inventory and position of the node which they are connected to
|
||||
|
@ -265,7 +271,7 @@ shelves.default_drawer_on_step = function(self)
|
|||
local target_pos = self.dir == 1 and self.end_v or self.start_v
|
||||
local dist = vector.distance(self.object:get_pos(), target_pos)
|
||||
|
||||
if dist <= 0.1 then
|
||||
if dist <= 0.05 then
|
||||
self.dir = 0
|
||||
self.object:set_velocity(vector.zero())
|
||||
self.object:set_pos(target_pos)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -107,7 +107,11 @@ register.register_table("dresser_with_mirror", {
|
|||
pos = {x=-0.02, y=0.28, z=0},
|
||||
object = "modern:wooden_drawer_with_round_handle",
|
||||
length = 0.5,
|
||||
inv_size = {w=6,h=1}
|
||||
inv_size = {w=6,h=1},
|
||||
sounds = {
|
||||
open = "multidecor_drawer_open",
|
||||
close = "multidecor_drawer_close"
|
||||
}
|
||||
},
|
||||
{
|
||||
type = "drawer",
|
||||
|
@ -116,7 +120,11 @@ register.register_table("dresser_with_mirror", {
|
|||
pos = {x=-0.02, y=0, z=0},
|
||||
object = "modern:wooden_drawer_with_round_handle",
|
||||
length = 0.5,
|
||||
inv_size = {w=6,h=1}
|
||||
inv_size = {w=6,h=1},
|
||||
sounds = {
|
||||
open = "multidecor_drawer_open",
|
||||
close = "multidecor_drawer_close"
|
||||
}
|
||||
},
|
||||
{
|
||||
type = "drawer",
|
||||
|
@ -125,7 +133,11 @@ register.register_table("dresser_with_mirror", {
|
|||
pos = {x=-0.02, y=-0.28, z=0},
|
||||
object = "modern:wooden_drawer_with_round_handle",
|
||||
length = 0.5,
|
||||
inv_size = {w=6,h=1}
|
||||
inv_size = {w=6,h=1},
|
||||
sounds = {
|
||||
open = "multidecor_drawer_open",
|
||||
close = "multidecor_drawer_close"
|
||||
}
|
||||
},
|
||||
{
|
||||
type = "drawer",
|
||||
|
@ -134,7 +146,11 @@ register.register_table("dresser_with_mirror", {
|
|||
pos = {x=-1, y=0.28, z=0},
|
||||
object = "modern:wooden_drawer_with_round_handle",
|
||||
length = 0.5,
|
||||
inv_size = {w=6,h=1}
|
||||
inv_size = {w=6,h=1},
|
||||
sounds = {
|
||||
open = "multidecor_drawer_open",
|
||||
close = "multidecor_drawer_close"
|
||||
}
|
||||
},
|
||||
{
|
||||
type = "drawer",
|
||||
|
@ -143,7 +159,11 @@ register.register_table("dresser_with_mirror", {
|
|||
pos = {x=-1, y=0, z=0},
|
||||
object = "modern:wooden_drawer_with_round_handle",
|
||||
length = 0.5,
|
||||
inv_size = {w=6,h=1}
|
||||
inv_size = {w=6,h=1},
|
||||
sounds = {
|
||||
open = "multidecor_drawer_open",
|
||||
close = "multidecor_drawer_close"
|
||||
}
|
||||
},
|
||||
{
|
||||
type = "drawer",
|
||||
|
@ -152,7 +172,11 @@ register.register_table("dresser_with_mirror", {
|
|||
pos = {x=-1, y=-0.28, z=0},
|
||||
object = "modern:wooden_drawer_with_round_handle",
|
||||
length = 0.5,
|
||||
inv_size = {w=6,h=1}
|
||||
inv_size = {w=6,h=1},
|
||||
sounds = {
|
||||
open = "multidecor_drawer_open",
|
||||
close = "multidecor_drawer_close"
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
|
|
|
@ -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
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
@ -16,7 +16,11 @@ register.register_door("high_dark_rusty_gate", {
|
|||
door = {
|
||||
mesh_open = "multidecor_high_dark_rusty_gate_open.b3d",
|
||||
mesh_activated = "multidecor_high_dark_rusty_gate_activated.b3d",
|
||||
vel = 100 -- degrees per sec
|
||||
vel = 90, -- degrees per sec
|
||||
sounds = {
|
||||
open = "multidecor_metallic_door_open",
|
||||
close = "multidecor_metallic_door_close"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -46,7 +50,11 @@ register.register_door("dark_rusty_gate", {
|
|||
door = {
|
||||
mesh_open = "multidecor_dark_rusty_gate_open.b3d",
|
||||
mesh_activated = "multidecor_dark_rusty_gate_activated.b3d",
|
||||
vel = 90 -- degrees per sec
|
||||
vel = 90, -- degrees per sec
|
||||
sounds = {
|
||||
open = "multidecor_metallic_door_open",
|
||||
close = "multidecor_metallic_door_close"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -70,7 +78,11 @@ register.register_door("wooden_door", {
|
|||
door = {
|
||||
mesh_open = "multidecor_modern_wooden_door_open.b3d",
|
||||
mesh_activated = "multidecor_modern_wooden_door_activated.b3d",
|
||||
vel = 90 -- degrees per sec
|
||||
vel = 100, -- degrees per sec
|
||||
sounds = {
|
||||
open = "multidecor_wooden_door_open",
|
||||
close = "multidecor_wooden_door_close"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -100,7 +112,11 @@ register.register_door("pine_glass_door", {
|
|||
door = {
|
||||
mesh_open = "multidecor_pine_glass_door_open.b3d",
|
||||
mesh_activated = "multidecor_pine_glass_door_activated.b3d",
|
||||
vel = 90 -- degrees per sec
|
||||
vel = 100, -- degrees per sec
|
||||
sounds = {
|
||||
open = "multidecor_wooden_door_open",
|
||||
close = "multidecor_wooden_door_close"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -130,7 +146,11 @@ register.register_door("technical_door", {
|
|||
door = {
|
||||
mesh_open = "multidecor_technical_door_open.b3d",
|
||||
mesh_activated = "multidecor_technical_door_activated.b3d",
|
||||
vel = 90 -- degrees per sec
|
||||
vel = 80, -- degrees per sec
|
||||
sounds = {
|
||||
open = "multidecor_metallic_door_open",
|
||||
close = "multidecor_metallic_door_close"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
@ -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,70 +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}, 25.0, 0.0, true)
|
||||
meta:set_string("is_activated", "true")
|
||||
else
|
||||
wheel:set_animation({x=1, y=1}, 0.0)
|
||||
meta:set_string("is_activated", "false")
|
||||
end
|
||||
end,
|
||||
after_destruct = function(pos)
|
||||
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
|
||||
|
||||
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"},
|
||||
|
@ -84,6 +116,7 @@ minetest.register_craft(
|
|||
}
|
||||
})
|
||||
|
||||
|
||||
minetest.register_entity("modern:floor_clock_balance_wheel", {
|
||||
visual = "mesh",
|
||||
visual_size = {x=5, y=5, z=5},
|
||||
|
@ -153,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 = {
|
||||
|
@ -164,23 +246,54 @@ register.register_furniture_unit("alarm_clock", {
|
|||
replacements = {{"multidecor:steel_scissors", "multidecor:steel_scissors"}}
|
||||
})
|
||||
|
||||
minetest.register_node(":multidecor:laminate",
|
||||
{
|
||||
drawtype = "nodebox",
|
||||
description = "Laminate",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
tiles = {"multidecor_laminate.png"},
|
||||
node_box = {
|
||||
local floors_defs = {
|
||||
["laminate"] = {
|
||||
"Laminate",
|
||||
"multidecor_laminate.png",
|
||||
{"multidecor:plank", "multidecor:plank", "multidecor:plank", "multidecor:plank"}
|
||||
},
|
||||
["white_laminate"] = {
|
||||
"White Laminate",
|
||||
"multidecor_white_laminate.png",
|
||||
{"multidecor:plank", "multidecor:plank", "multidecor:plank", "multidecor:plank", "dye:white"}
|
||||
},
|
||||
["pine_parquet"] = {
|
||||
"Pine Parquet",
|
||||
"multidecor_pine_parquet.png",
|
||||
{"multidecor:pine_plank", "multidecor:pine_plank", "multidecor:pine_plank", "multidecor:pine_plank"}
|
||||
},
|
||||
["jungle_linoleum"] = {
|
||||
"Jungle Linoleum",
|
||||
"multidecor_jungle_linoleum.png",
|
||||
{"multidecor:jungleplank", "multidecor:jungleplank", "multidecor:jungleplank", "multidecor:jungleplank"}
|
||||
}
|
||||
}
|
||||
|
||||
for name, def in pairs(floors_defs) do
|
||||
minetest.register_node(":multidecor:" .. name, {
|
||||
drawtype = "nodebox",
|
||||
description = def[1],
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
tiles = {def[2]},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, -0.45, 0.5}
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, -0.45, 0.5}
|
||||
},
|
||||
groups = {choppy=1.5}
|
||||
})
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, -0.45, 0.5}
|
||||
},
|
||||
groups = {choppy=1.5}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "multidecor:" .. name,
|
||||
recipe = def[3]
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
|
||||
local flowers = {
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -92,7 +92,11 @@ register.register_table("modern_wooden_desk", {
|
|||
pos = {x=-1.15, y=0.225, z=0.025},
|
||||
object = "modern:wooden_drawer",
|
||||
length = 0.8,
|
||||
inv_size = {w=6,h=1}
|
||||
inv_size = {w=6,h=1},
|
||||
sounds = {
|
||||
open = "multidecor_drawer_open",
|
||||
close = "multidecor_drawer_close"
|
||||
}
|
||||
},
|
||||
{
|
||||
type = "door",
|
||||
|
@ -100,7 +104,11 @@ register.register_table("modern_wooden_desk", {
|
|||
object = "modern:wooden_door",
|
||||
side = "left",
|
||||
inv_size = {w=6,h=3},
|
||||
acc = 1
|
||||
acc = 1,
|
||||
sounds = {
|
||||
open = "multidecor_cabinet_door_open",
|
||||
close = "multidecor_cabinet_door_close"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -183,7 +191,11 @@ register.register_table("modern_bedside_table", {
|
|||
pos = {x=0, y=-0.22, z=0.2375},
|
||||
object = "modern:wooden_drawer",
|
||||
length = 0.8,
|
||||
inv_size = {w=6,h=1}
|
||||
inv_size = {w=6,h=1},
|
||||
sounds = {
|
||||
open = "multidecor_drawer_open",
|
||||
close = "multidecor_drawer_close"
|
||||
}
|
||||
},
|
||||
{
|
||||
type = "drawer",
|
||||
|
@ -192,7 +204,11 @@ register.register_table("modern_bedside_table", {
|
|||
pos = {x=0, y=0.205, z=0.2375},
|
||||
object = "modern:wooden_drawer",
|
||||
length = 0.8,
|
||||
inv_size = {w=6,h=1}
|
||||
inv_size = {w=6,h=1},
|
||||
sounds = {
|
||||
open = "multidecor_drawer_open",
|
||||
close = "multidecor_drawer_close"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
Binary file not shown.
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.7 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 4.8 KiB |
|
@ -23,7 +23,11 @@ register.register_table("modern_cupboard_with_glass_doors", {
|
|||
pos2 = {x=-0.5, y=1.6625, z=0.25},
|
||||
object = "modern:wardrobe_wooden_glass_door",
|
||||
inv_size = {w=8,h=6},
|
||||
acc = 1
|
||||
acc = 1,
|
||||
sounds = {
|
||||
open = "multidecor_cabinet_door_open",
|
||||
close = "multidecor_cabinet_door_close"
|
||||
}
|
||||
},
|
||||
{
|
||||
type = "sym_doors",
|
||||
|
@ -31,7 +35,11 @@ register.register_table("modern_cupboard_with_glass_doors", {
|
|||
pos2 = {x=-0.5, y=0.2375, z=0.25},
|
||||
object = "modern:wardrobe_wooden_door",
|
||||
inv_size = {w=8,h=6},
|
||||
acc = 1
|
||||
acc = 1,
|
||||
sounds = {
|
||||
open = "multidecor_cabinet_door_open",
|
||||
close = "multidecor_cabinet_door_close"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue