Compare commits

...

19 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
Mikita Wiśniewski 5a32f4595d Prepare for pushing into master (fixes #11, #12)
add mcl_mangrove support, update support for crimson and warped wooden stuff and for deepslate paths, clean-up README and something else I gorgor 💀
2022-09-29 20:16:21 +07:00
Mikita Wiśniewski 🤍💙🤍 f61a71a7ec Clean-up this mess and add hedges (fixes #10)
includes updating mod.conf, finally removing unused register.lua and stuff
2022-09-29 10:31:04 +07:00
Mikita Wiśniewski 4f43fcf650 Use tables for registering colored nodes (fix of #2, p1) 2022-04-30 21:18:18 +07:00
25 changed files with 1165 additions and 574 deletions

1
.gitignore vendored Normal file
View File

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

144
README.md
View File

@ -1,119 +1,46 @@
# MineClone2 Furniture and decorations mod [mcl_decor] (W.I.P.)
Adds more decoration and furniture blocks to MineClone 2 (5)
# MineClone2 Furniture and decorations mod [mcl_decor]
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")
## Blocks
### Armchairs
Armchairs are 1x1 size blocks, on which you can sit by right-click! Uses wool and sticks for crafting. 16 colors available!
**Screenshot:**
![Screenshot](https://i.ibb.co/fNXWDQh/screenshot-20220324-135852.png "16 armchairs")
**Craft (has mirrored variant too):**
![Screenshot](https://i.ibb.co/3YhDML4/Webp-net-gifmaker-2.gif "Crafting")
### Chairs
Chairs are small blocks made out of wood, on which you can sit by right-click! Uses sticks and wood planks for crafting. 6 *(+2 with MCL5)* types available!
**Screenshot:**
![Screenshot](https://i.ibb.co/rcG3D0N/screenshot-20220324-141118.png "6 chairs")
**Craft (has mirrored variant too):**
![Screenshot](https://i.ibb.co/dJ84rPT/Webp-net-gifmaker-3.gif "Crafting")
### Tables
This mod has 2 types of tables: Regular Table (4 small legs in one block) and Slab Table (1 leg in one block, can be expanded by using wood slabs and more slab tables).
Regular Tables are 1x1 size blocks made out of wood. Slab tables are 1x1 size blocks made out of wood too, but they look like if wood slab was combined with wood fence in one block.
Every table uses sticks and wood planks for crafting.
**Screenshot:**
![Screenshot](https://i.ibb.co/6D6xv4d/screenshot-20220324-143209.png "12 various tables")
**Craft:**
![Screenshot](https://i.ibb.co/rcNTLTC/Webp-net-gifmaker-5.gif "Crafting (regular ones)")
### Dyed Planks
Dyed planks are 1x1 size blocks, acting like any other wood planks. Uses dye and any wood plank for crafting. 16 colors available!
**Screenshot:**
![Screenshot](https://i.ibb.co/dWFC1R6/screenshot-20220324-150234.png "16 dyed planks")
**Craft (shapeless):**
![Screenshot](https://i.ibb.co/PQrJWt7/Webp-net-gifmaker-6.gif "Crafting")
### Paths
This mod has 7 (+2 with MCL5) types of them: Gravel, Cobblestone, Stone, Granite, Andesite, Diorite and Netherrack paths. If mcl_deepslate (MCL5 mod) enabled, there will be added Deepslate and Cobbled Deepslate paths as well.
Paths are nearly carpet size blocks, on which you can walk. Uses corresponding for its' type material for crafting.
**Screenshot:**
![Screenshot](https://i.ibb.co/kgqwhW2/screenshot-20220324-155134.png "7 paths")
**Craft:**
![Screenshot](https://i.ibb.co/G53JJhG/Webp-net-gifmaker-7.gif "Crafting")
### Coalquartz Tile
Coalquartz tile is 1x1 size block, that looks and acts like coal and quartz blocks were combined. Uses coal and quartz items for crafting. Has slab and stair variants too!
**Screenshot:**
![Screenshot](https://i.ibb.co/j6hwy4J/screenshot-20220324-161814.png "Coalquartz slab, blocks and stair")
**Craft (has mirrored variant too):**
![Screenshot](https://i.ibb.co/Nrvy89T/screenshot-20220324-161942.png "Crafting")
### Table Lamp
Table lamp is 1x1 size block, that emits light. Uses wool, stone and torch for crafting.
**Screenshot:**
![Screenshot](https://i.ibb.co/sRJy8DF/screenshot-20220324-163824.png "Table lamp on a birch table")
**Craft:**
![Screenshot](https://i.ibb.co/LrJq4vg/screenshot-20220324-165553.png "Crafting")
### Curtains
Curtains are "wallmounted" blocks, which you can open or close by right-click! Uses wool, sticks and iron ingots for crafting. 16 colors available!
**Screenshot:**
![Screenshot](https://i.ibb.co/PxHScLG/Webp-net-gifmaker-8.gif "16 curtains, placed on glass")
**Craft:**
![Screenshot](https://i.ibb.co/Z1yfSvP/Webp-net-gifmaker-9.gif "Crafting")
![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
Just fork this repo, copy "template.txt" and paste as "mcl_decor.XX.tr", where XX is your 2-letter language code (for example, "de" for German/**De**utsch). After that, you can open that file and translate strings to your language.
Just fork this repo, copy "template.txt" and paste as "mcl_decor.XX.tr" where XX is your 2-letter language code (for example, "de" for German/<ins>De</ins>utsch). After that, you can open that file and translate strings to your language.
After the work is done you need to create a pull request, and if it has no problems - I'll merge it!
### Report bugs
Yes! Via "Issues" tab in this repo. I can't fix everything though, but if you found something in my mod that looks like a bug - report it.
### Share mod with friends and make reviews!
On ContentDB of course. Reviews can motivate me to continue updating this mod!
### Share mod with friends and make reviews
On ContentDB of course. Reviews motivate me to continue updating this mod. Also, you can star this repo on MeseHub as well!
### Help me with the code
I'm not a very good coder, more like a novice (combining practice and theory at once), so if you can - please, fix some bugs or maybe even add something via pull requests!
I'm not a very good coder so if you can - please, fix some bugs or maybe even add something via pull requests!
**Thanks.**
@ -127,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,213 +2,190 @@
local S = minetest.get_translator(minetest.get_current_modname())
--=-- API --=--
function mcl_decor.register_armchair(color, desc, tiles, dye, colorgroup)
minetest.register_node("mcl_decor:"..color.."_armchair", {
description = desc,
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.4375, -0.5, -0.5, 0.4375, -0.0625, 0.1875},
{-0.5, -0.4375, -0.5, -0.3125, 0.125, 0.1875},
{0.3125, -0.4375, -0.5, 0.5, 0.125, 0.1875},
{-0.5, -0.5, 0.1875, 0.5, 0.5, 0.5},
{-0.5, -0.5, -0.4375, 0.5, -0.4375, 0.5},
-- 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", "#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
-- define rows
local color = row[1]
local wooltile = row[2]
local desc = row[3]
local desc2 = row[4]
local desc3 = row[5]
local dye = row[6]
local colorgroup = row[7]
local hexcolor = row[8]
-- register armchairs
minetest.register_node("mcl_decor:"..color.."_armchair", {
description = desc,
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.4375, -0.5, -0.5, 0.4375, -0.0625, 0.1875},
{-0.5, -0.4375, -0.5, -0.3125, 0.125, 0.1875},
{0.3125, -0.4375, -0.5, 0.5, 0.125, 0.1875},
{-0.5, -0.5, 0.1875, 0.5, 0.5, 0.5},
{-0.5, -0.5, -0.4375, 0.5, -0.4375, 0.5},
}
},
tiles = {wooltile..".png"},
is_ground_content = false,
paramtype = "light",
paramtype2 = "facedir",
stack_max = 64,
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 },
},
groups = {handy=1, shearsy_wool=1, attached_node=1, deco_block=1, armchair=1, flammable=1, fire_encouragement=30, fire_flammability=60, [colorgroup]=1},
_mcl_hardness = 1,
_mcl_blast_resistance = 1,
sounds = mcl_sounds.node_sound_wood_defaults(),
on_rightclick = mcl_decor.sit
})
minetest.register_craft({
output = "mcl_decor:"..color.."_armchair",
recipe = {
{"", "", "mcl_wool:"..color},
{"mcl_wool:"..color, "mcl_wool:"..color, "mcl_wool:"..color},
{"mcl_core:stick", "mcl_core:stick", "mcl_core:stick"}
}
},
tiles = {tiles},
is_ground_content = false,
paramtype = "light",
paramtype2 = "facedir",
stack_max = 64,
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 },
},
groups = {handy=1, shearsy_wool=1, attached_node=1, deco_block=1, armchair=1, flammable=1, fire_encouragement=30, fire_flammability=60, [colorgroup]=1},
_mcl_hardness = 1,
_mcl_blast_resistance = 1,
sounds = mcl_sounds.node_sound_wood_defaults(),
on_rightclick = mcl_decor.sit
})
minetest.register_craft({
output = "mcl_decor:"..color.."_armchair",
recipe = {
{"", "", "mcl_wool:"..color},
{"mcl_wool:"..color, "mcl_wool:"..color, "mcl_wool:"..color},
{"mcl_core:stick", "mcl_core:stick", "mcl_core:stick"}
}
})
minetest.register_craft({
output = "mcl_decor:"..color.."_armchair",
recipe = {
{"mcl_wool:"..color, "", ""},
{"mcl_wool:"..color, "mcl_wool:"..color, "mcl_wool:"..color},
{"mcl_core:stick", "mcl_core:stick", "mcl_core:stick"}
}
})
minetest.register_craft({
type = "shapeless",
output = "mcl_decor:"..color.."_armchair",
recipe = {"group:armchair", "mcl_dye:"..dye},
})
minetest.register_craft({
type = "fuel",
recipe = "mcl_decor:"..color.."_armchair",
burntime = 10,
})
})
minetest.register_craft({
output = "mcl_decor:"..color.."_armchair",
recipe = {
{"mcl_wool:"..color, "", ""},
{"mcl_wool:"..color, "mcl_wool:"..color, "mcl_wool:"..color},
{"mcl_core:stick", "mcl_core:stick", "mcl_core:stick"}
}
})
minetest.register_craft({
type = "shapeless",
output = "mcl_decor:"..color.."_armchair",
recipe = {"group:armchair", "mcl_dye:"..dye},
})
minetest.register_craft({
type = "fuel",
recipe = "mcl_decor:"..color.."_armchair",
burntime = 10,
})
-- register curtains
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",
wooltile..".png".."^mcl_decor_curtain_overlay.png^[transformR90",
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",
walkable = false,
sunlight_propagates = true,
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "wallmounted",
groups = {handy=1, flammable=-1, curtain=1, attached_node=1, dig_by_piston=1, deco_block=1, material_wool=1, [colorgroup]=1},
sounds = mcl_sounds.node_sound_wood_defaults(),
node_box = {
type = "wallmounted",
},
_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
end
})
minetest.register_node("mcl_decor:curtain_"..color.."_closed", {
description = desc2..S(" (closed)"),
tiles = {
wooltile..".png".."^mcl_decor_curtain_overlay.png",
wooltile..".png".."^mcl_decor_curtain_overlay.png^[transformFY",
wooltile..".png".."^mcl_decor_curtain_overlay.png^[transformR270",
wooltile..".png".."^mcl_decor_curtain_overlay.png^[transformR90",
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",
paramtype = "light",
paramtype2 = "wallmounted",
groups = {handy=1, flammable=-1, attached_node=1, dig_by_piston=1, not_in_creative_inventory=1},
sounds = mcl_sounds.node_sound_wood_defaults(),
node_box = {
type = "wallmounted",
},
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
end
})
minetest.register_craft({
output = "mcl_decor:curtain_"..color,
recipe = {
{"mcl_core:iron_ingot", "mcl_core:stick", "mcl_core:iron_ingot"},
{"mcl_wool:"..color, "mcl_wool:"..color, "mcl_wool:"..color},
{"mcl_wool:"..color, "", "mcl_wool:"..color}
}
})
minetest.register_craft({
type = "shapeless",
output = "mcl_decor:curtain_"..color,
recipe = {"group:curtain", "mcl_dye:"..dye},
})
-- register dyed planks
minetest.register_node("mcl_decor:"..color.."_planks", {
description = desc3,
tiles = {"mcl_decor_dyed_planks.png^[colorize:"..hexcolor..":125"},
stack_max = 64,
is_ground_content = false,
groups = {handy=1, axey=1, flammable=3, wood=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20, [colorgroup]=1},
sounds = mcl_sounds.node_sound_wood_defaults(),
_mcl_blast_resistance = 3,
_mcl_hardness = 2,
})
minetest.register_craft({
type = "shapeless",
output = "mcl_decor:"..color.."_planks",
recipe = {"group:wood", "mcl_dye:"..dye}
})
-- maybe descriptions of slabs/stairs after that workaround will be VERY CRAPPY (especially with translations via locales), but at least it works
mcl_stairs.register_stair_and_slab_simple(
color.."_planks", "mcl_decor:"..color.."_planks", desc3..S(" Stair"), desc3..S(" Slab"), S("Double")..desc3..S(" Slab"), "woodlike"
)
end
function mcl_decor.register_dyed_planks(color, desc, hexcolor, dye, colorgroup)
minetest.register_node("mcl_decor:"..color.."_planks", {
description = desc,
tiles = {"mcl_decor_dyed_planks.png^[colorize:" .. hexcolor .. ":125"},
stack_max = 64,
is_ground_content = false,
groups = {handy=1, axey=1, flammable=3, wood=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20, [colorgroup]=1},
sounds = mcl_sounds.node_sound_wood_defaults(),
_mcl_blast_resistance = 3,
_mcl_hardness = 2,
})
minetest.register_craft({
type = "shapeless",
output = "mcl_decor:"..color.."_planks",
recipe = {"group:wood", "mcl_dye:"..dye}
})
-- maybe descriptions of slabs/stairs after that workaround will be VERY CRAPPY (especially with translations via locales), but at least it works
mcl_stairs.register_stair_and_slab_simple(
color.."_planks", "mcl_decor:"..color.."_planks", desc..S(" Stair"), desc..S(" Slab"), S("Double")..desc..S(" Slab"), "woodlike"
)
end
function mcl_decor.register_curtains(color, desc, wool, wooltile, dye, colorgroup)
minetest.register_node("mcl_decor:curtain_"..color, {
description = desc,
tiles = {
wooltile.."^mcl_decor_curtain_alpha.png^[makealpha:255,126,126^mcl_decor_curtain_overlay.png", -- front
wooltile.."^mcl_decor_curtain_alpha.png^[makealpha:255,126,126^mcl_decor_curtain_overlay.png^[transformFY", -- back
wooltile.."^mcl_decor_curtain_overlay.png^[transformR270", -- side
wooltile.."^mcl_decor_curtain_overlay.png^[transformR90", -- side
wooltile.."^mcl_decor_curtain_overlay.png^[transformFY", -- top
wooltile.."^mcl_decor_curtain_alpha.png^[makealpha:255,126,126^mcl_decor_curtain_overlay.png", -- bottom
},
stack_max = 64,
inventory_image = wooltile.."^mcl_decor_curtain_alpha.png^[makealpha:255,126,126^mcl_decor_curtain_overlay.png",
wield_image = wooltile.."^mcl_decor_curtain_alpha.png^[makealpha:255,126,126^mcl_decor_curtain_overlay.png",
walkable = false,
sunlight_propagates = true,
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "wallmounted",
groups = {handy=1, flammable=-1, curtain=1, attached_node=1, dig_by_piston=1, deco_block=1, material_wool=1, [colorgroup]=1},
sounds = mcl_sounds.node_sound_wood_defaults(),
node_box = {
type = "wallmounted",
},
_mcl_blast_resistance = 0.2,
_mcl_hardness = 0.2,
on_rightclick = function(pos, node, _, itemstack)
minetest.set_node(pos, {name="mcl_decor:curtain_"..color.."_closed", param2=node.param2})
return itemstack
end
})
minetest.register_node("mcl_decor:curtain_"..color.."_closed", {
description = desc..S(" (closed)"),
tiles = {
wooltile.."^mcl_decor_curtain_overlay.png", -- front
wooltile.."^mcl_decor_curtain_overlay.png^[transformFY", -- back
wooltile.."^mcl_decor_curtain_overlay.png^[transformR270", -- side
wooltile.."^mcl_decor_curtain_overlay.png^[transformR90", -- side
wooltile.."^mcl_decor_curtain_overlay.png^[transformFY", -- top
wooltile.."^mcl_decor_curtain_overlay.png", -- bottom
},
walkable = false,
sunlight_propagates = true,
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "wallmounted",
groups = {handy=1, flammable=-1, attached_node=1, dig_by_piston=1, not_in_creative_inventory=1},
sounds = mcl_sounds.node_sound_wood_defaults(),
node_box = {
type = "wallmounted",
},
drop = "mcl_decor:curtain_"..color,
_mcl_blast_resistance = 0.2,
_mcl_hardness = 0.2,
on_rightclick = function(pos, node, clicker, itemstack)
minetest.set_node(pos, {name="mcl_decor:curtain_"..color, param2=node.param2})
return itemstack
end
})
minetest.register_craft({
output = "mcl_decor:curtain_"..color,
recipe = {
{"mcl_core:iron_ingot", "mcl_core:stick", "mcl_core:iron_ingot"},
{wool, wool, wool},
{wool, "", wool}
}
})
minetest.register_craft({
type = "shapeless",
output = "mcl_decor:curtain_"..color,
recipe = {"group:curtain", "mcl_dye:"..dye},
})
end
--=-- REGISTER --=--
--- Armchairs ---
mcl_decor.register_armchair("white", S("White Armchair"), "wool_white.png", "white", "unicolor_white")
mcl_decor.register_armchair("grey", S("Grey Armchair"), "wool_dark_grey.png", "dark_grey", "unicolor_darkgrey")
mcl_decor.register_armchair("silver", S("Light Grey Armchair"), "wool_grey.png", "grey", "unicolor_grey")
mcl_decor.register_armchair("black", S("Black Armchair"), "wool_black.png", "black", "unicolor_black")
mcl_decor.register_armchair("red", S("Red Armchair"), "wool_red.png", "red", "unicolor_red")
mcl_decor.register_armchair("yellow", S("Yellow Armchair"), "wool_yellow.png", "yellow", "unicolor_yellow")
mcl_decor.register_armchair("green", S("Green Armchair"), "wool_dark_green.png", "dark_green", "unicolor_dark_green")
mcl_decor.register_armchair("cyan", S("Cyan Armchair"), "wool_cyan.png", "cyan", "unicolor_cyan")
mcl_decor.register_armchair("blue", S("Blue Armchair"), "wool_blue.png", "blue", "unicolor_blue")
mcl_decor.register_armchair("magenta", S("Magenta Armchair"), "wool_magenta.png", "magenta", "unicolor_red_violet")
mcl_decor.register_armchair("orange", S("Orange Armchair"), "wool_orange.png", "orange", "unicolor_orange")
mcl_decor.register_armchair("purple", S("Purple Armchair"), "wool_violet.png", "violet", "unicolor_violet")
mcl_decor.register_armchair("brown", S("Brown Armchair"), "wool_brown.png", "brown", "unicolor_dark_orange")
mcl_decor.register_armchair("pink", S("Pink Armchair"), "wool_pink.png", "pink", "unicolor_light_red")
mcl_decor.register_armchair("lime", S("Lime Armchair"), "mcl_wool_lime.png", "green", "unicolor_green")
mcl_decor.register_armchair("light_blue", S("Light Blue Armchair"), "mcl_wool_light_blue.png", "lightblue", "unicolor_light_blue")
--- Curtains ---
mcl_decor.register_curtains("white", S("White Curtains"), "mcl_wool:white", "wool_white.png", "white", "unicolor_white")
mcl_decor.register_curtains("grey", S("Grey Curtains"), "mcl_wool:grey", "wool_dark_grey.png", "dark_grey", "unicolor_darkgrey")
mcl_decor.register_curtains("silver", S("Light Grey Curtains"), "mcl_wool:silver", "wool_grey.png", "grey", "unicolor_grey")
mcl_decor.register_curtains("black", S("Black Curtains"), "mcl_wool:black", "wool_black.png", "black", "unicolor_black")
mcl_decor.register_curtains("red", S("Red Curtains"), "mcl_wool:red", "wool_red.png", "red", "unicolor_red")
mcl_decor.register_curtains("yellow", S("Yellow Curtains"), "mcl_wool:yellow", "wool_yellow.png", "yellow", "unicolor_yellow")
mcl_decor.register_curtains("green", S("Green Curtains"), "mcl_wool:green", "wool_dark_green.png", "dark_green", "unicolor_dark_green")
mcl_decor.register_curtains("cyan", S("Cyan Curtains"), "mcl_wool:cyan", "wool_cyan.png", "cyan", "unicolor_cyan")
mcl_decor.register_curtains("blue", S("Blue Curtains"), "mcl_wool:blue", "wool_blue.png", "blue", "unicolor_blue")
mcl_decor.register_curtains("magenta", S("Magenta Curtains"), "mcl_wool:magenta", "wool_magenta.png", "magenta", "unicolor_red_violet")
mcl_decor.register_curtains("orange", S("Orange Curtains"), "mcl_wool:orange", "wool_orange.png", "orange", "unicolor_orange")
mcl_decor.register_curtains("purple", S("Purple Curtains"), "mcl_wool:purple", "wool_violet.png", "violet", "unicolor_violet")
mcl_decor.register_curtains("brown", S("Brown Curtains"), "mcl_wool:brown", "wool_brown.png", "brown", "unicolor_dark_orange")
mcl_decor.register_curtains("pink", S("Pink Curtains"), "mcl_wool:pink", "wool_pink.png", "pink", "unicolor_light_red")
mcl_decor.register_curtains("lime", S("Lime Curtains"), "mcl_wool:lime", "mcl_wool_lime.png", "green", "unicolor_green")
mcl_decor.register_curtains("light_blue", S("Light Blue Curtains"), "mcl_wool:light_blue", "mcl_wool_light_blue.png", "lightblue", "unicolor_light_blue")
--- Dyed Planks ---
mcl_decor.register_dyed_planks("white", S("White Planks"), "#EDEDED", "white", "unicolor_white")
mcl_decor.register_dyed_planks("grey", S("Grey Planks"), "#5F5F5F", "dark_grey", "unicolor_darkgrey")
mcl_decor.register_dyed_planks("silver", S("Light Grey Planks"), "#8C8C8C", "grey", "unicolor_grey")
mcl_decor.register_dyed_planks("black", S("Black Planks"), "#030303", "black", "unicolor_black")
mcl_decor.register_dyed_planks("red", S("Red Planks"), "#BD0000", "red", "unicolor_red")
mcl_decor.register_dyed_planks("yellow", S("Yellow Planks"), "#EBD800", "yellow", "unicolor_yellow")
mcl_decor.register_dyed_planks("green", S("Green Planks"), "#086400", "dark_green", "unicolor_dark_green")
mcl_decor.register_dyed_planks("cyan", S("Cyan Planks"), "#00C4B4", "cyan", "unicolor_cyan")
mcl_decor.register_dyed_planks("blue", S("Blue Planks"), "#0B1E80", "blue", "unicolor_blue")
mcl_decor.register_dyed_planks("magenta", S("Magenta Planks"), "#954395", "magenta", "unicolor_red_violet")
mcl_decor.register_dyed_planks("orange", S("Orange Planks"), "#E68200", "orange", "unicolor_orange")
mcl_decor.register_dyed_planks("purple", S("Purple Planks"), "#461A6D", "violet", "unicolor_violet")
mcl_decor.register_dyed_planks("brown", S("Brown Planks"), "#432209", "brown", "unicolor_dark_orange")
mcl_decor.register_dyed_planks("pink", S("Pink Planks"), "#ED9BB4", "pink", "unicolor_light_red")
mcl_decor.register_dyed_planks("lime", S("Lime Planks"), "#B3DF86", "green", "unicolor_green")
mcl_decor.register_dyed_planks("light_blue", S("Light Blue Planks"), "#72A4D4", "lightblue", "unicolor_light_blue")

43
hedges.lua Normal file
View File

@ -0,0 +1,43 @@
-- mcl_decor/hedges.lua
local S = minetest.get_translator(minetest.get_current_modname())
-- API
function mcl_decor.register_hedge(name, desc, material, tiles)
-- 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 = {
{material, "mcl_core:stick", material},
{material, "mcl_core:stick", material},
}
})
end
-- REGISTER
mcl_decor.register_hedge("oak", S("Oak Hedge"), "mcl_core:leaves", "default_leaves.png")
mcl_decor.register_hedge("dark", S("Dark Oak Hedge"), "mcl_core:darkleaves", "mcl_core_leaves_big_oak.png")
mcl_decor.register_hedge("jungle", S("Jungle Hedge"), "mcl_core:jungleleaves", "default_jungleleaves.png")
mcl_decor.register_hedge("acacia", S("Acacia Hedge"), "mcl_core:acacialeaves", "default_acacia_leaves.png")
mcl_decor.register_hedge("spruce", S("Spruce Hedge"), "mcl_core:spruceleaves", "mcl_core_leaves_spruce.png")
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",
burntime = 5,
})

View File

@ -8,4 +8,6 @@ dofile(modpath.."/api.lua")
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

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

View File

@ -20,24 +20,37 @@ Birch Chair=
Dark Oak Chair=
Jungle Chair=
Spruce Chair=
Mangrove Chair=
Crimson Chair=
Warped Chair=
Bamboo Chair=
Oak Table=
Acacia Table=
Birch Table=
Dark Oak Table=
Jungle Table=
Spruce Table=
Mangrove Table=
Crimson Table=
Warped Table=
Bamboo Table=
Oak Slab Table=
Dark Oak Slab Table=
Jungle Slab Table=
Spruce Slab Table=
Acacia Slab Table=
Birch Slab Table=
Mangrove Slab Table=
Crimson Slab Table=
Warped Slab Table=
Bamboo Slab Table=
Oak Hedge=
Dark Oak Hedge=
Jungle Hedge=
Acacia Hedge=
Spruce Hedge=
Birch Hedge=
Mangrove Hedge=
White Planks=
Grey Planks=
Light Grey Planks=
@ -86,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,4 +1,5 @@
title = MineClone2 Furniture and decorations
name = mcl_decor
description = Adds more decoration and furniture blocks to MineClone 2 (5)
depends = mcl_core, mcl_torches, mcl_player, mcl_sounds, mcl_dye, mcl_nether, mcl_stairs, mcl_title
optional_depends = mcl_cozy, mcl_mushroom, mcl_deepslate
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, 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,
})
]]

View File

@ -2,7 +2,7 @@
local S = minetest.get_translator(minetest.get_current_modname())
--=-- API --=--
-- API
function mcl_decor.register_path(name, desc, material, tiles, sgroup, sounds)
minetest.register_node("mcl_decor:"..name.."_path", {
description = desc,
@ -57,7 +57,7 @@ end
--=-- REGISTER --=--
-- REGISTER
mcl_decor.register_path(
"gravel",
S("Gravel Path"),
@ -114,23 +114,19 @@ mcl_decor.register_path(
"pickaxey",
mcl_sounds.node_sound_stone_defaults()
)
-- support for MineClone 5
if minetest.get_modpath("mcl_deepslate") then
mcl_decor.register_path(
"deepslate",
S("Deepslate Path"),
"mcl_deepslate:deepslate",
"mcl_deepslate_top.png",
"pickaxey",
mcl_sounds.node_sound_stone_defaults()
)
mcl_decor.register_path(
"deepslate_cobbled",
S("Cobbled Deepslate Path"),
"mcl_deepslate:deepslate_cobbled",
"mcl_cobbled_deepslate.png",
"pickaxey",
mcl_sounds.node_sound_stone_defaults()
)
end
mcl_decor.register_path(
"deepslate",
S("Deepslate Path"),
"mcl_deepslate:deepslate",
"mcl_deepslate_top.png",
"pickaxey",
mcl_sounds.node_sound_stone_defaults()
)
mcl_decor.register_path(
"deepslate_cobbled",
S("Cobbled Deepslate Path"),
"mcl_deepslate:deepslate_cobbled",
"mcl_cobbled_deepslate.png",
"pickaxey",
mcl_sounds.node_sound_stone_defaults()
)

View File

@ -1,210 +0,0 @@
-- mcl_decor/register.lua
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"},
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(),
_mcl_blast_resistance = 4,
_mcl_hardness = 3,
})
minetest.register_craft({
output = "mcl_decor:coalquartz_tile",
recipe = {
{"mcl_core:coal_lump", "mcl_nether:quartz"},
{"mcl_nether:quartz", "mcl_core:coal_lump"}
}
})
minetest.register_craft({
output = "mcl_decor:coalquartz_tile",
recipe = {
{"mcl_nether:quartz", "mcl_core:coal_lump"},
{"mcl_core:coal_lump", "mcl_nether:quartz"}
}
})
mcl_stairs.register_stair_and_slab_simple("coalquartz_tile", "mcl_decor:coalquartz_tile", S("Coalquartz Stair"), S("Coalquartz Slab"), S("Double Coalquartz Slab"))
--- Paths ---
mcl_decor.register_path(
"mcl_decor:gravel_path",
S("Gravel Path"),
"mcl_core:gravel",
"default_gravel.png",
"shovely",
mcl_sounds.node_sound_dirt_defaults({footstep = {name="default_gravel_footstep", gain=0.45}})
)
mcl_decor.register_path(
"mcl_decor:cobble_path",
S("Cobblestone Path"),
"mcl_core:cobble",
"default_cobble.png",
"pickaxey",
mcl_sounds.node_sound_stone_defaults()
)
mcl_decor.register_path(
"mcl_decor:stone_path",
S("Stone Path"),
"mcl_core:stone",
"default_stone.png",
"pickaxey",
mcl_sounds.node_sound_stone_defaults()
)
mcl_decor.register_path(
"mcl_decor:granite_path",
S("Granite Path"),
"mcl_core:granite",
"mcl_core_granite.png",
"pickaxey",
mcl_sounds.node_sound_stone_defaults()
)
mcl_decor.register_path(
"mcl_decor:andesite_path",
S("Andesite Path"),
"mcl_core:andesite",
"mcl_core_andesite.png",
"pickaxey",
mcl_sounds.node_sound_stone_defaults()
)
mcl_decor.register_path(
"mcl_decor:diorite_path",
S("Diorite Path"),
"mcl_core:diorite",
"mcl_core_diorite.png",
"pickaxey",
mcl_sounds.node_sound_stone_defaults()
)
mcl_decor.register_path(
"mcl_decor:netherrack_path",
S("Netherrack Path"),
"mcl_nether:netherrack",
"mcl_nether_netherrack.png",
"pickaxey",
mcl_sounds.node_sound_stone_defaults()
)
--- Table Lamp ---
minetest.register_node("mcl_decor:table_lamp", {
description = S("Table Lamp"),
tiles = {"mcl_decor_table_lamp.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",
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},
},
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},
sounds = mcl_sounds.node_sound_wood_defaults(),
_mcl_blast_resistance = 0.9,
_mcl_hardness = 0.9,
})
minetest.register_craft({
output = "mcl_decor:table_lamp 3",
recipe = {
{"group:wool", "group:wool", "group:wool"},
{"group:wool", "mcl_torches:torch", "group:wool"},
{"mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble"}
}
})
--- Tables and Chairs ---
mcl_decor.register_chair_and_table("wooden", S("Oak Chair"), S("Oak Table"), "mcl_core:wood", "default_wood.png")
mcl_decor.register_chair_and_table("dark_oak", S("Dark Oak Chair"), S("Dark Oak Table"), "mcl_core:darkwood", "mcl_core_planks_big_oak.png")
mcl_decor.register_chair_and_table("jungle", S("Jungle Chair"), S("Jungle Table"), "mcl_core:junglewood", "default_junglewood.png")
mcl_decor.register_chair_and_table("spruce", S("Spruce Chair"), S("Spruce Table"), "mcl_core:sprucewood", "mcl_core_planks_spruce.png")
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_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")
-- support for MineClone 5
if minetest.get_modpath("mcl_mushroom") then
mcl_decor.register_chair_and_table("crimson", S("Crimson Chair"), S("Crimson Table"), "mcl_mushroom:crimson_hyphae_wood", "crimson_hyphae_wood.png", "1")
mcl_decor.register_chair_and_table("warped", S("Warped Chair"), S("Warped Table"), "mcl_mushroom:warped_hyphae_wood", "warped_hyphae_wood.png", "1")
mcl_decor.register_slab_table("crimson", S("Crimson Slab Table"), "mcl_mushroom:crimson_hyphae_wood", "crimson_hyphae_wood.png", "1")
mcl_decor.register_slab_table("warped", S("Warped Slab Table"), "mcl_mushroom:warped_hyphae_wood", "warped_hyphae_wood.png", "1")
end
--- Armchairs ---
mcl_decor.register_armchair("white", S("White Armchair"), "wool_white.png", "white", "unicolor_white")
mcl_decor.register_armchair("grey", S("Grey Armchair"), "wool_dark_grey.png", "dark_grey", "unicolor_darkgrey")
mcl_decor.register_armchair("silver", S("Light Grey Armchair"), "wool_grey.png", "grey", "unicolor_grey")
mcl_decor.register_armchair("black", S("Black Armchair"), "wool_black.png", "black", "unicolor_black")
mcl_decor.register_armchair("red", S("Red Armchair"), "wool_red.png", "red", "unicolor_red")
mcl_decor.register_armchair("yellow", S("Yellow Armchair"), "wool_yellow.png", "yellow", "unicolor_yellow")
mcl_decor.register_armchair("green", S("Green Armchair"), "wool_dark_green.png", "dark_green", "unicolor_dark_green")
mcl_decor.register_armchair("cyan", S("Cyan Armchair"), "wool_cyan.png", "cyan", "unicolor_cyan")
mcl_decor.register_armchair("blue", S("Blue Armchair"), "wool_blue.png", "blue", "unicolor_blue")
mcl_decor.register_armchair("magenta", S("Magenta Armchair"), "wool_magenta.png", "magenta", "unicolor_red_violet")
mcl_decor.register_armchair("orange", S("Orange Armchair"), "wool_orange.png", "orange", "unicolor_orange")
mcl_decor.register_armchair("purple", S("Purple Armchair"), "wool_violet.png", "violet", "unicolor_violet")
mcl_decor.register_armchair("brown", S("Brown Armchair"), "wool_brown.png", "brown", "unicolor_dark_orange")
mcl_decor.register_armchair("pink", S("Pink Armchair"), "wool_pink.png", "pink", "unicolor_light_red")
mcl_decor.register_armchair("lime", S("Lime Armchair"), "mcl_wool_lime.png", "green", "unicolor_green")
mcl_decor.register_armchair("light_blue", S("Light Blue Armchair"), "mcl_wool_light_blue.png", "lightblue", "unicolor_light_blue")
--- Curtains ---
mcl_decor.register_curtains("white", S("White Curtains"), "mcl_wool:white", "wool_white.png", "white", "unicolor_white")
mcl_decor.register_curtains("grey", S("Grey Curtains"), "mcl_wool:grey", "wool_dark_grey.png", "dark_grey", "unicolor_darkgrey")
mcl_decor.register_curtains("silver", S("Light Grey Curtains"), "mcl_wool:silver", "wool_grey.png", "grey", "unicolor_grey")
mcl_decor.register_curtains("black", S("Black Curtains"), "mcl_wool:black", "wool_black.png", "black", "unicolor_black")
mcl_decor.register_curtains("red", S("Red Curtains"), "mcl_wool:red", "wool_red.png", "red", "unicolor_red")
mcl_decor.register_curtains("yellow", S("Yellow Curtains"), "mcl_wool:yellow", "wool_yellow.png", "yellow", "unicolor_yellow")
mcl_decor.register_curtains("green", S("Green Curtains"), "mcl_wool:green", "wool_dark_green.png", "dark_green", "unicolor_dark_green")
mcl_decor.register_curtains("cyan", S("Cyan Curtains"), "mcl_wool:cyan", "wool_cyan.png", "cyan", "unicolor_cyan")
mcl_decor.register_curtains("blue", S("Blue Curtains"), "mcl_wool:blue", "wool_blue.png", "blue", "unicolor_blue")
mcl_decor.register_curtains("magenta", S("Magenta Curtains"), "mcl_wool:magenta", "wool_magenta.png", "magenta", "unicolor_red_violet")
mcl_decor.register_curtains("orange", S("Orange Curtains"), "mcl_wool:orange", "wool_orange.png", "orange", "unicolor_orange")
mcl_decor.register_curtains("purple", S("Purple Curtains"), "mcl_wool:purple", "wool_violet.png", "violet", "unicolor_violet")
mcl_decor.register_curtains("brown", S("Brown Curtains"), "mcl_wool:brown", "wool_brown.png", "brown", "unicolor_dark_orange")
mcl_decor.register_curtains("pink", S("Pink Curtains"), "mcl_wool:pink", "wool_pink.png", "pink", "unicolor_light_red")
mcl_decor.register_curtains("lime", S("Lime Curtains"), "mcl_wool:lime", "mcl_wool_lime.png", "green", "unicolor_green")
mcl_decor.register_curtains("light_blue", S("Light Blue Curtains"), "mcl_wool:light_blue", "mcl_wool_light_blue.png", "lightblue", "unicolor_light_blue")
--- Dyed Planks ---
mcl_decor.register_dyed_planks("white", S("White Planks"), "#EDEDED", "white", "unicolor_white")
mcl_decor.register_dyed_planks("grey", S("Grey Planks"), "#5F5F5F", "dark_grey", "unicolor_darkgrey")
mcl_decor.register_dyed_planks("silver", S("Light Grey Planks"), "#8C8C8C", "grey", "unicolor_grey")
mcl_decor.register_dyed_planks("black", S("Black Planks"), "#030303", "black", "unicolor_black")
mcl_decor.register_dyed_planks("red", S("Red Planks"), "#BD0000", "red", "unicolor_red")
mcl_decor.register_dyed_planks("yellow", S("Yellow Planks"), "#EBD800", "yellow", "unicolor_yellow")
mcl_decor.register_dyed_planks("green", S("Green Planks"), "#086400", "dark_green", "unicolor_dark_green")
mcl_decor.register_dyed_planks("cyan", S("Cyan Planks"), "#00C4B4", "cyan", "unicolor_cyan")
mcl_decor.register_dyed_planks("blue", S("Blue Planks"), "#0B1E80", "blue", "unicolor_blue")
mcl_decor.register_dyed_planks("magenta", S("Magenta Planks"), "#954395", "magenta", "unicolor_red_violet")
mcl_decor.register_dyed_planks("orange", S("Orange Planks"), "#E68200", "orange", "unicolor_orange")
mcl_decor.register_dyed_planks("purple", S("Purple Planks"), "#461A6D", "violet", "unicolor_violet")
mcl_decor.register_dyed_planks("brown", S("Brown Planks"), "#432209", "brown", "unicolor_dark_orange")
mcl_decor.register_dyed_planks("pink", S("Pink Planks"), "#ED9BB4", "pink", "unicolor_light_red")
mcl_decor.register_dyed_planks("lime", S("Lime Planks"), "#B3DF86", "green", "unicolor_green")
mcl_decor.register_dyed_planks("light_blue", S("Light Blue Planks"), "#72A4D4", "lightblue", "unicolor_light_blue")

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

@ -2,8 +2,8 @@
local S = minetest.get_translator(minetest.get_current_modname())
--=-- API --=--
function mcl_decor.register_chair_and_table(name, desc, desc2, material, tiles, groups)
-- API
function mcl_decor.register_chair_and_table(name, desc, desc2, material, tiles, group)
if group == nil then
group = {handy=1, axey=1, attached_node=1, material_wood=1, deco_block=1, flammable=-1}
else
@ -148,25 +148,24 @@ end
--=-- REGISTER --=--
-- REGISTER
mcl_decor.register_chair_and_table("wooden", S("Oak Chair"), S("Oak Table"), "mcl_core:wood", "default_wood.png")
mcl_decor.register_chair_and_table("dark_oak", S("Dark Oak Chair"), S("Dark Oak Table"), "mcl_core:darkwood", "mcl_core_planks_big_oak.png")
mcl_decor.register_chair_and_table("jungle", S("Jungle Chair"), S("Jungle Table"), "mcl_core:junglewood", "default_junglewood.png")
mcl_decor.register_chair_and_table("spruce", S("Spruce Chair"), S("Spruce Table"), "mcl_core:sprucewood", "mcl_core_planks_spruce.png")
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", "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")
-- support for MineClone 5
if minetest.get_modpath("mcl_mushroom") then
mcl_decor.register_chair_and_table("crimson", S("Crimson Chair"), S("Crimson Table"), "mcl_mushroom:crimson_hyphae_wood", "crimson_hyphae_wood.png", "1")
mcl_decor.register_chair_and_table("warped", S("Warped Chair"), S("Warped Table"), "mcl_mushroom:warped_hyphae_wood", "warped_hyphae_wood.png", "1")
mcl_decor.register_slab_table("crimson", S("Crimson Slab Table"), "mcl_mushroom:crimson_hyphae_wood", "crimson_hyphae_wood.png", "1")
mcl_decor.register_slab_table("warped", S("Warped Slab Table"), "mcl_mushroom:warped_hyphae_wood", "warped_hyphae_wood.png", "1")
end
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", "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")