Compare commits

...

35 Commits

Author SHA1 Message Date
The4codeblocks
bad710b094 use nondeprecated namespace - minetest to core (#98) 2026-01-01 13:49:26 -05:00
The4codeblocks
9e3ad02c3e update links minetest to luanti (#97)
* update links
2026-01-01 13:47:32 -05:00
z-op
5a72beea1d images optimisation (#96)
Co-authored-by: Evgeniy <evgenuel@gmail.com>
2026-01-01 12:56:39 -05:00
Niklp
aa5571a18f Replace deprecated image fields in crafitem definitions
This has been a legacy field for at least 13 years now
2025-04-27 00:41:28 +02:00
Luke aka SwissalpS
b30d7b532b Merge pull request #92 from AntumMT/player_meta
Set string in PlayerMetaRef instead of in player object attribute
2025-01-10 00:02:37 +01:00
Jordan Irwin
e5119cad05 Set string in PlayerMetaRef instead of in player object attribute 2025-01-06 00:22:36 -08:00
wsor4035
f7d5164559 fix https://github.com/mt-mods/homedecor_modpack/issues/88 - improve usage of use_texture_alpha to improve client rendering (#89) 2024-12-28 22:34:54 -05:00
wsor4035
ecbedd77de make the items opaque to improve rendering performance and hide bad geometry 2024-12-27 18:35:45 -05:00
wsor4035
7bf4f8e185 make the bottle opaque to improve rendering performance and hide bad geometry 2024-12-27 18:09:38 -05:00
wsor4035
b51d27135b Jump drive support for seats (#87)
* psuedo code for jump drive support

* avoid re-calculating node hash in loop

* cache new position for next move

* clean comment and minetest -> core

* cache seat offset for sofas

* use first found sitting position

* cleanup some comments

* bugfix: reported seat occupied when it wasn't

---------

Co-authored-by: Luke aka SwissalpS <Luke@SwissalpS.ws>
2024-12-22 13:59:17 -05:00
wsor4035
94e25c2192 free player when seat is dug (#84) 2024-11-06 23:32:14 -05:00
wsor4035
d8ae7a360d handle corner case where player dies while in chair 2024-11-05 01:20:34 -05:00
wsor4035
40898101be replace physics hell with hopefully better entity hell (#81)
* replace physics hell with hopefully better entity hell

* toss worthless optional depend

* no need to save entity if we dont remove it for some reason - crashes, etc

* fix sofas

* handle the rest of chairs

* catch malformed seating, since lua tables are 1 indexed

* niklp suggestion
2024-10-30 22:57:08 -04:00
Niklp
79416b962c Add player_monoids support (#80)
* Add `player_monoids` support (*sometimes* broken for whatever reason, see xkcd#1739)

* .
2024-10-20 12:24:57 -04:00
Mihin Dissanayake
00ee805ed7 Make half doors craftable (#79) 2024-10-15 18:44:55 -04:00
Niklp
6fb69a56a5 Fix typo in German translation of "Dishwasher" 2024-10-05 19:22:13 +02:00
wsor4035
335559feb3 fix seating only working once till server restarts 2024-09-11 20:18:38 -04:00
wsor4035
a100d20d4d implements https://github.com/mt-mods/homedecor_modpack/issues/31 - show players sitting in seats (#76)
* implment https://github.com/mt-mods/homedecor_modpack/issues/31 - show players sitting in seats

* improve things
2024-09-09 12:11:43 -04:00
wsor4035
b2e5c81e4d switch over to using xcompats function 2024-09-08 19:26:36 -04:00
Niklp
8f796e43af Replace deprecated get_metadata() call (#75) 2024-07-16 15:50:36 +10:00
Niklp
1ef4837abe Use initial_properties for entities (#74) 2024-07-03 16:09:31 +10:00
monk
d0ab9b82ce reorder registration of aliases to fix missing recipes, also reorder registration of dye recipes to show item craft first before recipe craft (#72) 2024-05-23 18:37:28 -04:00
wsor4035
fa3f7f816b trash unused function: homedecor.sit (#71) 2024-04-28 14:48:03 -04:00
Niklp
d400e421ce Replace homedecor_blanktile.png w/ engine provided blank.png (#69) 2024-04-02 18:08:49 -04:00
wsor4035
792c23a7fe handle interact with node check in non mtg games with a fallback (#68) 2024-04-02 06:54:10 -04:00
wsor4035
0d5cab9455 replace hardcoded game agnostic texture support and homedecor.textures to xcompat (#66)
* switch existing to xcompat textures

* replace the rest of the hard coded texture conversions to use homedecor.textures
2024-03-03 15:52:58 -05:00
Luke aka SwissalpS
080551e647 Is ground content (#64)
see https://github.com/pandorabox-io/pandorabox.io/issues/836
2024-02-29 18:49:24 -05:00
wsor4035
280924c02b add in xcompat for game agnostic handling dry (#63) 2024-02-25 12:04:20 -05:00
luk3yx
52f7c54702 Fix particlespawner removal when digging fancy fire 2023-10-27 10:30:10 +13:00
Niklp
951f77491c Fix use of deprecated get_look_yaw() (#62) 2023-09-24 21:19:47 +10:00
Niklp
46c71131c5 Fix wrong nodenames caused by last commit (#61) 2023-08-22 18:11:31 -04:00
Niklp
80b4f242e0 Make (almost) all items translatable (#60)
* Make all items translatable

* add more
2023-08-21 18:47:26 -04:00
Niklp
ecd67f0eab Update translations (#59)
* Update translations

* Fix usage of translation api in log message

* Fix %s usage in itemframes.it.tr
2023-08-20 17:54:38 -04:00
Niklp
60d63cda6f Fix translation errors reported by i18ncheck.py (#58) 2023-08-15 18:28:39 -04:00
Niklp
89703525e6 replace ABMs w/ nodetimers (#56)
* replace ABMs w/ nodetimers

* ux fixes

* disable oven properly
2023-06-10 21:56:54 -04:00
401 changed files with 3975 additions and 6057 deletions

View File

@@ -15,7 +15,8 @@ globals = {
"homedecor_doors_and_gates",
-- mod-deps
"armor"
"armor",
xcompat = {fields = {"player"}},
}
read_globals = {
@@ -39,4 +40,6 @@ read_globals = {
"creative",
"doors",
"i3",
"xcompat",
"player_monoids"
}

View File

@@ -1,6 +1,6 @@
# Minetest Homedecor Modpack
[![ContentDB](https://content.minetest.net/packages/VanessaE/homedecor_modpack/shields/downloads/)](https://content.minetest.net/packages/VanessaE/homedecor_modpack/)
[![ContentDB](https://content.luanti.org/packages/VanessaE/homedecor_modpack/shields/downloads/)](https://content.luanti.org/packages/VanessaE/homedecor_modpack/)
A fairly feature-filled home decor modpack that is game agnostic.
@@ -16,8 +16,8 @@ first class support for:
## Links
* [Github](https://github.com/mt-mods/homedecor_modpack)
* [Contentdb](https://content.minetest.net/packages/VanessaE/homedecor_modpack/)
* [Forums](https://forum.minetest.net/viewtopic.php?f=11&t=2041)
* [Contentdb](https://content.luanti.org/packages/VanessaE/homedecor_modpack/)
* [Forums](https://forum.luanti.org/viewtopic.php?f=11&t=2041)
# Setup
@@ -25,7 +25,4 @@ required:
* [Unifieddyes](https://github.com/mt-mods/unifieddyes)
* [Basic Materials](https://github.com/mt-mods/basic_materials)
optional:
* [Sound Api](https://github.com/mt-mods/sound_api) - note: needed for sound support
* [xcompat](https://github.com/mt-mods/xcompat)

View File

@@ -1,35 +1,35 @@
local S = minetest.get_translator("building_blocks")
local S = core.get_translator("building_blocks")
if minetest.get_modpath("moreblocks") or minetest.get_modpath("stairs") then
minetest.register_alias("building_blocks:slab_tar", "stairs:slab_Tar")
minetest.register_alias("building_blocks:stair_tar", "stairs:stair_Tar")
minetest.register_alias("building_blocks:slab_marble", "stairs:slab_Marble")
minetest.register_alias("building_blocks:stair_marble", "stairs:stair_Marble")
if core.get_modpath("moreblocks") or core.get_modpath("stairs") then
core.register_alias("building_blocks:slab_tar", "stairs:slab_Tar")
core.register_alias("building_blocks:stair_tar", "stairs:stair_Tar")
core.register_alias("building_blocks:slab_marble", "stairs:slab_Marble")
core.register_alias("building_blocks:stair_marble", "stairs:stair_Marble")
end
if minetest.get_modpath("moreblocks") then
minetest.register_alias_force("moreblocks:tar", "building_blocks:Tar")
if core.get_modpath("moreblocks") then
core.register_alias_force("moreblocks:tar", "building_blocks:Tar")
stairsplus:register_alias_all("building_blocks", "tar", "building_blocks", "Tar")
stairsplus:register_alias_all("building_blocks", "marble", "building_blocks", "Marble")
stairsplus:register_alias_all("moreblocks", "tar", "building_blocks", "Tar")
if minetest.get_modpath("gloopblocks") then
minetest.register_alias("building_blocks:gravel_spread", "gloopblocks:slab_gravel_1")
if core.get_modpath("gloopblocks") then
core.register_alias("building_blocks:gravel_spread", "gloopblocks:slab_gravel_1")
end
end
minetest.register_alias("adobe", "building_blocks:Adobe")
minetest.register_alias("fakegrass", "building_blocks:fakegrass")
minetest.register_alias("hardwood", "building_blocks:hardwood")
minetest.register_alias("tar_knife", "building_blocks:knife")
minetest.register_alias("marble", "building_blocks:Marble")
minetest.register_alias("building_blocks_roofing", "building_blocks:Roofing")
minetest.register_alias("sticks", "building_blocks:sticks")
minetest.register_alias("building_blocks:faggot", "building_blocks:sticks")
minetest.register_alias("tar", "building_blocks:Tar")
core.register_alias("adobe", "building_blocks:Adobe")
core.register_alias("fakegrass", "building_blocks:fakegrass")
core.register_alias("hardwood", "building_blocks:hardwood")
core.register_alias("tar_knife", "building_blocks:knife")
core.register_alias("marble", "building_blocks:Marble")
core.register_alias("building_blocks_roofing", "building_blocks:Roofing")
core.register_alias("sticks", "building_blocks:sticks")
core.register_alias("building_blocks:faggot", "building_blocks:sticks")
core.register_alias("tar", "building_blocks:Tar")
if not minetest.get_modpath("technic") then
minetest.register_node( ":technic:granite", {
if not core.get_modpath("technic") then
core.register_node( ":technic:granite", {
description = S("Granite"),
tiles = { "technic_granite.png" },
is_ground_content = true,
@@ -39,7 +39,7 @@ if not minetest.get_modpath("technic") then
key = "node_sound_stone_defaults",
},
})
minetest.register_craft({
core.register_craft({
output = "technic:granite 9",
recipe = {
{ "group:tar_block", "group:marble", "group:tar_block" },
@@ -47,7 +47,7 @@ if not minetest.get_modpath("technic") then
{ "group:tar_block", "group:marble", "group:tar_block" }
},
})
if minetest.get_modpath("moreblocks") then
if core.get_modpath("moreblocks") then
stairsplus:register_all("technic", "granite", "technic:granite", {
description=S("Granite"),
groups={cracky=1, not_in_creative_inventory=1},

View File

@@ -1,4 +1,4 @@
local modpath = minetest.get_modpath("building_blocks")
local modpath = core.get_modpath("building_blocks")
dofile(modpath.."/alias.lua")
dofile(modpath.."/node_stairs.lua")

View File

@@ -1,48 +1,20 @@
# textdomain: building_blocks
### alias.lua ###
Granite=Granit
### node_stairs.lua ###
Adobe=Adobe
Adobe Slab=Adobestufe
Adobe Stair=Adobetreppe
Brobble Spread=Ziesterboden
Chess board tiling=Schachbrettkacheln
Fake Grass=Falsches Gras
Fake Grass Slab=Falsches-Gras-Stufe
Fake Grass Stair=Falsches-Gras-Treppe
Fireplace=Kamin
Grate=Rost
Grate Slab=Roststufe
Grate Stair=Rosttreppe
Gravel Spread=Kiesboden
Hardwood=Hartholz
Hardwood Slab=Hartholzstufe
Hardwood Stair=Hartholztreppe
Marble=Marmor
Marble Slab=Marmorstufe
Marble Stair=Marmortreppe
Roof block=Dachblock
Roof block Slab=Dachblockstufe
Roof block Stair=Dachblocktreppe
Streak Free Glass=Schlierenfreies Glas
Streak Free Glass Slab=Schlierenfreies-Glas-Stufe
Streak Free Glass Stair=Schlierenfreies-Glas-Treppe
Wood Framed Glass=Holzrahmenglas
Adobe=Adobe
Fake Grass=Falsches Gras
Hardwood=Hartholz
Roof block=Dachblock
Tar=Teer
Tar Slab=Teerstufe
Tar Stair=Teertreppe
Marble=Marmor
Brobble Spread=Ziesterboden
Gravel Spread=Kiesboden
Tarmac Spread=Asphaltboden
Terrycloth towel=Frottiertuch
Wood Framed Glass=Holzrahmenglas
Wood Framed Glass Slab=Holzrahmenglasstufe
Wood Framed Glass Stair=Holzrahmenglastreppe
### others.lua ###
Chess board tiling=Schachbrettkacheln
Fireplace=Kamin
Small bundle of sticks=Kleines Bündel Stöcke
Tar Knife=Teermesser
Tar base=Teerbase
Tar Knife=Teermesser

View File

@@ -1,48 +1,20 @@
# textdomain: building_blocks
### alias.lua ###
Granite=Granito
### node_stairs.lua ###
Adobe=Adobe
Adobe Slab=Losa de adobe
Adobe Stair=Escaleras de adobe
Brobble Spread=Mezcla de Ladroquines
Chess board tiling=Azulejos de ajedrez
Fake Grass=Hierba falsa
Fake Grass Slab=
Fake Grass Stair=
Fireplace=Chimenea
Grate=Reja
Grate Slab=Losa de rejas
Grate Stair=Escaleras de rejas
Gravel Spread=Mezcla de gravilla
Hardwood=Madera dura
Hardwood Slab=Losa de madera dura
Hardwood Stair=Escaleras de madera dura
Marble=Mármol
Marble Slab=Losa de mármol
Marble Stair=Escaleras de mármol
Roof block=Bloque de techo
Roof block Slab=
Roof block Stair=
Streak Free Glass=Vídrio sin rayas
Streak Free Glass Slab=
Streak Free Glass Stair=
Wood Framed Glass=Vídrio enmarcado en madera
Adobe=Adobe
Fake Grass=Hierba falsa
Hardwood=Madera dura
Roof block=Bloque de techo
Tar=Alquitrán
Tar Slab=Losa de alquitrán
Tar Stair=Escaleras de alquitrán
Marble=Mármol
Brobble Spread=Mezcla de Ladroquines
Gravel Spread=Mezcla de gravilla
Tarmac Spread=Mezcla de asfalto
Terrycloth towel=Toalla
Wood Framed Glass=Vídrio enmarcado en madera
Wood Framed Glass Slab=
Wood Framed Glass Stair=
### others.lua ###
Chess board tiling=Azulejos de ajedrez
Fireplace=Chimenea
Small bundle of sticks=Manojo de palitos
Tar Knife=Cuchillo de alquitrán
Tar base=Base de alquitrán
Tar Knife=Cuchillo de alquitrán

View File

@@ -1,48 +1,20 @@
# textdomain: building_blocks
### alias.lua ###
Granite=Granit
### node_stairs.lua ###
Adobe=Pisé
Adobe Slab=Dalle en pisé
Adobe Stair=Escalier en pisé
Brobble Spread=Tapis rouge
Chess board tiling=Pavage en échiquier
Fake Grass=Herbe synthétique
Fake Grass Slab=Dalle en herbe synthétique
Fake Grass Stair=Escalier en herbe synthétique
Fireplace=Cheminée
Grate=Grille
Grate Slab=Dalle en métal déployé
Grate Stair=Escalier en métal déployé
Gravel Spread=Tapis de gravier
Hardwood=Bois dur (feuillu)
Hardwood Slab=Dalle en bois dur (feuillu)
Hardwood Stair=Escalier en bois dur (feuillu)
Marble=Marbre
Marble Slab=Dalle en marbre
Marble Stair=Marche en marbre
Roof block=Bloc de toit
Roof block Slab=Dalle en bloc de toit
Roof block Stair=Escalier en bloc de toit
Streak Free Glass=Verre anti-rayures
Streak Free Glass Slab=Dalle en verre anti-rayures
Streak Free Glass Stair=Escalier en verre anti-rayures
Wood Framed Glass=Verre encadré de bois
Adobe=Pisé
Fake Grass=Herbe synthétique
Hardwood=Bois dur (feuillu)
Roof block=Bloc de toit
Tar=Goudron
Tar Slab=Dalle en goudron
Tar Stair=Marche en goudron
Marble=Marbre
Brobble Spread=Tapis rouge
Gravel Spread=Tapis de gravier
Tarmac Spread=Tapis de goudron
Terrycloth towel=Serviette éponge
Wood Framed Glass=Verre encadré de bois
Wood Framed Glass Slab=Dalle en verre encadré de bois
Wood Framed Glass Stair=Escalier en verre encadré de bois
### others.lua ###
Chess board tiling=Pavage en échiquier
Fireplace=Cheminée
Small bundle of sticks=Petit fagot de brindilles
Tar Knife=Couteau à goudron
Tar base=Pâte de goudron
Tar Knife=Couteau à goudron

View File

@@ -1,48 +1,20 @@
# textdomain: building_blocks
### alias.lua ###
Granite=Granit
### node_stairs.lua ###
Adobe=Adob
Adobe Slab=Bidur Adob
Adobe Stair=Tangga Adob
Brobble Spread=Sebaran Batu Merah
Chess board tiling=Jubin Papan Catur
Fake Grass=Rumput Tiruan
Fake Grass Slab=
Fake Grass Stair=
Fireplace=Pendiangan
Grate=Jeriji
Grate Slab=Bidur Jeriji
Grate Stair=Tangga Jeriji
Gravel Spread=Sebaran Kelikir
Hardwood=Kayu Keras
Hardwood Slab=Bidur Kayu Keras
Hardwood Stair=Tangga Kayu Keras
Marble=Marmar
Marble Slab=Bidur Marmar
Marble Stair=Tangga Marmar
Roof block=Blok Bumbung
Roof block Slab=
Roof block Stair=
Streak Free Glass=Kaca Bebas Calar
Streak Free Glass Slab=
Streak Free Glass Stair=
Wood Framed Glass=Kaca Berbingkai Kayu
Adobe=Adob
Fake Grass=Rumput Tiruan
Hardwood=Kayu Keras
Roof block=Blok Bumbung
Tar=Tar
Tar Slab=Bidur Tar
Tar Stair=Tangga Tar
Marble=Marmar
Brobble Spread=Sebaran Batu Merah
Gravel Spread=Sebaran Kelikir
Tarmac Spread=Sebaran Tar
Terrycloth towel=Kain Tuala
Wood Framed Glass=Kaca Berbingkai Kayu
Wood Framed Glass Slab=
Wood Framed Glass Stair=
### others.lua ###
Chess board tiling=Jubin Papan Catur
Fireplace=Pendiangan
Small bundle of sticks=Seberkas Kecil Serpihan Kayu
Tar Knife=Pisau Tar
Tar base=Campuran Tar
Tar Knife=Pisau Tar

View File

@@ -1,48 +1,20 @@
# textdomain: building_blocks
### alias.lua ###
Granite=Granito
### node_stairs.lua ###
Adobe=Argila
Adobe Slab=Placa de argila
Adobe Stair=Escada de Argila
Brobble Spread=Calçado
Chess board tiling=Revestimento de xadrez
Fake Grass=Grama Falsa
Fake Grass Slab=
Fake Grass Stair=
Fireplace=Lareira
Grate=Grelha
Grate Slab=Placa de Grelha
Grate Stair=Escade de Grelha
Gravel Spread=Espalhamento de Cascalho
Hardwood=Madeira
Hardwood Slab=Placa de madeira
Hardwood Stair=Escada de madeira
Marble=Mármore
Marble Slab=Placa de Mármore
Marble Stair=Escada de mármore
Roof block=Bloco de telhado
Roof block Slab=
Roof block Stair=
Streak Free Glass=Vidro Sem Riscos
Streak Free Glass Slab=
Streak Free Glass Stair=
Wood Framed Glass=Vidro com Bordas de Madeira
Adobe=Argila
Fake Grass=Grama Falsa
Hardwood=Madeira
Roof block=Bloco de telhado
Tar=Alcatrão
Tar Slab=Placa de alcatrão
Tar Stair=Escada de alcatrão
Marble=Mármore
Brobble Spread=Calçado
Gravel Spread=Espalhamento de Cascalho
Tarmac Spread=Espalhamento das Estradas
Terrycloth towel=Toalha de Roupinha
Wood Framed Glass=Vidro com Bordas de Madeira
Wood Framed Glass Slab=
Wood Framed Glass Stair=
### others.lua ###
Chess board tiling=Revestimento de xadrez
Fireplace=Lareira
Small bundle of sticks=Pequeno amontoado de gravetos
Tar Knife=Faca de Alcatrão
Tar base=Base para alcatrão
Tar Knife=Faca de Alcatrão

View File

@@ -1,48 +1,20 @@
# textdomain: building_blocks
### alias.lua ###
Granite=Granito
### node_stairs.lua ###
Adobe=Argila
Adobe Slab=Placa de argila
Adobe Stair=Escada de Argila
Brobble Spread=Calçado
Chess board tiling=Revestimento de xadrez
Fake Grass=Grama Falsa
Fake Grass Slab=
Fake Grass Stair=
Fireplace=Lareira
Grate=Grelha
Grate Slab=Placa de Grelha
Grate Stair=Escade de Grelha
Gravel Spread=Espalhamento de Cascalho
Hardwood=Madeira
Hardwood Slab=Placa de madeira
Hardwood Stair=Escada de madeira
Marble=Mármore
Marble Slab=Placa de Mármore
Marble Stair=Escada de mármore
Roof block=Bloco de telhado
Roof block Slab=
Roof block Stair=
Streak Free Glass=Vidro Sem Riscos
Streak Free Glass Slab=
Streak Free Glass Stair=
Wood Framed Glass=Vidro com Bordas de Madeira
Adobe=Argila
Fake Grass=Grama Falsa
Hardwood=Madeira
Roof block=Bloco de telhado
Tar=Alcatrão
Tar Slab=Placa de alcatrão
Tar Stair=Escada de alcatrão
Marble=Mármore
Brobble Spread=Calçado
Gravel Spread=Espalhamento de Cascalho
Tarmac Spread=Espalhamento das Estradas
Terrycloth towel=Toalha de Roupinha
Wood Framed Glass=Vidro com Bordas de Madeira
Wood Framed Glass Slab=
Wood Framed Glass Stair=
### others.lua ###
Chess board tiling=Revestimento de xadrez
Fireplace=Lareira
Small bundle of sticks=Pequeno amontoado de gravetos
Tar Knife=Faca de Alcatrão
Tar base=Base para alcatrão
Tar Knife=Faca de Alcatrão

View File

@@ -1,48 +1,20 @@
# textdomain: building_blocks
### alias.lua ###
Granite=Гранит
### node_stairs.lua ###
Adobe=Саман
Adobe Slab=Саманная плита
Adobe Stair=Саманная ступенька
Brobble Spread=Настил кирпичного булыжника
Chess board tiling=Шахматная плитка
Fake Grass=Псевдо трава
Fake Grass Slab=
Fake Grass Stair=
Fireplace=Камин
Grate=Каминная решётка
Grate Slab=Решётчатая плита
Grate Stair=Решётчатая ступенька
Gravel Spread=Настил гравия
Hardwood=Твёрдая древесина
Hardwood Slab=Плита из твёрдой древесины
Hardwood Stair=Ступенька из твёрдой древесины
Marble=Мрамор
Marble Slab=Мраморная блита
Marble Stair=Мраморная ступенька
Roof block=Кровельный блок
Roof block Slab=
Roof block Stair=
Streak Free Glass=Стекло без стыков
Streak Free Glass Slab=
Streak Free Glass Stair=
Wood Framed Glass=Деревянное окно
Adobe=Саман
Fake Grass=Псевдо трава
Hardwood=Твёрдая древесина
Roof block=Кровельный блок
Tar=Смола
Tar Slab=Плита из смолы
Tar Stair=Ступенька из смолы
Marble=Мрамор
Brobble Spread=Настил кирпичного булыжника
Gravel Spread=Настил гравия
Tarmac Spread=Покрытие гудронной смолой
Terrycloth towel=Махровое полотенце
Wood Framed Glass=Деревянное окно
Wood Framed Glass Slab=
Wood Framed Glass Stair=
### others.lua ###
Chess board tiling=Шахматная плитка
Fireplace=Камин
Small bundle of sticks=Небольшая связка палок
Tar Knife=Смоляной нож
Tar base=Смоляная основа
Tar Knife=Смоляной нож

View File

@@ -1,48 +1,20 @@
# textdomain: building_blocks
### alias.lua ###
Granite=花岗岩
### node_stairs.lua ###
Adobe=土砖
Adobe Slab=
Adobe Stair=
Brobble Spread=石砖路面
Chess board tiling=棋盘铺贴
Fake Grass=塑料草
Fake Grass Slab=
Fake Grass Stair=
Fireplace=壁炉
Grate=磨碎
Grate Slab=
Grate Stair=
Gravel Spread=碎石路面
Hardwood=硬木
Hardwood Slab=
Hardwood Stair=
Marble=大理石
Marble Slab=
Marble Stair=
Roof block=天台
Roof block Slab=
Roof block Stair=
Streak Free Glass=无条纹玻璃
Streak Free Glass Slab=
Streak Free Glass Stair=
Wood Framed Glass=木框玻璃
Adobe=土砖
Fake Grass=塑料草
Hardwood=硬木
Roof block=天台
Tar=焦油
Tar Slab=
Tar Stair=
Marble=大理石
Brobble Spread=石砖路面
Gravel Spread=碎石路面
Tarmac Spread=柏油路面
Terrycloth towel=毛巾
Wood Framed Glass=木框玻璃
Wood Framed Glass Slab=
Wood Framed Glass Stair=
### others.lua ###
Chess board tiling=棋盘铺贴
Fireplace=壁炉
Small bundle of sticks=小捆棍子
Tar Knife=焦油刀
Tar base=焦油基
Tar Knife=焦油刀

View File

@@ -1,48 +1,20 @@
# textdomain: building_blocks
### alias.lua ###
Granite=
### node_stairs.lua ###
Adobe=
Adobe Slab=
Adobe Stair=
Brobble Spread=
Chess board tiling=
Fake Grass=
Fake Grass Slab=
Fake Grass Stair=
Fireplace=
Grate=
Grate Slab=
Grate Stair=
Gravel Spread=
Hardwood=
Hardwood Slab=
Hardwood Stair=
Marble=
Marble Slab=
Marble Stair=
Roof block=
Roof block Slab=
Roof block Stair=
Streak Free Glass=
Streak Free Glass Slab=
Streak Free Glass Stair=
Wood Framed Glass=
Adobe=
Fake Grass=
Hardwood=
Roof block=
Tar=
Tar Slab=
Tar Stair=
Marble=
Brobble Spread=
Gravel Spread=
Tarmac Spread=
Terrycloth towel=
Wood Framed Glass=
Wood Framed Glass Slab=
Wood Framed Glass Stair=
### others.lua ###
Chess board tiling=
Fireplace=
Small bundle of sticks=
Tar Knife=
Tar base=
Tar Knife=

View File

@@ -1,4 +1,4 @@
local S = minetest.get_translator("building_blocks")
local S = core.get_translator("building_blocks")
local function building_blocks_stairs(nodename, def)
@@ -13,15 +13,17 @@ local function building_blocks_stairs(nodename, def)
def._mcl_hardness=1.6
end
minetest.register_node(nodename, def)
if minetest.get_modpath("moreblocks") then
def.is_ground_content = def.is_ground_content == true
core.register_node(nodename, def)
if core.get_modpath("moreblocks") then
local mod, name = nodename:match("(.*):(.*)")
stairsplus:register_all(mod, name, nodename, def)
minetest.register_alias("stairs:slab_" .. name, mod .. ":slab_" .. name)
minetest.register_alias("stairs:stair_" .. name, mod .. ":stair_" .. name)
minetest.register_alias("stairs:stair_inner_" .. name, mod .. ":stair_" .. name .. "_inner")
minetest.register_alias("stairs:stair_outer_" .. name, mod .. ":stair_" .. name .. "_outer")
core.register_alias("stairs:slab_" .. name, mod .. ":slab_" .. name)
core.register_alias("stairs:stair_" .. name, mod .. ":stair_" .. name)
core.register_alias("stairs:stair_inner_" .. name, mod .. ":stair_" .. name .. "_inner")
core.register_alias("stairs:stair_outer_" .. name, mod .. ":stair_" .. name .. "_outer")
end
end
@@ -31,7 +33,7 @@ building_blocks_stairs("building_blocks:grate", {
tiles = {"building_blocks_grate.png"},
paramtype = "light",
sunlight_propagates = true,
is_ground_content = true,
is_ground_content = false,
use_texture_alpha = "clip",
groups = {cracky=1, dig_generic=3},
_sound_def = {
@@ -44,7 +46,7 @@ building_blocks_stairs("building_blocks:smoothglass", {
tiles = {"building_blocks_sglass.png"},
paramtype = "light",
sunlight_propagates = true,
is_ground_content = true,
is_ground_content = false,
use_texture_alpha = "clip",
groups = {snappy=3,cracky=3,oddly_breakable_by_hand=3},
_sound_def = {
@@ -57,7 +59,7 @@ building_blocks_stairs("building_blocks:woodglass", {
tiles = {"building_blocks_wglass.png"},
paramtype = "light",
sunlight_propagates = true,
is_ground_content = true,
is_ground_content = false,
use_texture_alpha = "clip",
groups = {snappy=3,cracky=3,oddly_breakable_by_hand=3},
_sound_def = {
@@ -68,20 +70,21 @@ building_blocks_stairs("building_blocks:woodglass", {
building_blocks_stairs("building_blocks:Adobe", {
tiles = {"building_blocks_Adobe.png"},
description = S("Adobe"),
is_ground_content = true,
is_ground_content = false,
groups = {crumbly=3, dig_stone=2},
_sound_def = {
key = "node_sound_stone_defaults",
},
})
local grasstex = {"[combine:16x16^[noalpha^[colorize:#006400"}
if minetest.get_modpath("default") then
grasstex = {"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"}
end
local grasstex = {
homedecor.textures.grass.top,
homedecor.textures.grass.dirt,
homedecor.textures.grass.side
}
building_blocks_stairs("building_blocks:fakegrass", {
tiles = grasstex,
description = S("Fake Grass"),
is_ground_content = true,
is_ground_content = false,
groups = {crumbly=3, dig_sand=3},
_sound_def = {
key = "node_sound_dirt_defaults",
@@ -89,7 +92,7 @@ building_blocks_stairs("building_blocks:fakegrass", {
})
building_blocks_stairs("building_blocks:hardwood", {
tiles = {"building_blocks_hardwood.png"},
is_ground_content = true,
is_ground_content = false,
description = S("Hardwood"),
groups = {choppy=1,flammable=1, dig_tree=1},
_sound_def = {
@@ -98,7 +101,7 @@ building_blocks_stairs("building_blocks:hardwood", {
})
building_blocks_stairs("building_blocks:Roofing", {
tiles = {"building_blocks_Roofing.png"},
is_ground_content = true,
is_ground_content = false,
description = S("Roof block"),
groups = {snappy=3, dig_generic=4},
_sound_def = {
@@ -108,7 +111,7 @@ building_blocks_stairs("building_blocks:Roofing", {
building_blocks_stairs("building_blocks:Tar", {
description = S("Tar"),
tiles = {"building_blocks_tar.png"},
is_ground_content = true,
is_ground_content = false,
groups = {crumbly=1, tar_block = 1, dig_generic=4},
_sound_def = {
key = "node_sound_stone_defaults",
@@ -117,14 +120,14 @@ building_blocks_stairs("building_blocks:Tar", {
building_blocks_stairs("building_blocks:Marble", {
description = S("Marble"),
tiles = {"building_blocks_marble.png"},
is_ground_content = true,
is_ground_content = false,
groups = {cracky=3, marble = 1, dig_stone=2},
_sound_def = {
key = "node_sound_stone_defaults",
},
})
minetest.register_node("building_blocks:brobble_spread", {
core.register_node("building_blocks:brobble_spread", {
drawtype = "raillike",
-- Translators: "Brobble" is a portmanteau of "Brick" and "Cobble".
-- Translate however you see fit.
@@ -139,17 +142,14 @@ minetest.register_node("building_blocks:brobble_spread", {
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = true,
is_ground_content = false,
groups = {crumbly=3, dig_generic=4, handy=1},
_mcl_hardness=0.6
})
if not minetest.get_modpath("moreblocks") or not minetest.get_modpath("gloopblocks") then
local graveltex = "[combine:16x16^[noalpha^[colorize:#3a3b3c"
if minetest.get_modpath("default") then
graveltex = "default_gravel.png"
end
minetest.register_node("building_blocks:gravel_spread", {
if not core.get_modpath("moreblocks") or not core.get_modpath("gloopblocks") then
local graveltex = homedecor.textures.gravel
core.register_node("building_blocks:gravel_spread", {
drawtype = "raillike",
description = S("Gravel Spread"),
tiles = {graveltex},
@@ -162,7 +162,7 @@ if not minetest.get_modpath("moreblocks") or not minetest.get_modpath("gloopbloc
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = true,
is_ground_content = false,
groups = {crumbly=2, dig_generic=4, handy=1},
_mcl_hardness=0.6,
_sound_def = {
@@ -171,7 +171,7 @@ if not minetest.get_modpath("moreblocks") or not minetest.get_modpath("gloopbloc
})
end
minetest.register_node("building_blocks:Tarmac_spread", {
core.register_node("building_blocks:Tarmac_spread", {
drawtype = "raillike",
description = S("Tarmac Spread"),
tiles = {"building_blocks_tar.png"},
@@ -184,14 +184,14 @@ minetest.register_node("building_blocks:Tarmac_spread", {
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = true,
is_ground_content = false,
groups = {cracky=3, dig_generic=4, pickaxey=5},
_mcl_hardness=1.6,
_sound_def = {
key = "node_sound_dirt_defaults",
},
})
minetest.register_node("building_blocks:terrycloth_towel", {
core.register_node("building_blocks:terrycloth_towel", {
drawtype = "raillike",
description = S("Terrycloth towel"),
tiles = {"building_blocks_towel.png"},
@@ -204,12 +204,12 @@ minetest.register_node("building_blocks:terrycloth_towel", {
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = true,
is_ground_content = false,
groups = {crumbly=3, dig_generic=4, handy=1},
_mcl_hardness=0.6
})
minetest.register_node("building_blocks:BWtile", {
core.register_node("building_blocks:BWtile", {
drawtype = "nodebox",
description = S("Chess board tiling"),
tiles = {
@@ -228,12 +228,12 @@ minetest.register_node("building_blocks:BWtile", {
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = true,
is_ground_content = false,
groups = {crumbly=3, dig_generic=4, handy=1},
_mcl_hardness=0.6
})
minetest.register_node("building_blocks:Fireplace", {
core.register_node("building_blocks:Fireplace", {
description = S("Fireplace"),
tiles = {
"building_blocks_cast_iron.png",
@@ -243,9 +243,9 @@ minetest.register_node("building_blocks:Fireplace", {
},
paramtype = "light",
paramtype2 = "facedir",
light_source = minetest.LIGHT_MAX,
light_source = core.LIGHT_MAX,
sunlight_propagates = true,
is_ground_content = true,
is_ground_content = false,
groups = {cracky=2, dig_generic=4, pickaxey=5},
_mcl_hardness=1.6,
_sound_def = {

View File

@@ -1,16 +1,16 @@
local S = minetest.get_translator("building_blocks")
local S = core.get_translator("building_blocks")
minetest.register_craftitem("building_blocks:sticks", {
core.register_craftitem("building_blocks:sticks", {
description = S("Small bundle of sticks"),
image = "building_blocks_sticks.png",
on_place_on_ground = minetest.craftitem_place_item,
inventory_image = "building_blocks_sticks.png",
on_place_on_ground = core.craftitem_place_item,
})
minetest.register_craftitem("building_blocks:tar_base", {
core.register_craftitem("building_blocks:tar_base", {
description = S("Tar base"),
image = "building_blocks_tar_base.png",
inventory_image = "building_blocks_tar_base.png",
})
minetest.register_tool("building_blocks:knife", {
core.register_tool("building_blocks:knife", {
description = S("Tar Knife"),
inventory_image = "building_blocks_knife.png",
tool_capabilities = {

View File

@@ -1,7 +1,7 @@
local materials = homedecor.materials
if minetest.get_modpath("moreblocks") then
minetest.register_craft({
if core.get_modpath("moreblocks") then
core.register_craft({
output = 'building_blocks:sticks 2',
recipe = {
{'group:stick', '' , 'group:stick'},
@@ -10,7 +10,7 @@ if minetest.get_modpath("moreblocks") then
}
})
else
minetest.register_craft({
core.register_craft({
output = 'building_blocks:sticks',
recipe = {
{'group:stick', 'group:stick'},
@@ -19,7 +19,7 @@ else
})
end
minetest.register_craft({
core.register_craft({
output = 'building_blocks:Adobe 3',
recipe = {
{materials.sand},
@@ -27,33 +27,33 @@ minetest.register_craft({
{"group:stick"},
}
})
minetest.register_craft({
core.register_craft({
output = 'building_blocks:brobble_spread 4',
recipe = {
{materials.brick, materials.cobble, materials.brick},
}
})
minetest.register_craft({
core.register_craft({
output = 'building_blocks:BWtile 10',
recipe = {
{"group:marble", "group:tar_block"},
{"group:tar_block", "group:marble"},
}
})
minetest.register_craft({
core.register_craft({
output = 'building_blocks:fakegrass 2',
recipe = {
{'group:leaves'},
{materials.dirt},
}
})
minetest.register_craft({
core.register_craft({
output = 'building_blocks:Fireplace 1',
recipe = {
{materials.steel_ingot, "building_blocks:sticks", materials.steel_ingot},
}
})
minetest.register_craft({
core.register_craft({
output = 'building_blocks:grate 1',
recipe = {
{materials.steel_ingot, materials.steel_ingot},
@@ -61,8 +61,8 @@ minetest.register_craft({
}
})
if not minetest.get_modpath("moreblocks") or not minetest.get_modpath("gloopblocks") then
minetest.register_craft({
if not core.get_modpath("moreblocks") or not core.get_modpath("gloopblocks") then
core.register_craft({
output = 'building_blocks:gravel_spread 4',
recipe = {
{materials.gravel, materials.gravel, materials.gravel},
@@ -70,15 +70,15 @@ if not minetest.get_modpath("moreblocks") or not minetest.get_modpath("gloopbloc
})
end
if minetest.get_modpath("default") then
minetest.register_craft({
if core.get_modpath("default") then
core.register_craft({
output = 'building_blocks:hardwood 2',
recipe = {
{"default:wood", "default:junglewood"},
{"default:junglewood", "default:wood"},
}
})
minetest.register_craft({
core.register_craft({
output = 'building_blocks:hardwood 2',
recipe = {
{"default:junglewood", "default:wood"},
@@ -86,14 +86,14 @@ if minetest.get_modpath("default") then
}
})
end
minetest.register_craft({
core.register_craft({
output = 'building_blocks:knife 1',
recipe = {
{"group:tar_block"},
{"group:stick"},
}
})
minetest.register_craft({
core.register_craft({
output = "building_blocks:Marble 9",
recipe = {
{materials.clay_lump, "group:tar_block", materials.clay_lump},
@@ -101,46 +101,46 @@ minetest.register_craft({
{materials.clay_lump, "group:tar_block",materials.clay_lump},
}
})
minetest.register_craft({
core.register_craft({
output = 'building_blocks:Roofing 10',
recipe = {
{"building_blocks:Adobe", "building_blocks:Adobe"},
{"building_blocks:Adobe", "building_blocks:Adobe"},
}
})
minetest.register_craft({
core.register_craft({
output = 'default:stick 4',
recipe = {
{'building_blocks:sticks'},
}
})
minetest.register_craft({
core.register_craft({
output = 'building_blocks:tar_base 4',
recipe = {
{materials.coal_lump, materials.gravel},
{materials.gravel, materials.coal_lump}
}
})
minetest.register_craft({
core.register_craft({
output = 'building_blocks:tar_base 4',
recipe = {
{materials.gravel, materials.coal_lump},
{materials.coal_lump, materials.gravel}
}
})
minetest.register_craft({
core.register_craft({
output = 'building_blocks:Tarmac_spread 4',
recipe = {
{"group:tar_block", "group:tar_block"},
}
})
minetest.register_craft({
core.register_craft({
output = 'building_blocks:terrycloth_towel 2',
recipe = {
{"farming:string", "farming:string", "farming:string"},
}
})
minetest.register_craft({
core.register_craft({
output = 'building_blocks:woodglass 1',
recipe = {
{"group:wood"},
@@ -148,28 +148,28 @@ minetest.register_craft({
}
})
minetest.register_craft({
core.register_craft({
type = "cooking",
output = "building_blocks:smoothglass",
recipe = materials.glass_block
})
minetest.register_craft({
core.register_craft({
type = "cooking",
output = "building_blocks:Tar",
recipe = "building_blocks:tar_base",
})
minetest.register_craft({
core.register_craft({
type = "fuel",
recipe = "building_blocks:hardwood",
burntime = 28,
})
minetest.register_craft({
core.register_craft({
type = "fuel",
recipe = "building_blocks:sticks",
burntime = 5,
})
minetest.register_craft({
core.register_craft({
type = "fuel",
recipe = "building_blocks:Tar",
burntime = 40,

View File

@@ -1,10 +1,10 @@
local S = minetest.get_translator("fake_fire")
local S = core.get_translator("fake_fire")
local fake_fire_reload_particles_nodes = {}
local function fire_particles_on(pos) -- 3 layers of fire
local meta = minetest.get_meta(pos)
local id1 = minetest.add_particlespawner({ -- 1 layer big particles fire
local meta = core.get_meta(pos)
local id1 = core.add_particlespawner({ -- 1 layer big particles fire
amount = 9,
time = 0,
minpos = {x = pos.x - 0.2, y = pos.y - 0.4, z = pos.z - 0.2},
@@ -24,7 +24,7 @@ local function fire_particles_on(pos) -- 3 layers of fire
})
meta:set_int("layer_1", id1)
local id2 = minetest.add_particlespawner({ -- 2 layer smol particles fire
local id2 = core.add_particlespawner({ -- 2 layer smol particles fire
amount = 1,
time = 0,
minpos = {x = pos.x - 0.1, y = pos.y, z = pos.z - 0.1},
@@ -44,7 +44,7 @@ local function fire_particles_on(pos) -- 3 layers of fire
})
meta:set_int("layer_2", id2)
local id3 = minetest.add_particlespawner({ --3 layer smoke
local id3 = core.add_particlespawner({ --3 layer smoke
amount = 1,
time = 0,
minpos = {x = pos.x - 0.1, y = pos.y - 0.2, z = pos.z - 0.1},
@@ -66,35 +66,35 @@ local function fire_particles_on(pos) -- 3 layers of fire
end
local function fire_particles_off(pos)
local meta = minetest.get_meta(pos)
local meta = core.get_meta(pos)
local id_1 = meta:get_int("layer_1");
local id_2 = meta:get_int("layer_2");
local id_3 = meta:get_int("layer_3");
minetest.delete_particlespawner(id_1)
minetest.delete_particlespawner(id_2)
minetest.delete_particlespawner(id_3)
core.delete_particlespawner(id_1)
core.delete_particlespawner(id_2)
core.delete_particlespawner(id_3)
end
local function start_fire_effects(pos, node, clicker, chimney)
local this_spawner_meta = minetest.get_meta(pos)
local this_spawner_meta = core.get_meta(pos)
local id = this_spawner_meta:get_int("smoky")
local s_handle = this_spawner_meta:get_int("sound")
local above = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name
local above = core.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name
if id ~= 0 then
if s_handle then
minetest.after(0, function(handle)
minetest.sound_stop(handle)
core.after(0, function(handle)
core.sound_stop(handle)
end, s_handle)
end
minetest.delete_particlespawner(id)
core.delete_particlespawner(id)
this_spawner_meta:set_int("smoky", 0)
this_spawner_meta:set_int("sound", 0)
return
end
if above == "air" and (not id or id == 0) then
id = minetest.add_particlespawner({
id = core.add_particlespawner({
amount = 4, time = 0, collisiondetection = true,
minpos = {x=pos.x-0.25, y=pos.y+0.4, z=pos.z-0.25},
maxpos = {x=pos.x+0.25, y=pos.y+5, z=pos.z+0.25},
@@ -104,15 +104,16 @@ local function start_fire_effects(pos, node, clicker, chimney)
minsize = 4, maxsize = 8,
texture = "smoke_particle.png",
})
this_spawner_meta:set_int("smoky", id)
if chimney == 1 then
this_spawner_meta:set_int("smoky", id)
this_spawner_meta:set_int("sound", 0)
else
s_handle = minetest.sound_play("fire_small", {
s_handle = core.sound_play("fire_small", {
pos = pos,
max_hear_distance = 5,
loop = true
})
fire_particles_off(pos)
fire_particles_on(pos)
this_spawner_meta:set_int("sound", s_handle)
end
@@ -120,17 +121,17 @@ local function start_fire_effects(pos, node, clicker, chimney)
end
local function stop_smoke(pos)
local this_spawner_meta = minetest.get_meta(pos)
local this_spawner_meta = core.get_meta(pos)
local id = this_spawner_meta:get_int("smoky")
local s_handle = this_spawner_meta:get_int("sound")
if id ~= 0 then
minetest.delete_particlespawner(id)
core.delete_particlespawner(id)
end
if s_handle then
minetest.after(0, function(handle)
minetest.sound_stop(handle)
core.after(0, function(handle)
core.sound_stop(handle)
end, s_handle)
end
@@ -138,13 +139,14 @@ local function stop_smoke(pos)
this_spawner_meta:set_int("sound", 0)
end
minetest.register_node("fake_fire:ice_fire", {
core.register_node("fake_fire:ice_fire", {
inventory_image = "ice_fire_inv.png",
description = S("Ice fire"),
drawtype = "plantlike",
paramtype = "light",
paramtype2 = "facedir",
groups = {dig_immediate=3, not_in_creative_inventory=1, dig_generic=3, handy=1},
is_ground_content = false,
_mcl_hardness=0.6,
sunlight_propagates = true,
buildable_to = true,
@@ -161,23 +163,24 @@ minetest.register_node("fake_fire:ice_fire", {
end,
on_destruct = function (pos)
stop_smoke(pos)
minetest.sound_play("fire_extinguish", {
fire_particles_off(pos)
core.sound_play("fire_extinguish", {
pos = pos, max_hear_distance = 5
})
end,
drop = ""
})
minetest.register_alias("fake_fire:fake_fire", "fire:permanent_flame")
core.register_alias("fake_fire:fake_fire", "fire:permanent_flame")
local sbox = {
type = 'fixed',
fixed = { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16},
}
local wtex = homedecor.textures.default_junglewood
local wtex = homedecor.textures.wood.jungle.planks
minetest.register_node("fake_fire:fancy_fire", {
core.register_node("fake_fire:fancy_fire", {
inventory_image = "fancy_fire_inv.png",
description = S("Fancy Fire"),
drawtype = "mesh",
@@ -186,6 +189,7 @@ minetest.register_node("fake_fire:fancy_fire", {
paramtype2 = "facedir",
use_texture_alpha = "clip",
groups = {oddly_breakable_by_hand=3, flammable=0, handy=1},
is_ground_content = false,
_mcl_hardness=0.6,
sunlight_propagates = true,
light_source = 13,
@@ -199,6 +203,7 @@ minetest.register_node("fake_fire:fancy_fire", {
"fake_fire_empty_tile.png"
},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
fire_particles_off(pos)
fire_particles_on(pos)
return itemstack
end,
@@ -207,7 +212,7 @@ minetest.register_node("fake_fire:fancy_fire", {
end,
on_destruct = function(pos, oldnode, oldmetadata, digger)
fire_particles_off(pos)
minetest.sound_play("fire_extinguish", {
core.sound_play("fire_extinguish", {
pos = pos, max_hear_distance = 5
})
end,
@@ -223,7 +228,7 @@ minetest.register_node("fake_fire:fancy_fire", {
})
-- EMBERS
minetest.register_node("fake_fire:embers", {
core.register_node("fake_fire:embers", {
description = S("Glowing Embers"),
tiles = {
{name="embers_animated.png", animation={type="vertical_frames",
@@ -231,6 +236,7 @@ minetest.register_node("fake_fire:embers", {
},
light_source = 9,
groups = {crumbly=3, dig_stone=2, handy=1},
is_ground_content = false,
_mcl_hardness=0.6,
paramtype = "light",
_sound_def = {
@@ -239,12 +245,12 @@ minetest.register_node("fake_fire:embers", {
})
local sandstone_tex = "default_sandstone.png"
if not minetest.get_modpath("default") then
local sname = minetest.registered_nodes["mapgen_stone"].name
if not core.get_modpath("default") then
local sname = core.registered_nodes["mapgen_stone"].name
local names = sname:split(":")
local nitem = names[2] and string.gsub(names[2], "stone", "sandstone") or nil
if nitem and minetest.registered_nodes[names[1]..":"..nitem] then
sandstone_tex = minetest.registered_nodes[names[1]..":"..nitem].tiles[1]
if nitem and core.registered_nodes[names[1]..":"..nitem] then
sandstone_tex = core.registered_nodes[names[1]..":"..nitem].tiles[1]
else
sandstone_tex = "[combine:16x16^[noalpha^[colorize:#fefebe"
end
@@ -252,17 +258,18 @@ end
-- CHIMNEYS
local materials = {
{ "stone", S("Stone chimney top"), minetest.registered_nodes["mapgen_stone"].tiles[1] },
{ "stone", S("Stone chimney top"), core.registered_nodes["mapgen_stone"].tiles[1] },
{ "sandstone", S("Sandstone chimney top"), sandstone_tex },
}
for _, mat in ipairs(materials) do
local name, desc, tex = unpack(mat)
table.insert(fake_fire_reload_particles_nodes, "fake_fire:chimney_top_"..name)
minetest.register_node("fake_fire:chimney_top_"..name, {
core.register_node("fake_fire:chimney_top_"..name, {
description = desc,
tiles = {tex.."^chimney_top.png", tex},
groups = {snappy=3, dig_stone=2, handy=1},
is_ground_content = false,
_mcl_hardness=0.6,
paramtype = "light",
_sound_def = {
@@ -283,8 +290,8 @@ for _, mat in ipairs(materials) do
end
})
if minetest.get_modpath("default") then
minetest.register_craft({
if core.get_modpath("default") then
core.register_craft({
type = "shapeless",
output = 'fake_fire:chimney_top_'..name,
recipe = {"default:torch", "stairs:slab_"..name}
@@ -292,28 +299,28 @@ for _, mat in ipairs(materials) do
end
end
minetest.register_alias("fake_fire:flint_and_steel", "fire:flint_and_steel")
core.register_alias("fake_fire:flint_and_steel", "fire:flint_and_steel")
if minetest.get_modpath("default") then
minetest.override_item("default:ice", {
if core.get_modpath("default") then
core.override_item("default:ice", {
on_ignite = function(pos, igniter)
local flame_pos = {x = pos.x, y = pos.y + 1, z = pos.z}
if minetest.get_node(flame_pos).name == "air" then
minetest.set_node(flame_pos, {name = "fake_fire:ice_fire"})
if core.get_node(flame_pos).name == "air" then
core.set_node(flame_pos, {name = "fake_fire:ice_fire"})
end
end
})
end
-- CRAFTS
if minetest.get_modpath("default") then
minetest.register_craft({
if core.get_modpath("default") then
core.register_craft({
type = "shapeless",
output = 'fake_fire:embers',
recipe = {"default:torch", "group:wood", "default:torch"}
})
minetest.register_craft({
core.register_craft({
type = "shapeless",
output = 'fake_fire:fancy_fire',
recipe = {"default:torch", "building_blocks:sticks", "default:torch" }
@@ -322,15 +329,15 @@ end
-- ALIASES
minetest.register_alias("fake_fire:smokeless_fire", "fake_fire:fake_fire")
minetest.register_alias("fake_fire:smokeless_ice_fire", "fake_fire:ice_fire")
minetest.register_alias("fake_fire:smokeless_chimney_top_stone", "fake_fire:chimney_top_stone")
minetest.register_alias("fake_fire:smokeless_chimney_top_sandstone", "fake_fire:chimney_top_sandstone")
minetest.register_alias("fake_fire:flint", "fake_fire:flint_and_steel")
core.register_alias("fake_fire:smokeless_fire", "fake_fire:fake_fire")
core.register_alias("fake_fire:smokeless_ice_fire", "fake_fire:ice_fire")
core.register_alias("fake_fire:smokeless_chimney_top_stone", "fake_fire:chimney_top_stone")
core.register_alias("fake_fire:smokeless_chimney_top_sandstone", "fake_fire:chimney_top_sandstone")
core.register_alias("fake_fire:flint", "fake_fire:flint_and_steel")
-- OTHER
minetest.register_lbm({
core.register_lbm({
name = "fake_fire:reload_particles",
label = "restart fire particles on reload",
nodenames = { "fake_fire:fancy_fire" },
@@ -341,16 +348,15 @@ minetest.register_lbm({
end
})
minetest.register_lbm({
core.register_lbm({
name = "fake_fire:reload_particles_chimney",
label = "restart chimney smoke on reload",
nodenames = fake_fire_reload_particles_nodes,
run_at_every_load = true,
action = function(pos, node)
if minetest.get_meta(pos):get_int("smoky") ~= 0 then
if core.get_meta(pos):get_int("smoky") ~= 0 then
stop_smoke(pos)
start_fire_effects(pos, node, nil, 1)
end
end
})

View File

@@ -1,10 +1,6 @@
# textdomain: fake_fire
### init.lua ###
Ice fire=Eisfeuer
Fancy Fire=Schönes Feuer
Glowing Embers=Glühende Asche
Ice fire=Eisfeuer
Sandstone chimney top=Sandsteinschornsteinaufsatz
Stone chimney top=Steinschornsteinaufsatz
Sandstone chimney top=Sandsteinschornsteinaufsatz

View File

@@ -1,10 +1,6 @@
# textdomain: fake_fire
### init.lua ###
Ice fire=Fuego de hielo
Fancy Fire=Fuego fantasía
Glowing Embers=Brasas ardientes
Ice fire=Fuego de hielo
Sandstone chimney top=Chimenea de arenisca
Stone chimney top=Chimenea de piedra
Sandstone chimney top=Chimenea de arenisca

View File

@@ -1,10 +1,6 @@
# textdomain: fake_fire
### init.lua ###
Ice fire=Feu glacé
Fancy Fire=Feu décoratif
Glowing Embers=Braises incandescentes
Ice fire=Feu glacé
Sandstone chimney top=Haut de cheminée en grès
Stone chimney top=Haut de cheminée en pierre
Sandstone chimney top=Haut de cheminée en grès

View File

@@ -1,10 +1,6 @@
# textdomain: fake_fire
### init.lua ###
Ice fire=Api Ais
Fancy Fire=Api Hiasan
Glowing Embers=Bara Api
Ice fire=Api Ais
Sandstone chimney top=Kepala Serombong Batu Pasir
Stone chimney top=Kepala Serombong Batu
Sandstone chimney top=Kepala Serombong Batu Pasir

View File

@@ -1,10 +1,6 @@
# textdomain: fake_fire
### init.lua ###
Ice fire=Fogo de gelo
Fancy Fire=Fogo Chique
Glowing Embers=Brasas Brilhantes
Ice fire=Fogo de gelo
Sandstone chimney top=Topo de chaminé de arenito
Stone chimney top=Topo de chaminé de pedra
Sandstone chimney top=Topo de chaminé de arenito

View File

@@ -1,10 +1,6 @@
# textdomain: fake_fire
### init.lua ###
Ice fire=Fogo de gelo
Fancy Fire=Fogo Chique
Glowing Embers=Brasas Brilhantes
Ice fire=Fogo de gelo
Sandstone chimney top=Topo de chaminé de arenito
Stone chimney top=Topo de chaminé de pedra
Sandstone chimney top=Topo de chaminé de arenito

View File

@@ -1,10 +1,6 @@
# textdomain: fake_fire
### init.lua ###
Ice fire=Ледяной огонь
Fancy Fire=Необычный огонь
Glowing Embers=Светящиеся угли
Ice fire=Ледяной огонь
Sandstone chimney top=Дымоход из песчаника на крышу
Stone chimney top=Каменный дымоход на крышу
Sandstone chimney top=Дымоход из песчаника на крышу

View File

@@ -1,10 +1,6 @@
# textdomain: fake_fire
### init.lua ###
Ice fire=冰火
Fancy Fire=花式火
Glowing Embers=发光的余烬
Ice fire=冰火
Sandstone chimney top=砂石烟囱顶部
Stone chimney top=鹅卵石烟囱顶部
Sandstone chimney top=砂石烟囱顶部

View File

@@ -1,10 +1,6 @@
# textdomain: fake_fire
### init.lua ###
Ice fire=
Fancy Fire=
Glowing Embers=
Ice fire=
Sandstone chimney top=
Stone chimney top=
Sandstone chimney top=

View File

@@ -1,5 +1,5 @@
if minetest.get_modpath("default") then
minetest.override_item("default:bookshelf", {
if core.get_modpath("default") then
core.override_item("default:bookshelf", {
drawtype = "mesh",
mesh = "homedecor_3d_bookshelf.obj",
tiles = {
@@ -12,8 +12,8 @@ if minetest.get_modpath("default") then
})
end
if minetest.get_modpath("vessels") then
minetest.override_item("vessels:shelf", {
if core.get_modpath("vessels") then
core.override_item("vessels:shelf", {
drawtype = "mesh",
mesh = "homedecor_3d_vessels_shelf.obj",
tiles = {
@@ -23,7 +23,6 @@ if minetest.get_modpath("vessels") then
},
paramtype = "light",
paramtype2 = "facedir",
use_texture_alpha = "blend",
})
local sbox = {
@@ -31,17 +30,16 @@ if minetest.get_modpath("vessels") then
fixed = { -0.15, -0.5, -0.15, 0.15, -0.1, 0.15 }
}
minetest.override_item("vessels:glass_bottle", {
core.override_item("vessels:glass_bottle", {
drawtype = "mesh",
mesh = "homedecor_3d_vessels_bottle.obj",
tiles = {"homedecor_3d_vessels_shelf_glass.png"},
inventory_image = "homedecor_3d_vessels_glass_bottle_inv.png",
wield_image = "homedecor_3d_vessels_glass_bottle_inv.png",
use_texture_alpha = "blend",
selection_box = sbox
})
minetest.override_item("vessels:steel_bottle", {
core.override_item("vessels:steel_bottle", {
drawtype = "mesh",
mesh = "homedecor_3d_vessels_bottle_steel.obj",
tiles = {"homedecor_3d_bottle_metal_bright.png"},
@@ -50,19 +48,18 @@ if minetest.get_modpath("vessels") then
selection_box = sbox
})
minetest.override_item("vessels:drinking_glass", {
core.override_item("vessels:drinking_glass", {
drawtype = "mesh",
mesh = "homedecor_3d_vessels_drink.obj",
tiles = {"homedecor_3d_vessels_shelf_glass.png"},
inventory_image = "homedecor_3d_vessels_drinking_glass_inv.png",
wield_image = "homedecor_3d_vessels_drinking_glass_inv.png",
use_texture_alpha = "blend",
selection_box = sbox
})
end
if minetest.get_modpath("moreblocks") then
minetest.override_item("moreblocks:empty_bookshelf", {
if core.get_modpath("moreblocks") then
core.override_item("moreblocks:empty_bookshelf", {
drawtype = "nodebox",
tiles = {
"default_wood.png^[transformR180",
@@ -90,24 +87,24 @@ end
-- 3d-ify default mtg wood and steel doors and trap doors
if minetest.get_modpath("doors") then
if core.get_modpath("doors") then
local def
for _,mat in ipairs({"wood", "steel"}) do
def = table.copy(minetest.registered_nodes["doors:door_"..mat.."_a"])
def = table.copy(core.registered_nodes["doors:door_"..mat.."_a"])
def.groups.handy = 1
def._mcl_hardness=0.6
def.mesh = "homedecor_3d_door_"..mat.."_a.obj"
minetest.register_node(":doors:door_"..mat.."_a", def)
core.register_node(":doors:door_"..mat.."_a", def)
def = table.copy(minetest.registered_nodes["doors:door_"..mat.."_b"])
def = table.copy(core.registered_nodes["doors:door_"..mat.."_b"])
def.groups.handy = 1
def._mcl_hardness=0.6
def.mesh = "homedecor_3d_door_"..mat.."_b.obj"
minetest.register_node(":doors:door_"..mat.."_b", def)
core.register_node(":doors:door_"..mat.."_b", def)
end
for _,mat in ipairs({"", "_steel"}) do
def = table.copy(minetest.registered_nodes["doors:trapdoor"..mat])
def = table.copy(core.registered_nodes["doors:trapdoor"..mat])
def.groups.handy = 1
def._mcl_hardness=0.6
def.drawtype = "mesh"
@@ -116,9 +113,9 @@ if minetest.get_modpath("doors") then
"doors_trapdoor"..mat..".png",
"doors_trapdoor"..mat.."_side.png"
}
minetest.register_node(":doors:trapdoor"..mat, def)
core.register_node(":doors:trapdoor"..mat, def)
def = table.copy(minetest.registered_nodes["doors:trapdoor"..mat.."_open"])
def = table.copy(core.registered_nodes["doors:trapdoor"..mat.."_open"])
def.groups.handy = 1
def._mcl_hardness=0.6
def.mesh = "homedecor_3d_trapdoor"..mat.."_open.obj"
@@ -127,7 +124,7 @@ if minetest.get_modpath("doors") then
"doors_trapdoor"..mat..".png",
"doors_trapdoor"..mat.."_side.png"
}
minetest.register_node(":doors:trapdoor"..mat.."_open", def)
core.register_node(":doors:trapdoor"..mat.."_open", def)
end
end

View File

@@ -1,9 +1,9 @@
local S = minetest.get_translator("homedecor_bathroom")
local S = core.get_translator("homedecor_bathroom")
local sc_disallow = minetest.get_modpath("screwdriver") and screwdriver.disallow or nil
local sc_disallow = core.get_modpath("screwdriver") and screwdriver.disallow or nil
local wood_tex = homedecor.textures.default_wood
local water_tex = homedecor.textures.water
local wood_tex = homedecor.textures.wood.apple.planks
local water_tex = homedecor.textures.water.tile
homedecor.register("bathroom_tiles_dark", {
description = S("Bathroom/kitchen tiles (dark)"),
@@ -137,10 +137,10 @@ homedecor.register("medicine_cabinet", {
},
on_punch = function(pos, node, puncher, pointed_thing)
node.name = "homedecor:medicine_cabinet_open"
minetest.swap_node(pos, node)
core.swap_node(pos, node)
end,
can_dig = function(pos)
local inv = minetest.get_meta(pos):get_inventory("main")
local inv = core.get_meta(pos):get_inventory("main")
return inv:is_empty("main")
end,
infotext=S("Medicine cabinet"),
@@ -174,10 +174,10 @@ homedecor.register("medicine_cabinet_open", {
drop = "homedecor:medicine_cabinet",
on_punch = function(pos, node, puncher, pointed_thing)
node.name = "homedecor:medicine_cabinet"
minetest.swap_node(pos, node)
core.swap_node(pos, node)
end,
can_dig = function(pos)
local inv = minetest.get_meta(pos):get_inventory("main")
local inv = core.get_meta(pos):get_inventory("main")
return inv:is_empty("main")
end,
})
@@ -214,7 +214,7 @@ homedecor.register("toilet", {
},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
node.name = "homedecor:toilet_open"
minetest.set_node(pos, node)
core.set_node(pos, node)
end,
crafts = {
{
@@ -239,15 +239,14 @@ homedecor.register("toilet_open", {
selection_box = toilet_sbox,
collision_box = toilet_cbox,
drop = "homedecor:toilet",
use_texture_alpha = "blend",
groups = {cracky=3, dig_stone = 2},
_sound_def = {
key = "node_sound_stone_defaults",
},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
node.name = "homedecor:toilet"
minetest.set_node(pos, node)
minetest.sound_play("homedecor_toilet_flush", {
core.set_node(pos, node)
core.sound_play("homedecor_toilet_flush", {
pos=pos,
max_hear_distance = 5,
gain = 1,
@@ -337,7 +336,7 @@ homedecor.register("sink", {
--Taps
local function taps_on_rightclick(pos, node, clicker, itemstack, pointed_thing)
local below = minetest.get_node_or_nil({x=pos.x, y=pos.y-1, z=pos.z})
local below = core.get_node_or_nil({x=pos.x, y=pos.y-1, z=pos.z})
if below and
below.name == "homedecor:shower_tray" or
string.find(below.name, "homedecor:.*sink") then
@@ -476,7 +475,7 @@ homedecor.register("shower_head", {
walkable = false,
on_rotate = sc_disallow or nil,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local below = minetest.get_node_or_nil({x=pos.x, y=pos.y-2.0, z=pos.z})
local below = core.get_node_or_nil({x=pos.x, y=pos.y-2.0, z=pos.z})
if below and (
below.name == "homedecor:shower_tray" or
below.name == "homedecor:bathtub_clawfoot_brass_taps" or
@@ -619,20 +618,20 @@ homedecor.register("bathroom_set", {
-- aliases
minetest.register_alias("3dforniture:toilet", "homedecor:toilet")
minetest.register_alias("3dforniture:toilet_open", "homedecor:toilet_open")
minetest.register_alias("3dforniture:sink", "homedecor:sink")
minetest.register_alias("3dforniture:taps", "homedecor:taps")
minetest.register_alias("3dforniture:shower_tray", "homedecor:shower_tray")
minetest.register_alias("3dforniture:shower_head", "homedecor:shower_head")
minetest.register_alias("3dforniture:table_lamp", "homedecor:table_lamp_off")
core.register_alias("3dforniture:toilet", "homedecor:toilet")
core.register_alias("3dforniture:toilet_open", "homedecor:toilet_open")
core.register_alias("3dforniture:sink", "homedecor:sink")
core.register_alias("3dforniture:taps", "homedecor:taps")
core.register_alias("3dforniture:shower_tray", "homedecor:shower_tray")
core.register_alias("3dforniture:shower_head", "homedecor:shower_head")
core.register_alias("3dforniture:table_lamp", "homedecor:table_lamp_off")
minetest.register_alias("toilet", "homedecor:toilet")
minetest.register_alias("sink", "homedecor:sink")
minetest.register_alias("taps", "homedecor:taps")
minetest.register_alias("shower_tray", "homedecor:shower_tray")
minetest.register_alias("shower_head", "homedecor:shower_head")
minetest.register_alias("table_lamp", "homedecor:table_lamp_off")
core.register_alias("toilet", "homedecor:toilet")
core.register_alias("sink", "homedecor:sink")
core.register_alias("taps", "homedecor:taps")
core.register_alias("shower_tray", "homedecor:shower_tray")
core.register_alias("shower_head", "homedecor:shower_head")
core.register_alias("table_lamp", "homedecor:table_lamp_off")
-- convert old static nodes
@@ -655,7 +654,7 @@ local old_to_color = {
"black"
}
minetest.register_lbm({
core.register_lbm({
name = ":homedecor:convert_bathroom_tiles",
label = "Convert bathroom tiles to use param2 color",
run_at_every_load = false,
@@ -679,8 +678,8 @@ minetest.register_lbm({
local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "extended")
minetest.set_node(pos, { name = newname, param2 = paletteidx })
local meta = minetest.get_meta(pos)
core.set_node(pos, { name = newname, param2 = paletteidx })
local meta = core.get_meta(pos)
meta:set_string("dye", "unifieddyes:"..color)
meta:set_string("palette", "ext")
end

View File

@@ -1,20 +1,16 @@
# textdomain: homedecor_bathroom
### init.lua ###
Bathroom Sink=Badezimmerwaschbecken
Bathroom sundries set=Badezimmerkrimskrams
Bathroom taps/faucet=Badezimmerwasserhahn
Bathroom taps/faucet (brass)=Badezimmerwasserhahn (Messing)
Bathroom/kitchen tiles (dark)=Badezimmer-/Küchenkacheln (dunkel)
Bathroom/kitchen tiles (light)=Badezimmer-/Küchenkacheln (hell)
Bathroom/kitchen tiles (medium)=Badezimmer-/Küchenkacheln (mittel)
Bathtub, clawfoot, with brass taps=Badewanne, Krallenfuß, mit Messingwasserhähnen
Bathtub, clawfoot, with chrome taps=Badewanne, Krallenfuß, mit Chromwasserhähnen
Bathroom/kitchen tiles (light)=Badezimmer-/Küchenkacheln (hell)
Towel rod with towel=Handtuchhalter mit Handtuch
Medicine cabinet=Medizinschrank
Shower Head=Duschbrause
Shower Tray=Duschtasse
Toilet=Toilette
Toilet paper=Toilettenpapier
Towel rod with towel=Handtuchhalter mit Handtuch
Bathroom Sink=Badezimmerwaschbecken
Bathroom taps/faucet=Badezimmerwasserhahn
Bathroom taps/faucet (brass)=Badezimmerwasserhahn (Messing)
Shower Tray=Duschtasse
Shower Head=Duschbrause
Bathtub, clawfoot, with brass taps=Badewanne, Krallenfuß, mit Messingwasserhähnen
Bathtub, clawfoot, with chrome taps=Badewanne, Krallenfuß, mit Chromwasserhähnen
Bathroom sundries set=Badezimmerkrimskrams

View File

@@ -1,20 +1,16 @@
# textdomain: homedecor_bathroom
### init.lua ###
Bathroom Sink=Lavabo de baño
Bathroom sundries set=Artículos de baño
Bathroom taps/faucet=Grifo de baño
Bathroom taps/faucet (brass)=Grifo de baño (latón)
Bathroom/kitchen tiles (dark)=Azulejo de baño/cocina (tonos oscuros)
Bathroom/kitchen tiles (light)=Azulejo de baño/cocina (tonos claros)
Bathroom/kitchen tiles (medium)=Azulejo de baño/cocina (tonos medios)
Bathtub, clawfoot, with brass taps=
Bathtub, clawfoot, with chrome taps=
Bathroom/kitchen tiles (light)=Azulejo de baño/cocina (tonos claros)
Towel rod with towel=Toallero con toalla
Medicine cabinet=Gabinete de medicinas
Shower Head=Ducha
Shower Tray=Plato de ducha
Toilet=Inodoro
Toilet paper=Papel higiénico
Towel rod with towel=Toallero con toalla
Bathroom Sink=Lavabo de baño
Bathroom taps/faucet=Grifo de baño
Bathroom taps/faucet (brass)=Grifo de baño (latón)
Shower Tray=Plato de ducha
Shower Head=Ducha
Bathtub, clawfoot, with brass taps=
Bathtub, clawfoot, with chrome taps=
Bathroom sundries set=Artículos de baño

View File

@@ -1,20 +1,16 @@
# textdomain: homedecor_bathroom
### init.lua ###
Bathroom Sink=Évier
Bathroom sundries set=Miroir et tablette de salle de bain
Bathroom taps/faucet=Robinetterie
Bathroom taps/faucet (brass)=Robinetterie (laiton)
Bathroom/kitchen tiles (dark)=Carreaux de salle de bain ou cuisine (foncées)
Bathroom/kitchen tiles (light)=Carreaux de salle de bain ou cuisine (claires)
Bathroom/kitchen tiles (medium)=Carreaux de salle de bain ou cuisine (moyennes)
Bathtub, clawfoot, with brass taps=Baignoire sur pieds, avec robinetterie en laiton
Bathtub, clawfoot, with chrome taps=Baignoire sur pieds, avec robinetterie en chrome
Bathroom/kitchen tiles (light)=Carreaux de salle de bain ou cuisine (claires)
Towel rod with towel=Porte serviette et serviette
Medicine cabinet=Armoire à pharmacie
Shower Head=Pomme de douche
Shower Tray=Bac de douche
Toilet=Toilettes
Toilet paper=Papier toilette
Towel rod with towel=Porte serviette et serviette
Bathroom Sink=Évier
Bathroom taps/faucet=Robinetterie
Bathroom taps/faucet (brass)=Robinetterie (laiton)
Shower Tray=Bac de douche
Shower Head=Pomme de douche
Bathtub, clawfoot, with brass taps=Baignoire sur pieds, avec robinetterie en laiton
Bathtub, clawfoot, with chrome taps=Baignoire sur pieds, avec robinetterie en chrome
Bathroom sundries set=Miroir et tablette de salle de bain

View File

@@ -1,20 +1,16 @@
# textdomain: homedecor_bathroom
### init.lua ###
Bathroom Sink=
Bathroom sundries set=
Bathroom taps/faucet=
Bathroom taps/faucet (brass)=
Bathroom/kitchen tiles (dark)=
Bathroom/kitchen tiles (light)=
Bathroom/kitchen tiles (medium)=
Bathtub, clawfoot, with brass taps=
Bathtub, clawfoot, with chrome taps=
Bathroom/kitchen tiles (light)=
Towel rod with towel=
Medicine cabinet=Armadietto sotto il lavandino
Shower Head=Pigna della doccia
Shower Tray=Piatto della doccia
Toilet=Water
Toilet paper=Water
Towel rod with towel=
Bathroom Sink=
Bathroom taps/faucet=
Bathroom taps/faucet (brass)=
Shower Tray=Piatto della doccia
Shower Head=Pigna della doccia
Bathtub, clawfoot, with brass taps=
Bathtub, clawfoot, with chrome taps=
Bathroom sundries set=

View File

@@ -1,20 +1,16 @@
# textdomain: homedecor_bathroom
### init.lua ###
Bathroom Sink=Sinki Bilik Mandi
Bathroom sundries set=Set Barangan Bilik Mandi
Bathroom taps/faucet=Kepala Paip Bilik Mandi
Bathroom taps/faucet (brass)=Kepala Paip Bilik Mandi (Loyang)
Bathroom/kitchen tiles (dark)=Jubin Dapur/Bilik Mandi (Gelap)
Bathroom/kitchen tiles (light)=Jubin Dapur/Bilik Mandi (Cerah)
Bathroom/kitchen tiles (medium)=Jubin Dapur/Bilik Mandi (Biasa)
Bathtub, clawfoot, with brass taps=Tab Mandi Berkaki Cakar, dengan Kepala Paip Loyang
Bathtub, clawfoot, with chrome taps=Tab Mandi Berkaki Cakar, dengan Kepala Paip Krom
Bathroom/kitchen tiles (light)=Jubin Dapur/Bilik Mandi (Cerah)
Towel rod with towel=Ampaian Beserta Tuala
Medicine cabinet=Kabinet Ubat
Shower Head=Kepala Pancuran
Shower Tray=Lubang Air Mandi
Toilet=Tandas
Toilet paper=Tisu Tandas
Towel rod with towel=Ampaian Beserta Tuala
Bathroom Sink=Sinki Bilik Mandi
Bathroom taps/faucet=Kepala Paip Bilik Mandi
Bathroom taps/faucet (brass)=Kepala Paip Bilik Mandi (Loyang)
Shower Tray=Lubang Air Mandi
Shower Head=Kepala Pancuran
Bathtub, clawfoot, with brass taps=Tab Mandi Berkaki Cakar, dengan Kepala Paip Loyang
Bathtub, clawfoot, with chrome taps=Tab Mandi Berkaki Cakar, dengan Kepala Paip Krom
Bathroom sundries set=Set Barangan Bilik Mandi

View File

@@ -1,20 +1,16 @@
# textdomain: homedecor_bathroom
### init.lua ###
Bathroom Sink=Pia de Banheiro
Bathroom sundries set=Espelho de Banheiro com bancada
Bathroom taps/faucet=Torneira de Banheiro
Bathroom taps/faucet (brass)=Torneira de Banheiro (latão)
Bathroom/kitchen tiles (dark)=Azulejo de Banheiro/Cozinha (escuro)
Bathroom/kitchen tiles (light)=Azulejo de Banheiro/Cozinha (claro)
Bathroom/kitchen tiles (medium)=Azulejo de Banheiro/Cozinha (médio)
Bathtub, clawfoot, with brass taps=
Bathtub, clawfoot, with chrome taps=
Bathroom/kitchen tiles (light)=Azulejo de Banheiro/Cozinha (claro)
Towel rod with towel=Haste de Toalha com Toalha
Medicine cabinet=Armário de remédios
Shower Head=Chuveiro
Shower Tray=Ralo do Chuveiro
Toilet=Vaso Sanitário
Toilet paper=Papel higiênico
Towel rod with towel=Haste de Toalha com Toalha
Bathroom Sink=Pia de Banheiro
Bathroom taps/faucet=Torneira de Banheiro
Bathroom taps/faucet (brass)=Torneira de Banheiro (latão)
Shower Tray=Ralo do Chuveiro
Shower Head=Chuveiro
Bathtub, clawfoot, with brass taps=
Bathtub, clawfoot, with chrome taps=
Bathroom sundries set=Espelho de Banheiro com bancada

View File

@@ -1,20 +1,16 @@
# textdomain: homedecor_bathroom
### init.lua ###
Bathroom Sink=Pia de Banheiro
Bathroom sundries set=Espelho de Banheiro com bancada
Bathroom taps/faucet=Torneira de Banheiro
Bathroom taps/faucet (brass)=Torneira de Banheiro (latão)
Bathroom/kitchen tiles (dark)=Azulejo de Banheiro/Cozinha (escuro)
Bathroom/kitchen tiles (light)=Azulejo de Banheiro/Cozinha (claro)
Bathroom/kitchen tiles (medium)=Azulejo de Banheiro/Cozinha (médio)
Bathtub, clawfoot, with brass taps=
Bathtub, clawfoot, with chrome taps=
Bathroom/kitchen tiles (light)=Azulejo de Banheiro/Cozinha (claro)
Towel rod with towel=Haste de Toalha com Toalha
Medicine cabinet=Armário de remédios
Shower Head=Chuveiro
Shower Tray=Ralo do Chuveiro
Toilet=Vaso Sanitário
Toilet paper=Papel higiênico
Towel rod with towel=Haste de Toalha com Toalha
Bathroom Sink=Pia de Banheiro
Bathroom taps/faucet=Torneira de Banheiro
Bathroom taps/faucet (brass)=Torneira de Banheiro (latão)
Shower Tray=Ralo do Chuveiro
Shower Head=Chuveiro
Bathtub, clawfoot, with brass taps=
Bathtub, clawfoot, with chrome taps=
Bathroom sundries set=Espelho de Banheiro com bancada

View File

@@ -1,20 +1,16 @@
# textdomain: homedecor_bathroom
### init.lua ###
Bathroom Sink=Раковина для ванной комнаты
Bathroom sundries set=Набор для ванных комнат
Bathroom taps/faucet=м
Bathroom taps/faucet (brass)=Краны(смесители) для ванной комнаты (латунь)
Bathroom/kitchen tiles (dark)=Плитка для ванной/кухни (тёмная)
Bathroom/kitchen tiles (light)=Плитка для ванной/кухни (светлая)
Bathroom/kitchen tiles (medium)=Плитка для ванной/кухни (обычная)
Bathtub, clawfoot, with brass taps=Ванна на острых ножках с латунными кранами
Bathtub, clawfoot, with chrome taps=Ванна на острых ножках с хромированными кранами
Bathroom/kitchen tiles (light)=Плитка для ванной/кухни (светлая)
Towel rod with towel=Полотенцедержатель с полотенцем
Medicine cabinet=Медицинский кабинет
Shower Head=Душевая лейка
Shower Tray=Душевой поддон
Toilet=Туалет
Toilet paper=Туалетная бумага
Towel rod with towel=Полотенцедержатель с полотенцем
Bathroom Sink=Раковина для ванной комнаты
Bathroom taps/faucet=м
Bathroom taps/faucet (brass)=Краны(смесители) для ванной комнаты (латунь)
Shower Tray=Душевой поддон
Shower Head=Душевая лейка
Bathtub, clawfoot, with brass taps=Ванна на острых ножках с латунными кранами
Bathtub, clawfoot, with chrome taps=Ванна на острых ножках с хромированными кранами
Bathroom sundries set=Набор для ванных комнат

View File

@@ -1,20 +1,16 @@
# textdomain: homedecor_bathroom
### init.lua ###
Bathroom Sink=浴室水槽
Bathroom sundries set=浴室杂物套装
Bathroom taps/faucet=浴室水龙头
Bathroom taps/faucet (brass)=黄铜浴室水龙头
Bathroom/kitchen tiles (dark)=深色浴室/厨房瓷砖
Bathroom/kitchen tiles (light)=浅色浴室/厨房瓷砖
Bathroom/kitchen tiles (medium)=浴室/厨房瓷砖
Bathtub, clawfoot, with brass taps=带黄铜水龙头的浴缸
Bathtub, clawfoot, with chrome taps=带镀铬水龙头的浴缸
Bathroom/kitchen tiles (light)=浅色浴室/厨房瓷砖
Towel rod with towel=毛巾杆
Medicine cabinet=药柜
Shower Head=淋浴喷头
Shower Tray=淋浴盆
Toilet=卫生间
Toilet paper=厕纸
Towel rod with towel=毛巾杆
Bathroom Sink=浴室水槽
Bathroom taps/faucet=浴室水龙头
Bathroom taps/faucet (brass)=黄铜浴室水龙头
Shower Tray=淋浴盆
Shower Head=淋浴喷头
Bathtub, clawfoot, with brass taps=带黄铜水龙头的浴缸
Bathtub, clawfoot, with chrome taps=带镀铬水龙头的浴缸
Bathroom sundries set=浴室杂物套装

View File

@@ -1,20 +1,16 @@
# textdomain: homedecor_bathroom
### init.lua ###
Bathroom Sink=
Bathroom sundries set=
Bathroom taps/faucet=
Bathroom taps/faucet (brass)=
Bathroom/kitchen tiles (dark)=
Bathroom/kitchen tiles (light)=
Bathroom/kitchen tiles (medium)=
Bathtub, clawfoot, with brass taps=
Bathtub, clawfoot, with chrome taps=
Bathroom/kitchen tiles (light)=
Towel rod with towel=
Medicine cabinet=
Shower Head=
Shower Tray=
Toilet=
Toilet paper=
Towel rod with towel=
Bathroom Sink=
Bathroom taps/faucet=
Bathroom taps/faucet (brass)=
Shower Tray=
Shower Head=
Bathtub, clawfoot, with brass taps=
Bathtub, clawfoot, with chrome taps=
Bathroom sundries set=

View File

@@ -1,8 +1,8 @@
local S = minetest.get_translator("homedecor_bedroom")
local S = core.get_translator("homedecor_bedroom")
local sc_disallow = minetest.get_modpath("screwdriver") and screwdriver.disallow or nil
local sc_disallow = core.get_modpath("screwdriver") and screwdriver.disallow or nil
local wood_tex, wool_tex = homedecor.textures.default_wood, homedecor.textures.wool_white
local wood_tex, wool_tex = homedecor.textures.wood.apple.planks, homedecor.textures.wool.white
local bed_sbox = {
type = "wallmounted",
@@ -33,7 +33,7 @@ local kbed_cbox = {
}
local bed_def = minetest.registered_nodes["beds:bed"]
local bed_def = core.registered_nodes["beds:bed"]
local bed_on_rightclick = bed_def and bed_def.on_rightclick or nil
homedecor.register("bed_regular", {
@@ -256,7 +256,7 @@ for _, color in ipairs(bedcolors) do
table.insert(old_bed_nodes, "homedecor:bed_"..color.."_kingsize")
end
minetest.register_lbm({
core.register_lbm({
name = ":homedecor:convert_beds",
label = "Convert homedecor static bed nodes to use param2 color",
run_at_every_load = false,
@@ -297,8 +297,8 @@ minetest.register_lbm({
new_name = "homedecor:bed_kingsize"
end
minetest.set_node(pos, { name = new_name, param2 = param2 })
local meta = minetest.get_meta(pos)
core.node(pos, { name = new_name, param2 = param2 })
local meta = core.get_meta(pos)
meta:set_string("dye", "unifieddyes:"..color)
end
})
@@ -306,7 +306,7 @@ minetest.register_lbm({
-- crafting
minetest.register_craft( {
core.register_craft( {
output = "homedecor:nightstand_oak_one_drawer",
recipe = {
{ "homedecor:drawer_small" },
@@ -314,13 +314,13 @@ minetest.register_craft( {
},
})
minetest.register_craft({
core.register_craft({
type = "fuel",
recipe = "homedecor:nightstand_oak_one_drawer",
burntime = 30,
})
minetest.register_craft( {
core.register_craft( {
output = "homedecor:nightstand_oak_two_drawers",
recipe = {
{ "homedecor:drawer_small" },
@@ -329,7 +329,7 @@ minetest.register_craft( {
},
})
minetest.register_craft( {
core.register_craft( {
output = "homedecor:nightstand_oak_two_drawers",
recipe = {
{ "homedecor:nightstand_oak_one_drawer" },
@@ -337,7 +337,7 @@ minetest.register_craft( {
},
})
minetest.register_craft({
core.register_craft({
type = "fuel",
recipe = "homedecor:nightstand_oak_two_drawers",
burntime = 30,
@@ -345,7 +345,7 @@ minetest.register_craft({
--
minetest.register_craft( {
core.register_craft( {
type = "shapeless",
output = "homedecor:nightstand_mahogany_one_drawer",
recipe = {
@@ -354,13 +354,13 @@ minetest.register_craft( {
},
})
minetest.register_craft({
core.register_craft({
type = "fuel",
recipe = "homedecor:nightstand_mahogany_one_drawer",
burntime = 30,
})
minetest.register_craft( {
core.register_craft( {
type = "shapeless",
output = "homedecor:nightstand_mahogany_two_drawers",
recipe = {
@@ -369,7 +369,7 @@ minetest.register_craft( {
},
})
minetest.register_craft({
core.register_craft({
type = "fuel",
recipe = "homedecor:nightstand_mahogany_two_drawers",
burntime = 30,

View File

@@ -1,13 +1,9 @@
# textdomain: homedecor_bedroom
### init.lua ###
Bed=Bett
Bed (king sized)=Breites Doppelbett
Nightstand with One Drawer (@1)=Nachttisch mit einer Schublade (@1)
Nightstand with Two Drawers (@1)=Nachttisch mit zwei Schubladen (@1)
One-drawer Nightstand=Nachttisch mit einer Schublade
Two-drawer Nightstand=Nachttisch mit zwei Schubladen
mahogany=Mahagoni
oak=Eiche
Nightstand with One Drawer (@1)=Nachttisch mit einer Schublade (@1)
One-drawer Nightstand=Nachttisch mit einer Schublade
Nightstand with Two Drawers (@1)=Nachttisch mit zwei Schubladen (@1)
Two-drawer Nightstand=Nachttisch mit zwei Schubladen

View File

@@ -1,13 +1,9 @@
# textdomain: homedecor_bedroom
### init.lua ###
Bed=Cama
Bed (king sized)=Cama (tamaño grande)
Nightstand with One Drawer (@1)=Mesa de luz con un cajón (@1)
Nightstand with Two Drawers (@1)=Mesa de luz con dos cajones (@1)
One-drawer Nightstand=Mesa de luz con un cajón
Two-drawer Nightstand=Mesa de luz con dos cajones
mahogany=caoba
oak=roble
Nightstand with One Drawer (@1)=Mesa de luz con un cajón (@1)
One-drawer Nightstand=Mesa de luz con un cajón
Nightstand with Two Drawers (@1)=Mesa de luz con dos cajones (@1)
Two-drawer Nightstand=Mesa de luz con dos cajones

View File

@@ -1,13 +1,9 @@
# textdomain: homedecor_bedroom
### init.lua ###
Bed=Lit
Bed (king sized)=Grand lit
Nightstand with One Drawer (@1)=Meuble de chevet avec un tiroir (@1)
Nightstand with Two Drawers (@1)=Meuble de chevet avec deux tiroirs (@1)
One-drawer Nightstand=Meuble de chevet avec un tiroir
Two-drawer Nightstand=Meuble de chevet avec deux tiroirs
mahogany=acajou
oak=chêne
Nightstand with One Drawer (@1)=Meuble de chevet avec un tiroir (@1)
One-drawer Nightstand=Meuble de chevet avec un tiroir
Nightstand with Two Drawers (@1)=Meuble de chevet avec deux tiroirs (@1)
Two-drawer Nightstand=Meuble de chevet avec deux tiroirs

View File

@@ -1,13 +1,9 @@
# textdomain: homedecor_bedroom
### init.lua ###
Bed=rosso
Bed (king sized)=
Nightstand with One Drawer (@1)=Comodino in quercia con un cassetto
Nightstand with Two Drawers (@1)=Comodino in quercia con due cassetti
One-drawer Nightstand=Comodino a singolo cassetto
Two-drawer Nightstand=Comodino a doppio cassetto
mahogany=
oak=
Nightstand with One Drawer (@1)=Comodino in quercia con un cassetto (@1)
One-drawer Nightstand=Comodino a singolo cassetto
Nightstand with Two Drawers (@1)=Comodino in quercia con due cassetti (@1)
Two-drawer Nightstand=Comodino a doppio cassetto

View File

@@ -1,13 +1,9 @@
# textdomain: homedecor_bedroom
### init.lua ###
Bed=Katil
Bed (king sized)=Katil Raja
Nightstand with One Drawer (@1)=Kabinet Katil dengan Satu Laci (@1)
Nightstand with Two Drawers (@1)=Kabinet Katil dengan Dua Laci (@1)
One-drawer Nightstand=Kabinet Katil Satu Laci
Two-drawer Nightstand=Kabinet Katil Dua Laci
mahogany=Mahogani
oak=Oak
Nightstand with One Drawer (@1)=Kabinet Katil dengan Satu Laci (@1)
One-drawer Nightstand=Kabinet Katil Satu Laci
Nightstand with Two Drawers (@1)=Kabinet Katil dengan Dua Laci (@1)
Two-drawer Nightstand=Kabinet Katil Dua Laci

View File

@@ -1,13 +1,9 @@
# textdomain: homedecor_bedroom
### init.lua ###
Bed=Cama
Bed (king sized)=Cama (tamanho king)
Nightstand with One Drawer (@1)=Mesa de Cabeceira com Gaveta (@1)
Nightstand with Two Drawers (@1)=Mesa de Cabeceira com Duas Gavetas (@1)
One-drawer Nightstand=Mesinha de Uma Gaveta
Two-drawer Nightstand=Mesinha de Duas Gavetas
mahogany=mogno
oak=carvalho
Nightstand with One Drawer (@1)=Mesa de Cabeceira com Gaveta (@1)
One-drawer Nightstand=Mesinha de Uma Gaveta
Nightstand with Two Drawers (@1)=Mesa de Cabeceira com Duas Gavetas (@1)
Two-drawer Nightstand=Mesinha de Duas Gavetas

View File

@@ -1,13 +1,9 @@
# textdomain: homedecor_bedroom
### init.lua ###
Bed=Cama
Bed (king sized)=Cama (tamanho king)
Nightstand with One Drawer (@1)=Mesa de Cabeceira com Gaveta (@1)
Nightstand with Two Drawers (@1)=Mesa de Cabeceira com Duas Gavetas (@1)
One-drawer Nightstand=Mesinha de Uma Gaveta
Two-drawer Nightstand=Mesinha de Duas Gavetas
mahogany=mogno
oak=carvalho
Nightstand with One Drawer (@1)=Mesa de Cabeceira com Gaveta (@1)
One-drawer Nightstand=Mesinha de Uma Gaveta
Nightstand with Two Drawers (@1)=Mesa de Cabeceira com Duas Gavetas (@1)
Two-drawer Nightstand=Mesinha de Duas Gavetas

View File

@@ -1,13 +1,9 @@
# textdomain: homedecor_bedroom
### init.lua ###
Bed=Кровать
Bed (king sized)=Кровать (большая)
Nightstand with One Drawer (@1)=Тумба с одним ящиком (@1)
Nightstand with Two Drawers (@1)=Тумба с двумя ящиками (@1)
One-drawer Nightstand=Тумба с одним ящиком
Two-drawer Nightstand=Тумба с двумя ящиками
mahogany=красное дерево
oak=дуб
Nightstand with One Drawer (@1)=Тумба с одним ящиком (@1)
One-drawer Nightstand=Тумба с одним ящиком
Nightstand with Two Drawers (@1)=Тумба с двумя ящиками (@1)
Two-drawer Nightstand=Тумба с двумя ящиками

View File

@@ -1,13 +1,9 @@
# textdomain: homedecor_bedroom
### init.lua ###
Bed=床
Bed (king sized)=双人床
Nightstand with One Drawer (@1)=带一个抽屉的床头柜(@1)
Nightstand with Two Drawers (@1)=带两个抽屉的床头柜(@1)
One-drawer Nightstand=单抽屉床头柜
Two-drawer Nightstand=两抽屉床头柜
mahogany=桃花心木
oak=橡木
Nightstand with One Drawer (@1)=带一个抽屉的床头柜(@1)
One-drawer Nightstand=单抽屉床头柜
Nightstand with Two Drawers (@1)=带两个抽屉的床头柜(@1)
Two-drawer Nightstand=两抽屉床头柜

View File

@@ -1,13 +1,9 @@
# textdomain: homedecor_bedroom
### init.lua ###
Bed=
Bed (king sized)=
Nightstand with One Drawer (@1)=
Nightstand with Two Drawers (@1)=
One-drawer Nightstand=
Two-drawer Nightstand=
mahogany=
oak=
Nightstand with One Drawer (@1)=
One-drawer Nightstand=
Nightstand with Two Drawers (@1)=
Two-drawer Nightstand=

View File

@@ -1,4 +1,4 @@
local S = minetest.get_translator("homedecor_books")
local S = core.get_translator("homedecor_books")
local bookcolors = {
{ "red", 0xffd26466 },
@@ -27,9 +27,9 @@ for _, c in ipairs(bookcolors) do
local color, hue = unpack(c)
local function book_dig(pos, node, digger)
if not digger or minetest.is_protected(pos, digger:get_player_name()) then return end
local meta = minetest.get_meta(pos)
local data = minetest.serialize({
if not digger or core.is_protected(pos, digger:get_player_name()) then return end
local meta = core.get_meta(pos)
local data = core.serialize({
title = meta:get_string("title") or "",
text = meta:get_string("text") or "",
owner = meta:get_string("owner") or "",
@@ -41,9 +41,9 @@ for _, c in ipairs(bookcolors) do
})
stack = digger:get_inventory():add_item("main", stack)
if not stack:is_empty() then
minetest.item_drop(stack, digger, pos)
core.item_drop(stack, digger, pos)
end
minetest.remove_node(pos)
core.remove_node(pos)
end
homedecor.register("book_"..color, {
@@ -62,28 +62,28 @@ for _, c in ipairs(bookcolors) do
stack_max = 1,
on_punch = function(pos, node, puncher, pointed_thing)
local fdir = node.param2
minetest.swap_node(pos, { name = "homedecor:book_open_"..color, param2 = fdir })
core.swap_node(pos, { name = "homedecor:book_open_"..color, param2 = fdir })
end,
on_place = function(itemstack, placer, pointed_thing)
local plname = placer:get_player_name()
local pos = pointed_thing.under
local node = minetest.get_node_or_nil(pos)
local def = node and minetest.registered_nodes[node.name]
local node = core.get_node_or_nil(pos)
local def = node and core.registered_nodes[node.name]
if not def or not def.buildable_to then
pos = pointed_thing.above
node = minetest.get_node_or_nil(pos)
def = node and minetest.registered_nodes[node.name]
node = core.get_node_or_nil(pos)
def = node and core.registered_nodes[node.name]
if not def or not def.buildable_to then return itemstack end
end
if minetest.is_protected(pos, plname) then return itemstack end
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
minetest.set_node(pos, {
if core.is_protected(pos, plname) then return itemstack end
local fdir = core.dir_to_facedir(placer:get_look_dir())
core.set_node(pos, {
name = "homedecor:book_"..color,
param2 = fdir,
})
local text = itemstack:get_metadata() or ""
local meta = minetest.get_meta(pos)
local data = minetest.deserialize(text) or {}
local text = itemstack:get_meta():get_string("")
local meta = core.get_meta(pos)
local data = core.deserialize(text) or {}
if type(data) ~= "table" then
data = {}
-- Store raw metadata in case some data is lost by the
@@ -97,7 +97,7 @@ for _, c in ipairs(bookcolors) do
if data.title and data.title ~= "" then
meta:set_string("infotext", data.title)
end
if not minetest.is_creative_enabled(plname) then
if not core.is_creative_enabled(plname) then
itemstack:take_item()
end
return itemstack
@@ -121,7 +121,7 @@ for _, c in ipairs(bookcolors) do
walkable = false,
on_dig = book_dig,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local meta = minetest.get_meta(pos)
local meta = core.get_meta(pos)
local player_name = clicker:get_player_name()
local title = meta:get_string("title") or ""
local text = meta:get_string("text") or ""
@@ -130,25 +130,25 @@ for _, c in ipairs(bookcolors) do
if owner == "" or owner == player_name then
formspec = "size[8,8]"..
"field[0.5,1;7.5,0;title;Book title :;"..
minetest.formspec_escape(title).."]"..
core.formspec_escape(title).."]"..
"textarea[0.5,1.5;7.5,7;text;Book content :;"..
minetest.formspec_escape(text).."]"..
core.formspec_escape(text).."]"..
"button_exit[2.5,7.5;3,1;save;Save]"
else
formspec = "size[8,8]"..
"button_exit[7,0.25;1,0.5;close;X]"..
"label[0.5,0.5;by "..owner.."]"..
"label[0.5,0;"..minetest.formspec_escape(title).."]"..
"textarea[0.5,1.5;7.5,7;;"..minetest.formspec_escape(text)..";]"
"label[0.5,0;"..core.formspec_escape(title).."]"..
"textarea[0.5,1.5;7.5,7;;"..core.formspec_escape(text)..";]"
end
player_current_book[player_name] = pos
minetest.show_formspec(player_name, BOOK_FORMNAME, formspec)
core.show_formspec(player_name, BOOK_FORMNAME, formspec)
return itemstack
end,
on_punch = function(pos, node, puncher, pointed_thing)
local fdir = node.param2
minetest.swap_node(pos, { name = "homedecor:book_"..color, param2 = fdir })
minetest.sound_play("homedecor_book_close", {
core.swap_node(pos, { name = "homedecor:book_"..color, param2 = fdir })
core.sound_play("homedecor_book_close", {
pos=pos,
max_hear_distance = 3,
gain = 2,
@@ -161,7 +161,7 @@ for _, c in ipairs(bookcolors) do
})
-- crafting
minetest.register_craft({
core.register_craft({
type = "shapeless",
output = "homedecor:book_"..color,
recipe = {
@@ -172,7 +172,7 @@ for _, c in ipairs(bookcolors) do
end
minetest.register_on_player_receive_fields(function(player, form_name, fields)
core.register_on_player_receive_fields(function(player, form_name, fields)
if form_name ~= BOOK_FORMNAME then
return false
end
@@ -181,7 +181,7 @@ minetest.register_on_player_receive_fields(function(player, form_name, fields)
if not pos then
return true
end
local meta = minetest.get_meta(pos)
local meta = core.get_meta(pos)
local owner = meta:get_string("owner")
if owner ~= "" and player_name ~= owner or not fields.save then
player_current_book[player_name] = nil
@@ -193,8 +193,8 @@ minetest.register_on_player_receive_fields(function(player, form_name, fields)
if (fields.title or "") ~= "" then
meta:set_string("infotext", fields.title)
end
minetest.log("action", S("@1 has written in a book (title: \"@2\"): \"@3\" at location @4",
player:get_player_name(), fields.title, fields.text, minetest.pos_to_string(player:get_pos())))
core.log("action", ("%s has written in a book (title: \"%s\"): \"%s\" at location %s"):format(
player:get_player_name(), fields.title, fields.text, core.pos_to_string(pos)))
player_current_book[player_name] = nil
return true
@@ -204,5 +204,5 @@ end)
-- aliases
minetest.register_alias("homedecor:book", "homedecor:book_grey")
minetest.register_alias("homedecor:book_open", "homedecor:book_open_grey")
core.register_alias("homedecor:book", "homedecor:book_grey")
core.register_alias("homedecor:book_open", "homedecor:book_open_grey")

View File

@@ -1,13 +1,8 @@
# textdomain: homedecor_books
### init.lua ###
@1 has written in a book (title: "@2"): "@3" at location @4=@1 hat in ein Buch geschrieben (Titel: „@2”): „@3” am Ort @4
Writable Book (@1)=Schreibbares Buch (@1)
blue=blau
brown=braun
green=grün
grey=grau
red=rot
green=grün
blue=blau
violet=violett
grey=grau
brown=braun
Writable Book (@1)=Schreibbares Buch (@1)

View File

@@ -1,13 +1,8 @@
# textdomain: homedecor_books
### init.lua ###
@1 has written in a book (title: "@2"): "@3" at location @4=@1 ha escrito en un libro (título: "@2"): "@3" en la ubicación @4
Writable Book (@1)=Libro (@1)
blue=azul
brown=marrón
green=verde
grey=gris
red=roja
green=verde
blue=azul
violet=violeta
grey=gris
brown=marrón
Writable Book (@1)=Libro (@1)

View File

@@ -1,13 +1,8 @@
# textdomain: homedecor_books
### init.lua ###
@1 has written in a book (title: "@2"): "@3" at location @4=@1 a écrit dans un livre (titre: "@2"): "@3" à l'emplacement @4
Writable Book (@1)=Livre inscriptible (@1)
blue=bleu
brown=marron
green=vert
grey=vert
red=rouge
green=vert
blue=bleu
violet=violet
grey=vert
brown=marron
Writable Book (@1)=Livre inscriptible (@1)

View File

@@ -1,13 +1,8 @@
# textdomain: homedecor_books
### init.lua ###
@1 has written in a book (title: "@2"): "@3" at location @4=
Writable Book (@1)=Gambe in ottone del tavolo (@1)
blue=blu
brown=
green=verde
grey=verde scuro
red=rosso
green=verde
blue=blu
violet=viola
grey=verde scuro
brown=
Writable Book (@1)=Gambe in ottone del tavolo (@1)

View File

@@ -1,13 +1,8 @@
# textdomain: homedecor_books
### init.lua ###
@1 has written in a book (title: "@2"): "@3" at location @4=@1 telah menulis dalam buku (tajuk: "@2"): "@3" di lokasi @4
Writable Book (@1)=Buku Boleh Ditulis (@1)
blue=Biru
brown=Perang
green=Hijau
grey=Kelabu
red=Merah
green=Hijau
blue=Biru
violet=Ungu
grey=Kelabu
brown=Perang
Writable Book (@1)=Buku Boleh Ditulis (@1)

View File

@@ -1,13 +1,8 @@
# textdomain: homedecor_books
### init.lua ###
@1 has written in a book (title: "@2"): "@3" at location @4=@1 escreveu um livro (título: "@2"): "@3" na localização @4
Writable Book (@1)=Livro que pode ser escrito (@1)
blue=azul
brown=marrom
green=verde
grey=cinza
red=vermelho
green=verde
blue=azul
violet=violeta
grey=cinza
brown=marrom
Writable Book (@1)=Livro que pode ser escrito (@1)

View File

@@ -1,13 +1,8 @@
# textdomain: homedecor_books
### init.lua ###
@1 has written in a book (title: "@2"): "@3" at location @4=@1 escreveu um livro (título: "@2"): "@3" na localização @4
Writable Book (@1)=Livro que pode ser escrito (@1)
blue=azul
brown=marrom
green=verde
grey=cinza
red=vermelho
green=verde
blue=azul
violet=violeta
grey=cinza
brown=marrom
Writable Book (@1)=Livro que pode ser escrito (@1)

View File

@@ -1,13 +1,8 @@
# textdomain: homedecor_books
### init.lua ###
@1 has written in a book (title: "@2"): "@3" at location @4=@1 написал в книге (заголовок: "@2"): "@3" в позиции @4
Writable Book (@1)=Записная книга (@1)
blue=
brown=
green=зелёный
grey=
red=красный
green=зелёный
blue=
violet=
grey=
brown=
Writable Book (@1)=Записная книга (@1)

View File

@@ -1,13 +1,8 @@
# textdomain: homedecor_books
### init.lua ###
@1 has written in a book (title: "@2"): "@3" at location @4=@我在一本书中写过(书名:\@2\\@3\,地点@4
Writable Book (@1)=可写书(@1
blue=蓝色
brown=棕色的
green=绿色
grey=灰色
red=红色
green=绿色
blue=蓝色
violet=紫罗兰
grey=灰色
brown=棕色的
Writable Book (@1)=可写书(@1

View File

@@ -1,13 +1,8 @@
# textdomain: homedecor_books
### init.lua ###
@1 has written in a book (title: "@2"): "@3" at location @4=
Writable Book (@1)=
blue=
brown=
green=
grey=
red=
green=
blue=
violet=
grey=
brown=
Writable Book (@1)=

View File

@@ -1,13 +1,13 @@
-- Nodes that would affect the local temperature e.g. fans, heater, A/C
local S = minetest.get_translator("homedecor_climate_control")
local S = core.get_translator("homedecor_climate_control")
homedecor.register("air_conditioner", {
description = S("Air Conditioner"),
mesh = "homedecor_ac.obj",
tiles = {
"homedecor_ac.png",
homedecor.textures.glass
homedecor.textures.glass.pane
},
groups = { snappy = 3, dig_stone = 3 },
use_texture_alpha = "clip",
@@ -35,22 +35,24 @@ homedecor.register("air_conditioner", {
-- fans
minetest.register_entity(":homedecor:mesh_desk_fan", {
collisionbox = homedecor.nodebox.null,
visual = "mesh",
mesh = "homedecor_desk_fan.b3d",
textures = {"homedecor_desk_fan_uv.png"},
visual_size = {x=10, y=10},
core.register_entity(":homedecor:mesh_desk_fan", {
initial_properties = {
collisionbox = homedecor.nodebox.null,
visual = "mesh",
mesh = "homedecor_desk_fan.b3d",
textures = {"homedecor_desk_fan_uv.png"},
visual_size = {x=10, y=10},
}
})
local add_mesh_desk_fan_entity = function(pos)
local param2 = minetest.get_node(pos).param2
local entity = minetest.add_entity(pos, "homedecor:mesh_desk_fan")
local param2 = core.get_node(pos).param2
local entity = core.add_entity(pos, "homedecor:mesh_desk_fan")
if param2 == 0 then
entity:set_yaw(3.142) -- 180 degrees
elseif minetest.get_node(pos).param2 == 1 then
elseif core.get_node(pos).param2 == 1 then
entity:set_yaw(3.142/2) -- 90 degrees
elseif minetest.get_node(pos).param2 == 3 then
elseif core.get_node(pos).param2 == 3 then
entity:set_yaw((-3.142/2)) -- 270 degrees
else
entity:set_yaw(0)
@@ -71,15 +73,15 @@ homedecor.register("desk_fan", {
inventory_image = "homedecor_desk_fan_inv.png",
wield_image = "homedecor_desk_fan_inv.png",
selection_box = { type = "regular" },
on_rotate = minetest.get_modpath("screwdriver") and screwdriver.disallow or nil,
on_rotate = core.get_modpath("screwdriver") and screwdriver.disallow or nil,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = core.get_meta(pos)
meta:set_string("active", "no")
add_mesh_desk_fan_entity(pos)
end,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local meta = minetest.get_meta(pos)
local entities = minetest.get_objects_inside_radius(pos, 0.1)
local meta = core.get_meta(pos)
local entities = core.get_objects_inside_radius(pos, 0.1)
local entity = entities[1] or add_mesh_desk_fan_entity(pos)
if meta:get_string("active") == "no" then
meta:set_string("active", "yes")
@@ -90,7 +92,7 @@ homedecor.register("desk_fan", {
end
end,
after_dig_node = function(pos)
local entities = minetest.get_objects_inside_radius(pos, 0.1)
local entities = core.get_objects_inside_radius(pos, 0.1)
if entities[1] then entities[1]:remove() end
end,
crafts = {
@@ -124,7 +126,7 @@ homedecor.register("ceiling_fan", {
},
use_texture_alpha = "clip",
groups = { snappy = 3, dig_stone = 3 },
light_source = minetest.LIGHT_MAX-1,
light_source = core.LIGHT_MAX-1,
_sound_def = {
key = "node_sound_glass_defaults",
},
@@ -211,12 +213,12 @@ homedecor.register("radiator", {
})
-- crafting
minetest.register_craftitem(":homedecor:fan_blades", {
core.register_craftitem(":homedecor:fan_blades", {
description = S("Fan blades"),
inventory_image = "homedecor_fan_blades.png"
})
minetest.register_craft( {
core.register_craft( {
output = "homedecor:fan_blades 2",
recipe = {
{ "", "basic_materials:plastic_sheet", "" },

View File

@@ -1,11 +1,7 @@
# textdomain: homedecor_climate_control
### init.lua ###
Air Conditioner=Klimaanlage
Ceiling Fan=Deckenventilator
Desk Fan=Schreibtischventilator
Fan blades=Ventilatorblätter
Radiator heater=Heizkörper
Ceiling Fan=Deckenventilator
Space heater=Heizgerät
Radiator heater=Heizkörper
Fan blades=Ventilatorblätter

View File

@@ -1,11 +1,7 @@
# textdomain: homedecor_climate_control
### init.lua ###
Air Conditioner=Acondicionador de aire
Ceiling Fan=Ventilador de techo
Desk Fan=Ventilador de escritorio
Fan blades=Aspas de ventilador
Radiator heater=Radiador
Ceiling Fan=Ventilador de techo
Space heater=Calentador de espacios
Radiator heater=Radiador
Fan blades=Aspas de ventilador

View File

@@ -1,11 +1,7 @@
# textdomain: homedecor_climate_control
### init.lua ###
Air Conditioner=Climatiseur
Ceiling Fan=Ventilateur (plafonnier)
Desk Fan=Ventilateur de bureau
Fan blades=Pales de ventilateur
Radiator heater=Radiateur
Ceiling Fan=Ventilateur (plafonnier)
Space heater=Chaufferette
Radiator heater=Radiateur
Fan blades=Pales de ventilateur

View File

@@ -1,11 +1,7 @@
# textdomain: homedecor_climate_control
### init.lua ###
Air Conditioner=Pendingin Hawa
Ceiling Fan=Kipas Siling
Desk Fan=Kipas Meja
Fan blades=Bilah Kipas
Radiator heater=Pemanas Radiator
Ceiling Fan=Kipas Siling
Space heater=Pemanas Ruang
Radiator heater=Pemanas Radiator
Fan blades=Bilah Kipas

View File

@@ -1,11 +1,7 @@
# textdomain: homedecor_climate_control
### init.lua ###
Air Conditioner=Ar condicionado
Ceiling Fan=Ventilador de Teto
Desk Fan=Ventilador de Escrivaninha
Fan blades=Pás de ventilador
Radiator heater=Aquecedor de radiador
Ceiling Fan=Ventilador de Teto
Space heater=Aquecedor de ambiente
Radiator heater=Aquecedor de radiador
Fan blades=Pás de ventilador

View File

@@ -1,11 +1,7 @@
# textdomain: homedecor_climate_control
### init.lua ###
Air Conditioner=Ar condicionado
Ceiling Fan=Ventilador de Teto
Desk Fan=Ventilador de Escrivaninha
Fan blades=Pás de ventilador
Radiator heater=Aquecedor de radiador
Ceiling Fan=Ventilador de Teto
Space heater=Aquecedor de ambiente
Radiator heater=Aquecedor de radiador
Fan blades=Pás de ventilador

View File

@@ -1,11 +1,7 @@
# textdomain: homedecor_climate_control
### init.lua ###
Air Conditioner=Кондиционер
Ceiling Fan=Потолочный вентилятор
Desk Fan=Настольный вентилятор
Fan blades=Лопасти вентилятора
Radiator heater=Масленый обогреватель
Ceiling Fan=Потолочный вентилятор
Space heater=Обогреватель
Radiator heater=Масленый обогреватель
Fan blades=Лопасти вентилятора

View File

@@ -1,11 +1,7 @@
# textdomain: homedecor_climate_control
### init.lua ###
Air Conditioner=空调
Ceiling Fan=吊扇
Desk Fan=台扇
Fan blades=风扇叶片
Radiator heater=散热器加热器
Ceiling Fan=吊扇
Space heater=暖气机
Radiator heater=散热器加热器
Fan blades=风扇叶片

View File

@@ -1,11 +1,7 @@
# textdomain: homedecor_climate_control
### init.lua ###
Air Conditioner=
Ceiling Fan=
Desk Fan=
Fan blades=
Radiator heater=
Ceiling Fan=
Space heater=
Radiator heater=
Fan blades=

View File

@@ -1,12 +1,6 @@
local S = minetest.get_translator("homedecor_clocks")
local S = core.get_translator("homedecor_clocks")
local wood
if minetest.get_modpath("default") then
wood = "default_wood.png"
else
wood = "[combine:16x16^[noalpha^[colorize:#563d2d"
end
local wood = homedecor.textures.wood.apple.planks
local plastic_craft = {
output = "homedecor:analog_clock_plastic 2",
@@ -135,7 +129,7 @@ homedecor.register("grandfather_clock", {
description = S("Grandfather Clock"),
mesh = "homedecor_grandfather_clock.obj",
tiles = {
homedecor.textures.glass,
homedecor.textures.glass.pane,
"homedecor_grandfather_clock_face.png",
homedecor.lux_wood,
"homedecor_grandfather_clock_face_edge.png",
@@ -150,7 +144,7 @@ homedecor.register("grandfather_clock", {
key = "node_sound_wood_defaults",
},
expand = { top="placeholder" },
on_rotate = minetest.get_modpath("screwdriver") and screwdriver.rotate_simple or nil,
on_rotate = core.get_modpath("screwdriver") and screwdriver.rotate_simple or nil,
crafts = {
{
recipe = {
@@ -164,5 +158,5 @@ homedecor.register("grandfather_clock", {
-- aliases
minetest.register_alias("homedecor:grandfather_clock_bottom", "homedecor:grandfather_clock")
minetest.register_alias("homedecor:grandfather_clock_top", "air")
core.register_alias("homedecor:grandfather_clock_bottom", "homedecor:grandfather_clock")
core.register_alias("homedecor:grandfather_clock_top", "air")

View File

@@ -1,10 +1,6 @@
# textdomain: homedecor_clocks
### init.lua ###
Alarm clock=Wecker
Digital clock=Digitaluhr
Grandfather Clock=Standuhr
Plastic analog clock=Plastikanaloguhr
Wooden analog clock=Hölzerne Analoguhr
Digital clock=Digitaluhr
Alarm clock=Wecker
Grandfather Clock=Standuhr

View File

@@ -1,10 +1,6 @@
# textdomain: homedecor_clocks
### init.lua ###
Alarm clock=Reloj de alarma
Digital clock=Reloj digital
Grandfather Clock=Reloj de péndulo
Plastic analog clock=Reloj análogo de plástico
Wooden analog clock=Reloj análogo de madera
Digital clock=Reloj digital
Alarm clock=Reloj de alarma
Grandfather Clock=Reloj de péndulo

View File

@@ -1,10 +1,6 @@
# textdomain: homedecor_clocks
### init.lua ###
Alarm clock=Réveil-matin
Digital clock=Horloge numérique
Grandfather Clock=Horloge comtoise
Plastic analog clock=Horloge analogique en plastique
Wooden analog clock=Horloge analogique en bois
Digital clock=Horloge numérique
Alarm clock=Réveil-matin
Grandfather Clock=Horloge comtoise

View File

@@ -1,10 +1,6 @@
# textdomain: homedecor_clocks
### init.lua ###
Alarm clock=Jam Loceng
Digital clock=Jam Digital
Grandfather Clock=Jam Besar Berdiri
Plastic analog clock=Jam Analog Plastik
Wooden analog clock=Jam Analog Kayu
Digital clock=Jam Digital
Alarm clock=Jam Loceng
Grandfather Clock=Jam Besar Berdiri

View File

@@ -1,10 +1,6 @@
# textdomain: homedecor_clocks
### init.lua ###
Alarm clock=Despertador
Digital clock=Relógio digital
Grandfather Clock=Relógio Antigo
Plastic analog clock=Relógio analógico de plástico
Wooden analog clock=Relógio analógico de madeira
Digital clock=Relógio digital
Alarm clock=Despertador
Grandfather Clock=Relógio Antigo

View File

@@ -1,10 +1,6 @@
# textdomain: homedecor_clocks
### init.lua ###
Alarm clock=Despertador
Digital clock=Relógio digital
Grandfather Clock=Relógio Antigo
Plastic analog clock=Relógio analógico de plástico
Wooden analog clock=Relógio analógico de madeira
Digital clock=Relógio digital
Alarm clock=Despertador
Grandfather Clock=Relógio Antigo

View File

@@ -1,10 +1,6 @@
# textdomain: homedecor_clocks
### init.lua ###
Alarm clock=Будильник
Digital clock=Цифровые часы
Grandfather Clock=Дедушкины часы
Plastic analog clock=Пластиковые стрелочные часы
Wooden analog clock=Деревянные стрелочные часы
Digital clock=Цифровые часы
Alarm clock=Будильник
Grandfather Clock=Дедушкины часы

View File

@@ -1,10 +1,6 @@
# textdomain: homedecor_clocks
### init.lua ###
Alarm clock=闹钟
Digital clock=数字时钟
Grandfather Clock=祖父钟
Plastic analog clock=塑料时钟
Wooden analog clock=木钟
Digital clock=数字时钟
Alarm clock=闹钟
Grandfather Clock=祖父钟

View File

@@ -1,10 +1,6 @@
# textdomain: homedecor_clocks
### init.lua ###
Alarm clock=
Digital clock=
Grandfather Clock=
Plastic analog clock=
Wooden analog clock=
Digital clock=
Alarm clock=
Grandfather Clock=

View File

@@ -1,4 +1,4 @@
local S = minetest.get_translator("homedecor_cobweb")
local S = core.get_translator("homedecor_cobweb")
homedecor_cobweb = {}
homedecor.register("cobweb_corner", {
@@ -115,10 +115,10 @@ homedecor.register("cobweb_plantlike", {
-- helper function to rotate the cobweb after it's placed
function homedecor_cobweb.rotate(pos)
local wall_xm = minetest.get_node({ x=pos.x-1, y=pos.y, z=pos.z }).name
local wall_xp = minetest.get_node({ x=pos.x+1, y=pos.y, z=pos.z }).name
local wall_zm = minetest.get_node({ x=pos.x, y=pos.y, z=pos.z-1}).name
local wall_zp = minetest.get_node({ x=pos.x, y=pos.y, z=pos.z+1}).name
local wall_xm = core.get_node({ x=pos.x-1, y=pos.y, z=pos.z }).name
local wall_xp = core.get_node({ x=pos.x+1, y=pos.y, z=pos.z }).name
local wall_zm = core.get_node({ x=pos.x, y=pos.y, z=pos.z-1}).name
local wall_zp = core.get_node({ x=pos.x, y=pos.y, z=pos.z+1}).name
local iswall_xm = (wall_xm ~= "air" and not string.find(wall_xm, "homedecor:cobweb"))
local iswall_xp = (wall_xp ~= "air" and not string.find(wall_xp, "homedecor:cobweb"))
@@ -129,43 +129,43 @@ function homedecor_cobweb.rotate(pos)
if (iswall_xm and iswall_zp and not iswall_xp and not iswall_zm)
or (iswall_xp and iswall_zm and not iswall_xm and not iswall_zp) then
minetest.set_node(pos, {name = "homedecor:cobweb_corner", param2 = 1})
core.set_node(pos, {name = "homedecor:cobweb_corner", param2 = 1})
-- only xm+zm, or only xp+zp means on-ceiling torchlike
elseif (iswall_xm and iswall_zm and not iswall_xp and not iswall_zp)
or (iswall_xp and iswall_zp and not iswall_xm and not iswall_zm) then
minetest.set_node(pos, {name = "homedecor:cobweb_corner", param2 = 0})
core.set_node(pos, {name = "homedecor:cobweb_corner", param2 = 0})
-- only xm+xp means nodebox (not rotated, 0 degrees)
elseif iswall_xm and iswall_xp and not iswall_zm and not iswall_zp then
minetest.set_node(pos, {name = "homedecor:cobweb_centered", param2 = 0})
core.set_node(pos, {name = "homedecor:cobweb_centered", param2 = 0})
-- only zm+zp means nodebox rotated to 90 degrees
elseif iswall_zm and iswall_zp and not iswall_xm and not iswall_xp then
minetest.set_node(pos, {name = "homedecor:cobweb_centered", param2 = 1})
core.set_node(pos, {name = "homedecor:cobweb_centered", param2 = 1})
-- ok, there aren't any simple two-wall corners or opposing walls.
-- Are there any standalone walls?
elseif iswall_xm and not iswall_xp and not iswall_zm and not iswall_zp then
minetest.set_node(pos, {name = "homedecor:cobweb_flat", param2 = 3})
core.set_node(pos, {name = "homedecor:cobweb_flat", param2 = 3})
elseif iswall_xp and not iswall_xm and not iswall_zm and not iswall_zp then
minetest.set_node(pos, {name = "homedecor:cobweb_flat", param2 = 1})
core.set_node(pos, {name = "homedecor:cobweb_flat", param2 = 1})
elseif iswall_zm and not iswall_xm and not iswall_xp and not iswall_zp then
minetest.set_node(pos, {name = "homedecor:cobweb_flat", param2 = 2})
core.set_node(pos, {name = "homedecor:cobweb_flat", param2 = 2})
elseif iswall_zp and not iswall_xm and not iswall_xp and not iswall_zm then
minetest.set_node(pos, {name = "homedecor:cobweb_flat", param2 = 0})
core.set_node(pos, {name = "homedecor:cobweb_flat", param2 = 0})
-- if all else fails, place the plantlike version as a fallback.
else
minetest.set_node(pos, {name = "homedecor:cobweb_plantlike", param2 = 0})
core.set_node(pos, {name = "homedecor:cobweb_plantlike", param2 = 0})
end
end

View File

@@ -1,6 +1,2 @@
# textdomain: homedecor_cobweb
### init.lua ###
Cobweb=Spinnennetz

View File

@@ -1,6 +1,2 @@
# textdomain: homedecor_cobweb
### init.lua ###
Cobweb=Telaraña

View File

@@ -1,6 +1,2 @@
# textdomain: homedecor_cobweb
### init.lua ###
Cobweb=Toile d'araignée

View File

@@ -1,6 +1,2 @@
# textdomain: homedecor_cobweb
### init.lua ###
Cobweb=Sarang Labah-Labah

View File

@@ -1,6 +1,2 @@
# textdomain: homedecor_cobweb
### init.lua ###
Cobweb=Teia de Aranha

View File

@@ -1,6 +1,2 @@
# textdomain: homedecor_cobweb
### init.lua ###
Cobweb=Teia de Aranha

View File

@@ -1,6 +1,2 @@
# textdomain: homedecor_cobweb
### init.lua ###
Cobweb=Паутина

View File

@@ -1,6 +1,2 @@
# textdomain: homedecor_cobweb
### init.lua ###
Cobweb=蛛网

View File

@@ -1,6 +1,2 @@
# textdomain: homedecor_cobweb
### init.lua ###
Cobweb=

View File

@@ -1,28 +1,28 @@
-- crafts for common items that are used by more than one home decor component
local S = minetest.get_translator("homedecor_common")
local S = core.get_translator("homedecor_common")
-- items
minetest.register_craftitem(":homedecor:roof_tile_terracotta", {
core.register_craftitem(":homedecor:roof_tile_terracotta", {
description = S("Terracotta Roof Tile"),
inventory_image = "homedecor_roof_tile_terracotta.png",
})
minetest.register_craftitem(":homedecor:drawer_small", {
core.register_craftitem(":homedecor:drawer_small", {
description = S("Small Wooden Drawer"),
inventory_image = "homedecor_drawer_small.png",
})
-- cooking/fuel
minetest.register_craft({
core.register_craft({
type = "cooking",
output = "homedecor:roof_tile_terracotta",
recipe = "basic_materials:terracotta_base",
})
minetest.register_craft({
core.register_craft({
type = "fuel",
recipe = "homedecor:shingles_wood",
burntime = 30,
@@ -31,7 +31,7 @@ minetest.register_craft({
-- crafing
minetest.register_craft( {
core.register_craft( {
output = "homedecor:shingles_terracotta",
recipe = {
{ "homedecor:roof_tile_terracotta", "homedecor:roof_tile_terracotta"},
@@ -39,14 +39,14 @@ minetest.register_craft( {
},
})
minetest.register_craft( {
core.register_craft( {
output = "homedecor:roof_tile_terracotta 8",
recipe = {
{ "homedecor:shingles_terracotta", "homedecor:shingles_terracotta" }
}
})
minetest.register_craft( {
core.register_craft( {
output = "homedecor:shingles_wood 12",
recipe = {
{ "group:stick", "group:wood"},
@@ -54,7 +54,7 @@ minetest.register_craft( {
},
})
minetest.register_craft( {
core.register_craft( {
output = "homedecor:shingles_wood 12",
recipe = {
{ "group:wood", "group:stick"},
@@ -62,7 +62,7 @@ minetest.register_craft( {
},
})
minetest.register_craft( {
core.register_craft( {
output = "homedecor:shingles_asphalt 6",
recipe = {
{ "building_blocks:gravel_spread", "dye:black", "building_blocks:gravel_spread" },

View File

@@ -1,4 +1,4 @@
local S = minetest.get_translator("homedecor_common")
local S = core.get_translator("homedecor_common")
-- vectors to place one node next to or behind another
@@ -53,19 +53,19 @@ homedecor.wall_fdir_to_fwd = {
}
local placeholder_node = "air"
minetest.register_alias("homedecor:expansion_placeholder", "air")
core.register_alias("homedecor:expansion_placeholder", "air")
--- select which node was pointed at based on it being known, not ignored, buildable_to
-- returns nil if no node could be selected
local function select_node(pointed_thing)
local pos = pointed_thing.under
local node = minetest.get_node_or_nil(pos)
local def = node and minetest.registered_nodes[node.name]
local node = core.get_node_or_nil(pos)
local def = node and core.registered_nodes[node.name]
if not def or not def.buildable_to then
pos = pointed_thing.above
node = minetest.get_node_or_nil(pos)
def = node and minetest.registered_nodes[node.name]
node = core.get_node_or_nil(pos)
def = node and core.registered_nodes[node.name]
end
return def and pos, def
end
@@ -73,9 +73,9 @@ end
--- check if all nodes can and may be build to
local function is_buildable_to(placer_name, ...)
for _, pos in ipairs({...}) do
local node = minetest.get_node_or_nil(pos)
local def = node and minetest.registered_nodes[node.name]
if not (def and def.buildable_to) or minetest.is_protected(pos, placer_name) then
local node = core.get_node_or_nil(pos)
local def = node and core.registered_nodes[node.name]
if not (def and def.buildable_to) or core.is_protected(pos, placer_name) then
return false
end
end
@@ -86,8 +86,8 @@ end
local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2, pointed_thing)
local placer_name = placer:get_player_name() or ""
if is_buildable_to(placer_name, pos, pos2) then
local lfdir = fdir or minetest.dir_to_facedir(placer:get_look_dir())
minetest.set_node(pos, { name = node1, param2 = lfdir })
local lfdir = fdir or core.dir_to_facedir(placer:get_look_dir())
core.set_node(pos, { name = node1, param2 = lfdir })
node2 = node2 or "air" -- this can be used to clear buildable_to nodes even though we are using a multinode mesh
-- do not assume by default, as we still might want to allow overlapping in some cases
local has_facedir = node2 ~= "air"
@@ -95,15 +95,15 @@ local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2, poin
has_facedir = false
node2 = placeholder_node
end
minetest.set_node(pos2, { name = node2, param2 = (has_facedir and lfdir) or nil })
core.set_node(pos2, { name = node2, param2 = (has_facedir and lfdir) or nil })
-- call after_place_node of the placed node if available
local ctrl_node_def = minetest.registered_nodes[node1]
local ctrl_node_def = core.registered_nodes[node1]
if ctrl_node_def and ctrl_node_def.after_place_node then
ctrl_node_def.after_place_node(pos, placer, itemstack, pointed_thing)
end
if not minetest.is_creative_enabled(placer_name) then
if not core.is_creative_enabled(placer_name) then
itemstack:take_item()
end
end
@@ -111,9 +111,9 @@ local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2, poin
end
local function rightclick_pointed_thing(pos, placer, itemstack, pointed_thing)
local node = minetest.get_node_or_nil(pos)
local node = core.get_node_or_nil(pos)
if not node then return false end
local def = minetest.registered_nodes[node.name]
local def = core.registered_nodes[node.name]
if not def or not def.on_rightclick then return false end
return def.on_rightclick(pos, node, placer, itemstack, pointed_thing) or itemstack
end
@@ -144,9 +144,9 @@ function homedecor.stack_wing(itemstack, placer, pointed_thing, node1, node2, no
if not pos then return itemstack end
local forceright = placer:get_player_control()["sneak"]
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
local fdir = core.dir_to_facedir(placer:get_look_dir())
local is_right_wing = node1 == minetest.get_node(
local is_right_wing = node1 == core.get_node(
{
x = pos.x + homedecor.fdir_to_left[fdir+1][1],
y = pos.y,
@@ -166,7 +166,7 @@ function homedecor.stack_sideways(itemstack, placer, pointed_thing, node1, node2
local pos, def = select_node(pointed_thing)
if not pos then return itemstack end
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
local fdir = core.dir_to_facedir(placer:get_look_dir())
local fdir_transform = dir and homedecor.fdir_to_right or homedecor.fdir_to_fwd
local pos2 = { x = pos.x + fdir_transform[fdir+1][1], y=pos.y, z = pos.z + fdir_transform[fdir+1][2] }
@@ -176,7 +176,7 @@ end
function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, trybunks)
local thisnode = minetest.get_node(pos)
local thisnode = core.get_node(pos)
local param2 = thisnode.param2
local fdir = param2 % 8
@@ -184,46 +184,46 @@ function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, trybunks
local fzd = homedecor.wall_fdir_to_fwd[fdir+1][2]
local forwardpos = {x=pos.x+fxd, y=pos.y, z=pos.z+fzd}
local forwardnode = minetest.get_node(forwardpos)
local forwardnode = core.get_node(forwardpos)
local def = minetest.registered_nodes[forwardnode.name]
local def = core.registered_nodes[forwardnode.name]
local placer_name = placer:get_player_name()
if not (def and def.buildable_to) then
minetest.chat_send_player( placer:get_player_name(),
core.chat_send_player( placer:get_player_name(),
S("Not enough room - the space for the headboard is occupied!"))
minetest.set_node(pos, {name = "air"})
core.set_node(pos, {name = "air"})
return true
end
if minetest.is_protected(forwardpos, placer_name) then
minetest.chat_send_player( placer:get_player_name(),
if core.is_protected(forwardpos, placer_name) then
core.chat_send_player( placer:get_player_name(),
S("Someone already owns the spot where the headboard goes."))
return true
end
minetest.set_node(forwardpos, {name = "air"})
core.set_node(forwardpos, {name = "air"})
local lxd = homedecor.wall_fdir_to_left[fdir+1][1]
local lzd = homedecor.wall_fdir_to_left[fdir+1][2]
local leftpos = {x=pos.x+lxd, y=pos.y, z=pos.z+lzd}
local leftnode = minetest.get_node(leftpos)
local leftnode = core.get_node(leftpos)
local rxd = homedecor.wall_fdir_to_right[fdir+1][1]
local rzd = homedecor.wall_fdir_to_right[fdir+1][2]
local rightpos = {x=pos.x+rxd, y=pos.y, z=pos.z+rzd}
local rightnode = minetest.get_node(rightpos)
local rightnode = core.get_node(rightpos)
if leftnode.name == "homedecor:bed_regular" then
local newname = string.gsub(thisnode.name, "_regular", "_kingsize")
minetest.set_node(pos, {name = "air"})
minetest.swap_node(leftpos, { name = newname, param2 = param2})
core.set_node(pos, {name = "air"})
core.swap_node(leftpos, { name = newname, param2 = param2})
elseif rightnode.name == "homedecor:bed_regular" then
local newname = string.gsub(thisnode.name, "_regular", "_kingsize")
minetest.set_node(rightpos, {name = "air"})
minetest.swap_node(pos, { name = newname, param2 = param2})
core.set_node(rightpos, {name = "air"})
core.swap_node(pos, { name = newname, param2 = param2})
end
local toppos = {x=pos.x, y=pos.y+1.0, z=pos.z}
@@ -234,18 +234,18 @@ function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, trybunks
-- local newparam2 = param2 % 8
-- FIXME: is newparam2 a legacy unused variable from a8729575abfbd15cc622b413b71976c9157fbab4?
-- or should this variable be used somewhere?
minetest.swap_node(toppos, { name = thisnode.name, param2 = param2})
minetest.swap_node(pos, { name = newname, param2 = param2})
core.swap_node(toppos, { name = thisnode.name, param2 = param2})
core.swap_node(pos, { name = newname, param2 = param2})
itemstack:take_item()
end
end
function homedecor.unextend_bed(pos)
local bottomnode = minetest.get_node({x=pos.x, y=pos.y-1.0, z=pos.z})
local bottomnode = core.get_node({x=pos.x, y=pos.y-1.0, z=pos.z})
local param2 = bottomnode.param2
if bottomnode.name == "homedecor:bed_extended" then
local newname = string.gsub(bottomnode.name, "_extended", "_regular")
minetest.swap_node({x=pos.x, y=pos.y-1.0, z=pos.z}, { name = newname, param2 = param2})
core.swap_node({x=pos.x, y=pos.y-1.0, z=pos.z}, { name = newname, param2 = param2})
end
end
@@ -256,23 +256,23 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
local pos, _ = select_node(pointed_thing)
if not pos then return itemstack end
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
local fdir = core.dir_to_facedir(placer:get_look_dir())
local meta = itemstack:get_meta()
local pindex = meta:get_int("palette_index")
local abovepos = { x=pos.x, y=pos.y+1, z=pos.z }
local abovenode = minetest.get_node(abovepos)
local abovenode = core.get_node(abovepos)
local adef = minetest.registered_nodes[abovenode.name]
local adef = core.registered_nodes[abovenode.name]
local placer_name = placer:get_player_name()
if not (adef and adef.buildable_to) then
minetest.chat_send_player(placer_name, S("Not enough room - the upper space is occupied!" ))
core.chat_send_player(placer_name, S("Not enough room - the upper space is occupied!" ))
return itemstack
end
if minetest.is_protected(abovepos, placer_name) then
minetest.chat_send_player(placer_name, S("Someone already owns that spot."))
if core.is_protected(abovepos, placer_name) then
core.chat_send_player(placer_name, S("Someone already owns that spot."))
return itemstack
end
@@ -296,18 +296,18 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
local right_fwd_below_pos = { x=pos.x+rxd+fxd, y=pos.y-1, z=pos.z+rzd+fzd }
local left_fwd_below_pos = { x=pos.x+lxd+fxd, y=pos.y-1, z=pos.z+lzd+fzd }
local below_node = minetest.get_node(below_pos)
--local fwd_node = minetest.get_node(fwd_pos)
local left_node = minetest.get_node(left_pos)
local right_node = minetest.get_node(right_pos)
local left_fwd_node = minetest.get_node(left_fwd_pos)
local right_fwd_node = minetest.get_node(right_fwd_pos)
local left_below_node = minetest.get_node({x=left_pos.x, y=left_pos.y-1, z=left_pos.z})
local right_below_node = minetest.get_node({x=right_pos.x, y=right_pos.y-1, z=right_pos.z})
--local right_fwd_above_node = minetest.get_node(right_fwd_above_pos)
--local left_fwd_above_node = minetest.get_node(left_fwd_above_pos)
local right_fwd_below_node = minetest.get_node(right_fwd_below_pos)
local left_fwd_below_node = minetest.get_node(left_fwd_below_pos)
local below_node = core.get_node(below_pos)
--local fwd_node = core.get_node(fwd_pos)
local left_node = core.get_node(left_pos)
local right_node = core.get_node(right_pos)
local left_fwd_node = core.get_node(left_fwd_pos)
local right_fwd_node = core.get_node(right_fwd_pos)
local left_below_node = core.get_node({x=left_pos.x, y=left_pos.y-1, z=left_pos.z})
local right_below_node = core.get_node({x=right_pos.x, y=right_pos.y-1, z=right_pos.z})
--local right_fwd_above_node = core.get_node(right_fwd_above_pos)
--local left_fwd_above_node = core.get_node(left_fwd_above_pos)
local right_fwd_below_node = core.get_node(right_fwd_below_pos)
local left_fwd_below_node = core.get_node(left_fwd_below_pos)
local new_place_name = itemstack:get_name()
@@ -373,7 +373,7 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
end
end
minetest.set_node(pos, {name = new_place_name, param2 = fdir+pindex})
core.set_node(pos, {name = new_place_name, param2 = fdir+pindex})
itemstack:take_item()
return itemstack
end

View File

@@ -1,12 +1,12 @@
-- This code supplies an oven/stove. Basically it's just a copy of the default furnace with different textures.
local S = minetest.get_translator("homedecor_common")
local S = core.get_translator("homedecor_common")
local function swap_node(pos, name)
local node = minetest.get_node(pos)
local node = core.get_node(pos)
if node.name == name then return end
node.name = name
minetest.swap_node(pos, node)
core.swap_node(pos, node)
end
local function make_formspec(furnacedef, percent)
@@ -73,7 +73,7 @@ local function make_tiles(tiles, fmt, active)
end
local furnace_can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local meta = core.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("fuel")
and inv:is_empty("dst")
@@ -91,21 +91,11 @@ function homedecor.register_furnace(name, furnacedef)
local description = furnacedef.description or S("Furnace")
local furnace_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", make_formspec(furnacedef, 0))
meta:set_string("infotext", description)
local inv = meta:get_inventory()
inv:set_size("fuel", 1)
inv:set_size("src", 1)
inv:set_size("dst", furnacedef.output_slots)
end
local furnace_allow_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
local meta = core.get_meta(pos)
local inv = meta:get_inventory()
if listname == "fuel" then
if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
if core.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
if inv:is_empty("src") then
meta:set_string("infotext", S("@1 (empty)", description))
end
@@ -120,11 +110,11 @@ function homedecor.register_furnace(name, furnacedef)
end
end
local furnace_allow_move = function(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
local meta = core.get_meta(pos)
local inv = meta:get_inventory()
local stack = inv:get_stack(from_list, from_index)
if to_list == "fuel" then
if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
if core.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
if inv:is_empty("src") then
meta:set_string("infotext", S("@1 (empty)", description))
end
@@ -139,6 +129,191 @@ function homedecor.register_furnace(name, furnacedef)
end
end
local n_active = name.."_active"
local nname, name_active = "homedecor:"..name, "homedecor:"..n_active
local function furnace_node_timer(pos, elapsed)
--
-- Initialize metadata
--
local meta = core.get_meta(pos)
local fuel_time = meta:get_float("fuel_time") or 0
local src_time = meta:get_float("src_time") or 0
local fuel_totaltime = meta:get_float("fuel_totaltime") or 0
local inv = meta:get_inventory()
local srclist, fuellist
local dst_full = false
local timer_elapsed = meta:get_int("timer_elapsed") or 0
meta:set_int("timer_elapsed", timer_elapsed + 1)
local cookable, cooked
local fuel
local update = true
while elapsed > 0 and update do
update = false
srclist = inv:get_list("src")
fuellist = inv:get_list("fuel")
--
-- Cooking
--
-- Check if we have cookable content
local aftercooked
cooked, aftercooked = core.get_craft_result({method = "cooking", width = 1, items = srclist})
cookable = cooked.time ~= 0
local el = math.min(elapsed, fuel_totaltime - fuel_time)
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
if fuel_time < fuel_totaltime then
-- The furnace is currently active and has enough fuel
fuel_time = fuel_time + el
-- If there is a cookable item then check if it is ready yet
if cookable then
src_time = src_time + el
if src_time >= cooked.time then
-- Place result in dst list if possible
if inv:room_for_item("dst", cooked.item) then
inv:add_item("dst", cooked.item)
inv:set_stack("src", 1, aftercooked.items[1])
src_time = src_time - cooked.time
update = true
else
dst_full = true
end
else
-- Item could not be cooked: probably missing fuel
update = true
end
end
else
-- Furnace ran out of fuel
if cookable then
-- We need to get new fuel
local afterfuel
fuel, afterfuel = core.get_craft_result({method = "fuel", width = 1, items = fuellist})
if fuel.time == 0 then
-- No valid fuel in fuel list
fuel_totaltime = 0
src_time = 0
else
-- prevent blocking of fuel inventory (for automatization mods)
local is_fuel = core.get_craft_result({method = "fuel", width = 1, items = {afterfuel.items[1]:to_string()}})
if is_fuel.time == 0 then
table.insert(fuel.replacements, afterfuel.items[1])
inv:set_stack("fuel", 1, "")
else
-- Take fuel from fuel list
inv:set_stack("fuel", 1, afterfuel.items[1])
end
-- Put replacements in dst list or drop them on the furnace.
local replacements = fuel.replacements
if replacements[1] then
local leftover = inv:add_item("dst", replacements[1])
if not leftover:is_empty() then
local above = vector.new(pos.x, pos.y + 1, pos.z)
local drop_pos = core.find_node_near(above, 1, {"air"}) or above
core.item_drop(replacements[1], nil, drop_pos)
end
end
update = true
fuel_totaltime = fuel.time + (fuel_totaltime - fuel_time)
end
else
-- We don't need to get new fuel since there is no cookable item
fuel_totaltime = 0
src_time = 0
end
fuel_time = 0
end
elapsed = elapsed - 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, infotext and node
--
local formspec
local infotext
local percent = math.floor(fuel_time / fuel_totaltime * 100)
local result = false
local node = core.get_node(pos)
local locked = node.name:find("_locked$") and "_locked" or ""
local desc = core.registered_nodes[nname..locked].description
if fuel_totaltime ~= 0 then
formspec = make_formspec(furnacedef, percent)
swap_node(pos, name_active .. locked)
-- make sure timer restarts automatically
result = true
else
formspec = make_formspec(furnacedef, 0)
infotext = S("@1 (out of fuel)", desc)
swap_node(pos, nname .. locked)
-- stop timer on the inactive furnace
core.get_node_timer(pos):stop()
meta:set_int("timer_elapsed", 0)
end
if not cookable and fuellist and not fuellist[1]:is_empty() then
infotext = S("@1 (empty)", desc)
end
if dst_full then
infotext = S("@1 (output bins are full)", desc)
result = false
formspec = make_formspec(furnacedef, 0)
swap_node(pos, nname .. locked)
-- stop timer on the inactive furnace
core.get_node_timer(pos):stop()
meta:set_int("timer_elapsed", 0)
fuel_totaltime, fuel_time, src_time = 0, 0, 0
end
if infotext == nil then
infotext = S("@1 (active: @2%)", desc, percent)
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)
meta:set_string("formspec", formspec)
meta:set_string("infotext", infotext)
return result
end
local furnace_construct = function(pos)
local meta = core.get_meta(pos)
local inv = meta:get_inventory()
inv:set_size("fuel", 1)
inv:set_size("src", 1)
inv:set_size("dst", furnacedef.output_slots)
furnace_node_timer(pos, 0)
end
local def = {
description = description,
tiles = make_tiles(furnacedef.tiles, furnacedef.tile_format, false),
@@ -152,7 +327,19 @@ function homedecor.register_furnace(name, furnacedef)
allow_metadata_inventory_put = furnace_allow_put,
allow_metadata_inventory_move = furnace_allow_move,
inventory = { lockable = true },
is_furnace = true
is_furnace = true,
on_timer = furnace_node_timer,
on_metadata_inventory_move = function(pos)
core.get_node_timer(pos):start(1.0)
end,
on_metadata_inventory_put = function(pos)
-- start timer function, it will sort out whether furnace can burn or not.
core.get_node_timer(pos):start(1.0)
end,
on_metadata_inventory_take = function(pos)
-- check whether the furnace is empty or not.
core.get_node_timer(pos):start(1.0)
end
}
local def_active = {
@@ -170,7 +357,19 @@ function homedecor.register_furnace(name, furnacedef)
allow_metadata_inventory_put = furnace_allow_put,
allow_metadata_inventory_move = furnace_allow_move,
inventory = { lockable = true },
is_furnace = true
is_furnace = true,
on_timer = furnace_node_timer,
on_metadata_inventory_move = function(pos)
core.get_node_timer(pos):start(1.0)
end,
on_metadata_inventory_put = function(pos)
-- start timer function, it will sort out whether furnace can burn or not.
core.get_node_timer(pos):start(1.0)
end,
on_metadata_inventory_take = function(pos)
-- check whether the furnace is empty or not.
core.get_node_timer(pos):start(1.0)
end
}
if furnacedef.extra_nodedef_fields then
@@ -180,113 +379,6 @@ function homedecor.register_furnace(name, furnacedef)
end
end
local n_active = name.."_active"
homedecor.register(name, def)
homedecor.register(n_active, def_active)
local nname, name_active = "homedecor:"..name, "homedecor:"..n_active
minetest.register_abm({
nodenames = {nname, name_active, nname.."_locked", name_active.."_locked"},
label = "furnaces",
interval = 1.0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local meta = minetest.get_meta(pos)
for i, pname in ipairs({
"fuel_totaltime",
"fuel_time",
"src_totaltime",
"src_time"
}) do
if meta:get_string(pname) == "" then
meta:set_float(pname, 0.0)
end
end
local inv = meta:get_inventory()
local srclist = inv:get_list("src")
local cooked = nil
local aftercooked
if srclist then
cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
end
local was_active = false
if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
was_active = true
meta:set_float("fuel_time", meta:get_float("fuel_time") + 1)
meta:set_float("src_time", meta:get_float("src_time") + furnacedef.cook_speed)
if cooked and cooked.item and meta:get_float("src_time") >= cooked.time then
-- check if there's room for output in "dst" list
if inv:room_for_item("dst",cooked.item) then
-- Put result in "dst" list
inv:add_item("dst", cooked.item)
-- take stuff from "src" list
inv:set_stack("src", 1, aftercooked.items[1])
end
meta:set_string("src_time", 0)
end
end
-- XXX: Quick patch, make it better in the future.
local locked = node.name:find("_locked$") and "_locked" or ""
local desc = minetest.registered_nodes[nname..locked].description
if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
local percent = math.floor(meta:get_float("fuel_time") /
meta:get_float("fuel_totaltime") * 100)
meta:set_string("infotext", S("@1 (active: @2%)", desc, percent))
swap_node(pos,name_active..locked)
meta:set_string("formspec", make_formspec(furnacedef, percent))
return
end
local fuel = nil
local afterfuel
cooked = nil
local fuellist = inv:get_list("fuel")
srclist = inv:get_list("src")
if srclist then
cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
end
if fuellist then
fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
end
if (not fuel) or (fuel.time <= 0) then
meta:set_string("infotext", S("@1 (out of fuel)", desc))
swap_node(pos, nname..locked)
meta:set_string("formspec", make_formspec(furnacedef, 0))
return
end
if cooked.item:is_empty() then
if was_active then
meta:set_string("infotext", S("@1 (empty)", desc))
swap_node(pos, nname..locked)
meta:set_string("formspec", make_formspec(furnacedef, 0))
end
return
end
if not inv:room_for_item("dst", cooked.item) then
meta:set_string("infotext", S("@1 (output bins are full)", desc))
swap_node(pos, nname..locked)
meta:set_string("formspec", make_formspec(furnacedef, 0))
return
end
meta:set_string("fuel_totaltime", fuel.time)
meta:set_string("fuel_time", 0)
inv:set_stack("fuel", 1, afterfuel.items[1])
end,
})
end

View File

@@ -1,7 +1,7 @@
-- Home Decor API/functions, and common textures and models
-- by VanessaE
local modpath = minetest.get_modpath("homedecor_common")
local modpath = core.get_modpath("homedecor_common")
homedecor = {}
homedecor.modpath = modpath
@@ -54,17 +54,15 @@ homedecor.color_dark_grey = 0xff606060
homedecor.color_med_grey = 0xffa0a0a0
-- load different handler subsystems
dofile(modpath.."/textures.lua")
dofile(modpath.."/materials.lua")
dofile(modpath.."/xcompat.lua")
dofile(modpath.."/nodeboxes.lua")
dofile(modpath.."/expansion.lua")
dofile(modpath.."/furnaces.lua")
dofile(modpath.."/inventory.lua")
dofile(modpath.."/registration.lua")
dofile(modpath.."/water_particles.lua")
dofile(modpath.."/sit.lua")
dofile(modpath.."/crafts.lua")
if minetest.settings:get_bool("log_mod") then
minetest.log("action", "[HomeDecor API] Loaded!")
if core.settings:get_bool("log_mod") then
core.log("action", "[HomeDecor API] Loaded!")
end

View File

@@ -1,6 +1,6 @@
local S = minetest.get_translator("homedecor_common")
local S = core.get_translator("homedecor_common")
local has_hopper = minetest.get_modpath("hopper")
local has_hopper = core.get_modpath("hopper")
local has_safe_hopper = has_hopper and
-- mod from https://github.com/minetest-mods/hopper respects the owner
(hopper.neighbors or
@@ -8,10 +8,11 @@ local has_safe_hopper = has_hopper and
(hopper.version and hopper.version >= "20220123"))
local default_can_dig = function(pos,player)
local meta = minetest.get_meta(pos)
local meta = core.get_meta(pos)
return meta:get_inventory():is_empty("main")
end
local default_can_interact_with_node = xcompat.functions.can_interact_with_node
local default_inventory_formspecs = {
["4"]="size[8,6]"..
@@ -81,7 +82,7 @@ function homedecor.handle_inventory(name, def, original_def)
local on_construct = def.on_construct
def.on_construct = function(pos)
local size = inventory.size
local meta = minetest.get_meta(pos)
local meta = core.get_meta(pos)
meta:get_inventory():set_size("main", size)
meta:set_string("formspec", inventory.formspec or get_formspec_by_size(size))
if on_construct then on_construct(pos) end
@@ -91,15 +92,15 @@ function homedecor.handle_inventory(name, def, original_def)
def.can_dig = def.can_dig or default_can_dig
def.on_metadata_inventory_move = def.on_metadata_inventory_move or
function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", player:get_player_name().." moves stuff in "..name.." at "..minetest.pos_to_string(pos))
core.log("action", player:get_player_name().." moves stuff in "..name.." at "..core.pos_to_string(pos))
end
def.on_metadata_inventory_put = def.on_metadata_inventory_put or function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name().." moves "..stack:get_name()
.." to "..name.." at "..minetest.pos_to_string(pos))
core.log("action", player:get_player_name().." moves "..stack:get_name()
.." to "..name.." at "..core.pos_to_string(pos))
end
def.on_metadata_inventory_take = def.on_metadata_inventory_take or function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name().." takes "..stack:get_name()
.." from "..name.." at "..minetest.pos_to_string(pos))
core.log("action", player:get_player_name().." takes "..stack:get_name()
.." from "..name.." at "..core.pos_to_string(pos))
end
local locked = inventory.locked
@@ -123,7 +124,7 @@ function homedecor.handle_inventory(name, def, original_def)
if locked then
local after_place_node = def.after_place_node
def.after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
local meta = core.get_meta(pos)
local owner = placer:get_player_name() or ""
meta:set_string("owner", owner)
@@ -133,9 +134,9 @@ function homedecor.handle_inventory(name, def, original_def)
local allow_move = def.allow_metadata_inventory_move
def.allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
if not default.can_interact_with_node(player, pos) then
minetest.log("action", player:get_player_name().." tried to access a "..name.." belonging to "
..minetest.get_meta(pos):get_string("owner").." at "..minetest.pos_to_string(pos))
if not default_can_interact_with_node(player, pos) then
core.log("action", player:get_player_name().." tried to access a "..name.." belonging to "
..core.get_meta(pos):get_string("owner").." at "..core.pos_to_string(pos))
return 0
end
return allow_move and allow_move(pos, from_list, from_index, to_list, to_index, count, player) or
@@ -144,9 +145,9 @@ function homedecor.handle_inventory(name, def, original_def)
local allow_put = def.allow_metadata_inventory_put
def.allow_metadata_inventory_put = function(pos, listname, index, stack, player)
if not default.can_interact_with_node(player, pos) then
minetest.log("action", player:get_player_name().." tried to access a "..name.." belonging to"
..minetest.get_meta(pos):get_string("owner").." at "..minetest.pos_to_string(pos))
if not default_can_interact_with_node(player, pos) then
core.log("action", player:get_player_name().." tried to access a "..name.." belonging to"
..core.get_meta(pos):get_string("owner").." at "..core.pos_to_string(pos))
return 0
end
return allow_put and allow_put(pos, listname, index, stack, player) or
@@ -155,9 +156,9 @@ function homedecor.handle_inventory(name, def, original_def)
local allow_take = def.allow_metadata_inventory_take
def.allow_metadata_inventory_take = function(pos, listname, index, stack, player)
if not default.can_interact_with_node(player, pos) then
minetest.log("action", player:get_player_name().." tried to access a "..name.." belonging to"
..minetest.get_meta(pos):get_string("owner").." at ".. minetest.pos_to_string(pos))
if not default_can_interact_with_node(player, pos) then
core.log("action", player:get_player_name().." tried to access a "..name.." belonging to"
..core.get_meta(pos):get_string("owner").." at ".. core.pos_to_string(pos))
return 0
end
return allow_take and allow_take(pos, listname, index, stack, player) or
@@ -166,11 +167,11 @@ function homedecor.handle_inventory(name, def, original_def)
local can_dig = def.can_dig or default_can_dig
def.can_dig = function(pos, player)
return default.can_interact_with_node(player, pos) and (can_dig and can_dig(pos, player) == true)
return default_can_interact_with_node(player, pos) and (can_dig and can_dig(pos, player) == true)
end
def.on_key_use = function(pos, player)
local secret = minetest.get_meta(pos):get_string("key_lock_secret")
local secret = core.get_meta(pos):get_string("key_lock_secret")
local itemstack = player:get_wielded_item()
local key_meta = itemstack:get_meta()
@@ -178,21 +179,21 @@ function homedecor.handle_inventory(name, def, original_def)
return
end
minetest.show_formspec(
core.show_formspec(
player:get_player_name(),
name.."_locked",
minetest.get_meta(pos):get_string("formspec")
core.get_meta(pos):get_string("formspec")
)
end
def.on_skeleton_key_use = function(pos, player, newsecret)
local meta = minetest.get_meta(pos)
local meta = core.get_meta(pos)
local owner = meta:get_string("owner")
local playername = player:get_player_name()
-- verify placer is owner
if owner ~= playername then
minetest.record_protection_violation(pos, playername)
core.record_protection_violation(pos, playername)
return nil
end
@@ -217,7 +218,7 @@ function homedecor.handle_inventory(name, def, original_def)
local locked_name = name .. "_locked"
homedecor.register(locked_name, locked_def)
minetest.register_craft({
core.register_craft({
type = "shapeless",
output = "homedecor:" .. locked_name,
recipe = { "homedecor:" .. name, "basic_materials:padlock" }

View File

@@ -1,28 +1,15 @@
# textdomain: homedecor_common
### crafts.lua ###
Small Wooden Drawer=Kleine Holzschublade
Terracotta Roof Tile=Terrakottadachziegel
### expansion.lua ###
Small Wooden Drawer=Kleine Holzschublade
Not enough room - the space for the headboard is occupied!=Nicht genügeng Platz Der Platz für das Kopfende ist belegt!
Someone already owns the spot where the headboard goes.=Jemanden gehört schon der Platz, wo das Kopfende hingehen würde.
Not enough room - the upper space is occupied!=Nicht genügend Platz der obere Teil ist belegt!
Someone already owns that spot.=Jemanden gehört diese Stelle schon.
Someone already owns the spot where the headboard goes.=Jemanden gehört schon der Platz, wo das Kopfende hingehen würde.
### furnaces.lua ###
@1 (active)=@1 (aktiv)
@1 (active: @2%)=@1 (aktiv: @2%)
Furnace=Ofen
@1 (empty)=@1 (leer)
@1 (out of fuel)=@1 (kein Brennmaterial vorhanden)
@1 (output bins are full)=@1 (Ausgabe ist voll)
Furnace=Ofen
### inventory.lua ###
@1 (Locked)=@1 (abgeschlossen)
@1 (active: @2%)=@1 (aktiv: @2%)
@1 (active)=@1 (aktiv)
@1 (owned by @2)=@1 (gehört @2)
@1 (Locked)=@1 (abgeschlossen)

View File

@@ -1,28 +1,15 @@
# textdomain: homedecor_common
### crafts.lua ###
Small Wooden Drawer=Cajón de madera pequeño
Terracotta Roof Tile=Tejado de terracota
### expansion.lua ###
Small Wooden Drawer=Cajón de madera pequeño
Not enough room - the space for the headboard is occupied!=No hay suficiente espacio - ¡El espacio para la cabecera está ocupado!
Someone already owns the spot where the headboard goes.=Alguien ya es dueño del lugar donde va la cabecera.
Not enough room - the upper space is occupied!=No hay suficiente espacio - ¡El espacio de encima está ocupado!
Someone already owns that spot.=Alguien ya es dueño de ese lugar.
Someone already owns the spot where the headboard goes.=Alguien ya es dueño del lugar donde va la cabecera.
### furnaces.lua ###
@1 (active)=@1 (activo)
@1 (active: @2%)=@1 (activo: @2%)
Furnace=Horno
@1 (empty)=@1 (vacía)
@1 (out of fuel)=@1 (sin combustible)
@1 (output bins are full)=@1 (ranuras de salida llenas)
Furnace=Horno
### inventory.lua ###
@1 (Locked)=@1 (Cerrado)
@1 (active: @2%)=@1 (activo: @2%)
@1 (active)=@1 (activo)
@1 (owned by @2)=@1 (propiedad de @2)
@1 (Locked)=@1 (Cerrado)

View File

@@ -1,28 +1,15 @@
# textdomain: homedecor_common
### crafts.lua ###
Small Wooden Drawer=Petit tiroir en bois
Terracotta Roof Tile=Tuile en terre cuite
### expansion.lua ###
Small Wooden Drawer=Petit tiroir en bois
Not enough room - the space for the headboard is occupied!=Pas assez de place - l'espace pour la tête de lit est occupé !
Someone already owns the spot where the headboard goes.=Quelqu'un possède déjà l'endroit où doit aller la tête de lit.
Not enough room - the upper space is occupied!=Pas assez de place - l'espace en haut est occupé !
Someone already owns that spot.=Quelqu'un est déjà propriétaire de cette zone.
Someone already owns the spot where the headboard goes.=Quelqu'un possède déjà l'endroit où doit aller la tête de lit.
### furnaces.lua ###
@1 (active)=@1 (actif)
@1 (active: @2%)=@1 (actif : @2%)
Furnace=Fourneau
@1 (empty)=@1 (vide)
@1 (out of fuel)=@1 (pas de combustible)
@1 (output bins are full)=@1 (les réceptacles de sortie sont pleins)
Furnace=Fourneau
### inventory.lua ###
@1 (Locked)=@1 (verrouillé)
@1 (active: @2%)=@1 (actif : @2%)
@1 (active)=@1 (actif)
@1 (owned by @2)=@1 (propriété de @2)
@1 (Locked)=@1 (verrouillé)

View File

@@ -1,28 +1,15 @@
# textdomain: homedecor_common
### crafts.lua ###
Small Wooden Drawer=Bauletto in legno
Terracotta Roof Tile=Tegole di terracotta
### expansion.lua ###
Small Wooden Drawer=Bauletto in legno
Not enough room - the space for the headboard is occupied!=
Not enough room - the upper space is occupied!=
Someone already owns that spot.=Spiacente, quel punto è di proprietà di %s.
Someone already owns the spot where the headboard goes.=
### furnaces.lua ###
@1 (active)=
@1 (active: @2%)=
@1 (empty)=
@1 (out of fuel)=Senza combustibile
@1 (output bins are full)=i contenitori sono pieni
Not enough room - the upper space is occupied!=
Someone already owns that spot.=
Furnace=
### inventory.lua ###
@1 (Locked)=%s (Con lucchetto)
@1 (owned by @2)=%s (di proprietà di %s)
@1 (empty)=
@1 (out of fuel)=@1 (Senza combustibile)
@1 (output bins are full)=@1 (i contenitori sono pieni)
@1 (active: @2%)=
@1 (active)=
@1 (owned by @2)=@1 (di proprietà di @2)
@1 (Locked)=@1 (Con lucchetto)

View File

@@ -1,28 +1,15 @@
# textdomain: homedecor_common
### crafts.lua ###
Small Wooden Drawer=Laci Kayu Kecil
Terracotta Roof Tile=Genting Bumbung Terracotta
### expansion.lua ###
Small Wooden Drawer=Laci Kayu Kecil
Not enough room - the space for the headboard is occupied!=Tidak cukup ruang - ada barang di kawasan untuk letak kepala katil!
Someone already owns the spot where the headboard goes.=Tempat untuk letak kepala katil itu kawasan kepunyaan orang lain.
Not enough room - the upper space is occupied!=Tidak cukup ruang - ada barang di kawasan atas!
Someone already owns that spot.=Kawasan itu kepunyaan orang lain.
Someone already owns the spot where the headboard goes.=Tempat untuk letak kepala katil itu kawasan kepunyaan orang lain.
### furnaces.lua ###
@1 (active)=@1 (aktif)
@1 (active: @2%)=@1 (aktif: @2)
Furnace=Relau
@1 (empty)=@1 (kosong)
@1 (out of fuel)=@1 (kehabisan bahan api)
@1 (output bins are full)=@1 (dulang keluar penuh)
Furnace=Relau
### inventory.lua ###
@1 (Locked)=@1 (Berkunci)
@1 (active: @2%)=@1 (aktif: @2)
@1 (active)=@1 (aktif)
@1 (owned by @2)=@1 (hak milik @2)
@1 (Locked)=@1 (Berkunci)

Some files were not shown because too many files have changed in this diff Show More