Compare commits

...

16 Commits

Author SHA1 Message Date
Mikita Wiśniewski 2552e92b14 Prepare branch for merge pt. 2
update README with new info (including credits) and update links in it, fix formatting in misc.lua
2023-04-22 08:48:40 +07:00
Mikita Wiśniewski 457237049b Prepare branch for merge pt. 1 (fixes #21)
update locales, fix use_texture_alpha = 'clip' warnings, fix birch slab tables (we didn't have those apparently XD)
2023-04-22 08:07:44 +07:00
Mikita Wiśniewski 90375c9d4d Add functional for the ovens (fixes #17)
currently it is just a retextured smoker without particles, but I'll add more result slots before releasing (I hope)
2023-04-22 07:30:21 +07:00
Mikita Wiśniewski df843ca7a5 Add .gitignore and oven textures
these textures are currently unused, but they soon will be used for the ovens themselves
2023-04-16 14:15:21 +07:00
Mikita Wiśniewski 380be28114 Add About section to the README with a Wiki link (fixes #19)
yay
2023-04-16 08:37:43 +07:00
Mikita Wiśniewski 19211d7c24 Add support for mcl_bamboo (fixes #20) 2023-04-15 20:51:28 +07:00
Mikita Wiśniewski a12dc3f8aa Oops
forgot to fix one of those in previous commit
2023-04-15 19:32:43 +07:00
Mikita Wiśniewski 53b93aec4e Fix crimson and warped textures (fixes #18) 2023-04-12 21:49:31 +07:00
Mikita Wiśniewski f68bf1b81b Merge pull request 'French translation' (#16) from MatthiasZM96/mcl_decor-french_translation:master into master
Reviewed-on: #16
2022-10-27 09:52:38 +00:00
MatthiasZM96 40406bab81 Transférer les fichiers vers 'locale' 2022-10-27 08:17:16 +00:00
Mikita Wiśniewski 11a3ae4e86 Update main screenshot (finally) 2022-10-03 11:05:32 +07:00
Mikita Wiśniewski e913c0cc56 Replace nodebox with mesh for table lamp and update README for it (fixes #8)
now I have normal experience with meshing, yahoo! thanks to blockbench
2022-10-01 17:21:50 +07:00
Mikita Wiśniewski b002a1aed8 Merge branch 'master' into indev 2022-09-30 17:35:15 +07:00
Mikita Wiśniewski ecbc071461 Match up hexcolors to the avg color of concrete textures (fixes #14)
ready for release, yay!
2022-09-30 17:31:27 +07:00
Mikita Wiśniewski 0a7b1414c5 Add more comments to the code (why not?)
v1.3 soon!
2022-09-30 11:04:09 +07:00
Mikita Wiśniewski ce5324af35 Add more comments to the code (why not?)
v1.3 soongit status!
2022-09-30 11:02:18 +07:00
23 changed files with 920 additions and 44 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
textures/src/**

View File

@ -3,10 +3,30 @@ Adds more decoration and furniture blocks to MineClone 2
[![ContentDB](https://content.minetest.net/packages/rudzik8/mcl_decor/shields/downloads/)](https://content.minetest.net/packages/rudzik8/mcl_decor/)
![Screenshot](screenshot_big.png "Screenshot")
![Screenshot](screenshot.png "Screenshot")
## About
This mod adds various blocks into the game so you can decorate your house, office or whatever you're building in MineClone!
Added blocks are:
* Armchairs
* Chairs
* Tables
* Dyed Planks
* Paths
* Hedges
* Curtains
* Coalquartz Tile
* Table Lamp
* Oven
* **and more are planned!**
Want to read more? [Check out the Wiki!](https://git.minetest.land/rudzik8/mcl_decor/wiki)
## Contributing (how can I help?)
### Translate the mod
@ -34,14 +54,21 @@ Media licensed under CC-BY-SA 4.0, see [this deed](https://creativecommons.org/l
## Credits
**For assets:**
- [Coalquartz Tile texture](textures/mcl_decor_coalquartz_tile.png) uses [coal block](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_core/textures/default_coal_block.png) and [quartz block](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_nether/textures/mcl_nether_quartz_block_side.png) textures under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (combined)
- [Dyed planks template texture](textures/mcl_decor_dyed_planks.png) uses [oak planks](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_core/textures/default_wood.png) texture under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (desaturated and lighted up a bit from original)
- [Table Lamp bottom texture](textures/mcl_decor_table_lamp_bottom.png) uses [grey wool](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_wool/textures/wool_grey.png) texture under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (resized and partly darkened up from original)
- [Table Lamp side texture](textures/mcl_decor_table_lamp_side.png) uses [grey wool](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_wool/textures/wool_grey.png) and [oak tree](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_core/textures/default_tree.png) textures under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (combined)
- [Curtains overlay texture](textures/mcl_decor_curtain_overlay.png) uses [top iron pane](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/xpanes/textures/xpanes_top_iron.png) texture under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (resized)
- [Coalquartz Tile texture](textures/mcl_decor_coalquartz_tile.png) uses [coal block](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/textures/default_coal_block.png) and [side quartz block](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_nether/textures/mcl_nether_quartz_block_side.png) textures under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (combined)
- [Dyed planks template texture](textures/mcl_decor_dyed_planks.png) uses [oak planks](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/textures/default_wood.png) texture under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (desaturated and lighted up a bit from original)
- [Table Lamp texture](textures/mcl_decor_table_lamp.png) uses [red wool](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/textures/wool_red.png), [black wool](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_wool/textures/wool_black.png), [torch](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_torches/textures/default_torch_on_floor.png), [smooth stone](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_stairs/textures/mcl_stairs_stone_slab_top.png) and [oak tree](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_core/textures/default_tree.png) textures under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (combined and resized)
- [Curtains overlay texture](textures/mcl_decor_curtain_overlay.png) uses [top iron pane](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/textures/xpanes_top_iron.png) texture under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (resized)
- [Oven front texture](textures/mcl_decor_oven_front.png) uses [top quartz block](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/textures/mcl_nether_quartz_block_top.png), [obsidian](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/textures/default_obsidian.png) and [glass](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/textures/default_glass.png) textures under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (combined and resized)
- [Oven front active texture](textures/mcl_decor_oven_front_active.png) uses [top quartz block](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/textures/mcl_nether_quartz_block_top.png), [obsidian](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/textures/default_obsidian.png) and [glass](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/textures/default_glass.png) textures under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (combined and resized)
- [Oven side texture](textures/mcl_decor_oven_side.png) uses [top quartz block](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/textures/mcl_nether_quartz_block_top.png) and [obsidian](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/textures/default_obsidian.png) textures under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (combined and resized)
- [Oven top texture](textures/mcl_decor_oven_top.png) uses [obsidian](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/textures/default_obsidian.png) texture under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (slightly modified)
**For code:**
- Sitting function (in api.lua) uses code from [ts_furniture mod](https://content.minetest.net/packages/Thomas-S/ts_furniture/) under [MIT](https://spdx.org/licenses/MIT.html) by [Thomas-S](https://content.minetest.net/users/Thomas-S/)
- Oven code (oven.lua) uses code from [mcl_smoker](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_smoker) under [LGPLv2.1](https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html) by [Wuzzy](https://wuzzy.codeberg.page/) and [PrairieWind](https://prairiewind.codeberg.page/)
**Misc:**
- [Homedecor modpack](https://content.minetest.net/packages/VanessaE/homedecor_modpack/) and [xdecor](https://content.minetest.net/packages/jp/xdecor) mods were inspiration for me partly. Thanks to [VanessaE](https://content.minetest.net/users/VanessaE/) and [jp](https://content.minetest.net/users/jp/) for them!

View File

@ -2,24 +2,25 @@
local S = minetest.get_translator(minetest.get_current_modname())
-- COLORS TABLE
mcl_decor.colors = {
-- color, wool texture, armchair desc, curtains desc, dyed planks desc, dye, colorgroup, hexcolor
{"white", "wool_white", S("White Armchair"), S("White Curtains"), S("White Planks"), "white", "unicolor_white", "#EDEDED"},
{"grey", "wool_dark_grey", S("Grey Armchair"), S("Grey Curtains"), S("Grey Planks"), "dark_grey", "unicolor_darkgrey", "#5F5F5F"},
{"silver", "wool_grey", S("Light Grey Armchair"), S("Light Grey Curtains"), S("Light Grey Planks"), "grey", "unicolor_grey", "#8C8C8C"},
{"black", "wool_black", S("Black Armchair"), S("Black Curtains"), S("Black Planks"), "black", "unicolor_black", "#030303"},
{"red", "wool_red", S("Red Armchair"), S("Red Curtains"), S("Red Planks"), "red", "unicolor_red", "#BD0000"},
{"yellow", "wool_yellow", S("Yellow Armchair"), S("Yellow Curtains"), S("Yellow Planks"), "yellow", "unicolor_yellow", "#EBD800"},
{"green", "wool_dark_green", S("Green Armchair"), S("Green Curtains"), S("Green Planks"), "dark_green", "unicolor_dark_green", "#086400"},
{"cyan", "wool_cyan", S("Cyan Armchair"), S("Cyan Curtains"), S("Cyan Planks"), "cyan", "unicolor_cyan", "#00C4B4"},
{"blue", "wool_blue", S("Blue Armchair"), S("Blue Curtains"), S("Blue Planks"), "blue", "unicolor_blue", "#0B1E80"},
{"magenta", "wool_magenta", S("Magenta Armchair"), S("Magenta Curtains"), S("Magenta Planks"), "magenta", "unicolor_red_violet", "#954395"},
{"orange", "wool_orange", S("Orange Armchair"), S("Orange Curtains"), S("Orange Planks"), "orange", "unicolor_orange", "#E68200"},
{"purple", "wool_violet", S("Purple Armchair"), S("Purple Curtains"), S("Purple Planks"), "violet", "unicolor_violet", "#461A6D"},
{"brown", "wool_brown", S("Brown Armchair"), S("Brown Curtains"), S("Brown Planks"), "brown", "unicolor_dark_orange", "#432209"},
{"pink", "wool_pink", S("Pink Armchair"), S("Pink Curtains"), S("Pink Planks"), "pink", "unicolor_light_red", "#ED9BB4"},
{"lime", "mcl_wool_lime", S("Lime Armchair"), S("Lime Curtains"), S("Lime Planks"), "green", "unicolor_green", "#B3DF86"},
{"light_blue", "mcl_wool_light_blue", S("Light Blue Armchair"), S("Light Blue Curtains"), S("Light Blue Planks"), "lightblue", "unicolor_light_blue,", "#72A4D4"},
{"white", "wool_white", S("White Armchair"), S("White Curtains"), S("White Planks"), "white", "unicolor_white", "#D0D6D7"},
{"grey", "wool_dark_grey", S("Grey Armchair"), S("Grey Curtains"), S("Grey Planks"), "dark_grey", "unicolor_darkgrey", "#383B40"},
{"silver", "wool_grey", S("Light Grey Armchair"), S("Light Grey Curtains"), S("Light Grey Planks"), "grey", "unicolor_grey", "#808176"},
{"black", "wool_black", S("Black Armchair"), S("Black Curtains"), S("Black Planks"), "black", "unicolor_black", "#080A0F"},
{"red", "wool_red", S("Red Armchair"), S("Red Curtains"), S("Red Planks"), "red", "unicolor_red", "#922222"},
{"yellow", "wool_yellow", S("Yellow Armchair"), S("Yellow Curtains"), S("Yellow Planks"), "yellow", "unicolor_yellow", "#F1B115"},
{"green", "wool_dark_green", S("Green Armchair"), S("Green Curtains"), S("Green Planks"), "dark_green", "unicolor_dark_green", "#4B5E25"},
{"cyan", "wool_cyan", S("Cyan Armchair"), S("Cyan Curtains"), S("Cyan Planks"), "cyan", "unicolor_cyan", "#157B8C"},
{"blue", "wool_blue", S("Blue Armchair"), S("Blue Curtains"), S("Blue Planks"), "blue", "unicolor_blue", "#2E3093"},
{"magenta", "wool_magenta", S("Magenta Armchair"), S("Magenta Curtains"), S("Magenta Planks"), "magenta", "unicolor_red_violet", "#AB31A2"},
{"orange", "wool_orange", S("Orange Armchair"), S("Orange Curtains"), S("Orange Planks"), "orange", "unicolor_orange", "#E26501"},
{"purple", "wool_violet", S("Purple Armchair"), S("Purple Curtains"), S("Purple Planks"), "violet", "unicolor_violet", "#67209F"},
{"brown", "wool_brown", S("Brown Armchair"), S("Brown Curtains"), S("Brown Planks"), "brown", "unicolor_dark_orange", "#623C20"},
{"pink", "wool_pink", S("Pink Armchair"), S("Pink Curtains"), S("Pink Planks"), "pink", "unicolor_light_red", "#D56790"},
{"lime", "mcl_wool_lime", S("Lime Armchair"), S("Lime Curtains"), S("Lime Planks"), "green", "unicolor_green", "#60AB19"},
{"light_blue", "mcl_wool_light_blue", S("Light Blue Armchair"), S("Light Blue Curtains"), S("Light Blue Planks"), "lightblue", "unicolor_light_blue,", "#258CC8"},
}
for _, row in ipairs(mcl_decor.colors) do
@ -93,6 +94,7 @@ for _, row in ipairs(mcl_decor.colors) do
minetest.register_node("mcl_decor:curtain_"..color, {
description = desc2,
tiles = {
-- very hacky way to make curtains render as they should
wooltile..".png".."^mcl_decor_curtain_alpha.png^[makealpha:255,126,126^mcl_decor_curtain_overlay.png",
wooltile..".png".."^mcl_decor_curtain_alpha.png^[makealpha:255,126,126^mcl_decor_curtain_overlay.png^[transformFY",
wooltile..".png".."^mcl_decor_curtain_overlay.png^[transformR270",
@ -100,6 +102,7 @@ for _, row in ipairs(mcl_decor.colors) do
wooltile..".png".."^mcl_decor_curtain_overlay.png^[transformFY",
wooltile..".png".."^mcl_decor_curtain_alpha.png^[makealpha:255,126,126^mcl_decor_curtain_overlay.png",
},
use_texture_alpha = "clip",
stack_max = 64,
inventory_image = wooltile..".png".."^mcl_decor_curtain_alpha.png^[makealpha:255,126,126^mcl_decor_curtain_overlay.png",
wield_image = wooltile..".png".."^mcl_decor_curtain_alpha.png^[makealpha:255,126,126^mcl_decor_curtain_overlay.png",
@ -115,6 +118,7 @@ for _, row in ipairs(mcl_decor.colors) do
},
_mcl_blast_resistance = 0.2,
_mcl_hardness = 0.2,
-- function to close curtains
on_rightclick = function(pos, node, _, itemstack)
minetest.set_node(pos, {name="mcl_decor:curtain_"..color.."_closed", param2=node.param2})
return itemstack
@ -130,6 +134,7 @@ for _, row in ipairs(mcl_decor.colors) do
wooltile..".png".."^mcl_decor_curtain_overlay.png^[transformFY",
wooltile..".png".."^mcl_decor_curtain_overlay.png",
},
use_texture_alpha = "clip",
walkable = false,
sunlight_propagates = true,
drawtype = "nodebox",
@ -143,6 +148,7 @@ for _, row in ipairs(mcl_decor.colors) do
drop = "mcl_decor:curtain_"..color,
_mcl_blast_resistance = 0.2,
_mcl_hardness = 0.2,
-- function to open curtains
on_rightclick = function(pos, node, clicker, itemstack)
minetest.set_node(pos, {name="mcl_decor:curtain_"..color, param2=node.param2})
return itemstack

View File

@ -4,7 +4,17 @@ local S = minetest.get_translator(minetest.get_current_modname())
-- API
function mcl_decor.register_hedge(name, desc, material, tiles)
mcl_fences.register_fence(name .. "_hedge", desc, tiles, {handy = 1, axey = 1, hedge = 1, deco_block = 1, flammable = 2, fire_encouragement = 10, fire_flammability = 10}, 1, 1, {"group:hedge"}, mcl_sounds.node_sound_wood_defaults())
-- use mcl_fences api to register hedge
mcl_fences.register_fence(
name .. "_hedge",
desc,
tiles,
{handy = 1, axey = 1, hedge = 1, deco_block = 1, flammable = 2, fire_encouragement = 10, fire_flammability = 10},
1, 1,
{"group:hedge"},
mcl_sounds.node_sound_leaves_defaults()
)
-- crafting recipe
minetest.register_craft({
output = "mcl_decor:" .. name .. "_hedge" .. " 6",
recipe = {
@ -25,6 +35,7 @@ mcl_decor.register_hedge("spruce", S("Spruce Hedge"), "mcl_core:spruceleaves", "
mcl_decor.register_hedge("birch", S("Birch Hedge"), "mcl_core:birchleaves", "mcl_core_leaves_birch.png")
mcl_decor.register_hedge("mangrove", S("Mangrove Hedge"), "mcl_mangrove:mangroveleaves", "mcl_mangrove_leaves.png")
-- all hedges should be fuel
minetest.register_craft({
type = "fuel",
recipe = "group:hedge",

View File

@ -9,4 +9,5 @@ dofile(modpath.."/wooden.lua")
dofile(modpath.."/colored.lua")
dofile(modpath.."/paths.lua")
dofile(modpath.."/hedges.lua")
dofile(modpath.."/oven.lua")
dofile(modpath.."/misc.lua")

106
locale/mcl_decor.fr.tr Normal file
View File

@ -0,0 +1,106 @@
# textdomain: mcl_decor
You have to stop moving before sitting down!=Arrêtez de bouger avant de vous asseoir!
Coalquartz Tile=Carreau de Charbon-Quartz
Coalquartz Stair=Escalier de Charbon-Quartz
Coalquartz Slab=Dalle de Charbon-Quartz
Double Coalquartz Slab=Double-Dalle de Charbon-Quartz
Gravel Path=Chemin de Gravier
Cobblestone Path=Chemin de Pierre
Stone Path=Chemin de Roche
Granite Path=Chemin de Granite
Andesite Path=Chemin d'Andésite
Diorite Path=Chemin de Diorite
Netherrack Path=Chemin de Netherrack
Deepslate Path=Chemin d'Ardoise des abîmes
Cobbled Deepslate Path=Chemin de Pierre des abîmes
Table Lamp=Lampe de Table
Oak Chair=Chaise en Chêne
Acacia Chair=Chaise en Acacia
Birch Chair=Chaise en Bouleau
Dark Oak Chair=Chaise en Chêne Noir
Jungle Chair=Chaise en Acajou
Spruce Chair=Chaise en Sapin
Mangrove Chair=Chaise en Palétuvier
Crimson Chair=Chaise Carmin
Warped Chair=Chaise Biscornue
Bamboo Chair=
Oak Table=Table en Chêne
Acacia Table=Table en Acacia
Birch Table=Table en Bouleau
Dark Oak Table=Table en Chêne Noir
Jungle Table=Table en Acajou
Spruce Table=Table en Sapin
Mangrove Table=Table en Palétuvier
Crimson Table=Table Carmin
Warped Table=Table Biscornue
Bamboo Table=
Oak Slab Table=Table Basse en Chêne
Dark Oak Slab Table=Table Basse en Chêne Noir
Jungle Slab Table=Table Basse en Acajou
Spruce Slab Table=Table Basse en Sapin
Acacia Slab Table=Table Basse en Acacia
Birch Slab Table=Table Basse en Bouleau
Mangrove Slab Table=Table Basse en Palétuvier
Crimson Slab Table=Table Basse Carmin
Warped Slab Table=Table Basse Biscornue
Bamboo Slab Table=
Oak Hedge=Haie de Chêne
Dark Oak Hedge=Haie de Chêne Noir
Jungle Hedge=Haie d'Acajou
Acacia Hedge=Haie d'Acacia
Spruce Hedge=Haie de Sapon
Birch Hedge=Haie de Bouleau
Mangrove Hedge=Haie de Palétuvier
White Planks=Planches Blanches
Grey Planks=Planches Grise
Light Grey Planks=Planches Gris Clair
Black Planks=Planches Noire
Red Planks=Planches Rouge
Yellow Planks=Planches Jaune
Green Planks=Planches Verte
Cyan Planks=Planches Cyan
Blue Planks=Planches Bleu
Magenta Planks=Planches Magenta
Orange Planks=Planches Orange
Purple Planks=Planches Violette
Brown Planks=Planches Marron
Pink Planks=Planches Rose
Lime Planks=Planches Vert Clair
Light Blue Planks=Planches Bleu Clair
White Armchair=Fauteuil Blanc
Grey Armchair=Fauteuil Gris
Light Grey Armchair=Fauteuil Gris CLair
Black Armchair=Fauteuil Noir
Red Armchair=Fauteuil Rouge
Yellow Armchair=Fauteuil Jaune
Green Armchair=Fauteuil Vert
Cyan Armchair=Fauteuil Cyan
Blue Armchair=Fauteuil Bleu
Magenta Armchair=Fauteuil Magenta
Orange Armchair=Fauteuil Orange
Purple Armchair=Fauteuil Violet
Brown Armchair=Fauteuil Marron
Pink Armchair=Fauteuil Rose
Lime Armchair=Fauteuil Vert Clair
Light Blue Armchair=Fauteuil Bleu Clair
White Curtains=Rideaux Blanc
Grey Curtains=Rideaux Gris
Light Grey Curtains=Rideaux Gris Clair
Black Curtains=Rideaux Noir
Red Curtains=Rideaux Rouge
Yellow Curtains=Rideaux Jaune
Green Curtains=Rideaux Vert
Cyan Curtains=Rideaux Cyan
Blue Curtains=Rideaux Bleu
Magenta Curtains=Rideaux Magenta
Orange Curtains=Rideaux Orange
Purple Curtains=Rideaux Violet
Brown Curtains=Rideaux Marron
Pink Curtains=Rideaux Rose
Lime Curtains=Rideaux Vert Clair
Light Blue Curtains=Rideaux Bleu Clair
Oven=
Stair= Escalier
Slab= Dalle
Double=Double
(closed)= (fermé)

View File

@ -23,6 +23,7 @@ Spruce Chair=Еловый стул
Mangrove Chair=Мангровый стул
Crimson Chair=Багровый стул
Warped Chair=Искажённый стул
Bamboo Chair=Бамбуковый стул
Oak Table=Дубовый стол
Acacia Table=Стол из акации
Birch Table=Берёзовый стол
@ -32,6 +33,7 @@ Spruce Table=Еловый стол
Mangrove Table=Мангровый стол
Crimson Table=Багровый стол
Warped Table=Искажённый стол
Bamboo Table=Бамбуковый стол
Oak Slab Table=Дубовый полублочный стол
Dark Oak Slab Table=Полублочный стол из тёмного дуба
Jungle Slab Table=Полублочный стол из тропического дерева
@ -41,6 +43,7 @@ Birch Slab Table=Берёзовый полублочный стол
Mangrove Slab Table=Мангровый полублочный стол
Crimson Slab Table=Багровый полублочный стол
Warped Slab Table=Искажённый полублочный стол
Bamboo Slab Table=Бамбуковый полублочный стол
Oak Hedge=Дубовая живая изгородь
Dark Oak Hedge=Живая изгородь из тёмного дуба
Jungle Hedge=Живая изгородь из тропического дерева
@ -96,6 +99,7 @@ Brown Armchair=Коричневые шторы
Pink Armchair=Розовые шторы
Lime Armchair=Зелёные лаймовые шторы
Light Blue Armchair=Светло-голубые шторы
Oven=Духовка
Stair= Ступенька
Slab= Плита
Double=Двойная

View File

@ -23,6 +23,7 @@ Spruce Chair=
Mangrove Chair=
Crimson Chair=
Warped Chair=
Bamboo Chair=
Oak Table=
Acacia Table=
Birch Table=
@ -32,6 +33,7 @@ Spruce Table=
Mangrove Table=
Crimson Table=
Warped Table=
Bamboo Table=
Oak Slab Table=
Dark Oak Slab Table=
Jungle Slab Table=
@ -41,6 +43,7 @@ Birch Slab Table=
Mangrove Slab Table=
Crimson Slab Table=
Warped Slab Table=
Bamboo Slab Table=
Oak Hedge=
Dark Oak Hedge=
Jungle Hedge=
@ -96,6 +99,7 @@ Brown Curtains=
Pink Curtains=
Lime Curtains=
Light Blue Curtains=
Oven=
Stair=
Slab=
Double=

View File

@ -4,8 +4,8 @@ local S = minetest.get_translator(minetest.get_current_modname())
--- Coalquartz Tile ---
minetest.register_node("mcl_decor:coalquartz_tile", {
description = S("Coalquartz Tile"),
tiles = {"mcl_decor_coalquartz_tile.png"},
description = S("Coalquartz Tile"),
tiles = {"mcl_decor_coalquartz_tile.png"},
is_ground_content = false,
groups = {pickaxey=1, flammable=1, quartz_block=1, building_block=1, material_stone=1, fire_encouragement=5, fire_flammability=5},
sounds = mcl_sounds.node_sound_stone_defaults(),
@ -33,26 +33,23 @@ mcl_stairs.register_stair_and_slab_simple("coalquartz_tile", "mcl_decor:coalquar
--- Table Lamp ---
minetest.register_node("mcl_decor:table_lamp", {
description = S("Table Lamp"),
tiles = {"wool_grey.png", "mcl_decor_table_lamp_bottom.png", "mcl_decor_table_lamp_side.png",
"mcl_decor_table_lamp_side.png", "mcl_decor_table_lamp_side.png", "mcl_decor_table_lamp_side.png"},
drawtype = "nodebox",
tiles = {"mcl_decor_table_lamp.png"},
use_texture_alpha = "clip",
drawtype = "mesh",
mesh = "mcl_decor_table_lamp.obj",
paramtype = "light",
stack_max = 64,
node_box = {
type = "fixed",
fixed = {
{-0.25, -0.5, -0.25, 0.25, -0.375, 0.25},
{-0.0625, -0.375, -0.0625, 0.0625, 0, 0.0625},
{-0.3125, 0, -0.3125, 0.3125, 0.5, 0.3125},
}
},
selection_box = {
type = "fixed",
fixed = {-0.3125, -0.5, -0.3125, 0.3125, 0.5, 0.3125},
},
collision_box = {
type = "fixed",
fixed = {-0.3125, -0.5, -0.3125, 0.3125, 0.5, 0.3125},
},
is_ground_content = false,
light_source = minetest.LIGHT_MAX,
groups = {handy=1, axey=1, attached_node=1, material_wood=1, deco_block=1, flammable=-1},
groups = {handy=1, axey=1, attached_node=1, deco_block=1, flammable=-1},
sounds = mcl_sounds.node_sound_wood_defaults(),
_mcl_blast_resistance = 0.9,
_mcl_hardness = 0.9,

View File

@ -1,5 +1,5 @@
title = MineClone Furniture and decorations
title = MineClone2 Furniture and decorations
name = mcl_decor
description = Adds more decoration and furniture blocks to MineClone 2
depends = mcl_core, mcl_torches, mcl_player, mcl_sounds, mcl_dye, mcl_nether, mcl_stairs, mcl_title, mcl_fences, mcl_mangrove, mcl_deepslate, mcl_crimson
depends = mcl_core, mcl_torches, mcl_player, mcl_sounds, mcl_dye, mcl_nether, mcl_stairs, mcl_title, mcl_fences, mcl_mangrove, mcl_deepslate, mcl_crimson, mcl_bamboo
optional_depends = mcl_cozy

View File

@ -0,0 +1,2 @@
# Made in Blockbench 4.4.1
newmtl none

View File

@ -0,0 +1,141 @@
# Made in Blockbench 4.4.1
mtllib mcl_decor_table_lamp.mtl
o cube
v 0.3125 0.5 0.3125
v 0.3125 0.5 -0.3125
v 0.3125 0 0.3125
v 0.3125 0 -0.3125
v -0.3125 0.5 -0.3125
v -0.3125 0.5 0.3125
v -0.3125 0 -0.3125
v -0.3125 0 0.3125
vt 0.15625 0.6153846153846154
vt 0.3125 0.6153846153846154
vt 0.3125 0.3076923076923077
vt 0.15625 0.3076923076923077
vt 0 0.6153846153846154
vt 0.15625 0.6153846153846154
vt 0.15625 0.3076923076923077
vt 0 0.3076923076923077
vt 0.46875 0.6153846153846154
vt 0.625 0.6153846153846154
vt 0.625 0.3076923076923077
vt 0.46875 0.3076923076923077
vt 0.3125 0.6153846153846154
vt 0.46875 0.6153846153846154
vt 0.46875 0.3076923076923077
vt 0.3125 0.3076923076923077
vt 0.3125 0.6153846153846154
vt 0.15625 0.6153846153846154
vt 0.15625 1
vt 0.3125 1
vt 0.46875 1
vt 0.3125 1
vt 0.3125 0.6153846153846154
vt 0.46875 0.6153846153846154
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 4/4/1 7/3/1 5/2/1 2/1/1
f 3/8/2 4/7/2 2/6/2 1/5/2
f 8/12/3 3/11/3 1/10/3 6/9/3
f 7/16/4 8/15/4 6/14/4 5/13/4
f 6/20/5 1/19/5 2/18/5 5/17/5
f 7/24/6 4/23/6 3/22/6 8/21/6
o cube
v 0.25 -0.375 0.25
v 0.25 -0.375 -0.25
v 0.25 -0.5 0.25
v 0.25 -0.5 -0.25
v -0.25 -0.375 -0.25
v -0.25 -0.375 0.25
v -0.25 -0.5 -0.25
v -0.25 -0.5 0.25
vt 0.625 0.6923076923076923
vt 0.75 0.6923076923076923
vt 0.75 0.6153846153846154
vt 0.625 0.6153846153846154
vt 0.5 0.6923076923076923
vt 0.625 0.6923076923076923
vt 0.625 0.6153846153846154
vt 0.5 0.6153846153846154
vt 0.875 0.6923076923076923
vt 1 0.6923076923076923
vt 1 0.6153846153846154
vt 0.875 0.6153846153846154
vt 0.75 0.6923076923076923
vt 0.875 0.6923076923076923
vt 0.875 0.6153846153846154
vt 0.75 0.6153846153846154
vt 0.75 0.6923076923076923
vt 0.625 0.6923076923076923
vt 0.625 1
vt 0.75 1
vt 0.875 1
vt 0.75 1
vt 0.75 0.6923076923076923
vt 0.875 0.6923076923076923
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 12/28/7 15/27/7 13/26/7 10/25/7
f 11/32/8 12/31/8 10/30/8 9/29/8
f 16/36/9 11/35/9 9/34/9 14/33/9
f 15/40/10 16/39/10 14/38/10 13/37/10
f 14/44/11 9/43/11 10/42/11 13/41/11
f 15/48/12 12/47/12 11/46/12 16/45/12
o cube
v 0.0625 0 0.0625
v 0.0625 0 -0.0625
v 0.0625 -0.375 0.0625
v 0.0625 -0.375 -0.0625
v -0.0625 0 -0.0625
v -0.0625 0 0.0625
v -0.0625 -0.375 -0.0625
v -0.0625 -0.375 0.0625
vt 0.03125 0.23076923076923073
vt 0.0625 0.23076923076923073
vt 0.0625 0
vt 0.03125 0
vt 0 0.23076923076923073
vt 0.03125 0.23076923076923073
vt 0.03125 0
vt 0 0
vt 0.09375 0.23076923076923073
vt 0.125 0.23076923076923073
vt 0.125 0
vt 0.09375 0
vt 0.0625 0.23076923076923073
vt 0.09375 0.23076923076923073
vt 0.09375 0
vt 0.0625 0
vt 0.0625 0.23076923076923073
vt 0.03125 0.23076923076923073
vt 0.03125 0.3076923076923077
vt 0.0625 0.3076923076923077
vt 0.09375 0.3076923076923077
vt 0.0625 0.3076923076923077
vt 0.0625 0.23076923076923073
vt 0.09375 0.23076923076923073
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 20/52/13 23/51/13 21/50/13 18/49/13
f 19/56/14 20/55/14 18/54/14 17/53/14
f 24/60/15 19/59/15 17/58/15 22/57/15
f 23/64/16 24/63/16 22/62/16 21/61/16
f 22/68/17 17/67/17 18/66/17 21/65/17
f 23/72/18 20/71/18 19/70/18 24/69/18

574
oven.lua Normal file
View File

@ -0,0 +1,574 @@
local S = minetest.get_translator(minetest.get_current_modname())
local LIGHT_ACTIVE_FURNACE = 13
--
-- Formspecs
--
local function active_formspec(fuel_percent, item_percent)
return "size[9,8.75]"..
"label[0,4;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]"..
"list[current_player;main;0,4.5;9,3;9]"..
mcl_formspec.get_itemslot_bg(0,4.5,9,3)..
"list[current_player;main;0,7.74;9,1;]"..
mcl_formspec.get_itemslot_bg(0,7.74,9,1)..
"label[2.75,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Oven"))).."]"..
"list[context;src;2.75,0.5;1,1;]"..
mcl_formspec.get_itemslot_bg(2.75,0.5,1,1)..
"list[context;fuel;2.75,2.5;1,1;]"..
mcl_formspec.get_itemslot_bg(2.75,2.5,1,1)..
"list[context;dst;5.75,1.5;1,1;]"..
mcl_formspec.get_itemslot_bg(5.75,1.5,1,1)..
"image[2.75,1.5;1,1;default_furnace_fire_bg.png^[lowpart:"..
(100-fuel_percent)..":default_furnace_fire_fg.png]"..
"image[4.1,1.5;1.5,1;gui_furnace_arrow_bg.png^[lowpart:"..
(item_percent)..":gui_furnace_arrow_fg.png^[transformR270]"..
-- Craft guide button temporarily removed due to Minetest bug.
-- TODO: Add it back when the Minetest bug is fixed.
--"image_button[8,0;1,1;craftguide_book.png;craftguide;]"..
--"tooltip[craftguide;"..minetest.formspec_escape(S("Recipe book")).."]"..
"listring[context;dst]"..
"listring[current_player;main]"..
"listring[context;src]"..
"listring[current_player;main]"..
"listring[context;fuel]"..
"listring[current_player;main]"
end
local inactive_formspec = "size[9,8.75]"..
"label[0,4;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]"..
"list[current_player;main;0,4.5;9,3;9]"..
mcl_formspec.get_itemslot_bg(0,4.5,9,3)..
"list[current_player;main;0,7.74;9,1;]"..
mcl_formspec.get_itemslot_bg(0,7.74,9,1)..
"label[2.75,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Oven"))).."]"..
"list[context;src;2.75,0.5;1,1;]"..
mcl_formspec.get_itemslot_bg(2.75,0.5,1,1)..
"list[context;fuel;2.75,2.5;1,1;]"..
mcl_formspec.get_itemslot_bg(2.75,2.5,1,1)..
"list[context;dst;5.75,1.5;1,1;]"..
mcl_formspec.get_itemslot_bg(5.75,1.5,1,1)..
"image[2.75,1.5;1,1;default_furnace_fire_bg.png]"..
"image[4.1,1.5;1.5,1;gui_furnace_arrow_bg.png^[transformR270]"..
-- Craft guide button temporarily removed due to Minetest bug.
-- TODO: Add it back when the Minetest bug is fixed.
--"image_button[8,0;1,1;craftguide_book.png;craftguide;]"..
--"tooltip[craftguide;"..minetest.formspec_escape(S("Recipe book")).."]"..
"listring[context;dst]"..
"listring[current_player;main]"..
"listring[context;src]"..
"listring[current_player;main]"..
"listring[context;fuel]"..
"listring[current_player;main]"
local receive_fields = function(pos, formname, fields, sender)
if fields.craftguide then
mcl_craftguide.show(sender:get_player_name())
end
end
local function give_xp(pos, player)
local meta = minetest.get_meta(pos)
local dir = vector.divide(minetest.facedir_to_dir(minetest.get_node(pos).param2),-1.95)
local xp = meta:get_int("xp")
if xp > 0 then
if player then
mcl_experience.add_xp(player, xp)
else
mcl_experience.throw_xp(vector.add(pos, dir), xp)
end
meta:set_int("xp", 0)
end
end
--
-- Node callback functions that are the same for active and inactive furnace
--
local function allow_metadata_inventory_put(pos, listname, index, stack, player)
if mcl_util.check_position_protection(pos, player) then
return 0
end
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if listname == "fuel" then
-- Test stack with size 1 because we burn one fuel at a time
local teststack = ItemStack(stack)
teststack:set_count(1)
local output, decremented_input = minetest.get_craft_result({method="fuel", width=1, items={teststack}})
if output.time ~= 0 then
-- Only allow to place 1 item if fuel get replaced by recipe.
-- This is the case for lava buckets.
local replace_item = decremented_input.items[1]
if replace_item:is_empty() then
-- For most fuels, just allow to place everything
return stack:get_count()
else
if inv:get_stack(listname, index):get_count() == 0 then
return 1
else
return 0
end
end
else
return 0
end
elseif listname == "src" then
return stack:get_count()
elseif listname == "dst" then
return 0
end
end
local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local stack = inv:get_stack(from_list, from_index)
return allow_metadata_inventory_put(pos, to_list, to_index, stack, player)
end
local function allow_metadata_inventory_take(pos, listname, index, stack, player)
local name = player:get_player_name()
if minetest.is_protected(pos, name) then
minetest.record_protection_violation(pos, name)
return 0
end
return stack:get_count()
end
local function on_metadata_inventory_take(pos, listname, index, stack, player)
-- Award smelting achievements
if listname == "dst" then
if stack:get_name() == "mcl_fishing:fish_cooked" then
awards.unlock(player:get_player_name(), "mcl:cookFish")
end
give_xp(pos, player)
end
end
local function on_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player)
if from_list == "dst" then
give_xp(pos, player)
end
end
--[[local function spawn_flames(pos, param2)
local minrelpos, maxrelpos
local dir = minetest.facedir_to_dir(param2)
if dir.x > 0 then
minrelpos = { x = -0.6, y = -0.05, z = -0.25 }
maxrelpos = { x = -0.55, y = -0.45, z = 0.25 }
elseif dir.x < 0 then
minrelpos = { x = 0.55, y = -0.05, z = -0.25 }
maxrelpos = { x = 0.6, y = -0.45, z = 0.25 }
elseif dir.z > 0 then
minrelpos = { x = -0.25, y = -0.05, z = -0.6 }
maxrelpos = { x = 0.25, y = -0.45, z = -0.55 }
elseif dir.z < 0 then
minrelpos = { x = -0.25, y = -0.05, z = 0.55 }
maxrelpos = { x = 0.25, y = -0.45, z = 0.6 }
else
return
end
mcl_particles.add_node_particlespawner(pos, {
amount = 4,
time = 0,
minpos = vector.add(pos, minrelpos),
maxpos = vector.add(pos, maxrelpos),
minvel = { x = -0.01, y = 0, z = -0.01 },
maxvel = { x = 0.01, y = 0.1, z = 0.01 },
minexptime = 0.3,
maxexptime = 0.6,
minsize = 0.4,
maxsize = 0.8,
texture = "mcl_particles_flame.png",
glow = LIGHT_ACTIVE_FURNACE,
}, "low")
end]]
local function swap_node(pos, name)
local node = minetest.get_node(pos)
if node.name == name then
return
end
node.name = name
minetest.swap_node(pos, node)
--[[if name == "mcl_decor:oven_active" then
spawn_flames(pos, node.param2)
else
mcl_particles.delete_node_particlespawners(pos)
end]]
end
local function oven_reset_delta_time(pos)
local meta = minetest.get_meta(pos)
local time_speed = tonumber(minetest.settings:get("time_speed") or 72)
if (time_speed < 0.1) then
return
end
local time_multiplier = 86400 / time_speed
local current_game_time = .0 + ((minetest.get_day_count() + minetest.get_timeofday()) * time_multiplier)
-- TODO: Change meta:get/set_string() to get/set_float() for "last_gametime".
-- In Windows *_float() works OK but under Linux it returns rounded unusable values like 449540.000000000
local last_game_time = meta:get_string("last_gametime")
if last_game_time then
last_game_time = tonumber(last_game_time)
end
if not last_game_time or last_game_time < 1 or math.abs(last_game_time - current_game_time) <= 1.5 then
return
end
meta:set_string("last_gametime", tostring(current_game_time))
end
local function oven_get_delta_time(pos, elapsed)
local meta = minetest.get_meta(pos)
local time_speed = tonumber(minetest.settings:get("time_speed") or 72)
local current_game_time
if (time_speed < 0.1) then
return meta, elapsed
else
local time_multiplier = 86400 / time_speed
current_game_time = .0 + ((minetest.get_day_count() + minetest.get_timeofday()) * time_multiplier)
end
local last_game_time = meta:get_string("last_gametime")
if last_game_time then
last_game_time = tonumber(last_game_time)
end
if not last_game_time or last_game_time < 1 then
last_game_time = current_game_time - 0.1
elseif last_game_time == current_game_time then
current_game_time = current_game_time + 1.0
end
local elapsed_game_time = .0 + current_game_time - last_game_time
meta:set_string("last_gametime", tostring(current_game_time))
return meta, elapsed_game_time
end
local function oven_node_timer(pos, elapsed)
--
-- Inizialize metadata
--
local meta, elapsed_game_time = oven_get_delta_time(pos, elapsed)
local fuel_time = meta:get_float("fuel_time") or 0
local src_time = meta:get_float("src_time") or 0
local src_item = meta:get_string("src_item") or ""
local fuel_totaltime = meta:get_float("fuel_totaltime") or 0
local inv = meta:get_inventory()
local srclist, fuellist
local cookable, cooked
local active = true
local fuel
srclist = inv:get_list("src")
fuellist = inv:get_list("fuel")
-- Check if src item has been changed
if srclist[1]:get_name() ~= src_item then
-- Reset cooking progress in this case
src_time = 0
src_item = srclist[1]:get_name()
end
local update = true
while elapsed_game_time > 0.00001 and update do
--
-- Cooking
--
-- Run the smoker at twice the speed of a furnace.
local el = elapsed_game_time * 2
-- Check if we have cookable content: cookable
local aftercooked
cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
cookable = minetest.get_item_group(inv:get_stack("src", 1):get_name(), "smoker_cookable") == 1
if cookable then
-- Successful cooking requires space in dst slot and time
if not inv:room_for_item("dst", cooked.item) then
cookable = false
end
end
if cookable then -- fuel lasts long enough, adjust el to cooking duration
el = math.min(el, cooked.time - src_time)
end
-- Check if we have enough fuel to burn
active = fuel_time < fuel_totaltime
if cookable and not active then
-- We need to get new fuel
local afterfuel
fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
if fuel.time == 0 then
-- No valid fuel in fuel list -- stop
fuel_totaltime = 0
src_time = 0
update = false
else
-- Take fuel from fuel list
inv:set_stack("fuel", 1, afterfuel.items[1])
fuel_time = 0
fuel_totaltime = fuel.time
el = math.min(el, fuel_totaltime)
active = true
fuellist = inv:get_list("fuel")
end
elseif active then
el = math.min(el, fuel_totaltime - fuel_time)
-- The furnace is currently active and has enough fuel
fuel_time = fuel_time + el
end
-- If there is a cookable item then check if it is ready yet
if cookable and active then
src_time = src_time + el
-- Place result in dst list if done
if src_time >= cooked.time then
inv:add_item("dst", cooked.item)
inv:set_stack("src", 1, aftercooked.items[1])
srclist = inv:get_list("src")
src_time = 0
meta:set_int("xp", meta:get_int("xp") + 1) -- ToDo give each recipe an idividial XP count
end
end
elapsed_game_time = elapsed_game_time - el
end
if fuel and fuel_totaltime > fuel.time then
fuel_totaltime = fuel.time
end
if srclist and srclist[1]:is_empty() then
src_time = 0
end
--
-- Update formspec and node
--
local formspec = inactive_formspec
local item_percent = 0
if cookable then
item_percent = math.floor(src_time / cooked.time * 100)
end
local result = false
if active then
local fuel_percent = 0
if fuel_totaltime > 0 then
fuel_percent = math.floor(fuel_time / fuel_totaltime * 100)
end
formspec = active_formspec(fuel_percent, item_percent)
swap_node(pos, "mcl_decor:oven_active")
-- make sure timer restarts automatically
result = true
else
swap_node(pos, "mcl_decor:oven")
-- stop timer on the inactive furnace
minetest.get_node_timer(pos):stop()
end
--
-- Set meta values
--
meta:set_float("fuel_totaltime", fuel_totaltime)
meta:set_float("fuel_time", fuel_time)
meta:set_float("src_time", src_time)
if srclist then
meta:set_string("src_item", src_item)
else
meta:set_string("src_item", "")
end
meta:set_string("formspec", formspec)
return result
end
local on_rotate, after_rotate_active
if minetest.get_modpath("screwdriver") then
on_rotate = screwdriver.rotate_simple
after_rotate_active = function(pos)
local node = minetest.get_node(pos)
--mcl_particles.delete_node_particlespawners(pos)
if node.name == "mcl_decor:oven" then
return
end
--spawn_flames(pos, node.param2)
end
end
minetest.register_node("mcl_decor:oven", {
description = S("Oven"),
_tt_help = S("Cooks food faster than furnace"),
_doc_items_longdesc = S("Ovens cook several items, using a furnace fuel, into something else, but twice as fast as a normal furnace and have quadrice slots for result than smoker"),
_doc_items_usagehelp =
S([[
Use the oven to open the furnace menu.
Place a furnace fuel in the lower slot and the source material in the upper slot.
The oven will slowly use its fuel to smelt the item.
The result will be placed into one of the output slots at the right side.
]]).."\n"..
S("Use the recipe book to see what foods you can smelt, what you can use as fuel and how long it will burn."),
_doc_items_hidden = false,
tiles = {
"mcl_decor_oven_top.png", "mcl_nether_quartz_block_top.png",
"mcl_decor_oven_side.png", "mcl_decor_oven_side.png",
"mcl_decor_oven_side.png", "mcl_decor_oven_front.png"
},
paramtype2 = "facedir",
groups = {pickaxey=1, container=4, deco_block=1, material_stone=1},
is_ground_content = false,
sounds = mcl_sounds.node_sound_stone_defaults(),
on_timer = oven_node_timer,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local meta = minetest.get_meta(pos)
local meta2 = meta:to_table()
meta:from_table(oldmetadata)
local inv = meta:get_inventory()
for _, listname in ipairs({"src", "dst", "fuel"}) do
local stack = inv:get_stack(listname, 1)
if not stack:is_empty() then
local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5}
minetest.add_item(p, stack)
end
end
meta:from_table(meta2)
end,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", inactive_formspec)
local inv = meta:get_inventory()
inv:set_size("src", 1)
inv:set_size("fuel", 1)
inv:set_size("dst", 1)
end,
on_destruct = function(pos)
--mcl_particles.delete_node_particlespawners(pos)
give_xp(pos)
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
-- Reset accumulated game time when player works with furnace:
oven_reset_delta_time(pos)
minetest.get_node_timer(pos):start(1.0)
on_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player)
end,
on_metadata_inventory_put = function(pos)
-- Reset accumulated game time when player works with furnace:
oven_reset_delta_time(pos)
-- start timer function, it will sort out whether furnace can burn or not.
minetest.get_node_timer(pos):start(1.0)
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
-- Reset accumulated game time when player works with furnace:
oven_reset_delta_time(pos)
-- start timer function, it will helpful if player clears dst slot
minetest.get_node_timer(pos):start(1.0)
on_metadata_inventory_take(pos, listname, index, stack, player)
end,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_move = allow_metadata_inventory_move,
allow_metadata_inventory_take = allow_metadata_inventory_take,
on_receive_fields = receive_fields,
_mcl_blast_resistance = 3.5,
_mcl_hardness = 3.5,
on_rotate = on_rotate,
})
minetest.register_node("mcl_decor:oven_active", {
description = S("Active Oven"),
_doc_items_create_entry = false,
tiles = {
"mcl_decor_oven_top.png", "mcl_nether_quartz_block_top.png",
"mcl_decor_oven_side.png", "mcl_decor_oven_side.png",
"mcl_decor_oven_side.png", "mcl_decor_oven_front_active.png"
},
paramtype2 = "facedir",
paramtype = "light",
light_source = LIGHT_ACTIVE_FURNACE,
drop = "mcl_decor:oven",
groups = {pickaxey=1, container=4, deco_block=1, not_in_creative_inventory=1, material_stone=1},
is_ground_content = false,
sounds = mcl_sounds.node_sound_stone_defaults(),
on_timer = oven_node_timer,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local meta = minetest.get_meta(pos)
local meta2 = meta
meta:from_table(oldmetadata)
local inv = meta:get_inventory()
for _, listname in ipairs({"src", "dst", "fuel"}) do
local stack = inv:get_stack(listname, 1)
if not stack:is_empty() then
local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5}
minetest.add_item(p, stack)
end
end
meta:from_table(meta2:to_table())
end,
--[[on_construct = function(pos)
local node = minetest.get_node(pos)
spawn_flames(pos, node.param2)
end,]]
on_destruct = function(pos)
--mcl_particles.delete_node_particlespawners(pos)
give_xp(pos)
end,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_move = allow_metadata_inventory_move,
allow_metadata_inventory_take = allow_metadata_inventory_take,
on_metadata_inventory_move = on_metadata_inventory_move,
on_metadata_inventory_take = on_metadata_inventory_take,
on_receive_fields = receive_fields,
_mcl_blast_resistance = 3.5,
_mcl_hardness = 3.5,
on_rotate = on_rotate,
after_rotate = after_rotate_active,
})
minetest.register_craft({
output = "mcl_decor:oven",
recipe = {
{ "", "group:tree", "" },
{ "group:tree", "mcl_furnaces:furnace", "group:tree" },
{ "", "group:tree", "" },
}
})
-- Add entry alias for the Help
if minetest.get_modpath("doc") then
doc.add_entry_alias("nodes", "mcl_decor:oven", "nodes", "mcl_decor:oven_active")
end
--[[minetest.register_lbm({
label = "Active oven flame particles",
name = "mcl_smoker:flames",
nodenames = {"mcl_decor:oven_active"},
run_at_every_load = true,
action = function(pos, node)
spawn_flames(pos, node.param2)
end,
})
]]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 424 KiB

After

Width:  |  Height:  |  Size: 653 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 488 KiB

BIN
textures/mcl_decor_oven_front.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

BIN
textures/mcl_decor_oven_side.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 B

BIN
textures/mcl_decor_oven_top.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 501 B

View File

@ -156,14 +156,16 @@ mcl_decor.register_chair_and_table("spruce", S("Spruce Chair"), S("Spruce Table"
mcl_decor.register_chair_and_table("acacia", S("Acacia Chair"), S("Acacia Table"), "mcl_core:acaciawood", "default_acacia_wood.png")
mcl_decor.register_chair_and_table("birch", S("Birch Chair"), S("Birch Table"), "mcl_core:birchwood", "mcl_core_planks_birch.png")
mcl_decor.register_chair_and_table("mangrove", S("Mangrove Chair"), S("Mangrove Table"), "mcl_mangrove:mangrove_wood", "mcl_mangrove_planks.png")
mcl_decor.register_chair_and_table("crimson", S("Crimson Chair"), S("Crimson Table"), "mcl_crimson:crimson_hyphae_wood", "crimson_hyphae_wood.png")
mcl_decor.register_chair_and_table("warped", S("Warped Chair"), S("Warped Table"), "mcl_crimson:warped_hyphae_wood", "warped_hyphae_wood.png")
mcl_decor.register_chair_and_table("crimson", S("Crimson Chair"), S("Crimson Table"), "mcl_crimson:crimson_hyphae_wood", "mcl_crimson_crimson_hyphae_wood.png")
mcl_decor.register_chair_and_table("warped", S("Warped Chair"), S("Warped Table"), "mcl_crimson:warped_hyphae_wood", "mcl_crimson_warped_hyphae_wood.png")
mcl_decor.register_chair_and_table("bamboo", S("Bamboo Chair"), S("Bamboo Table"), "mcl_bamboo:bamboo_plank", "mcl_bamboo_bamboo_block_stripped.png")
mcl_decor.register_slab_table("wooden", S("Oak Slab Table"), "mcl_core:wood", "default_wood.png")
mcl_decor.register_slab_table("dark_oak", S("Dark Oak Slab Table"), "mcl_core:darkwood", "mcl_core_planks_big_oak.png")
mcl_decor.register_slab_table("jungle", S("Jungle Slab Table"), "mcl_core:junglewood", "default_junglewood.png")
mcl_decor.register_slab_table("spruce", S("Spruce Slab Table"), "mcl_core:sprucewood", "mcl_core_planks_spruce.png")
mcl_decor.register_slab_table("acacia", S("Acacia Slab Table"), "mcl_core:acaciawood", "default_acacia_wood.png")
mcl_decor.register_slab_table("birch", S("Birch Slab Table"), "mcl_core:birchwood", "mcl_core_planks_birch.png")
mcl_decor.register_slab_table("mangrove", S("Mangrove Slab Table"), "mcl_mangrove:mangrove_wood", "mcl_mangrove_planks.png")
mcl_decor.register_slab_table("crimson", S("Crimson Slab Table"), "mcl_crimson:crimson_hyphae_wood", "crimson_hyphae_wood.png")
mcl_decor.register_slab_table("warped", S("Warped Slab Table"), "mcl_crimson:warped_hyphae_wood", "warped_hyphae_wood.png")
mcl_decor.register_slab_table("crimson", S("Crimson Slab Table"), "mcl_crimson:crimson_hyphae_wood", "mcl_crimson_crimson_hyphae_wood.png")
mcl_decor.register_slab_table("warped", S("Warped Slab Table"), "mcl_crimson:warped_hyphae_wood", "mcl_crimson_warped_hyphae_wood.png")
mcl_decor.register_slab_table("bamboo", S("Bamboo Slab Table"), "mcl_bamboo:bamboo_plank", "mcl_bamboo_bamboo_block_stripped.png")