From ff755eed9cc8c003d48b838e3ea3696286490c02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Douglas=20da=20Silva=20Souza?= <44056294+JoseDouglas26@users.noreply.github.com> Date: Fri, 22 Dec 2023 19:51:14 -0300 Subject: [PATCH 01/36] Add brazilian portuguese translation for butterflies (#3085) --- mods/butterflies/locale/butterflies.pt_BR.tr | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/butterflies/locale/butterflies.pt_BR.tr b/mods/butterflies/locale/butterflies.pt_BR.tr index d89503aa..af3539e1 100644 --- a/mods/butterflies/locale/butterflies.pt_BR.tr +++ b/mods/butterflies/locale/butterflies.pt_BR.tr @@ -1,4 +1,4 @@ # textdomain: butterflies -White Butterfly= -Red Butterfly= -Violet Butterfly= +White Butterfly=Borboleta Branca +Red Butterfly=Borboleta Vermelha +Violet Butterfly=Borboleta Violeta From 43185f19e386af3b7a0831fc8e7417d0e54544e7 Mon Sep 17 00:00:00 2001 From: Mantar Date: Sun, 24 Dec 2023 04:41:26 -0800 Subject: [PATCH 02/36] Bed bugfix: Remove "reverse" toggle in favor of swap_node/set_node combo (#2976) --- mods/beds/api.lua | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/mods/beds/api.lua b/mods/beds/api.lua index 8af13ddd..ea3149a6 100644 --- a/mods/beds/api.lua +++ b/mods/beds/api.lua @@ -1,6 +1,4 @@ -local reverse = true - local function destruct_bed(pos, n) local node = minetest.get_node(pos) local other @@ -12,15 +10,14 @@ local function destruct_bed(pos, n) local dir = minetest.facedir_to_dir(node.param2) other = vector.add(pos, dir) end - - if reverse then - reverse = not reverse - minetest.remove_node(other) - minetest.check_for_falling(other) - beds.remove_spawns_at(pos) - beds.remove_spawns_at(other) - else - reverse = not reverse + local oname = minetest.get_node(other).name + if minetest.get_item_group(oname, "bed") ~= 0 then + -- Swap node leaves meta, but doesn't call destruct_bed again + minetest.swap_node(other, {name = "air"}) + minetest.remove_node(other) -- Now clear the meta + minetest.check_for_falling(other) + beds.remove_spawns_at(pos) + beds.remove_spawns_at(other) end end From c0200b0a01aac7c12a9b686694dbfcda873e20c0 Mon Sep 17 00:00:00 2001 From: David Leal Date: Sat, 30 Dec 2023 04:29:10 -0600 Subject: [PATCH 03/36] Use a faster and newer LuaCheck (#3081) --- .github/workflows/build.yml | 16 ---------------- .github/workflows/luacheck.yml | 13 +++++++++++++ 2 files changed, 13 insertions(+), 16 deletions(-) delete mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/luacheck.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index fea960c1..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: build -on: [push, pull_request] - -jobs: - luacheck: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Install Luarocks - run: | - sudo apt-get update -qyy - sudo apt-get install luarocks -qyy - - name: Install Luacheck - run: luarocks install --local luacheck - - name: Run Luacheck - run: $HOME/.luarocks/bin/luacheck mods diff --git a/.github/workflows/luacheck.yml b/.github/workflows/luacheck.yml new file mode 100644 index 00000000..08712a7c --- /dev/null +++ b/.github/workflows/luacheck.yml @@ -0,0 +1,13 @@ +name: luacheck +on: [push, pull_request] + +jobs: + luacheck: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Luacheck + uses: lunarmodules/luacheck@master + with: + args: mods From e9676fa6320ccfc7f403ccedb9772d5fb9efbaa7 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 30 Dec 2023 11:30:46 +0100 Subject: [PATCH 04/36] Make cloud parameters deterministic across sessions --- mods/weather/init.lua | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/mods/weather/init.lua b/mods/weather/init.lua index 0214af27..7d6d9484 100644 --- a/mods/weather/init.lua +++ b/mods/weather/init.lua @@ -76,13 +76,21 @@ local function rangelim(value, lower, upper) return math.min(math.max(value, lower), upper) end -local os_time_0 = os.time() -local t_offset = math.random(0, 300000) +local t_offset +do + local meta = minetest.get_mod_storage() + if meta:contains("time_offset") then + t_offset = meta:get_int("time_offset") + else + -- Use random offset so not each new world behaves the same. + t_offset = math.random(0, 300000) + meta:set_int("time_offset", t_offset) + end +end local function update_clouds() - -- Time in seconds. - -- Add random time offset to avoid identical behaviour each server session. - local time = os.difftime(os.time(), os_time_0) - t_offset + -- Adjusted time in seconds + local time = math.floor(minetest.get_gametime() - t_offset) nobj_density = nobj_density or minetest.get_perlin(np_density) nobj_thickness = nobj_thickness or minetest.get_perlin(np_thickness) @@ -103,10 +111,10 @@ local function update_clouds() -- density_max = 0.8 at humid = 50. -- density_max = 1.35 at humid = 100. local density_max = 0.8 + ((humid - 50) / 50) * 0.55 + -- Range limit density_max to always have occasional + -- small scattered clouds at extreme low humidity. local density = rangelim(density_max, 0.2, 1.0) * n_density player:set_clouds({ - -- Range limit density_max to always have occasional - -- small scattered clouds at extreme low humidity. density = density, thickness = math.max(math.floor( rangelim(32 * humid / 100, 8, 32) * n_thickness From a3b171e317ec63428975915b821eb438c313adef Mon Sep 17 00:00:00 2001 From: Uwuewsky <99945024+Uwuewsky@users.noreply.github.com> Date: Sat, 30 Dec 2023 18:32:05 +0800 Subject: [PATCH 05/36] Update Russian translation (#3058) --- mods/beds/locale/beds.ru.tr | 6 +- mods/binoculars/locale/binoculars.ru.tr | 2 +- mods/bones/locale/bones.ru.tr | 10 +- mods/bucket/locale/bucket.ru.tr | 8 +- mods/butterflies/locale/butterflies.ru.tr | 6 +- mods/carts/locale/carts.ru.tr | 2 +- mods/creative/locale/creative.ru.tr | 2 +- mods/default/locale/default.ru.tr | 353 +++++++++--------- mods/doors/locale/doors.ru.tr | 30 +- mods/dye/locale/dye.ru.tr | 30 +- mods/farming/locale/farming.ru.tr | 44 +-- mods/fire/locale/fire.ru.tr | 9 +- mods/fireflies/locale/fireflies.ru.tr | 6 +- mods/flowers/locale/flowers.ru.tr | 20 +- mods/game_commands/locale/game_commands.ru.tr | 2 +- mods/keys/locale/keys.ru.tr | 2 +- mods/map/locale/map.ru.tr | 2 +- .../locale/mtg_craftguide.ru.tr | 38 +- mods/screwdriver/locale/screwdriver.ru.tr | 2 +- mods/sethome/locale/sethome.ru.tr | 2 +- mods/stairs/locale/stairs.ru.tr | 288 +++++++------- mods/tnt/locale/tnt.ru.tr | 4 +- mods/vessels/locale/vessels.ru.tr | 14 +- mods/walls/locale/walls.ru.tr | 6 +- mods/wool/locale/wool.ru.tr | 30 +- mods/xpanes/locale/xpanes.ru.tr | 10 +- 26 files changed, 454 insertions(+), 474 deletions(-) diff --git a/mods/beds/locale/beds.ru.tr b/mods/beds/locale/beds.ru.tr index 73db735c..7c1b5368 100644 --- a/mods/beds/locale/beds.ru.tr +++ b/mods/beds/locale/beds.ru.tr @@ -1,8 +1,8 @@ # textdomain: beds -Fancy Bed=Детализированная Кровать -Simple Bed=Обычная Кровать +Fancy Bed=Красивая кровать +Simple Bed=Простая кровать This bed is already occupied!=Эта кровать уже занята! -You have to stop moving before going to bed!=Нельзя воспользоваться кроватью на ходу! +You have to stop moving before going to bed!=Вам нужно перестать двигаться чтобы лечь! Good morning.=Доброе утро. @1 of @2 players are in bed=@1 из @2 игроков в кровати Force night skip=Пропустить ночь diff --git a/mods/binoculars/locale/binoculars.ru.tr b/mods/binoculars/locale/binoculars.ru.tr index 6b3aa9e8..6825f27f 100644 --- a/mods/binoculars/locale/binoculars.ru.tr +++ b/mods/binoculars/locale/binoculars.ru.tr @@ -1,3 +1,3 @@ # textdomain: binoculars Binoculars=Бинокль -Use with 'Zoom' key=Используется с привилегией 'Zoom' +Use with 'Zoom' key=Используется клавишей 'Приближение' diff --git a/mods/bones/locale/bones.ru.tr b/mods/bones/locale/bones.ru.tr index 98691c53..0bc5eaf2 100644 --- a/mods/bones/locale/bones.ru.tr +++ b/mods/bones/locale/bones.ru.tr @@ -1,8 +1,8 @@ # textdomain: bones Bones=Кости @1's old bones=Старые кости @1 -@1 died at @2.=@1 умер в @2. -@1 died at @2, and dropped their inventory.=@1 умер в @2 и потерял содержимое своего инвентаря. -@1 died at @2, and bones were placed.=@1 умер в @2, помещены кости. -@1's fresh bones=новые кости @1 -@1's bones=кости @1 +@1 died at @2.=Игрок @1 умер в @2. +@1 died at @2, and dropped their inventory.=Игрок @1 умер в @2 и потерял содержимое своего инвентаря. +@1 died at @2, and bones were placed.=Игрок @1 умер в @2, кости размещены. +@1's fresh bones=Новые кости @1 +@1's bones=Кости @1 diff --git a/mods/bucket/locale/bucket.ru.tr b/mods/bucket/locale/bucket.ru.tr index 8ede2804..080ebfc5 100644 --- a/mods/bucket/locale/bucket.ru.tr +++ b/mods/bucket/locale/bucket.ru.tr @@ -1,5 +1,5 @@ # textdomain: bucket -Empty Bucket=Пустое Ведро -Water Bucket=Ведро с Водой -River Water Bucket=Ведро с Речной Водой -Lava Bucket=Ведро с Лавой +Empty Bucket=Пустое ведро +Water Bucket=Ведро с водой +River Water Bucket=Ведро с речной водой +Lava Bucket=Ведро с лавой diff --git a/mods/butterflies/locale/butterflies.ru.tr b/mods/butterflies/locale/butterflies.ru.tr index 7a79ed83..6881f1c4 100644 --- a/mods/butterflies/locale/butterflies.ru.tr +++ b/mods/butterflies/locale/butterflies.ru.tr @@ -1,4 +1,4 @@ # textdomain: butterflies -White Butterfly=Белая Бабочка -Red Butterfly=Красная Бабочка -Violet Butterfly=Фиолетовая Бабочка +White Butterfly=Белая бабочка +Red Butterfly=Красная бабочка +Violet Butterfly=Фиолетовая бабочка diff --git a/mods/carts/locale/carts.ru.tr b/mods/carts/locale/carts.ru.tr index 9fc60ce3..cd683be4 100644 --- a/mods/carts/locale/carts.ru.tr +++ b/mods/carts/locale/carts.ru.tr @@ -2,5 +2,5 @@ Cart=Вагонетка (Sneak+Click to pick up)=(Пригнитесь и кликните по вагонетке, чтобы забрать) Rail=Рельсы -Powered Rail=Запитанные рельсы +Powered Rail=Ускоряющие рельсы Brake Rail=Тормозящие рельсы diff --git a/mods/creative/locale/creative.ru.tr b/mods/creative/locale/creative.ru.tr index fecfefea..b0bb7577 100644 --- a/mods/creative/locale/creative.ru.tr +++ b/mods/creative/locale/creative.ru.tr @@ -1,6 +1,6 @@ # textdomain: creative Allow player to use creative inventory=Разрешить игроку использовать творческий инвентарь -No items to show.= +No items to show.=Нет предметов. Search=Поиск Reset=Сброс Previous page=Предыдущая страница diff --git a/mods/default/locale/default.ru.tr b/mods/default/locale/default.ru.tr index d6d5ac3f..ed99a2dc 100644 --- a/mods/default/locale/default.ru.tr +++ b/mods/default/locale/default.ru.tr @@ -1,42 +1,42 @@ # textdomain: default -Locked Chest=Заблокированный Сундук -Locked Chest (owned by @1)=Заблокированный Сундук (владелец: @1) +Locked Chest=Запертый сундук +Locked Chest (owned by @1)=Запертый сундук (владелец: @1) You do not own this chest.=Вы не владелец этого сундука. -a locked chest=заблокированный сундук +a locked chest=запертый сундук Chest=Сундук -Write=Писать +Write=Написать Read=Читать Title:=Заголовок: Contents:=Содержимое: Save=Сохранить -by @1=@1 +by @1=от @1 Page @1 of @2=Страница @1 из @2 -The book you were writing to mysteriously disappeared.=Книга, в которую вы писали, загадочно исчезла. +The book you were writing to mysteriously disappeared.=Книга, которую вы писали, загадочно исчезла. "@1" by @2="@1" @2 Blueberries=Черника Book=Книга -Book with Text=Книга с Текстом -Bronze Ingot=Бронзовый Слиток -Clay Brick=Глиняный Кирпич -Clay Lump=Ком Глины -Coal Lump=Кусок Угля -Copper Ingot=Медный Слиток -Copper Lump=Кусок Меди +Book with Text=Книга с текстом +Bronze Ingot=Бронзовый слиток +Clay Brick=Кирпич +Clay Lump=Глина +Coal Lump=Уголь +Copper Ingot=Медный слиток +Copper Lump=Кусок меди Diamond=Алмаз Flint=Кремень -Gold Ingot=Золотой Слиток -Gold Lump=Кусок Золота -Iron Lump=Кусок Железа -Mese Crystal=Кристалл Месе -Mese Crystal Fragment=Осколок Кристалла Месе -Obsidian Shard=Обсидиановый Осколок +Gold Ingot=Золотой слиток +Gold Lump=Кусок золота +Iron Lump=Кусок железа +Mese Crystal=Кристалл мезы +Mese Crystal Fragment=Осколок кристалла мезы +Obsidian Shard=Обсидиановый осколок Paper=Бумага -Steel Ingot=Железный Слиток +Steel Ingot=Стальной слиток Stick=Палка -Tin Ingot=Оловянный Слиток -Tin Lump=Кусок Олова +Tin Ingot=Оловянный слиток +Tin Lump=Кусок олова Furnace is empty=Печь пуста -100% (output full)=100% (полное приготовление) +100% (output full)=100% (выход заполнен) @1%=@1% Not cookable=Не может быть приготовлено Empty=Пустое @@ -46,179 +46,170 @@ Furnace inactive=Печь не зажжена Furnace=Печь Stone=Камень Cobblestone=Булыжник -Stone Brick=Каменный Кирпич -Stone Block=Каменный Блок -Mossy Cobblestone=Мшистый Булыжник -Desert Stone=Пустынный Камень -Desert Cobblestone=Пустынный Булыжник -Desert Stone Brick=Пустынный Каменный Кирпич -Desert Stone Block=Пустынный Каменный Блок +Stone Brick=Каменные кирпичи +Stone Block=Каменный блок +Mossy Cobblestone=Замшелый булыжник +Desert Stone=Пустынный камень +Desert Cobblestone=Пустынный булыжник +Desert Stone Brick=Пустынный каменные кирпичи +Desert Stone Block=Пустынный каменный блок Sandstone=Песчаник -Sandstone Brick=Песчаниковый Кирпич -Sandstone Block=Песчаниковый Блок -Desert Sandstone=Пустынный Песчаник -Desert Sandstone Brick=Пустынный Песчаниковый Кирпич -Desert Sandstone Block=Пустынный Песчаниковый Блок -Silver Sandstone=Серебряный Песчаник -Silver Sandstone Brick=Серебряный Песчаниковый Кирпич -Silver Sandstone Block=Серебряный Песчаниковый Блок +Sandstone Brick=Песчаниковые кирпичи +Sandstone Block=Песчаниковый блок +Desert Sandstone=Пустынный песчаник +Desert Sandstone Brick=Пустынные песчаниковые кирпичи +Desert Sandstone Block=Пустынный песчаниковый блок +Silver Sandstone=Серебристый песчаник +Silver Sandstone Brick=Серебристые песчаниковые кирпичи +Silver Sandstone Block=Серебристый песчаниковый блок Obsidian=Обсидиан -Obsidian Brick=Обсидиановый Кирпич -Obsidian Block=Обсидиановый Блок +Obsidian Brick=Обсидиановые кирпичи +Obsidian Block=Обсидиановый блок Dirt=Земля -Dirt with Grass=Земля с Травой -Dirt with Grass and Footsteps=Земля с Травой и Следами -Dirt with Savanna Grass=Земля с Саванной Травой -Dirt with Snow=Земля Со Снегом -Dirt with Rainforest Litter=Земля с Тропической Подстилкой -Dirt with Coniferous Litter=Земля с Сосновой Подстилкой -Savanna Dirt=Саванная Земля -Savanna Dirt with Savanna Grass=Саванная Земля с Травой -Permafrost=Замороженная Почва -Permafrost with Stones=Замороженная Почва с Камнями -Permafrost with Moss=Замороженная Почва с Мхом +Dirt with Grass=Дёрн +Dirt with Grass and Footsteps=Дёрн со следами +Dirt with Savanna Grass=Саванный дёрн +Dirt with Snow=Земля со снегом +Dirt with Rainforest Litter=Земля с тропической подстилкой +Dirt with Coniferous Litter=Земля с сосновой подстилкой +Savanna Dirt=Саванная земля +Savanna Dirt with Savanna Grass=Саванная земля с саванной травой +Permafrost=Мёрзлая почва +Permafrost with Stones=Мёрзлая почва с камнями +Permafrost with Moss=Мёрзлая почва с мхом Sand=Песок -Desert Sand=Пустынный Песок -Silver Sand=Серебряный Песок +Desert Sand=Пустынный песок +Silver Sand=Серебристый песок Gravel=Гравий -Clay=Глиняный Блок -Snow=Снег -Snow Block=Снежный Блок +Clay=Глиняный блок +Snow=Снежок +Snow Block=Снежный блок Ice=Лёд -Cave Ice=Пещерный Лёд -Apple Tree=Ствол Яблони -Apple Wood Planks=Яблоневые Доски -Apple Tree Sapling=Саженец Яблони -Apple Tree Leaves=Яблоневая Листва +Cave Ice=Пещерный лёд +Apple Tree=Яблоневая древесина +Apple Wood Planks=Яблоневые доски +Apple Tree Sapling=Саженец яблони +Apple Tree Leaves=Яблоневая листва Apple=Яблоко -Apple Marker=Яблочная Метка -Jungle Tree=Ствол Тропического Дерева -Jungle Wood Planks=Доски из Тропического Дерева -Jungle Tree Leaves=Листва Тропического Дерева -Jungle Tree Sapling=Саженец Тропического Дерева -Emergent Jungle Tree Sapling=Выросший Саженец Тропического Дерева -Pine Tree=Сосновый Ствол -Pine Wood Planks=Сосновые Доски -Pine Needles=Сосновая Хвоя -Pine Tree Sapling=Саженец Сосны -Acacia Tree=Ствол Акации -Acacia Wood Planks=Доски Акации -Acacia Tree Leaves=Листва Акации -Acacia Tree Sapling=Саженец Акации -Aspen Tree=Ствол Осины -Aspen Wood Planks=Осиновые Доски -Aspen Tree Leaves=Осиновая Листва -Aspen Tree Sapling=Саженец Осины -Coal Ore=Уголь -Coal Block=Угольный Блок -Iron Ore=Железная Руда -Steel Block=Стальной Блок -Copper Ore=Медная Руда -Copper Block=Медный Блок -Tin Ore=Оловянная Руда -Tin Block=Оловянный Блок -Bronze Block=Бронзовый Блок -Mese Ore=Месевая Руда -Mese Block=Месевый Блок -Gold Ore=Золотая Руда -Gold Block=Золотой Блок -Diamond Ore=Алмаз -Diamond Block=Алмазный Блок +Apple Marker=Яблочная метка +Jungle Tree=Древесина тропического дерева +Jungle Wood Planks=Доски из тропического дерева +Jungle Tree Leaves=Листва тропического дерева +Jungle Tree Sapling=Саженец тропического дерева +Emergent Jungle Tree Sapling=Выросший саженец тропического дерева +Pine Tree=Сосновая древесина +Pine Wood Planks=Сосновые доски +Pine Needles=Сосновая хвоя +Pine Tree Sapling=Саженец сосны +Acacia Tree=Акациевая древесина +Acacia Wood Planks=Акациевые доски +Acacia Tree Leaves=Акациевая листва +Acacia Tree Sapling=Саженец акации +Aspen Tree=Осиновая древесина +Aspen Wood Planks=Осиновые доски +Aspen Tree Leaves=Осиновая листва +Aspen Tree Sapling=Саженец осины +Coal Ore=Угольная руда +Coal Block=Угольный блок +Iron Ore=Железная руда +Steel Block=Стальной блок +Copper Ore=Медная руда +Copper Block=Медный блок +Tin Ore=Оловянная руда +Tin Block=Оловянный блок +Bronze Block=Бронзовый блок +Mese Ore=Мезовая руда +Mese Block=Мезовый блок +Gold Ore=Золотая руда +Gold Block=Золотой блок +Diamond Ore=Алмазная руда +Diamond Block=Алмазный блок Cactus=Кактус -Large Cactus Seedling=Саженец Кактуса +Large Cactus Seedling=Саженец кактуса Papyrus=Папирус -Dry Shrub=Сухой Куст -Jungle Grass=Тропическая Трава +Dry Shrub=Сухой куст +Jungle Grass=Тропическая трава Grass=Трава -Savanna Grass=Саванная Трава +Savanna Grass=Саванная трава Fern=Папоротник Marram Grass=Песколюб -Bush Stem=Стебли Куста -Bush Leaves=Листья Куста -Bush Sapling=Саженец Куста -Blueberry Bush Leaves with Berries=Куст Черники с Ягодами -Blueberry Bush Leaves=Куст Черники -Blueberry Bush Sapling=Саженец Куста Черники -Acacia Bush Stem=Стебли Куста Акации -Acacia Bush Leaves=Листья Куста Акации -Acacia Bush Sapling=Саженец Куста Акации -Pine Bush Stem=Стебли Хвойного Куста -Pine Bush Needles=Хвоя Куста -Pine Bush Sapling=Саженец Хвойного Куста +Bush Stem=Стебель куста +Bush Leaves=Листья куста +Bush Sapling=Саженец куста +Blueberry Bush Leaves with Berries=Черничный куст с ягодами +Blueberry Bush Leaves=Листья черничного куста +Blueberry Bush Sapling=Саженец черничного куста +Acacia Bush Stem=Стебель куста акации +Acacia Bush Leaves=Листья куста акации +Acacia Bush Sapling=Саженец куста акации +Pine Bush Stem=Стебли хвойного куста +Pine Bush Needles=Хвоя куста +Pine Bush Sapling=Саженец хвойного куста Kelp=Ламинария -Green Coral=Зеленый Коралл -Pink Coral=Розовый Коралл -Cyan Coral=Голубой Коралл -Brown Coral=Коричневый Коралл -Orange Coral=Оранжевый Коралл -Coral Skeleton=Коралловый Остов -Water Source=Водный Источник -Flowing Water=Текущая Вода -River Water Source=Речной Водный Источник -Flowing River Water=Текущая Речная Вода -Lava Source=Лавовый Источник -Flowing Lava=Текущая Лава -Empty Bookshelf=Пустая Книжная Полка -Bookshelf (@1 written, @2 empty books)=Книжная Полка (@1 написано, @2 чистые книги) -Bookshelf=Книжная Полка +Green Coral=Зелёный коралл +Pink Coral=Розовый коралл +Cyan Coral=Бирюзовый коралл +Brown Coral=Коричневый коралл +Orange Coral=Оранжевый коралл +Coral Skeleton=Коралловый остов +Water Source=Источник воды +Flowing Water=Текущая вода +River Water Source=Источник речной воды +Flowing River Water=Текущая речная вода +Lava Source=Источник лавы +Flowing Lava=Текущая лава +Empty Bookshelf=Пустая книжная полка +Bookshelf (@1 written, @2 empty books)=Книжная полка (@1 написано, @2 чистые книги) +Bookshelf=Книжная полка Text too long=Текст слишком длинный "@1"="@1" -Wooden Sign=Деревянная Табличка -Steel Sign=Стальная Табличка -Wooden Ladder=Деревянная Лестница -Steel Ladder=Стальная Лестница -Apple Wood Fence=Яблоневый Деревянный Забор -Acacia Wood Fence=Деревянный Забор Из Акации -Jungle Wood Fence=Деревянный Забор Из Тропического Дерева -Pine Wood Fence=Сосновый Деревянный Забор -Aspen Wood Fence=Осиновый Деревянный Забор -Apple Wood Fence Rail=Яблоневый Деревянный Реечный Забор -Acacia Wood Fence Rail=Деревянный Реечный Забор Из Акации -Jungle Wood Fence Rail=Деревянный Реечный Забор Из Тропического Дерева -Pine Wood Fence Rail=Сосновый Деревянный Реечный Забор -Aspen Wood Fence Rail=Осиновый Деревянный Реечный Забор +Wooden Sign=Деревянная табличка +Steel Sign=Стальная табличка +Wooden Ladder=Деревянная лестница +Steel Ladder=Стальная лестница +Apple Wood Fence=Яблоневый забор +Acacia Wood Fence=Акациевый забор +Jungle Wood Fence=Забор из тропического дерева +Pine Wood Fence=Сосновый забор +Aspen Wood Fence=Осиновый забор +Apple Wood Fence Rail=Яблоневый реечный забор +Acacia Wood Fence Rail=Акациевый реечный забор +Jungle Wood Fence Rail=Реечный забор из тропического дерева +Pine Wood Fence Rail=Сосновый реечный забор +Aspen Wood Fence Rail=Осиновый реечный забор Glass=Стекло -Obsidian Glass=Обсидиановое Стекло -Brick Block=Кирпичный Блок -Mese Lamp=Месе Лампа -Apple Wood Mese Post Light=Столбовой Месе светильник из Яблони -Acacia Wood Mese Post Light=Столбовой Месе светильник из Акации -Jungle Wood Mese Post Light=Столбовой Месе светильник из Тропического дерева -Pine Wood Mese Post Light=Столбовой Месе светильник из Сосны -Aspen Wood Mese Post Light=Столбовой Месе светильник из Осины +Obsidian Glass=Обсидиановое стекло +Brick Block=Кирпичи +Mese Lamp=Мезовая лампа +Apple Wood Mese Post Light=Яблоневый уличный фонарь +Acacia Wood Mese Post Light=Акациевый уличный фонарь +Jungle Wood Mese Post Light=Уличный фонарь из тропического дерева +Pine Wood Mese Post Light=Сосновый уличный фонарь +Aspen Wood Mese Post Light=Осиновый уличный фонарь Cloud=Облако -Wooden Pickaxe=Деревянная Кирка -Stone Pickaxe=Каменная Кирка -Bronze Pickaxe=Бронзовая Кирка -Steel Pickaxe=Стальная Кирка -Mese Pickaxe=Месе Кирка -Diamond Pickaxe=Алмазная Кирка -Wooden Shovel=Деревянная Лопата -Stone Shovel=Каменная Лопата -Bronze Shovel=Бронзовая Лопата -Steel Shovel=Стальная Лопата -Mese Shovel=Месе Лопата -Diamond Shovel=Алмазная Лопата -Wooden Axe=Деревянный Топор -Stone Axe=Каменный Топор -Bronze Axe=Бронзовый Топор -Steel Axe=Стальной Топор -Mese Axe=Месе Топор -Diamond Axe=Алмазный Топор -Wooden Sword=Деревянный Меч -Stone Sword=Каменный Меч -Bronze Sword=Бронзовый Меч -Steel Sword=Стальной Меч -Mese Sword=Месе Меч -Diamond Sword=Алмазный Меч +Wooden Pickaxe=Деревянная кирка +Stone Pickaxe=Каменная кирка +Bronze Pickaxe=Бронзовая кирка +Steel Pickaxe=Стальная кирка +Mese Pickaxe=Мезовая кирка +Diamond Pickaxe=Алмазная кирка +Wooden Shovel=Деревянная лопата +Stone Shovel=Каменная лопата +Bronze Shovel=Бронзовая лопата +Steel Shovel=Стальная лопата +Mese Shovel=Мезовая лопата +Diamond Shovel=Алмазная лопата +Wooden Axe=Деревянный топор +Stone Axe=Каменный топор +Bronze Axe=Бронзовый топор +Steel Axe=Стальной топор +Mese Axe=Мезовый топор +Diamond Axe=Алмазный топор +Wooden Sword=Деревянный меч +Stone Sword=Каменный меч +Bronze Sword=Бронзовый меч +Steel Sword=Стальной меч +Mese Sword=Мезовый меч +Diamond Sword=Алмазный меч Torch=Факел -@1 will intersect protection on growth.=@1 пересечёт защиту по росту. - - -##### not used anymore ##### - -Dirt with Dry Grass=Земля с Сухой Травой -Dry Dirt=Сухая Земля -Dry Dirt with Dry Grass=Сухая Земля с Сухой Травой -Dry Grass=Сухая Трава -Mese Post Light=Столб с Месе Фонарем +@1 will intersect protection on growth.=@1 пересечет защищённую зону при вырастании. \ No newline at end of file diff --git a/mods/doors/locale/doors.ru.tr b/mods/doors/locale/doors.ru.tr index dc5c3c09..7b967629 100644 --- a/mods/doors/locale/doors.ru.tr +++ b/mods/doors/locale/doors.ru.tr @@ -1,18 +1,18 @@ # textdomain: doors -Hidden Door Segment=Спрятанная Часть Двери +Hidden Door Segment=Спрятанная часть двери Owned by @1=Владелец: @1 -You do not own this locked door.=Вы не владелец этой заблокированной двери. -a locked door=заблокированная дверь -Wooden Door=Деревянная Дверь -Steel Door=Стальная Дверь -Glass Door=Стеклянная Дверь -Obsidian Glass Door=Дверь Из Обсидианового Стекла +You do not own this locked door.=Вы не владелец этой запертой двери. +a locked door=запертая дверь +Wooden Door=Деревянная дверь +Steel Door=Стальная дверь +Glass Door=Стеклянная дверь +Obsidian Glass Door=Дверь из обсидианового стекла You do not own this trapdoor.=Вы не владелец этого люка. -a locked trapdoor=заблокированный люк -Wooden Trapdoor=Деревянный Люк -Steel Trapdoor=Стальной Люк -Apple Wood Fence Gate=Яблоневая Деревянная Калитка -Acacia Wood Fence Gate=Деревянная Калитка Из Акации -Jungle Wood Fence Gate=Деревянная Калитка Из Тропического Дерева -Pine Wood Fence Gate=Сосновая Деревянная Калитка -Aspen Wood Fence Gate=Осиновая Деревянная Калитка +a locked trapdoor=запертый люк +Wooden Trapdoor=Деревянный люк +Steel Trapdoor=Стальной люк +Apple Wood Fence Gate=Яблоневая калитка +Acacia Wood Fence Gate=Акациевая калитка +Jungle Wood Fence Gate=Калитка из тропического дерева +Pine Wood Fence Gate=Сосновая калитка +Aspen Wood Fence Gate=Осиновая калитка diff --git a/mods/dye/locale/dye.ru.tr b/mods/dye/locale/dye.ru.tr index fa3c5c44..eff51f94 100644 --- a/mods/dye/locale/dye.ru.tr +++ b/mods/dye/locale/dye.ru.tr @@ -1,16 +1,16 @@ # textdomain: dye -White Dye=Белая Краска -Grey Dye=Серая Краска -Dark Grey Dye=Тёмно-Серая Краска -Black Dye=Черная Краска -Violet Dye=Фиолетовая Краска -Blue Dye=Синяя Краска -Cyan Dye=Голубая Краска -Dark Green Dye=Тёмно-Зелёная Краска -Green Dye=Зелёная Краска -Yellow Dye=Жёлтая Краска -Brown Dye=Бурая Краска -Orange Dye=Оранжевая Краска -Red Dye=Красная Краска -Magenta Dye=Пурпурная Краска -Pink Dye=Розовая Краска +White Dye=Белый краситель +Grey Dye=Серый краситель +Dark Grey Dye=Тёмно-серый краситель +Black Dye=Черный краситель +Violet Dye=Фиолетовый краситель +Blue Dye=Синий краситель +Cyan Dye=Бирюзовый краситель +Dark Green Dye=Тёмно-зелёный краситель +Green Dye=Зелёный краситель +Yellow Dye=Жёлтый краситель +Brown Dye=Коричневый краситель +Orange Dye=Оранжевый краситель +Red Dye=Красный краситель +Magenta Dye=Сиреневый краситель +Pink Dye=Розовый краситель diff --git a/mods/farming/locale/farming.ru.tr b/mods/farming/locale/farming.ru.tr index 4da864e9..8ec25f78 100644 --- a/mods/farming/locale/farming.ru.tr +++ b/mods/farming/locale/farming.ru.tr @@ -1,34 +1,28 @@ # textdomain: farming Hoe=Мотыга -Seed=Семя -Wooden Hoe=Деревянная Мотыга -Stone Hoe=Каменная Мотыга -Steel Hoe=Стальная Мотыга -Bronze Hoe=Бронзовая Мотыга -Mese Hoe=Месе Мотыга -Diamond Hoe=Алмазная Мотыга -Wheat Seed=Семена Пшеницы +Seed=Семена +Wooden Hoe=Деревянная мотыга +Stone Hoe=Каменная мотыга +Steel Hoe=Стальная мотыга +Bronze Hoe=Бронзовая мотыга +Mese Hoe=Мезовая мотыга +Diamond Hoe=Алмазная мотыга +Wheat Seed=Семена пшеницы Wheat=Пшеница Flour=Мука Bread=Хлеб -Cotton Seed=Семена Хлопчатника +Cotton Seed=Семена хлопчатника Cotton=Хлопок String=Нить Soil=Почва -Wet Soil=Влажная Почва -Savanna Soil=Саванная Почва -Wet Savanna Soil=Влажная Саванная Почва -Desert Sand Soil=Пустынная Песчаная Почва -Wet Desert Sand Soil=Влажная Пустынная Песчаная Почва +Wet Soil=Влажная почва +Savanna Soil=Саванная почва +Wet Savanna Soil=Влажная саванная почва +Desert Sand Soil=Пустынная песчаная почва +Wet Desert Sand Soil=Влажная пустынная песчаная почва Straw=Солома -Straw Stair=Соломенная Ступень -Inner Straw Stair=Угловая Соломенная Ступень (Внутренний Угол) -Outer Straw Stair=Угловая Соломенная Ступень (Внешний Угол) -Straw Slab=Соломенная Плита -Wild Cotton=Неокультуренный Хлопчатник - - -##### not used anymore ##### - -Dry Soil=Сухая Почва -Wet Dry Soil=Влажная Сухая Почва +Straw Stair=Соломенные ступени +Inner Straw Stair=Внутренние соломенные ступени +Outer Straw Stair=Внешние соломенные ступени +Straw Slab=Соломенная плита +Wild Cotton=Дикий хлопчатник diff --git a/mods/fire/locale/fire.ru.tr b/mods/fire/locale/fire.ru.tr index aa7e8181..5b38a8c1 100644 --- a/mods/fire/locale/fire.ru.tr +++ b/mods/fire/locale/fire.ru.tr @@ -1,9 +1,4 @@ # textdomain: fire Fire=Огонь -Permanent Fire=Вечный Огонь -Flint and Steel=Огниво - - -##### not used anymore ##### - -Permanent Flame=Вечный Огонь +Permanent Fire=Вечный огонь +Flint and Steel=Огниво \ No newline at end of file diff --git a/mods/fireflies/locale/fireflies.ru.tr b/mods/fireflies/locale/fireflies.ru.tr index c05f2884..8c50a7da 100644 --- a/mods/fireflies/locale/fireflies.ru.tr +++ b/mods/fireflies/locale/fireflies.ru.tr @@ -1,5 +1,5 @@ # textdomain: fireflies Firefly=Светлячок -Hidden Firefly=Притаившийся Светлячок -Bug Net=Сачок Для Ловли Насекомых -Firefly in a Bottle=Светлячок в Бутылке +Hidden Firefly=Притаившийся светлячок +Bug Net=Сачок +Firefly in a Bottle=Светлячок в бутылке diff --git a/mods/flowers/locale/flowers.ru.tr b/mods/flowers/locale/flowers.ru.tr index d861e2a4..0d129a58 100644 --- a/mods/flowers/locale/flowers.ru.tr +++ b/mods/flowers/locale/flowers.ru.tr @@ -1,12 +1,12 @@ # textdomain: flowers -Red Rose=Красная Роза -Orange Tulip=Оранжевый Тюльпан -Yellow Dandelion=Желтый Одуванчик -Green Chrysanthemum=Зелёная Хризантема -Blue Geranium=Синяя Герань +Red Rose=Красная роза +Orange Tulip=Оранжевый тюльпан +Yellow Dandelion=Жёлтый одуванчик +Green Chrysanthemum=Зелёная хризантема +Blue Geranium=Синяя герань Viola=Фиалка -White Dandelion=Белый Одуванчик -Black Tulip=Черный Тюльпан -Red Mushroom=Мухомор -Brown Mushroom=Коричневый Гриб -Waterlily=Кувшинка +White Dandelion=Белый одуванчик +Black Tulip=Чёрный тюльпан +Red Mushroom=Красный гриб +Brown Mushroom=Коричневый гриб +Waterlily=Лилия diff --git a/mods/game_commands/locale/game_commands.ru.tr b/mods/game_commands/locale/game_commands.ru.tr index 26d9e08a..59a59711 100644 --- a/mods/game_commands/locale/game_commands.ru.tr +++ b/mods/game_commands/locale/game_commands.ru.tr @@ -1,4 +1,4 @@ # textdomain: game_commands Kill yourself to respawn=Убейте себя, чтобы возродиться No static_spawnpoint defined=static_spawnpoint не определён -You need to be online to be killed!=Вы должны быть онлайн, чтобы убить себя! +You need to be online to be killed!=Вы должны быть в сети, чтобы убить себя! diff --git a/mods/keys/locale/keys.ru.tr b/mods/keys/locale/keys.ru.tr index 00b4e097..a804e182 100644 --- a/mods/keys/locale/keys.ru.tr +++ b/mods/keys/locale/keys.ru.tr @@ -2,4 +2,4 @@ Key=Ключ Key to @1's @2=Ключ к @2 от @1 -Skeleton Key=Ключ Скелета +Skeleton Key=Заготовка ключа diff --git a/mods/map/locale/map.ru.tr b/mods/map/locale/map.ru.tr index 73120b62..4c03d549 100644 --- a/mods/map/locale/map.ru.tr +++ b/mods/map/locale/map.ru.tr @@ -1,3 +1,3 @@ # textdomain: map Mapping Kit=Картографический комплект -Use with 'Minimap' key=Используйте с ключом 'Minimap' +Use with 'Minimap' key=Используйте клавишей 'Миникарта' diff --git a/mods/mtg_craftguide/locale/mtg_craftguide.ru.tr b/mods/mtg_craftguide/locale/mtg_craftguide.ru.tr index 6c0aae0c..ea7a717c 100644 --- a/mods/mtg_craftguide/locale/mtg_craftguide.ru.tr +++ b/mods/mtg_craftguide/locale/mtg_craftguide.ru.tr @@ -5,7 +5,7 @@ Any wool=Любая шерсть Any stick=Любая палка Any vessel=Любой сосуд Any wood planks=Любые доски -Any kind of stone block=Любой вид каменного блока +Any kind of stone block=Любой вид камня Any red flower=Любой красный цветок Any blue flower=Любой синий цветок Any black flower=Любой чёрный цветок @@ -14,21 +14,21 @@ Any white flower=Любой белый цветок Any orange flower=Любой оранжевый цветок Any violet flower=Любой фиолетовый цветок Any yellow flower=Любой жёлтый цветок -Any red dye=Любая красная краска -Any blue dye=Любая синяя краска -Any cyan dye=Любая голубая краска -Any grey dye=Любая серая краска -Any pink dye=Любая розовая краска -Any black dye=Любая чёрная краска -Any brown dye=Любая бурая краска -Any green dye=Любая зелёная краска -Any white dye=Любая белая краска -Any orange dye=Любая оранжевая краска -Any violet dye=Любая фиолетовая краска -Any yellow dye=Любая жёлтая краска -Any magenta dye=Любая пурпурная краска -Any dark grey dye=Любая тёмно-серая краска -Any dark green dye=Любая тёмно-зелёная краска +Any red dye=Любой красный краситель +Any blue dye=Любой синий краситель +Any cyan dye=Любой бирюзовый краситель +Any grey dye=Любой серый краситель +Any pink dye=Любой розовый краситель +Any black dye=Любой чёрный краситель +Any brown dye=Любой коричневый краситель +Any green dye=Любой зелёный краситель +Any white dye=Любой белый краситель +Any orange dye=Любой оранжевый краситель +Any violet dye=Любой фиолетовый краситель +Any yellow dye=Любой жёлтый краситель +Any magenta dye=Любой сиреневый краситель +Any dark grey dye=Любой тёмно-серый краситель +Any dark green dye=Любой тёмно-зелёный краситель # Label for group ingredients G=Г Any item belonging to the group(s): @1=Любой предмет из групп(ы): @1 @@ -39,13 +39,13 @@ Recipe @1 of @2=Рецепт @1 из @2 Previous recipe=Предыдущий рецепт Next recipe=Следующий рецепт Recipe is too big to be displayed.=Рецепт слишком большой для отображения. -Shapeless=Формонезависимый -Cooking time: @1=Время приготовления: @1 +Shapeless=Бесформенный +Cooking time: @1=Время готовки: @1 Search=Поиск Reset=Сброс Previous page=Предыдущая страница Next page=Следующая страница -No items to show.=Нет предметов для отображения. +No items to show.=Нет предметов. No usages.=Нет использований. Click again to show recipes.=Кликните снова чтобы увидеть рецепты. No recipes.=Нет рецептов. diff --git a/mods/screwdriver/locale/screwdriver.ru.tr b/mods/screwdriver/locale/screwdriver.ru.tr index bbab3305..d50ee760 100644 --- a/mods/screwdriver/locale/screwdriver.ru.tr +++ b/mods/screwdriver/locale/screwdriver.ru.tr @@ -1,3 +1,3 @@ # textdomain: screwdriver Screwdriver=Отвёртка -(left-click rotates face, right-click rotates axis)=(клик левой кнопкой мыши вращает грань, клик правой кнопкой мыши вращает ось) +(left-click rotates face, right-click rotates axis)=(левый клик вращает грань, правый клик вращает ось) diff --git a/mods/sethome/locale/sethome.ru.tr b/mods/sethome/locale/sethome.ru.tr index 75b2d49b..d68cf6e4 100644 --- a/mods/sethome/locale/sethome.ru.tr +++ b/mods/sethome/locale/sethome.ru.tr @@ -6,4 +6,4 @@ Teleported to home!=Вы телепортировались домой! Set a home using /sethome=Установите домашнюю точку, используя /sethome Set your home point=Установите вашу домашнюю точку Home set!=Домашняя точка установлена! -Player not found!=Игрок не обнаружен! +Player not found!=Игрок не найден! diff --git a/mods/stairs/locale/stairs.ru.tr b/mods/stairs/locale/stairs.ru.tr index 2d5850ea..1296d4a4 100644 --- a/mods/stairs/locale/stairs.ru.tr +++ b/mods/stairs/locale/stairs.ru.tr @@ -1,145 +1,145 @@ # textdomain: stairs -Glass Stair=Стеклянная Ступень -Glass Slab=Стеклянная Плита -Inner Glass Stair=Угловая Стеклянная Ступень (Внутренний Угол) -Outer Glass Stair=Угловая Стеклянная Ступень (Внешний Угол) -Obsidian Glass Stair=Стеклянная Ступень Из Обсидиана -Obsidian Glass Slab=Стеклянная Плита Из Обсидиана -Inner Obsidian Glass Stair=Угловая Стеклянная Ступень Из Обсидиана (Внутренний Угол) -Outer Obsidian Glass Stair=Угловая Стеклянная Ступень Из Обсидиана (Внешний Угол) -Wooden Stair=Яблоневая Деревянная Ступень -Inner Wooden Stair=Угловая Яблоневая Деревянная Ступень (Внутренний Угол) -Outer Wooden Stair=Угловая Яблоневая Деревянная Ступень (Внешний Угол) -Wooden Slab=Яблоневая Деревянная Плита -Jungle Wood Stair=Тропическая Деревянная Ступень -Inner Jungle Wood Stair=Угловая Тропическая Деревянная Ступень (Внутренний Угол) -Outer Jungle Wood Stair=Угловая Тропическая Деревянная Ступень (Внешний Угол) -Jungle Wood Slab=Тропическая Деревянная Плита -Pine Wood Stair=Сосновая Деревянная Ступень -Inner Pine Wood Stair=Угловая Сосновая Деревянная Ступень (Внутренний Угол) -Outer Pine Wood Stair=Угловая Сосновая Деревянная Ступень (Внешний Угол) -Pine Wood Slab=Сосновая Деревянная Плита -Acacia Wood Stair=Деревянная Ступень Из Акации -Inner Acacia Wood Stair=Угловая Деревянная Ступень Из Акации (Внутренний Угол) -Outer Acacia Wood Stair=Угловая Деревянная Ступень Из Акации (Внешний Угол) -Acacia Wood Slab=Деревянная Плита Из Акации -Aspen Wood Stair=Осиновая Деревянная Ступень -Inner Aspen Wood Stair=Угловая Осиновая Деревянная Ступень (Внутренний Угол) -Outer Aspen Wood Stair=Угловая осиновая Деревянная Ступень (Внешний Угол) -Aspen Wood Slab=Осиновая Деревянная Плита -Stone Stair=Каменная Ступень -Inner Stone Stair=Угловая Каменная Ступень (Внутренний Угол) -Outer Stone Stair=Угловая Каменная Ступень (Внешний Угол) -Stone Slab=Каменная Плита -Cobblestone Stair=Булыжниковая Ступень -Inner Cobblestone Stair=Угловая Булыжниковая Ступень (Внутренний Угол) -Outer Cobblestone Stair=Угловая Булыжниковая Ступень (Внешний Угол) -Cobblestone Slab=Булыжниковая Плита -Mossy Cobblestone Stair=Мшистая Булыжниковая Ступень -Inner Mossy Cobblestone Stair=Угловая Мшистая Булыжниковая Ступень (Внутренний Угол) -Outer Mossy Cobblestone Stair=Угловая Мшистая Булыжниковая Ступень (Внешний Угол) -Mossy Cobblestone Slab=Мшистая Булыжниковая Плита -Stone Brick Stair=Cтупень Из Каменных Кирпичей -Inner Stone Brick Stair=Угловая Ступень Из Каменных Кирпичей (Внутренний Угол) -Outer Stone Brick Stair=Угловая Ступень Из Каменных Кирпичей (Внешний Угол) -Stone Brick Slab=Плита Из Каменных Кирпичей -Stone Block Stair=Ступень Из Каменного Блока -Inner Stone Block Stair=Угловая Ступень Из Каменного Блока (Внутренний Угол) -Outer Stone Block Stair=Угловая Ступень Из Каменного Блока (Внешний Угол) -Stone Block Slab=Плита Из Каменного Блока -Desert Stone Stair=Ступень Из Пустынного Камня -Inner Desert Stone Stair=Угловая Ступень Из Пустынного Камня (Внутренний Угол) -Outer Desert Stone Stair=Угловая Ступень Из Пустынного Камня (Внешний Угол) -Desert Stone Slab=Плита Из Пустынного Камня -Desert Cobblestone Stair=Ступень Из Пустынного Булыжника -Inner Desert Cobblestone Stair=Угловая Ступень Из Пустынного Булыжника (Внутренний Угол) -Outer Desert Cobblestone Stair=Угловая Ступень Из Пустынного Булыжника (Внешний Угол) -Desert Cobblestone Slab=Плита Из Пустынного Камня -Desert Stone Brick Stair=Ступень Из Кирпичей Пустынного Камня -Inner Desert Stone Brick Stair=Угловая Ступень Из Кирпичей Пустынного Камня (Внутренний Угол) -Outer Desert Stone Brick Stair=Угловая Ступень Из Кирпичей Пустынного Камня (Внешний Угол) -Desert Stone Brick Slab=Плита Из Кирпичей Пустынного Камня -Desert Stone Block Stair=Ступень Из Пустынного Каменного Блока -Inner Desert Stone Block Stair=Угловая Ступень Из Пустынного Каменного Блока (Внутренний Угол) -Outer Desert Stone Block Stair=Угловая Ступень Из Пустынного Каменного Блока (Внешний Угол) -Desert Stone Block Slab=Плита Из Пустынного Каменного Блока -Sandstone Stair=Песчаниковая Ступень -Inner Sandstone Stair=Угловая Песчаниковая Ступень (Внутренний Угол) -Outer Sandstone Stair=Угловая Песчаниковая Ступень (Внешний Угол) -Sandstone Slab=Песчаниковая Плита -Sandstone Brick Stair=Ступень Из Песчаниковых Кирпичей -Inner Sandstone Brick Stair=Угловая Ступень Из Песчаниковых Кирпичей (Внутренний Угол) -Outer Sandstone Brick Stair=Угловая Ступень Из Песчаниковых Кирпичей (Внешний Угол) -Sandstone Brick Slab=Плита Из Песчаниковых Кирпичей -Sandstone Block Stair=Ступень Из Песчаникового Блока -Inner Sandstone Block Stair=Угловая Ступень Из Песчаникового Блока (Внутренний Угол) -Outer Sandstone Block Stair=Угловая Ступень Из Песчаникового Блока (Внешний Угол) -Sandstone Block Slab=Плита Из Песчаникового Блока -Desert Sandstone Stair=Ступень Из Пустынного Песчаника -Inner Desert Sandstone Stair=Угловая Ступень Из Пустынного Песчаника (Внутренний Угол) -Outer Desert Sandstone Stair=Угловая Ступень Из Пустынного Песчаника (Внешний Угол) -Desert Sandstone Slab=Плита Из Пустынного Песчаника -Desert Sandstone Brick Stair=Ступень Из Кирпичей Пустынного Песчаника -Inner Desert Sandstone Brick Stair=Угловая Ступень Из Кирпичей Пустынного Песчаника (Внутренний Угол) -Outer Desert Sandstone Brick Stair=Угловая Ступень Из Кирпичей Пустынного Песчаника (Внешний Угол) -Desert Sandstone Brick Slab=Плита Из Кирпичей Пустынного Песчаника -Desert Sandstone Block Stair=Ступень Из Пустынного Песчаникового Блока -Inner Desert Sandstone Block Stair=Угловая Ступень Из Пустынного Песчаникового Блока (Внутренний Угол) -Outer Desert Sandstone Block Stair=Угловая Ступень Из Пустынного Песчаникового Блока (Внешний Угол) -Desert Sandstone Block Slab=Плита Из Пустынного Песчаникового Блока -Silver Sandstone Stair=Ступень Из Серебрянного Песчаника -Inner Silver Sandstone Stair=Угловая Ступень Из Серебряного Песчаника (Внутренний Угол) -Outer Silver Sandstone Stair=Угловая Ступень Из Серебряного Песчаника (Внешний Угол) -Silver Sandstone Slab=Плита Из Серебряного Песчаника -Silver Sandstone Brick Stair=Ступень Из Кирпичей Серебряного Песчаника -Inner Silver Sandstone Brick Stair=Угловая Ступень Из Кирпичей Серебряного Песчаника (Внутренний Угол) -Outer Silver Sandstone Brick Stair=Угловая Ступень Из Кирпичей Серебряного Песчаника (Внешний Угол) -Silver Sandstone Brick Slab=Плита Из Кирпичей Серебряного Песчаника -Silver Sandstone Block Stair=Ступень Из Серебряного Песчаникового Блока -Inner Silver Sandstone Block Stair=Угловая Ступень Из Серебряного Песчаникового Блока (Внутренний Угол) -Outer Silver Sandstone Block Stair=Угловая Ступень Из Серебряного Песчаникового Блока (Внешний Угол) -Silver Sandstone Block Slab=Плита Из Серебряного Песчаникового Блока -Obsidian Stair=Обсидиановая Ступень -Inner Obsidian Stair=Угловая Обсидиановая Ступень (Внутренний Угол) -Outer Obsidian Stair=Угловая Обсидиановая Ступень (Внешний Угол) -Obsidian Slab=Обсидиановая Плита -Obsidian Brick Stair=Ступень Из Обсидиановых Кирпичей -Inner Obsidian Brick Stair=Угловая Ступень Из Обсидиановых Кирпичей (Внутренний Угол) -Outer Obsidian Brick Stair=Угловая Ступень Из Обсидиановых Кирпичей (Внешний Угол) -Obsidian Brick Slab=Плита Из Обсидиановых Кирпичей -Obsidian Block Stair=Ступень Из Обсидианового Блока -Inner Obsidian Block Stair=Угловая Ступень Из Обсидианового Блока (Внутренний Угол) -Outer Obsidian Block Stair=Угловая Ступень Из Обсидианового Блока (Внешний Угол) -Obsidian Block Slab=Плита Из Обсидианового Блока -Brick Stair=Ступень Из Кирпичей -Inner Brick Stair=Угловая Ступень Из Кирпичей (Внутренний Угол) -Outer Brick Stair=Угловая Ступень Из Кирпичей (Внешний Угол) -Brick Slab=Плита Из Кирпичей -Steel Block Stair=Ступень Из Стального Блока -Inner Steel Block Stair=Угловая Ступень Из Стального Блока (Внутренний Угол) -Outer Steel Block Stair=Угловая Ступень Из Стального Блока (Внешний Угол) -Steel Block Slab=Плита Из Стального Блока -Tin Block Stair=Ступень Из Оловянного Блока -Inner Tin Block Stair=Угловая Ступень Из Оловянного Блока (Внутренний Угол) -Outer Tin Block Stair=Угловая Ступень Из Оловянного Блока (Внешний Угол) -Tin Block Slab=Плита Из Оловянного Блока -Copper Block Stair=Ступень Из Медного Блока -Inner Copper Block Stair=Угловая Ступень Из Медного Блока (Внутренний Угол) -Outer Copper Block Stair=Угловая Ступень Из Медного Блока (Внешний Угол) -Copper Block Slab=Плита Из Медного Блока -Bronze Block Stair=Ступень Из Бронзового Блока -Inner Bronze Block Stair=Угловая Ступень Из Бронзового Блока (Внутренний Угол) -Outer Bronze Block Stair=Угловая Ступень Из Бронзового Блока (Внешний Угол) -Bronze Block Slab=Плита Из Бронзового Блока -Gold Block Stair=Ступень Из Золотого Блока -Inner Gold Block Stair=Угловая Ступень Из Золотого Блока (Внутренний Угол) -Outer Gold Block Stair=Угловая Ступень Из Золотого Блока (Внешний Угол) -Gold Block Slab=Плита Из Золотого Блока -Ice Stair=Ледяная Ступень -Inner Ice Stair=Угловая Ледяная Ступень (Внутренний Угол) -Outer Ice Stair=Угловая Ледяная Ступень (Внешний Угол) -Ice Slab=Ледяная Плита -Snow Block Stair=Ступень Из Снежного Блока -Inner Snow Block Stair=Угловая Ступень Из Снежного Блока (Внутренний Угол) -Outer Snow Block Stair=Угловая Ступень Из Снежного Блока (Внешний Угол) -Snow Block Slab=Плита Из Снежного Блока +Glass Stair=Стеклянные ступени +Glass Slab=Стеклянная плита +Inner Glass Stair=Внутренние стеклянные ступени +Outer Glass Stair=Внешние стеклянные ступени +Obsidian Glass Stair=Ступени из обсидианового стекла +Obsidian Glass Slab=Плита из обсидианового стекла +Inner Obsidian Glass Stair=Внутренние ступени из обсидианового стекла +Outer Obsidian Glass Stair=Внешние ступени из обсидианового стекла +Wooden Stair=Деревянные ступени +Inner Wooden Stair=Внутренние деревянные ступени +Outer Wooden Stair=Внешние деревянные ступени +Wooden Slab=Деревянная плита +Jungle Wood Stair=Ступени из тропического дерева +Inner Jungle Wood Stair=Внутренние ступени из тропического дерева +Outer Jungle Wood Stair=Внешние ступени из тропического дерева +Jungle Wood Slab=Плита из тропического дерева +Pine Wood Stair=Сосновые ступени +Inner Pine Wood Stair=Внутренние сосновые ступени +Outer Pine Wood Stair=Внешние сосновые ступени +Pine Wood Slab=Сосновая плита +Acacia Wood Stair=Акациевые ступени +Inner Acacia Wood Stair=Внутренние акациевые ступени +Outer Acacia Wood Stair=Внешние акациевые ступени +Acacia Wood Slab=Акациевая плита +Aspen Wood Stair=Осиновые ступени +Inner Aspen Wood Stair=Внутренние осиновые ступени +Outer Aspen Wood Stair=Внешние осиновые ступени +Aspen Wood Slab=Осиновая плита +Stone Stair=Каменные ступени +Inner Stone Stair=Внутренние каменные ступени +Outer Stone Stair=Внешние каменные ступени +Stone Slab=Каменная плита +Cobblestone Stair=Булыжниковые ступени +Inner Cobblestone Stair=Внутренние булыжниковые ступени +Outer Cobblestone Stair=Внешние булыжниковые ступени +Cobblestone Slab=Булыжниковая плита +Mossy Cobblestone Stair=Ступени из замшелого булыжника +Inner Mossy Cobblestone Stair=Внутренние ступени из замшелого булыжника +Outer Mossy Cobblestone Stair=Внешние ступени из замшелого булыжника +Mossy Cobblestone Slab=Плита из замшелого булыжника +Stone Brick Stair=Cтупени из каменных кирпичей +Inner Stone Brick Stair=Внутренние ступени из каменных кирпичей +Outer Stone Brick Stair=Внешние ступени из каменных кирпичей +Stone Brick Slab=Плита из каменных кирпичей +Stone Block Stair=Ступени из камня +Inner Stone Block Stair=Внутренние ступени из камня +Outer Stone Block Stair=Внешние ступени из камня +Stone Block Slab=Плита из камня +Desert Stone Stair=Ступени из пустынного камня +Inner Desert Stone Stair=Внутренние ступени из пустынного камня +Outer Desert Stone Stair=Внешние ступени из пустынного камня +Desert Stone Slab=Плита из пустынного камня +Desert Cobblestone Stair=Ступени из пустынного булыжника +Inner Desert Cobblestone Stair=Внутренние ступени из пустынного булыжника +Outer Desert Cobblestone Stair=Внешние ступени из пустынного булыжника +Desert Cobblestone Slab=Плита из пустынного булыжника +Desert Stone Brick Stair=Ступени из пустынных каменных кирпичей +Inner Desert Stone Brick Stair=Внутренние ступени из пустынных каменных кирпичей +Outer Desert Stone Brick Stair=Внешние ступени из пустынных каменных кирпичей +Desert Stone Brick Slab=Плита из пустынных каменных кирпичей +Desert Stone Block Stair=Ступени из пустынного каменного блока +Inner Desert Stone Block Stair=Внутренние ступени из пустынного каменного блока +Outer Desert Stone Block Stair=Внешние ступени из пустынного каменного блока +Desert Stone Block Slab=Плита из пустынного каменного блока +Sandstone Stair=Песчаниковые ступени +Inner Sandstone Stair=Внутренние песчаниковые ступени +Outer Sandstone Stair=Внешние песчаниковые ступени +Sandstone Slab=Песчаниковая плита +Sandstone Brick Stair=Ступени из песчаниковых кирпичей +Inner Sandstone Brick Stair=Внутренние ступени из песчаниковых кирпичей +Outer Sandstone Brick Stair=Внешние ступени из песчаниковых кирпичей +Sandstone Brick Slab=Плита из песчаниковых кирпичей +Sandstone Block Stair=Ступени из песчаникового блока +Inner Sandstone Block Stair=Внутренние ступени из песчаникового блока +Outer Sandstone Block Stair=Внешние ступени из песчаникового блока +Sandstone Block Slab=Плита из песчаникового блока +Desert Sandstone Stair=Ступени из пустынного песчаника +Inner Desert Sandstone Stair=Внутренние ступени из пустынного песчаника +Outer Desert Sandstone Stair=Внешние ступени из пустынного песчаника +Desert Sandstone Slab=Плита из пустынного песчаника +Desert Sandstone Brick Stair=Ступени из пустынных песчаниковых кирпичей +Inner Desert Sandstone Brick Stair=Внутренние ступени из пустынных песчаниковых кирпичей +Outer Desert Sandstone Brick Stair=Внешние ступени из пустынных песчаниковых кирпичей +Desert Sandstone Brick Slab=Плита из пустынных песчаниковых кирпичей +Desert Sandstone Block Stair=Ступени из пустынного песчаникового блока +Inner Desert Sandstone Block Stair=Внутренние ступени из пустынного песчаникового блока +Outer Desert Sandstone Block Stair=Внешние ступени из пустынного песчаникового блока +Desert Sandstone Block Slab=Плита из пустынного песчаникового блока +Silver Sandstone Stair=Ступени из серебристого песчаника +Inner Silver Sandstone Stair=Внутренние ступени из серебристого песчаника +Outer Silver Sandstone Stair=Внешние ступени из серебристого песчаника +Silver Sandstone Slab=Плита из серебристого песчаника +Silver Sandstone Brick Stair=Ступени из серебристых песчаниковых кирпичей +Inner Silver Sandstone Brick Stair=Внутренние ступени из серебристых песчаниковых кирпичей +Outer Silver Sandstone Brick Stair=Внешние ступени из серебристых песчаниковых кирпичей +Silver Sandstone Brick Slab=Плита из серебристых песчаниковых кирпичей +Silver Sandstone Block Stair=Ступени из серебристого песчаникового блока +Inner Silver Sandstone Block Stair=Внутренние ступени из серебристого песчаникового блока +Outer Silver Sandstone Block Stair=Внешние ступени из серебристого песчаникового блока +Silver Sandstone Block Slab=Плита из серебристого песчаникового блока +Obsidian Stair=Обсидиановые ступени +Inner Obsidian Stair=Внутренние обсидиановые ступени +Outer Obsidian Stair=Внешние обсидиановые ступени +Obsidian Slab=Обсидиановая плита +Obsidian Brick Stair=Ступени из обсидиановых кирпичей +Inner Obsidian Brick Stair=Внутренние ступени из обсидиановых кирпичей +Outer Obsidian Brick Stair=Внешние ступени из обсидиановых кирпичей +Obsidian Brick Slab=Плита из обсидиановых кирпичей +Obsidian Block Stair=Ступени из обсидианового блока +Inner Obsidian Block Stair=Внутренние ступени из обсидианового блока +Outer Obsidian Block Stair=Внешние ступени из обсидианового блока +Obsidian Block Slab=Плита из обсидианового блока +Brick Stair=Кирпичные ступени +Inner Brick Stair=Внутренние кирпичные ступени +Outer Brick Stair=Внешние кирпичные ступени +Brick Slab=Кирпичная плита +Steel Block Stair=Стальные ступени +Inner Steel Block Stair=Внутренние стальные ступени +Outer Steel Block Stair=Внешние стальные ступени +Steel Block Slab=Стальная плита +Tin Block Stair=Оловянные ступени +Inner Tin Block Stair=Внутренние оловянные ступени +Outer Tin Block Stair=Внешние оловянные ступени +Tin Block Slab=Оловянная плита +Copper Block Stair=Медные ступени +Inner Copper Block Stair=Внутренние медные ступени +Outer Copper Block Stair=Внешние медные ступени +Copper Block Slab=Медная плита +Bronze Block Stair=Бронзовые ступени +Inner Bronze Block Stair=Внутренние бронзовые ступени +Outer Bronze Block Stair=Внешние бронзовые ступени +Bronze Block Slab=Бронзовая плита +Gold Block Stair=Золотые ступени +Inner Gold Block Stair=Внутренние золотые ступени +Outer Gold Block Stair=Внешние золотые ступени +Gold Block Slab=Золотая плита +Ice Stair=Ледяные ступени +Inner Ice Stair=Внутренние ледяные ступени +Outer Ice Stair=Внешние ледяные ступени +Ice Slab=Ледяная плита +Snow Block Stair=Снежные ступени +Inner Snow Block Stair=Внутренние снежные ступени +Outer Snow Block Stair=Внешние снежные ступени +Snow Block Slab=Снежная плита diff --git a/mods/tnt/locale/tnt.ru.tr b/mods/tnt/locale/tnt.ru.tr index a8cee43b..d8f55f1e 100644 --- a/mods/tnt/locale/tnt.ru.tr +++ b/mods/tnt/locale/tnt.ru.tr @@ -1,4 +1,4 @@ # textdomain: tnt Gun Powder=Порох -TNT Stick=Тротиловая Палка -TNT=Тротил +TNT Stick=Динамитная шашка +TNT=Динамит diff --git a/mods/vessels/locale/vessels.ru.tr b/mods/vessels/locale/vessels.ru.tr index 196d842d..e9f276af 100644 --- a/mods/vessels/locale/vessels.ru.tr +++ b/mods/vessels/locale/vessels.ru.tr @@ -1,8 +1,8 @@ # textdomain: vessels -Empty Vessels Shelf=Полка с Пустыми Сосудами -Vessels Shelf (@1 items)=Полка с Сосудами (@1 предметы) -Vessels Shelf=Полка с Сосудами -Empty Glass Bottle=Пустая Стеклянная Бутылка -Empty Drinking Glass=Пустой Стакан -Empty Heavy Steel Bottle=Пустая Стальная Бутылка -Glass Fragments=Стеклянные Осколки +Empty Vessels Shelf=Полка с пустыми сосудами +Vessels Shelf (@1 items)=Полка с сосудами (@1 штук) +Vessels Shelf=Полка с сосудами +Empty Glass Bottle=Пустая стеклянная бутылка +Empty Drinking Glass=Пустой стакан +Empty Heavy Steel Bottle=Пустая стальная бутылка +Glass Fragments=Стеклянные осколки diff --git a/mods/walls/locale/walls.ru.tr b/mods/walls/locale/walls.ru.tr index 1ed653f0..2f615368 100644 --- a/mods/walls/locale/walls.ru.tr +++ b/mods/walls/locale/walls.ru.tr @@ -1,4 +1,4 @@ # textdomain: walls -Cobblestone Wall=Булыжниковая Ограда -Mossy Cobblestone Wall=Мшистая Булыжниковая Ограда -Desert Cobblestone Wall=Ограда Из Пустынного Булыжника +Cobblestone Wall=Стена из булыжника +Mossy Cobblestone Wall=Стена из замшелого булыжника +Desert Cobblestone Wall=Стена из пустынного булыжника diff --git a/mods/wool/locale/wool.ru.tr b/mods/wool/locale/wool.ru.tr index f5a98aa1..9893a085 100644 --- a/mods/wool/locale/wool.ru.tr +++ b/mods/wool/locale/wool.ru.tr @@ -1,16 +1,16 @@ # textdomain: wool -White Wool=Белая Шерсть -Grey Wool=Серая Шерсть -Dark Grey Wool=Тёмно-Серая Шерсть -Black Wool=Чёрная Шерсть -Violet Wool=Фиолетовая Шерсть -Blue Wool=Синяя Шерсть -Cyan Wool=Голубая Шерсть -Dark Green Wool=Тёмно-Зелёная Шерсть -Green Wool=Зелёная Шерсть -Yellow Wool=Жёлтая Шерсть -Brown Wool=Коричневая Шерсть -Orange Wool=Оранжевая Шерсть -Red Wool=Красная Шерсть -Magenta Wool=Пурпурная Шерсть -Pink Wool=Розовая Шерсть +White Wool=Белая шерсть +Grey Wool=Серая шерсть +Dark Grey Wool=Тёмно-Серая шерсть +Black Wool=Чёрная шерсть +Violet Wool=Фиолетовая шерсть +Blue Wool=Синяя шерсть +Cyan Wool=Бирюзовая шерсть +Dark Green Wool=Тёмно-Зелёная шерсть +Green Wool=Зелёная шерсть +Yellow Wool=Жёлтая шерсть +Brown Wool=Коричневая шерсть +Orange Wool=Оранжевая шерсть +Red Wool=Красная шерсть +Magenta Wool=Сиреневая шерсть +Pink Wool=Розовая шерсть diff --git a/mods/xpanes/locale/xpanes.ru.tr b/mods/xpanes/locale/xpanes.ru.tr index 166c62de..cd7173e7 100644 --- a/mods/xpanes/locale/xpanes.ru.tr +++ b/mods/xpanes/locale/xpanes.ru.tr @@ -1,6 +1,6 @@ # textdomain: xpanes -Glass Pane=Стеклянная Панель -Obsidian Glass Pane=Стеклянная Панель Из Обсидиана -Steel Bars=Стальная Решётка -Steel Bar Door=Стальная Решётчатая Дверь -Steel Bar Trapdoor=Стальной Решётчатый Люк +Glass Pane=Стеклянная панель +Obsidian Glass Pane=Панель из обсидианового стекла +Steel Bars=Стальная решетка +Steel Bar Door=Стальная решётчатая дверь +Steel Bar Trapdoor=Стальной решётчатый люк From 70cf7a26fd55d48154ad93d1b1409d0dcc822fe0 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Thu, 11 Jan 2024 15:50:36 +0100 Subject: [PATCH 06/36] Fix some placer nil checks --- mods/butterflies/init.lua | 4 ++-- mods/carts/cart_entity.lua | 3 ++- mods/default/nodes.lua | 16 +++++++--------- mods/default/trees.lua | 7 +++---- mods/farming/api.lua | 4 +++- mods/tnt/init.lua | 2 +- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/mods/butterflies/init.lua b/mods/butterflies/init.lua index 49240eea..0d61b33d 100644 --- a/mods/butterflies/init.lua +++ b/mods/butterflies/init.lua @@ -40,7 +40,7 @@ for i in ipairs (butter_list) do }, floodable = true, on_place = function(itemstack, placer, pointed_thing) - local player_name = placer:get_player_name() + local player_name = placer and placer:get_player_name() or "" local pos = pointed_thing.above if not minetest.is_protected(pos, player_name) and @@ -73,7 +73,7 @@ for i in ipairs (butter_list) do groups = {not_in_creative_inventory = 1}, floodable = true, on_place = function(itemstack, placer, pointed_thing) - local player_name = placer:get_player_name() + local player_name = placer and placer:get_player_name() or "" local pos = pointed_thing.above if not minetest.is_protected(pos, player_name) and diff --git a/mods/carts/cart_entity.lua b/mods/carts/cart_entity.lua index 3015409e..3dfebe1d 100644 --- a/mods/carts/cart_entity.lua +++ b/mods/carts/cart_entity.lua @@ -413,7 +413,8 @@ minetest.register_craftitem("carts:cart", { minetest.sound_play({name = "default_place_node_metal", gain = 0.5}, {pos = pointed_thing.above}, true) - if not minetest.is_creative_enabled(placer:get_player_name()) then + local player_name = placer and placer:get_player_name() or "" + if not minetest.is_creative_enabled(player_name) then itemstack:take_item() end return itemstack diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 947dba6c..2bde6f8e 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1985,8 +1985,8 @@ minetest.register_node("default:sand_with_kelp", { on_place = function(itemstack, placer, pointed_thing) -- Call on_rightclick if the pointed node defines it - if pointed_thing.type == "node" and placer and - not placer:get_player_control().sneak then + if pointed_thing.type == "node" and not (placer and placer:is_player() + and placer:get_player_control().sneak) then local node_ptu = minetest.get_node(pointed_thing.under) local def_ptu = minetest.registered_nodes[node_ptu.name] if def_ptu and def_ptu.on_rightclick then @@ -2035,19 +2035,20 @@ minetest.register_node("default:sand_with_kelp", { -- local function coral_on_place(itemstack, placer, pointed_thing) - if pointed_thing.type ~= "node" or not placer then + if pointed_thing.type ~= "node" then return itemstack end - local player_name = placer:get_player_name() + local player_name = placer and placer:get_player_name() local pos_under = pointed_thing.under local pos_above = pointed_thing.above local node_under = minetest.get_node(pos_under) local def_under = minetest.registered_nodes[node_under.name] - if def_under and def_under.on_rightclick and not placer:get_player_control().sneak then + if def_under and def_under.on_rightclick and not ( + placer and placer:is_player() and placer:get_player_control().sneak) then return def_under.on_rightclick(pos_under, node_under, - placer, itemstack, pointed_thing) or itemstack + placer, itemstack, pointed_thing) end if node_under.name ~= "default:coral_skeleton" or @@ -2057,9 +2058,6 @@ local function coral_on_place(itemstack, placer, pointed_thing) if minetest.is_protected(pos_under, player_name) or minetest.is_protected(pos_above, player_name) then - default.log_player_action(placer, - "tried to place", itemstack:get_name(), - "at protected position", pos_under) minetest.record_protection_violation(pos_under, player_name) return itemstack end diff --git a/mods/default/trees.lua b/mods/default/trees.lua index c9f94120..9536369c 100644 --- a/mods/default/trees.lua +++ b/mods/default/trees.lua @@ -488,16 +488,15 @@ function default.sapling_on_place(itemstack, placer, pointed_thing, interval) then minetest.record_protection_violation(pos, player_name) -- Print extra information to explain --- minetest.chat_send_player(player_name, --- itemstack:get_definition().description .. " will intersect protection " .. --- "on growth") minetest.chat_send_player(player_name, S("@1 will intersect protection on growth.", itemstack:get_definition().description)) return itemstack end - default.log_player_action(placer, "places node", sapling_name, "at", pos) + if placer then + default.log_player_action(placer, "places node", sapling_name, "at", pos) + end local take_item = not minetest.is_creative_enabled(player_name) local newnode = {name = sapling_name} diff --git a/mods/farming/api.lua b/mods/farming/api.lua index 414ebc0f..96f9f636 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -178,7 +178,9 @@ farming.place_seed = function(itemstack, placer, pointed_thing, plantname) end -- add the node and remove 1 item from the itemstack - default.log_player_action(placer, "places node", plantname, "at", pt.above) + if placer then + default.log_player_action(placer, "places node", plantname, "at", pt.above) + end minetest.add_node(pt.above, {name = plantname, param2 = 1}) tick(pt.above) if not minetest.is_creative_enabled(player_name) then diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index c59363a5..622b6c97 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -625,7 +625,7 @@ function tnt.register_tnt(def) groups = {dig_immediate = 2, mesecon = 2, tnt = 1, flammable = 5}, sounds = default.node_sound_wood_defaults(), after_place_node = function(pos, placer) - if placer:is_player() then + if placer and placer:is_player() then local meta = minetest.get_meta(pos) meta:set_string("owner", placer:get_player_name()) end From 472997b4aa7e3f480fef0f4a401b8857761e681b Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 21 Jan 2024 16:30:38 +0100 Subject: [PATCH 07/36] Fix detecting mgv6 temples as 'desert' dungeon type --- mods/dungeon_loot/mapgen.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mods/dungeon_loot/mapgen.lua b/mods/dungeon_loot/mapgen.lua index b2c80fa8..3b597f2e 100644 --- a/mods/dungeon_loot/mapgen.lua +++ b/mods/dungeon_loot/mapgen.lua @@ -14,7 +14,7 @@ local function random_sample(rand, list, count) return ret end -local function find_walls(cpos) +local function find_walls(cpos, is_temple) local is_wall = function(node) return node.name ~= "air" and node.name ~= "ignore" end @@ -55,7 +55,7 @@ local function find_walls(cpos) local biome = minetest.get_biome_data(cpos) biome = biome and minetest.get_biome_name(biome.biome) or "" local type = "normal" - if biome:find("desert") == 1 then + if is_temple or biome:find("desert") == 1 then type = "desert" elseif biome:find("sandstone_desert") == 1 then type = "sandstone" @@ -125,6 +125,8 @@ end minetest.register_on_generated(function(minp, maxp, blockseed) local gennotify = minetest.get_mapgen_object("gennotify") local poslist = gennotify["dungeon"] or {} + local n_dungeons = #poslist + -- Add MGv6 desert temples to the list too for _, entry in ipairs(gennotify["temple"] or {}) do table.insert(poslist, entry) end @@ -137,7 +139,7 @@ minetest.register_on_generated(function(minp, maxp, blockseed) -- process at most 8 rooms to keep runtime of this predictable local num_process = math.min(#poslist, 8) for i = 1, num_process do - local room = find_walls(poslist[i]) + local room = find_walls(poslist[i], i > n_dungeons) -- skip small rooms and everything that doesn't at least have 3 walls if math.min(room.size.x, room.size.z) >= 4 and #room.walls >= 3 then table.insert(candidates, room) From 222afb0cf07d40ae55825865d614143ca8145e00 Mon Sep 17 00:00:00 2001 From: David Leal Date: Sun, 28 Jan 2024 04:41:12 -0600 Subject: [PATCH 08/36] Allow overriding the loop flag on `player_api.set_animation` (#3097) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Lars Müller <34514239+appgurueu@users.noreply.github.com> --- mods/player_api/api.lua | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/mods/player_api/api.lua b/mods/player_api/api.lua index f8ff598a..6a572f55 100644 --- a/mods/player_api/api.lua +++ b/mods/player_api/api.lua @@ -71,7 +71,7 @@ function player_api.set_model(player, model_name) player_data.model = model_name -- Clear animation data as the model has changed -- (required for setting the `stand` animation not to be a no-op) - player_data.animation, player_data.animation_speed = nil, nil + player_data.animation, player_data.animation_speed, player_data.animation_loop = nil, nil, nil local model = models[model_name] if model then @@ -116,20 +116,27 @@ function player_api.set_texture(player, index, texture) player_api.set_textures(player, textures) end -function player_api.set_animation(player, anim_name, speed) +function player_api.set_animation(player, anim_name, speed, loop) local player_data = get_player_data(player) local model = models[player_data.model] if not (model and model.animations[anim_name]) then return end speed = speed or model.animation_speed - if player_data.animation == anim_name and player_data.animation_speed == speed then + if loop == nil then + loop = true + end + if player_data.animation == anim_name + and player_data.animation_speed == speed + and player_data.animation_loop == loop + then return end local previous_anim = model.animations[player_data.animation] or {} local anim = model.animations[anim_name] player_data.animation = anim_name player_data.animation_speed = speed + player_data.animation_loop = loop -- If necessary change the local animation (only seen by the client of *that* player) -- `override_local` <=> suspend local animations while this one is active -- (this is basically a hack, proper engine feature needed...) @@ -146,7 +153,7 @@ function player_api.set_animation(player, anim_name, speed) end end -- Set the animation seen by everyone else - player:set_animation(anim, speed, animation_blend) + player:set_animation(anim, speed, animation_blend, loop) -- Update related properties if they changed if anim._equals ~= previous_anim._equals then player:set_properties({ From 10799db4cfc72511e435db8eaeb39390a60bd98f Mon Sep 17 00:00:00 2001 From: Jaidyn Ann <10477760+JadedCtrl@users.noreply.github.com> Date: Thu, 4 Jan 2024 01:31:56 -0600 Subject: [PATCH 09/36] Tweak capitalization in Esperanto translation --- mods/beds/locale/beds.eo.tr | 4 +- mods/bucket/locale/bucket.eo.tr | 8 +- mods/butterflies/locale/butterflies.eo.tr | 6 +- mods/carts/locale/carts.eo.tr | 4 +- mods/default/locale/default.eo.tr | 314 +++++++++--------- mods/doors/locale/doors.eo.tr | 24 +- mods/dye/locale/dye.eo.tr | 30 +- mods/farming/locale/farming.eo.tr | 36 +- mods/fire/locale/fire.eo.tr | 4 +- mods/fireflies/locale/fireflies.eo.tr | 6 +- mods/flowers/locale/flowers.eo.tr | 18 +- mods/keys/locale/keys.eo.tr | 2 +- mods/map/locale/map.eo.tr | 2 +- .../locale/mtg_craftguide.eo.tr | 2 +- mods/stairs/locale/stairs.eo.tr | 288 ++++++++-------- mods/tnt/locale/tnt.eo.tr | 2 +- mods/vessels/locale/vessels.eo.tr | 14 +- mods/walls/locale/walls.eo.tr | 6 +- mods/wool/locale/wool.eo.tr | 30 +- mods/xpanes/locale/xpanes.eo.tr | 10 +- 20 files changed, 405 insertions(+), 405 deletions(-) diff --git a/mods/beds/locale/beds.eo.tr b/mods/beds/locale/beds.eo.tr index 6acb83d8..3a4ad2f8 100644 --- a/mods/beds/locale/beds.eo.tr +++ b/mods/beds/locale/beds.eo.tr @@ -1,6 +1,6 @@ # textdomain: beds -Fancy Bed=Luksa Lito -Simple Bed=Simpla Lito +Fancy Bed=Luksa lito +Simple Bed=Simpla lito This bed is already occupied!=Tiu lito jam estas okupata! You have to stop moving before going to bed!=Vi ĉesu moviĝi por enlitiĝi! Good morning.=Bonan matenon. diff --git a/mods/bucket/locale/bucket.eo.tr b/mods/bucket/locale/bucket.eo.tr index b6266a1d..65d8ec88 100644 --- a/mods/bucket/locale/bucket.eo.tr +++ b/mods/bucket/locale/bucket.eo.tr @@ -1,5 +1,5 @@ # textdomain: bucket -Empty Bucket=Malplena Sitelo -Water Bucket=Sitelo da Akvo -River Water Bucket=Sitelo da Rivera Akvo -Lava Bucket=Sitelo da Lafo +Empty Bucket=Malplena sitelo +Water Bucket=Sitelo da akvo +River Water Bucket=Sitelo da rivera akvo +Lava Bucket=Sitelo da lafo diff --git a/mods/butterflies/locale/butterflies.eo.tr b/mods/butterflies/locale/butterflies.eo.tr index 83d03a2e..be09eb74 100644 --- a/mods/butterflies/locale/butterflies.eo.tr +++ b/mods/butterflies/locale/butterflies.eo.tr @@ -1,4 +1,4 @@ # textdomain: butterflies -White Butterfly=Blanka Papilio -Red Butterfly=Ruĝa Papilio -Violet Butterfly=Violkolora Papilio +White Butterfly=Blanka papilio +Red Butterfly=Ruĝa papilio +Violet Butterfly=Violkolora papilio diff --git a/mods/carts/locale/carts.eo.tr b/mods/carts/locale/carts.eo.tr index 939e542e..22b5280a 100644 --- a/mods/carts/locale/carts.eo.tr +++ b/mods/carts/locale/carts.eo.tr @@ -2,5 +2,5 @@ Cart=Ĉaro (Sneak+Click to pick up)=(Ŝteliri+Alklaki por reprini) Rail=Relo -Powered Rail=Elektra Relo -Brake Rail=Bremsa Relo +Powered Rail=Elektra relo +Brake Rail=Bremsa relo diff --git a/mods/default/locale/default.eo.tr b/mods/default/locale/default.eo.tr index 98b5966d..8454c6dc 100644 --- a/mods/default/locale/default.eo.tr +++ b/mods/default/locale/default.eo.tr @@ -1,6 +1,6 @@ # textdomain: default -Locked Chest=Ŝlosita Kesto -Locked Chest (owned by @1)=Ŝlosita Kesto (de @1) +Locked Chest=Ŝlosita kesto +Locked Chest (owned by @1)=Ŝlosita kesto (de @1) You do not own this chest.=Vi ne posedas ĉi tiun keston. a locked chest=ŝlosita kesto Chest=Kesto @@ -15,26 +15,26 @@ The book you were writing to mysteriously disappeared.=La libro, kiun vi skribis "@1" by @2="@1" per @2 Blueberries=Mirteloj Book=Libro -Book with Text=Libro kun Teksto -Bronze Ingot=Bronza Ingoto -Clay Brick=Argila Briko -Clay Lump=Argila Bulo -Coal Lump=Karba Bulo -Copper Ingot=Kupra Ingoto -Copper Lump=Kupra Bulo +Book with Text=Libro kun teksto +Bronze Ingot=Bronza ingoto +Clay Brick=Argila briko +Clay Lump=Argila bulo +Coal Lump=Karba bulo +Copper Ingot=Kupra ingoto +Copper Lump=Kupra bulo Diamond=Diamanto Flint=Siliko -Gold Ingot=Ora Ingoto -Gold Lump=Ora Bulo -Iron Lump=Fera Bulo -Mese Crystal=Mesea Kristalo -Mese Crystal Fragment=Mesea Kristala Ero -Obsidian Shard=Obsidiana Peceto +Gold Ingot=Ora ingoto +Gold Lump=Ora bulo +Iron Lump=Fera bulo +Mese Crystal=Mesea kristalo +Mese Crystal Fragment=Mesea kristala ero +Obsidian Shard=Obsidiana peceto Paper=Papero -Steel Ingot=Ŝtala Ingoto +Steel Ingot=Ŝtala ingoto Stick=Bastono -Tin Ingot=Stana Ingoto -Tin Lump=Stana Bulo +Tin Ingot=Stana ingoto +Tin Lump=Stana bulo Furnace is empty=Forno estas malplena 100% (output full)=100% (plena eligo) @1%=@1% @@ -46,175 +46,175 @@ Furnace inactive=Forno ne laboras Furnace=Forno Stone=Ŝtono Cobblestone=Pavimŝtono -Stone Brick=Ŝtona Briko -Stone Block=Ŝtona Bloko -Mossy Cobblestone=Muska Pavimŝtono -Desert Stone=Dezerta Ŝtono -Desert Cobblestone=Dezerta Pavimŝtono -Desert Stone Brick=Dezerta Ŝtona Briko -Desert Stone Block=Dezerta Ŝtona Bloko +Stone Brick=Ŝtona briko +Stone Block=Ŝtona bloko +Mossy Cobblestone=Muska pavimŝtono +Desert Stone=Dezerta ŝtono +Desert Cobblestone=Dezerta pavimŝtono +Desert Stone Brick=Dezerta ŝtona briko +Desert Stone Block=Dezerta ŝtona bloko Sandstone=Sablaŝtono -Sandstone Brick=Sablaŝtono Briko -Sandstone Block=Sablaŝtono Bloko -Desert Sandstone=Dezerta Sablaŝtono -Desert Sandstone Brick=Dezerta Sablaŝtono Briko -Desert Sandstone Block=Dezerta Sablaŝtono Bloko -Silver Sandstone=Arĝenta Sablaŝtono -Silver Sandstone Brick=Arĝenta Sablaŝtono Briko -Silver Sandstone Block=Arĝenta Sablaŝtono Bloko +Sandstone Brick=Sablaŝtono briko +Sandstone Block=Sablaŝtono bloko +Desert Sandstone=Dezerta sablaŝtono +Desert Sandstone Brick=Dezerta sablaŝtono briko +Desert Sandstone Block=Dezerta sablaŝtono bloko +Silver Sandstone=Arĝenta sablaŝtono +Silver Sandstone Brick=Arĝenta sablaŝtono briko +Silver Sandstone Block=Arĝenta sablaŝtono bloko Obsidian=Obsidiano -Obsidian Brick=Obsidiana Briko -Obsidian Block=Obsidiana Bloko +Obsidian Brick=Obsidiana briko +Obsidian Block=Obsidiana bloko Dirt=Tero -Dirt with Grass=Tero kun Herbo -Dirt with Grass and Footsteps=Tero kun Herbo kaj Piedpaŝoj -Dirt with Savanna Grass=Tero kun Savana Herbo -Dirt with Snow=Tero kun Neĝo -Dirt with Rainforest Litter=Tero kun Pluvarbara Folioj -Dirt with Coniferous Litter=Tero kun Koniferaj Folioj -Savanna Dirt=Savana Tero -Savanna Dirt with Savanna Grass=Savana Tero kun Savana Herbo +Dirt with Grass=Tero kun herbo +Dirt with Grass and Footsteps=Tero kun herbo kaj piedpaŝoj +Dirt with Savanna Grass=Tero kun savana herbo +Dirt with Snow=Tero kun neĝo +Dirt with Rainforest Litter=Tero kun pluvarbara folioj +Dirt with Coniferous Litter=Tero kun koniferaj folioj +Savanna Dirt=Savana tero +Savanna Dirt with Savanna Grass=Savana tero kun savana herbo Permafrost=Ĉiamfrosto -Permafrost with Stones=Ĉiamfrosto kun Ŝtonoj -Permafrost with Moss=Ĉiamfrosto kun Musko +Permafrost with Stones=Ĉiamfrosto kun ŝtonoj +Permafrost with Moss=Ĉiamfrosto kun musko Sand=Sablo -Desert Sand=Dezerta Sablo -Silver Sand=Arĝenta Sablo +Desert Sand=Dezerta sablo +Silver Sand=Arĝenta sablo Gravel=Gruzo Clay=Argilo Snow=Neĝo -Snow Block=Neĝa Bloko +Snow Block=Neĝa bloko Ice=Glacio -Cave Ice=Kaverna Glacio +Cave Ice=Kaverna glacio Apple Tree=Pomarbo -Apple Wood Planks=Pomarbaj Lignaj Tabuloj -Apple Tree Sapling=Pomarba Arbido -Apple Tree Leaves=Pomarbaj Folioj +Apple Wood Planks=Pomarbaj lignaj tabuloj +Apple Tree Sapling=Pomarba arbido +Apple Tree Leaves=Pomarbaj folioj Apple=Pomo -Apple Marker=Poma Marko -Jungle Tree=Ĝangala Arbo -Jungle Wood Planks=Ĝangalaj Lignaj Tabuloj -Jungle Tree Leaves=Ĝangalaj Arbaj Folioj -Jungle Tree Sapling=Ĝangala Arba Arbido -Emergent Jungle Tree Sapling=Nova Ĝangala Arba Arbido +Apple Marker=Poma marko +Jungle Tree=Ĝangala arbo +Jungle Wood Planks=Ĝangalaj lignaj tabuloj +Jungle Tree Leaves=Ĝangalaj arbaj folioj +Jungle Tree Sapling=Ĝangala arba arbido +Emergent Jungle Tree Sapling=Nova ĝangala arba arbido Pine Tree=Pino -Pine Wood Planks=Pinaj Lignaj Tabuloj +Pine Wood Planks=Pinaj lignaj tabuloj Pine Needles=Pinpingloj -Pine Tree Sapling=Pina Arbido +Pine Tree Sapling=Pina arbido Acacia Tree=Akacio -Acacia Wood Planks=Akaciaj Lignaj Tabuloj -Acacia Tree Leaves=Akaciaj Folioj -Acacia Tree Sapling=Akacia Arbido +Acacia Wood Planks=Akaciaj lignaj tabuloj +Acacia Tree Leaves=Akaciaj folioj +Acacia Tree Sapling=Akacia arbido Aspen Tree=Tremolo -Aspen Wood Planks=Tremolaj Lignaj Tabuloj -Aspen Tree Leaves=Tremolaj Folioj -Aspen Tree Sapling=Tremola Arbido -Coal Ore=Karba Minaĵo -Coal Block=Karba Bloko -Iron Ore=Fera Minaĵo -Steel Block=Ŝtala Bloko -Copper Ore=Kupra Minaĵo -Copper Block=Kupra Bloko -Tin Ore=Stana Minaĵo -Tin Block=Stana Bloko -Bronze Block=Bronza Bloko -Mese Ore=Mesea Minaĵo -Mese Block=Mesea Bloko -Gold Ore=Ora Minaĵo -Gold Block=Ora Bloko -Diamond Ore=Diamanta Minaĵo -Diamond Block=Diamanta Bloko +Aspen Wood Planks=Tremolaj lignaj tabuloj +Aspen Tree Leaves=Tremolaj folioj +Aspen Tree Sapling=Tremola arbido +Coal Ore=Karba minaĵo +Coal Block=Karba bloko +Iron Ore=Fera minaĵo +Steel Block=Ŝtala bloko +Copper Ore=Kupra minaĵo +Copper Block=Kupra bloko +Tin Ore=Stana minaĵo +Tin Block=Stana bloko +Bronze Block=Bronza bloko +Mese Ore=Mesea minaĵo +Mese Block=Mesea bloko +Gold Ore=Ora minaĵo +Gold Block=Ora bloko +Diamond Ore=Diamanta minaĵo +Diamond Block=Diamanta bloko Cactus=Kakto -Large Cactus Seedling=Granda Kakta Kreskaĵo +Large Cactus Seedling=Granda kakta kreskaĵo Papyrus=Papiruso -Dry Shrub=Seka Arbetaĵo -Jungle Grass=Ĝangala Herbo +Dry Shrub=Seka arbetaĵo +Jungle Grass=Ĝangala herbo Grass=Herbo -Savanna Grass=Savana Herbo +Savanna Grass=Savana herbo Fern=Filiko Marram Grass=Amofilo -Bush Stem=Arbateĵa Tubo -Bush Leaves=Arbateĵaj Folioj -Bush Sapling=Arbateĵa Arbido -Blueberry Bush Leaves with Berries=Mirtelaj Arbateĵaj Folioj kaj Beroj -Blueberry Bush Leaves=Mirtelaj Arbateĵaj Folioj -Blueberry Bush Sapling=Mirtela Arbateĵa Arbido -Acacia Bush Stem=Akacia Arbateĵa Tubo -Acacia Bush Leaves=Akaciaj Arbateĵaj Folioj -Acacia Bush Sapling=Akacia Arbateĵa Arbido -Pine Bush Stem=Pina Arbateĵa Tubo -Pine Bush Needles=Pinaj Arbateĵaj Pingloj -Pine Bush Sapling=Pina Arbateĵa Arbido +Bush Stem=Arbateĵa tubo +Bush Leaves=Arbateĵaj folioj +Bush Sapling=Arbateĵa arbido +Blueberry Bush Leaves with Berries=Mirtelaj arbateĵaj folioj kaj beroj +Blueberry Bush Leaves=Mirtelaj arbateĵaj folioj +Blueberry Bush Sapling=Mirtela arbateĵa arbido +Acacia Bush Stem=Akacia arbateĵa tubo +Acacia Bush Leaves=Akaciaj arbateĵaj folioj +Acacia Bush Sapling=Akacia arbateĵa arbido +Pine Bush Stem=Pina arbateĵa tubo +Pine Bush Needles=Pinaj arbateĵaj pingloj +Pine Bush Sapling=Pina arbateĵa arbido Kelp=Fuko -Green Coral=Verda Koralo -Pink Coral=Rozkolora Koralo -Cyan Coral=Bluverda Koralo -Brown Coral=Bruna Koralo -Orange Coral=Oranĝkolora Koralo -Coral Skeleton=Korala Framo -Water Source=Akva Fonto -Flowing Water=Flua Akvo -River Water Source=Rivera Akva Fonto -Flowing River Water=Flua Rivera Akvo -Lava Source=Lafa Fonto -Flowing Lava=Flua Lafa -Empty Bookshelf=Malplena Librobreto +Green Coral=Verda koralo +Pink Coral=Rozkolora koralo +Cyan Coral=Bluverda koralo +Brown Coral=Bruna koralo +Orange Coral=Oranĝkolora koralo +Coral Skeleton=Korala framo +Water Source=Akva fonto +Flowing Water=Flua akvo +River Water Source=Rivera akva fonto +Flowing River Water=Flua rivera akvo +Lava Source=Lafa fonto +Flowing Lava=Flua lafa +Empty Bookshelf=Malplena librobreto Bookshelf (@1 written, @2 empty books)=Librobreto (@1 skriba(j), @2 malplena(j) libro(j)) Bookshelf=Librobreto Text too long=Tro longa teksto "@1"= -Wooden Sign=Ligna Signo -Steel Sign=Ŝtala Signo -Wooden Ladder=Ligna Ŝtupetaro -Steel Ladder=Ŝtala Ŝtupetaro -Apple Wood Fence=Poma Ligna Barilo -Acacia Wood Fence=Akacia Ligna Barilo -Jungle Wood Fence=Ĝangala Ligna Barilo -Pine Wood Fence=Pina Ligna Barilo -Aspen Wood Fence=Tremola Ligna Barilo -Apple Wood Fence Rail=Poma Ligna Barila Relo -Acacia Wood Fence Rail=Akacia Ligna Barila Relo -Jungle Wood Fence Rail=Ĝangala Ligna Barila Relo -Pine Wood Fence Rail=Pina Ligna Barila Relo -Aspen Wood Fence Rail=Tremola Ligna Barila Relo +Wooden Sign=Ligna signo +Steel Sign=Ŝtala signo +Wooden Ladder=Ligna ŝtupetaro +Steel Ladder=Ŝtala ŝtupetaro +Apple Wood Fence=Poma ligna barilo +Acacia Wood Fence=Akacia ligna barilo +Jungle Wood Fence=Ĝangala ligna barilo +Pine Wood Fence=Pina ligna barilo +Aspen Wood Fence=Tremola ligna barilo +Apple Wood Fence Rail=Poma ligna barila relo +Acacia Wood Fence Rail=Akacia ligna barila relo +Jungle Wood Fence Rail=Ĝangala ligna barila relo +Pine Wood Fence Rail=Pina ligna barila relo +Aspen Wood Fence Rail=Tremola ligna barila relo Glass=Vitro -Obsidian Glass=Obsidiana Vitro -Brick Block=Brika Bloko -Mese Lamp=Mesea Lampo -Apple Wood Mese Post Light=Poma Ligna Mesea Fosta Lampo -Acacia Wood Mese Post Light=Akacia Ligna Mesea Fosta Lampo -Jungle Wood Mese Post Light=Ĝangala Ligna Mesea Fosta Lampo -Pine Wood Mese Post Light=Pina Ligna Mesea Fosta Lampo -Aspen Wood Mese Post Light=Tremola Ligna Mesea Fosta Lampo +Obsidian Glass=Obsidiana vitro +Brick Block=Brika bloko +Mese Lamp=Mesea lampo +Apple Wood Mese Post Light=Poma ligna mesea fosta lampo +Acacia Wood Mese Post Light=Akacia ligna mesea fosta lampo +Jungle Wood Mese Post Light=Ĝangala ligna mesea fosta lampo +Pine Wood Mese Post Light=Pina ligna mesea fosta lampo +Aspen Wood Mese Post Light=Tremola ligna mesea fosta lampo Cloud=Nubo -Wooden Pickaxe=Ligna Pioĉo -Stone Pickaxe=Ŝtona Pioĉo -Bronze Pickaxe=Bronza Pioĉo -Steel Pickaxe=Ŝtala Pioĉo -Mese Pickaxe=Mesea Pioĉo -Diamond Pickaxe=Diamanta Pioĉo -Wooden Shovel=Ligna Fosilo -Stone Shovel=Ŝtona Fosilo -Bronze Shovel=Bronza Fosilo -Steel Shovel=Ŝtala Fosilo -Mese Shovel=Mesea Fosilo -Diamond Shovel=Diamanta Fosilo -Wooden Axe=Ligna Hakilo -Stone Axe=Ŝtona Hakilo -Bronze Axe=Bronza Hakilo -Steel Axe=Ŝtala Hakilo -Mese Axe=Mesea Hakilo -Diamond Axe=Diamanta Hakilo -Wooden Sword=Ligna Glavo -Stone Sword=Ŝtona Glavo -Bronze Sword=Bronza Glavo -Steel Sword=Ŝtala Glavo -Mese Sword=Mesea Glavo -Diamond Sword=Diamanta Glavo +Wooden Pickaxe=Ligna pioĉo +Stone Pickaxe=Ŝtona pioĉo +Bronze Pickaxe=Bronza pioĉo +Steel Pickaxe=Ŝtala pioĉo +Mese Pickaxe=Mesea pioĉo +Diamond Pickaxe=Diamanta pioĉo +Wooden Shovel=Ligna fosilo +Stone Shovel=Ŝtona fosilo +Bronze Shovel=Bronza fosilo +Steel Shovel=Ŝtala fosilo +Mese Shovel=Mesea fosilo +Diamond Shovel=Diamanta fosilo +Wooden Axe=Ligna hakilo +Stone Axe=Ŝtona hakilo +Bronze Axe=Bronza hakilo +Steel Axe=Ŝtala hakilo +Mese Axe=Mesea hakilo +Diamond Axe=Diamanta hakilo +Wooden Sword=Ligna glavo +Stone Sword=Ŝtona glavo +Bronze Sword=Bronza glavo +Steel Sword=Ŝtala glavo +Mese Sword=Mesea glavo +Diamond Sword=Diamanta glavo Torch=Torĉo @1 will intersect protection on growth.=@1 sekcos protekton dum kresko. ##### not used anymore ##### -Mese Post Light=Mesea Fosta Lampo +Mese Post Light=Mesea fosta lampo diff --git a/mods/doors/locale/doors.eo.tr b/mods/doors/locale/doors.eo.tr index 8b7a99a6..e8e10ddc 100644 --- a/mods/doors/locale/doors.eo.tr +++ b/mods/doors/locale/doors.eo.tr @@ -1,18 +1,18 @@ # textdomain: doors -Hidden Door Segment=Kaŝita Porda Segmento +Hidden Door Segment=Kaŝita porda segmento Owned by @1=Posedita de @1 You do not own this locked door.=Vi ne posedas ĉi tiun ŝlositan pordon. a locked door=ŝlosita pordo -Wooden Door=Ligna Pordo -Steel Door=Ŝtala Pordo -Glass Door=Vitra Pordo -Obsidian Glass Door=Obsidiana Vitra Pordo +Wooden Door=Ligna pordo +Steel Door=Ŝtala pordo +Glass Door=Vitra pordo +Obsidian Glass Door=Obsidiana vitra pordo You do not own this trapdoor.=Vi ne posedas ĉi tiun plankpordon. a locked trapdoor=ŝlosita plankpordo -Wooden Trapdoor=Ligna Plankpordo -Steel Trapdoor=Ŝtala Plankpordo -Apple Wood Fence Gate=Poma Ligna Barila Pordo -Acacia Wood Fence Gate=Akacia Ligna Barila Pordo -Jungle Wood Fence Gate=Ĝangala Ligna Barila Pordo -Pine Wood Fence Gate=Pina Ligna Barila Pordo -Aspen Wood Fence Gate=Tremola Ligna Barila Pordo +Wooden Trapdoor=Ligna plankpordo +Steel Trapdoor=Ŝtala plankpordo +Apple Wood Fence Gate=Poma ligna barila pordo +Acacia Wood Fence Gate=Akacia ligna barila pordo +Jungle Wood Fence Gate=Ĝangala ligna barila pordo +Pine Wood Fence Gate=Pina ligna barila pordo +Aspen Wood Fence Gate=Tremola ligna barila pordo diff --git a/mods/dye/locale/dye.eo.tr b/mods/dye/locale/dye.eo.tr index e0fda93e..ee37abbb 100644 --- a/mods/dye/locale/dye.eo.tr +++ b/mods/dye/locale/dye.eo.tr @@ -1,16 +1,16 @@ # textdomain: dye -White Dye=Blanka Tinkturo -Grey Dye=Griza Tinkturo -Dark Grey Dye=Malhela Griza Tinkturo -Black Dye=Nigra Tinkturo -Violet Dye=Violkolora Tinkturo -Blue Dye=Blua Tinkturo -Cyan Dye=Bluverda Tinkturo -Dark Green Dye=Malhela Verda Tinkturo -Green Dye=Verda Tinkturo -Yellow Dye=Flava Tinkturo -Brown Dye=Bruna Tinkturo -Orange Dye=Oranĝkolora Tinkturo -Red Dye=Ruĝa Tinkturo -Magenta Dye=Fiksina Tinkturo -Pink Dye=Rozkolora Tinkturo +White Dye=Blanka tinkturo +Grey Dye=Griza tinkturo +Dark Grey Dye=Malhela griza tinkturo +Black Dye=Nigra tinkturo +Violet Dye=Violkolora tinkturo +Blue Dye=Blua tinkturo +Cyan Dye=Bluverda tinkturo +Dark Green Dye=Malhela verda tinkturo +Green Dye=Verda tinkturo +Yellow Dye=Flava tinkturo +Brown Dye=Bruna tinkturo +Orange Dye=Oranĝkolora tinkturo +Red Dye=Ruĝa tinkturo +Magenta Dye=Fiksina tinkturo +Pink Dye=Rozkolora tinkturo diff --git a/mods/farming/locale/farming.eo.tr b/mods/farming/locale/farming.eo.tr index 6ccef7d8..887ef004 100644 --- a/mods/farming/locale/farming.eo.tr +++ b/mods/farming/locale/farming.eo.tr @@ -1,28 +1,28 @@ # textdomain: farming Hoe=Sarkilo Seed=Semo -Wooden Hoe=Ligna Sarkilo -Stone Hoe=Ŝtona Sarkilo -Steel Hoe=Ŝtala Sarkilo -Bronze Hoe=Bronza Sarkilo -Mese Hoe=Mesea Sarkilo -Diamond Hoe=Diamanta Sarkilo -Wheat Seed=Tritika Semo +Wooden Hoe=Ligna sarkilo +Stone Hoe=Ŝtona sarkilo +Steel Hoe=Ŝtala sarkilo +Bronze Hoe=Bronza sarkilo +Mese Hoe=Mesea sarkilo +Diamond Hoe=Diamanta sarkilo +Wheat Seed=Tritika semo Wheat=Tritiko Flour=Faruno Bread=Pano -Cotton Seed=Katuna Semo +Cotton Seed=Katuna semo Cotton=Katuno String=Ŝnuro Soil=Tero -Wet Soil=Malseka Tero -Savanna Soil=Savana Tero -Wet Savanna Soil=Malseka Savana Tero -Desert Sand Soil=Dezerta Sablo Tero -Wet Desert Sand Soil=Malseka Dezerta Sablo Tero +Wet Soil=Malseka tero +Savanna Soil=Savana tero +Wet Savanna Soil=Malseka savana tero +Desert Sand Soil=Dezerta sablo tero +Wet Desert Sand Soil=Malseka dezerta sablo tero Straw=Pajlo -Straw Stair=Pajla Ŝtupo -Inner Straw Stair=Interna Pajla Ŝtupo -Outer Straw Stair=Ekstera Pajla Ŝtupo -Straw Slab=Pajla Plato -Wild Cotton=Sovaĝa Kotonujo +Straw Stair=Pajla ŝtupo +Inner Straw Stair=Interna pajla ŝtupo +Outer Straw Stair=Ekstera pajla ŝtupo +Straw Slab=Pajla plato +Wild Cotton=Sovaĝa kotonujo diff --git a/mods/fire/locale/fire.eo.tr b/mods/fire/locale/fire.eo.tr index 2fc0679a..c1e992be 100644 --- a/mods/fire/locale/fire.eo.tr +++ b/mods/fire/locale/fire.eo.tr @@ -1,4 +1,4 @@ # textdomain: fire Fire=Fajro -Permanent Fire=Ĉiama Fajro -Flint and Steel=Siliko kaj Ŝtalo +Permanent Fire=Ĉiama fajro +Flint and Steel=Siliko kaj ŝtalo diff --git a/mods/fireflies/locale/fireflies.eo.tr b/mods/fireflies/locale/fireflies.eo.tr index d4402ee2..0eaa2cb7 100644 --- a/mods/fireflies/locale/fireflies.eo.tr +++ b/mods/fireflies/locale/fireflies.eo.tr @@ -1,5 +1,5 @@ # textdomain: fireflies Firefly=Lampiro -Hidden Firefly=Kaŝita Lampiro -Bug Net=Insekta Reto -Firefly in a Bottle=Lampiro en Botelo +Hidden Firefly=Kaŝita lampiro +Bug Net=Insekta reto +Firefly in a Bottle=Lampiro en botelo diff --git a/mods/flowers/locale/flowers.eo.tr b/mods/flowers/locale/flowers.eo.tr index df515888..076df181 100644 --- a/mods/flowers/locale/flowers.eo.tr +++ b/mods/flowers/locale/flowers.eo.tr @@ -1,12 +1,12 @@ # textdomain: flowers -Red Rose=Ruĝa Rozo -Orange Tulip=Oranĝkolora Tulipo -Yellow Dandelion=Flava Leontodo -Green Chrysanthemum=Verda Krizantemo -Blue Geranium=Blua Geranio +Red Rose=Ruĝa rozo +Orange Tulip=Oranĝkolora tulipo +Yellow Dandelion=Flava leontodo +Green Chrysanthemum=Verda krizantemo +Blue Geranium=Blua geranio Viola=Violo -White Dandelion=Blanka Leontodo -Black Tulip=Nigra Tulipo -Red Mushroom=Ruĝa Fungo -Brown Mushroom=Bruna Fungo +White Dandelion=Blanka leontodo +Black Tulip=Nigra tulipo +Red Mushroom=Ruĝa fungo +Brown Mushroom=Bruna fungo Waterlily=Nimfeo diff --git a/mods/keys/locale/keys.eo.tr b/mods/keys/locale/keys.eo.tr index e73f6c4e..02a06d42 100644 --- a/mods/keys/locale/keys.eo.tr +++ b/mods/keys/locale/keys.eo.tr @@ -2,4 +2,4 @@ Key=Ŝlosilo Key to @1's @2=Ŝlosilo por la @2 de @1 -Skeleton Key=Skeleta Ŝlosilo +Skeleton Key=Skeleta ŝlosilo diff --git a/mods/map/locale/map.eo.tr b/mods/map/locale/map.eo.tr index 9225cfd7..906be7b6 100644 --- a/mods/map/locale/map.eo.tr +++ b/mods/map/locale/map.eo.tr @@ -1,3 +1,3 @@ # textdomain: map -Mapping Kit=Mapa Ilaro +Mapping Kit=Mapa ilaro Use with 'Minimap' key=Uzi per 'Minimapo' klavo diff --git a/mods/mtg_craftguide/locale/mtg_craftguide.eo.tr b/mods/mtg_craftguide/locale/mtg_craftguide.eo.tr index 6e0f028c..80a1e391 100644 --- a/mods/mtg_craftguide/locale/mtg_craftguide.eo.tr +++ b/mods/mtg_craftguide/locale/mtg_craftguide.eo.tr @@ -33,7 +33,7 @@ Any dark green dye=Ajna malhela verda tinkturo # Label for group ingredients G=A Any item belonging to the group(s): @1=Ajna objekto de la aro(j): @1 -Unknown Item=Nekonata Objekto +Unknown Item=Nekonata objekto Fuel=Brulaĵo Usage @1 of @2=Uzo @1 el @2 Recipe @1 of @2=Recepto @1 el @2 diff --git a/mods/stairs/locale/stairs.eo.tr b/mods/stairs/locale/stairs.eo.tr index 078cc9cc..f018dc9c 100644 --- a/mods/stairs/locale/stairs.eo.tr +++ b/mods/stairs/locale/stairs.eo.tr @@ -1,145 +1,145 @@ # textdomain: stairs -Glass Stair=Vitra Ŝtupo -Glass Slab=Vitra Plato -Inner Glass Stair=Interna Vitra Ŝtupo -Outer Glass Stair=Ekstera Vitra Ŝtupo -Obsidian Glass Stair=Obsidiana Vitra Ŝtupo -Obsidian Glass Slab=Obsidiana Vitra Plato -Inner Obsidian Glass Stair=Interna Obsidiana Vitra Ŝtupo -Outer Obsidian Glass Stair=Ekstera Obsidiana Vitra Ŝtupo -Wooden Stair=Ligna Ŝtupo -Inner Wooden Stair=Interna Ligna Ŝtupo -Outer Wooden Stair=Ekstera Ligna Ŝtupo -Wooden Slab=Ligna Plato -Jungle Wood Stair=Ĝangala Ligna Ŝtupo -Inner Jungle Wood Stair=Interna Ĝangala Ligna Ŝtupo -Outer Jungle Wood Stair=Ekstera Ĝangala Ligna Ŝtupo -Jungle Wood Slab=Ĝangala Ligna Plato -Pine Wood Stair=Pina Ligna Ŝtupo -Inner Pine Wood Stair=Interna Pina Ligna Ŝtupo -Outer Pine Wood Stair=Ekstera Pina Ligna Ŝtupo -Pine Wood Slab=Pina Ligna Plato -Acacia Wood Stair=Akacia Ligna Ŝtupo -Inner Acacia Wood Stair=Interna Akacia Ligna Ŝtupo -Outer Acacia Wood Stair=Ekstera Akacia Ligna Ŝtupo -Acacia Wood Slab=Akacia Ligna Plato -Aspen Wood Stair=Tremola Ligna Ŝtupo -Inner Aspen Wood Stair=Interna Tremola Ligna Ŝtupo -Outer Aspen Wood Stair=Ekstera Tremola Ligna Ŝtupo -Aspen Wood Slab=Tremola Ligna Plato -Stone Stair=Ŝtona Ŝtupo -Inner Stone Stair=Interna Ŝtona Ŝtupo -Outer Stone Stair=Ekstera Ŝtona Ŝtupo -Stone Slab=Ŝtona Plato -Cobblestone Stair=Pavimŝtona Ŝtupo -Inner Cobblestone Stair=Interna Pavimŝtona Ŝtupo -Outer Cobblestone Stair=Ekstera Pavimŝtona Ŝtupo -Cobblestone Slab=Pavimŝtona Plato -Mossy Cobblestone Stair=Muska Pavimŝtona Ŝtupo -Inner Mossy Cobblestone Stair=Interna Muska Pavimŝtona Ŝtupo -Outer Mossy Cobblestone Stair=Ekstera Muska Pavimŝtona Ŝtupo -Mossy Cobblestone Slab=Muska Pavimŝtona Plato -Stone Brick Stair=Ŝtona Brika Ŝtupo -Inner Stone Brick Stair=Interna Ŝtona Brika Ŝtupo -Outer Stone Brick Stair=Ekstera Ŝtona Brika Ŝtupo -Stone Brick Slab=Ŝtona Brika Plato -Stone Block Stair=Ŝtona Ŝtipa Ŝtupo -Inner Stone Block Stair=Interna Ŝtona Ŝtipa Ŝtupo -Outer Stone Block Stair=Ekstera Ŝtona Ŝtipa Ŝtupo -Stone Block Slab=Ŝtona Ŝtipa Plato -Desert Stone Stair=Dezerta Ŝtona Ŝtupo -Inner Desert Stone Stair=Interna Dezerta Ŝtona Ŝtupo -Outer Desert Stone Stair=Ekstera Dezerta Ŝtona Ŝtupo -Desert Stone Slab=Dezerta Ŝtona Plato -Desert Cobblestone Stair=Dezerta Pavimŝtona Ŝtupo -Inner Desert Cobblestone Stair=Interna Dezerta Pavimŝtona Ŝtupo -Outer Desert Cobblestone Stair=Ekstera Dezerta Pavimŝtona Ŝtupo -Desert Cobblestone Slab=Dezerta Pavimŝtona Plato -Desert Stone Brick Stair=Dezerta Ŝtona Brika Ŝtupo -Inner Desert Stone Brick Stair=Interna Dezerta Ŝtona Brika Ŝtupo -Outer Desert Stone Brick Stair=Ekstera Dezerta Ŝtona Brika Ŝtupo -Desert Stone Brick Slab=Dezerta Ŝtona Brika Plato -Desert Stone Block Stair=Dezerta Ŝtona Bloko Ŝtupo -Inner Desert Stone Block Stair=Interna Dezerta Ŝtona Bloko Stupo -Outer Desert Stone Block Stair=Ekstera Dezerta Ŝtona Bloko Ŝtupo -Desert Stone Block Slab=Dezerta Ŝtona Bloko Plato -Sandstone Stair=Sablŝtona Ŝtupo -Inner Sandstone Stair=Interna Ŝablŝtona Ŝtupo -Outer Sandstone Stair=Ekstera Ŝablŝtona Ŝtupo -Sandstone Slab=Ŝablŝtona Plato -Sandstone Brick Stair=Ŝablŝtona Brika Ŝtupo -Inner Sandstone Brick Stair=Interna Ŝablŝtona Brika Ŝtupo -Outer Sandstone Brick Stair=Ekstera Ŝablŝtona Brika Ŝtupo -Sandstone Brick Slab=Ŝablŝtona Brika Plato -Sandstone Block Stair=Ŝablŝtona Ŝtipa Ŝtupo -Inner Sandstone Block Stair=Interna Ŝablŝtona Ŝtipa Ŝtupo -Outer Sandstone Block Stair=Ekstera Ŝablŝtona Ŝtipa Ŝtupo -Sandstone Block Slab=Ŝablŝtona Ŝtipa Plato -Desert Sandstone Stair=Dezerta Ŝablŝtona Ŝtupo -Inner Desert Sandstone Stair=Interna Dezerta Ŝablŝtona Ŝtupo -Outer Desert Sandstone Stair=Ekstera Dezerta Ŝablŝtona Ŝtupo -Desert Sandstone Slab=Dezerta Ŝablŝtona Plato -Desert Sandstone Brick Stair=Dezerta Ŝablŝtona Brika Ŝtupo -Inner Desert Sandstone Brick Stair=Interna Dezerta Ŝablŝtona Brika Ŝtupo -Outer Desert Sandstone Brick Stair=Ekstera Dezerta Ŝablŝtona Brika Ŝtupo -Desert Sandstone Brick Slab=Dezerta Ŝablŝtona Brika Plato -Desert Sandstone Block Stair=Dezerta Ŝablŝtona Ŝtipa Ŝtupo -Inner Desert Sandstone Block Stair=Interna Dezerta Ŝablŝtona Brika Ŝtupo -Outer Desert Sandstone Block Stair=Ekstera Dezerta Ŝablŝtona Brika Ŝtupo -Desert Sandstone Block Slab=Dezerta Ŝablŝtona Ŝtipa Plato -Silver Sandstone Stair=Arĝenta Ŝablŝtona Ŝtupo -Inner Silver Sandstone Stair=Interna Arĝenta Ŝablŝtona Ŝtupo -Outer Silver Sandstone Stair=Ekstera Arĝenta Ŝablŝtona Ŝtupo -Silver Sandstone Slab=Arĝenta Ŝablŝtona Plato -Silver Sandstone Brick Stair=Arĝenta Ŝablŝtona Brika Ŝtupo -Inner Silver Sandstone Brick Stair=Interna Arĝenta Ŝablŝtona Brika Ŝtupo -Outer Silver Sandstone Brick Stair=Ekstera Arĝenta Ŝablŝtona Brika Ŝtupo -Silver Sandstone Brick Slab=Arĝenta Ŝablŝtona Brika Plato -Silver Sandstone Block Stair=Arĝenta Ŝablŝtona Ŝtipa Ŝtupo -Inner Silver Sandstone Block Stair=Interna Arĝenta Ŝablŝtona Ŝtipa Ŝtupo -Outer Silver Sandstone Block Stair=Ekstera Arĝenta Ŝablŝtona Ŝtipa Ŝtupo -Silver Sandstone Block Slab=Arĝenta Ŝablŝtona Ŝtipa Plato -Obsidian Stair=Obsidiana Ŝtupo -Inner Obsidian Stair=Interna Obsidiana Ŝtupo -Outer Obsidian Stair=Ekstera Obsidiana Ŝtupo -Obsidian Slab=Obsidiana Plato -Obsidian Brick Stair=Obsidiana Brika Ŝtupo -Inner Obsidian Brick Stair=Interna Obsidiana Brika Ŝtupo -Outer Obsidian Brick Stair=Ekstera Obsidiana Brika Ŝtupo -Obsidian Brick Slab=Obsidiana Brika Plato -Obsidian Block Stair=Obsidiana Ŝtipa Ŝtupo -Inner Obsidian Block Stair=Interna Obsidiana Ŝtipa Ŝtupo -Outer Obsidian Block Stair=Ekstera Obsidiana Ŝtipa Ŝtupo -Obsidian Block Slab=Obsidiana Ŝtipa Plato -Brick Stair=Brika Ŝtupo -Inner Brick Stair=Interna Brika Ŝtupo -Outer Brick Stair=Ekstera Brika Ŝtupo -Brick Slab=Brika Plato -Steel Block Stair=Ŝtala Ŝtipa Ŝtupo -Inner Steel Block Stair=Interna Ŝtala Ŝtipa Ŝtupo -Outer Steel Block Stair=Ekstera Ŝtala Ŝtipa Ŝtupo -Steel Block Slab=Ŝtala Ŝtipa Plato -Tin Block Stair=Stana Ŝtipa Ŝtupo -Inner Tin Block Stair=Interna Stana Ŝtipa Ŝtupo -Outer Tin Block Stair=Ekstera Stana Ŝtipa Ŝtupo -Tin Block Slab=Stana Ŝtipa Plato -Copper Block Stair=Kupra Ŝtipa Ŝtupo -Inner Copper Block Stair=Interna Kupra Ŝtipa Ŝtupo -Outer Copper Block Stair=Ekstera Kupra Ŝtipa Ŝtupo -Copper Block Slab=Kupra Ŝtipa Plato -Bronze Block Stair=Bronza Ŝtipa Ŝtupo -Inner Bronze Block Stair=Interna Bronza Ŝtipa Ŝtupo -Outer Bronze Block Stair=Ekstera Bronza Ŝtipa Ŝtupo -Bronze Block Slab=Bronza Ŝtipa Plato -Gold Block Stair=Ora Ŝtipa Ŝtupo -Inner Gold Block Stair=Interna Ora Ŝtipa Ŝtupo -Outer Gold Block Stair=Ekstera Ora Ŝtipa Ŝtupo -Gold Block Slab=Ora Ŝtipa Plato -Ice Stair=Glacia Ŝtupo -Inner Ice Stair=Interna Glacia Ŝtupo -Outer Ice Stair=Ekstera Glacia Ŝtupo -Ice Slab=Glacia Plato -Snow Block Stair=Neĝa Ŝtipa Ŝtupo -Inner Snow Block Stair=Interna Neĝa Ŝtipa Ŝtupo -Outer Snow Block Stair=Ekstera Neĝa Ŝtipa Ŝtupo -Snow Block Slab=Neĝa Ŝtipa Plato +Glass Stair=Vitra ŝtupo +Glass Slab=Vitra plato +Inner Glass Stair=Interna vitra ŝtupo +Outer Glass Stair=Ekstera vitra ŝtupo +Obsidian Glass Stair=Obsidiana vitra ŝtupo +Obsidian Glass Slab=Obsidiana vitra plato +Inner Obsidian Glass Stair=Interna obsidiana vitra ŝtupo +Outer Obsidian Glass Stair=Ekstera obsidiana vitra ŝtupo +Wooden Stair=Ligna ŝtupo +Inner Wooden Stair=Interna ligna ŝtupo +Outer Wooden Stair=Ekstera ligna ŝtupo +Wooden Slab=Ligna plato +Jungle Wood Stair=Ĝangala ligna ŝtupo +Inner Jungle Wood Stair=Interna ĝangala ligna ŝtupo +Outer Jungle Wood Stair=Ekstera ĝangala ligna ŝtupo +Jungle Wood Slab=Ĝangala ligna plato +Pine Wood Stair=Pina ligna ŝtupo +Inner Pine Wood Stair=Interna pina ligna ŝtupo +Outer Pine Wood Stair=Ekstera pina ligna ŝtupo +Pine Wood Slab=Pina ligna plato +Acacia Wood Stair=Akacia ligna ŝtupo +Inner Acacia Wood Stair=Interna akacia ligna ŝtupo +Outer Acacia Wood Stair=Ekstera akacia ligna ŝtupo +Acacia Wood Slab=Akacia ligna plato +Aspen Wood Stair=Tremola ligna ŝtupo +Inner Aspen Wood Stair=Interna tremola ligna ŝtupo +Outer Aspen Wood Stair=Ekstera tremola ligna ŝtupo +Aspen Wood Slab=Tremola ligna plato +Stone Stair=Ŝtona ŝtupo +Inner Stone Stair=Interna ŝtona ŝtupo +Outer Stone Stair=Ekstera ŝtona ŝtupo +Stone Slab=Ŝtona plato +Cobblestone Stair=Pavimŝtona ŝtupo +Inner Cobblestone Stair=Interna pavimŝtona ŝtupo +Outer Cobblestone Stair=Ekstera pavimŝtona ŝtupo +Cobblestone Slab=Pavimŝtona plato +Mossy Cobblestone Stair=Muska pavimŝtona ŝtupo +Inner Mossy Cobblestone Stair=Interna muska pavimŝtona ŝtupo +Outer Mossy Cobblestone Stair=Ekstera muska pavimŝtona ŝtupo +Mossy Cobblestone Slab=Muska pavimŝtona plato +Stone Brick Stair=Ŝtona brika ŝtupo +Inner Stone Brick Stair=Interna ŝtona brika ŝtupo +Outer Stone Brick Stair=Ekstera ŝtona brika ŝtupo +Stone Brick Slab=Ŝtona brika plato +Stone Block Stair=Ŝtona ŝtipa ŝtupo +Inner Stone Block Stair=Interna ŝtona ŝtipa ŝtupo +Outer Stone Block Stair=Ekstera ŝtona ŝtipa ŝtupo +Stone Block Slab=Ŝtona ŝtipa plato +Desert Stone Stair=Dezerta ŝtona ŝtupo +Inner Desert Stone Stair=Interna dezerta ŝtona ŝtupo +Outer Desert Stone Stair=Ekstera dezerta ŝtona ŝtupo +Desert Stone Slab=Dezerta ŝtona plato +Desert Cobblestone Stair=Dezerta pavimŝtona ŝtupo +Inner Desert Cobblestone Stair=Interna dezerta pavimŝtona ŝtupo +Outer Desert Cobblestone Stair=Ekstera dezerta pavimŝtona ŝtupo +Desert Cobblestone Slab=Dezerta pavimŝtona plato +Desert Stone Brick Stair=Dezerta ŝtona brika ŝtupo +Inner Desert Stone Brick Stair=Interna dezerta ŝtona brika ŝtupo +Outer Desert Stone Brick Stair=Ekstera dezerta ŝtona brika ŝtupo +Desert Stone Brick Slab=Dezerta ŝtona brika plato +Desert Stone Block Stair=Dezerta ŝtona bloko ŝtupo +Inner Desert Stone Block Stair=Interna dezerta ŝtona bloko ŝtupo +Outer Desert Stone Block Stair=Ekstera dezerta ŝtona bloko ŝtupo +Desert Stone Block Slab=Dezerta ŝtona bloko plato +Sandstone Stair=Sablŝtona ŝtupo +Inner Sandstone Stair=Interna ŝablŝtona ŝtupo +Outer Sandstone Stair=Ekstera ŝablŝtona ŝtupo +Sandstone Slab=Ŝablŝtona plato +Sandstone Brick Stair=Ŝablŝtona brika ŝtupo +Inner Sandstone Brick Stair=Interna ŝablŝtona brika ŝtupo +Outer Sandstone Brick Stair=Ekstera ŝablŝtona brika ŝtupo +Sandstone Brick Slab=Ŝablŝtona brika plato +Sandstone Block Stair=Ŝablŝtona ŝtipa ŝtupo +Inner Sandstone Block Stair=Interna ŝablŝtona ŝtipa ŝtupo +Outer Sandstone Block Stair=Ekstera ŝablŝtona ŝtipa ŝtupo +Sandstone Block Slab=Ŝablŝtona ŝtipa plato +Desert Sandstone Stair=Dezerta ŝablŝtona ŝtupo +Inner Desert Sandstone Stair=Interna dezerta ŝablŝtona ŝtupo +Outer Desert Sandstone Stair=Ekstera dezerta ŝablŝtona ŝtupo +Desert Sandstone Slab=Dezerta ŝablŝtona plato +Desert Sandstone Brick Stair=Dezerta ŝablŝtona brika ŝtupo +Inner Desert Sandstone Brick Stair=Interna dezerta ŝablŝtona brika ŝtupo +Outer Desert Sandstone Brick Stair=Ekstera dezerta ŝablŝtona brika ŝtupo +Desert Sandstone Brick Slab=Dezerta ŝablŝtona brika plato +Desert Sandstone Block Stair=Dezerta ŝablŝtona ŝtipa ŝtupo +Inner Desert Sandstone Block Stair=Interna dezerta ŝablŝtona brika ŝtupo +Outer Desert Sandstone Block Stair=Ekstera dezerta ŝablŝtona brika ŝtupo +Desert Sandstone Block Slab=Dezerta ŝablŝtona ŝtipa plato +Silver Sandstone Stair=Arĝenta ŝablŝtona ŝtupo +Inner Silver Sandstone Stair=Interna arĝenta ŝablŝtona ŝtupo +Outer Silver Sandstone Stair=Ekstera arĝenta ŝablŝtona ŝtupo +Silver Sandstone Slab=Arĝenta ŝablŝtona plato +Silver Sandstone Brick Stair=Arĝenta ŝablŝtona brika ŝtupo +Inner Silver Sandstone Brick Stair=Interna arĝenta ŝablŝtona brika ŝtupo +Outer Silver Sandstone Brick Stair=Ekstera arĝenta ŝablŝtona brika ŝtupo +Silver Sandstone Brick Slab=Arĝenta ŝablŝtona brika plato +Silver Sandstone Block Stair=Arĝenta ŝablŝtona ŝtipa ŝtupo +Inner Silver Sandstone Block Stair=Interna arĝenta ŝablŝtona ŝtipa ŝtupo +Outer Silver Sandstone Block Stair=Ekstera arĝenta ŝablŝtona ŝtipa ŝtupo +Silver Sandstone Block Slab=Arĝenta ŝablŝtona ŝtipa plato +Obsidian Stair=Obsidiana ŝtupo +Inner Obsidian Stair=Interna obsidiana ŝtupo +Outer Obsidian Stair=Ekstera obsidiana ŝtupo +Obsidian Slab=Obsidiana plato +Obsidian Brick Stair=Obsidiana brika ŝtupo +Inner Obsidian Brick Stair=Interna obsidiana brika ŝtupo +Outer Obsidian Brick Stair=Ekstera obsidiana brika ŝtupo +Obsidian Brick Slab=Obsidiana brika plato +Obsidian Block Stair=Obsidiana ŝtipa ŝtupo +Inner Obsidian Block Stair=Interna obsidiana ŝtipa ŝtupo +Outer Obsidian Block Stair=Ekstera obsidiana ŝtipa ŝtupo +Obsidian Block Slab=Obsidiana ŝtipa plato +Brick Stair=Brika ŝtupo +Inner Brick Stair=Interna brika ŝtupo +Outer Brick Stair=Ekstera brika ŝtupo +Brick Slab=Brika plato +Steel Block Stair=Ŝtala ŝtipa ŝtupo +Inner Steel Block Stair=Interna ŝtala ŝtipa ŝtupo +Outer Steel Block Stair=Ekstera ŝtala ŝtipa ŝtupo +Steel Block Slab=Ŝtala ŝtipa plato +Tin Block Stair=Stana ŝtipa ŝtupo +Inner Tin Block Stair=Interna stana ŝtipa ŝtupo +Outer Tin Block Stair=Ekstera stana ŝtipa ŝtupo +Tin Block Slab=Stana ŝtipa plato +Copper Block Stair=Kupra ŝtipa ŝtupo +Inner Copper Block Stair=Interna kupra ŝtipa ŝtupo +Outer Copper Block Stair=Ekstera kupra ŝtipa ŝtupo +Copper Block Slab=Kupra ŝtipa plato +Bronze Block Stair=Bronza ŝtipa ŝtupo +Inner Bronze Block Stair=Interna bronza ŝtipa ŝtupo +Outer Bronze Block Stair=Ekstera bronza ŝtipa ŝtupo +Bronze Block Slab=Bronza ŝtipa plato +Gold Block Stair=Ora ŝtipa ŝtupo +Inner Gold Block Stair=Interna ora ŝtipa ŝtupo +Outer Gold Block Stair=Ekstera ora ŝtipa ŝtupo +Gold Block Slab=Ora ŝtipa plato +Ice Stair=Glacia ŝtupo +Inner Ice Stair=Interna glacia ŝtupo +Outer Ice Stair=Ekstera glacia ŝtupo +Ice Slab=Glacia plato +Snow Block Stair=Neĝa ŝtipa ŝtupo +Inner Snow Block Stair=Interna neĝa ŝtipa ŝtupo +Outer Snow Block Stair=Ekstera neĝa ŝtipa ŝtupo +Snow Block Slab=Neĝa ŝtipa plato diff --git a/mods/tnt/locale/tnt.eo.tr b/mods/tnt/locale/tnt.eo.tr index 86240914..b467d2f5 100644 --- a/mods/tnt/locale/tnt.eo.tr +++ b/mods/tnt/locale/tnt.eo.tr @@ -1,4 +1,4 @@ # textdomain: tnt Gun Powder=Pulvo -TNT Stick=Dinamita Bastono +TNT Stick=Dinamita bastono TNT=Dinamito diff --git a/mods/vessels/locale/vessels.eo.tr b/mods/vessels/locale/vessels.eo.tr index c4a84ce5..63a955d8 100644 --- a/mods/vessels/locale/vessels.eo.tr +++ b/mods/vessels/locale/vessels.eo.tr @@ -1,8 +1,8 @@ # textdomain: vessels -Empty Vessels Shelf=Malplena Vaza Plataĵo -Vessels Shelf (@1 items)=Vaza Plataĵo (@1 objektoj) -Vessels Shelf=Vaza Plataĵo -Empty Glass Bottle=Malplena Vitra Botelo -Empty Drinking Glass=Malplena Glaso -Empty Heavy Steel Bottle=Malplena Peza Ŝtala Botelo -Glass Fragments=Vitraj Eroj +Empty Vessels Shelf=Malplena vaza plataĵo +Vessels Shelf (@1 items)=Vaza plataĵo (@1 objektoj) +Vessels Shelf=Vaza plataĵo +Empty Glass Bottle=Malplena vitra botelo +Empty Drinking Glass=Malplena glaso +Empty Heavy Steel Bottle=Malplena peza ŝtala botelo +Glass Fragments=Vitraj eroj diff --git a/mods/walls/locale/walls.eo.tr b/mods/walls/locale/walls.eo.tr index 85efcbf5..95b8ceda 100644 --- a/mods/walls/locale/walls.eo.tr +++ b/mods/walls/locale/walls.eo.tr @@ -1,4 +1,4 @@ # textdomain: walls -Cobblestone Wall=Pavimŝtona Muro -Mossy Cobblestone Wall=Muska Pavimŝtona Muro -Desert Cobblestone Wall=Dezerta Pavimŝtona Muro +Cobblestone Wall=Pavimŝtona muro +Mossy Cobblestone Wall=Muska pavimŝtona muro +Desert Cobblestone Wall=Dezerta pavimŝtona muro diff --git a/mods/wool/locale/wool.eo.tr b/mods/wool/locale/wool.eo.tr index 16e3e004..78242cd7 100644 --- a/mods/wool/locale/wool.eo.tr +++ b/mods/wool/locale/wool.eo.tr @@ -1,16 +1,16 @@ # textdomain: wool -White Wool=Blanka Lano -Grey Wool=Griza Lano -Dark Grey Wool=Malhela Griza Lano -Black Wool=Nigra Lano -Violet Wool=Violkolora Lano -Blue Wool=Blua Lano -Cyan Wool=Bluverda Lano -Dark Green Wool=Malhela Verda Lano -Green Wool=Verda Lano -Yellow Wool=Flava Lano -Brown Wool=Bruna Lano -Orange Wool=Oranĝkolora Lano -Red Wool=Ruĝa Lano -Magenta Wool=Fuksina Lano -Pink Wool=Rozkolora Lano +White Wool=Blanka lano +Grey Wool=Griza lano +Dark Grey Wool=Malhela griza lano +Black Wool=Nigra lano +Violet Wool=Violkolora lano +Blue Wool=Blua lano +Cyan Wool=Bluverda lano +Dark Green Wool=Malhela verda lano +Green Wool=Verda lano +Yellow Wool=Flava lano +Brown Wool=Bruna lano +Orange Wool=Oranĝkolora lano +Red Wool=Ruĝa lano +Magenta Wool=Fuksina lano +Pink Wool=Rozkolora lano diff --git a/mods/xpanes/locale/xpanes.eo.tr b/mods/xpanes/locale/xpanes.eo.tr index 0051b7ea..cfbbfb56 100644 --- a/mods/xpanes/locale/xpanes.eo.tr +++ b/mods/xpanes/locale/xpanes.eo.tr @@ -1,6 +1,6 @@ # textdomain: xpanes -Glass Pane=Vitra Vitraĵo -Obsidian Glass Pane=Obsidiana Vitra Vitraĵo -Steel Bars=Ŝtalaj Baraĵoj -Steel Bar Door=Ŝtala Baraĵa Pordo -Steel Bar Trapdoor=Ŝtala Baraĵa Plankpordo +Glass Pane=Vitra vitraĵo +Obsidian Glass Pane=Obsidiana vitra vitraĵo +Steel Bars=Ŝtalaj baraĵoj +Steel Bar Door=Ŝtala baraĵa pordo +Steel Bar Trapdoor=Ŝtala baraĵa plankpordo From 5a800848006064ec82aee4bacfd9b519a1f98aee Mon Sep 17 00:00:00 2001 From: Gregor Parzefall Date: Sat, 24 Feb 2024 14:37:47 +0100 Subject: [PATCH 10/36] Set field_enter_after_edit for search fields --- mods/creative/inventory.lua | 1 + mods/mtg_craftguide/init.lua | 1 + 2 files changed, 2 insertions(+) diff --git a/mods/creative/inventory.lua b/mods/creative/inventory.lua index 3f0a12df..f018afe1 100644 --- a/mods/creative/inventory.lua +++ b/mods/creative/inventory.lua @@ -170,6 +170,7 @@ function creative.register_tab(name, title, items) "tooltip[creative_prev;" .. esc(S("Previous page")) .. "]" .. "tooltip[creative_next;" .. esc(S("Next page")) .. "]" .. "listring[current_player;main]" .. + "field_enter_after_edit[creative_filter;true]" .. "field_close_on_enter[creative_filter;false]" .. "field[0.3,4.2;2.8,1.2;creative_filter;;" .. esc(inv.filter) .. "]" .. "listring[detached:creative_" .. player_name .. ";main]" .. diff --git a/mods/mtg_craftguide/init.lua b/mods/mtg_craftguide/init.lua index 55b76d75..97cd63a7 100644 --- a/mods/mtg_craftguide/init.lua +++ b/mods/mtg_craftguide/init.lua @@ -282,6 +282,7 @@ local function get_formspec(player) "tooltip[clear;"..esc(S("Reset")).."]".. "tooltip[prev;"..esc(S("Previous page")).."]".. "tooltip[next;"..esc(S("Next page")).."]".. + "field_enter_after_edit[filter;true]".. "field_close_on_enter[filter;false]") if #data.items == 0 then From ef788d0307e3bbcc6a7d1a903bc2ddfd920baf49 Mon Sep 17 00:00:00 2001 From: cx384 Date: Sun, 10 Mar 2024 17:57:22 +0100 Subject: [PATCH 11/36] Make bugs only pointable with Bug Net (#3099) --- mods/butterflies/init.lua | 4 ++++ mods/fireflies/init.lua | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/mods/butterflies/init.lua b/mods/butterflies/init.lua index 0d61b33d..16b67910 100644 --- a/mods/butterflies/init.lua +++ b/mods/butterflies/init.lua @@ -3,6 +3,9 @@ -- Load support for MT game translation. local S = minetest.get_translator("butterflies") +-- Legacy compatibility, when pointabilities don't exist, pointable is set to true. +local pointable_compat = not minetest.features.item_specific_pointabilities + -- register butterflies local butter_list = { {"white", S("White Butterfly")}, @@ -33,6 +36,7 @@ for i in ipairs (butter_list) do sunlight_propagates = true, buildable_to = true, walkable = false, + pointable = pointable_compat, groups = {catchable = 1}, selection_box = { type = "fixed", diff --git a/mods/fireflies/init.lua b/mods/fireflies/init.lua index 5593afe4..4aba655d 100644 --- a/mods/fireflies/init.lua +++ b/mods/fireflies/init.lua @@ -3,6 +3,8 @@ -- Load support for MT game translation. local S = minetest.get_translator("fireflies") +-- Legacy compatibility, when pointabilities don't exist, pointable is set to true. +local pointable_compat = not minetest.features.item_specific_pointabilities minetest.register_node("fireflies:firefly", { description = S("Firefly"), @@ -23,6 +25,7 @@ minetest.register_node("fireflies:firefly", { sunlight_propagates = true, buildable_to = true, walkable = false, + pointable = pointable_compat, groups = {catchable = 1}, selection_box = { type = "fixed", @@ -91,6 +94,7 @@ minetest.register_node("fireflies:hidden_firefly", { minetest.register_tool("fireflies:bug_net", { description = S("Bug Net"), inventory_image = "fireflies_bugnet.png", + pointabilities = {nodes = {["group:catchable"] = true}}, on_use = function(itemstack, player, pointed_thing) local player_name = player and player:get_player_name() or "" if not pointed_thing or pointed_thing.type ~= "node" or From 316c0c7224301a2de41477e64d04763eefb3d4bd Mon Sep 17 00:00:00 2001 From: sfan5 Date: Mon, 25 Mar 2024 20:45:31 +0100 Subject: [PATCH 12/36] Add workflow that runs simple test with the engine present --- .github/workflows/test.yml | 11 +++++++++++ mods/default/init.lua | 16 ++++++++++++++++ utils/test/minetest.conf | 1 + utils/test/run.sh | 19 +++++++++++++++++++ utils/test/world.mt | 7 +++++++ 5 files changed, 54 insertions(+) create mode 100644 .github/workflows/test.yml create mode 100644 utils/test/minetest.conf create mode 100755 utils/test/run.sh create mode 100644 utils/test/world.mt diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..8128ba34 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,11 @@ +name: test +on: [push, pull_request] + +jobs: + test: + runs-on: ubuntu-latest + timeout-minutes: 5 + steps: + - uses: actions/checkout@v4 + + - run: ./utils/test/run.sh diff --git a/mods/default/init.lua b/mods/default/init.lua index 993316b8..878c5261 100644 --- a/mods/default/init.lua +++ b/mods/default/init.lua @@ -77,3 +77,19 @@ dofile(default_path.."/crafting.lua") dofile(default_path.."/mapgen.lua") dofile(default_path.."/aliases.lua") dofile(default_path.."/legacy.lua") + +-- Smoke test that is run via ./util/test/run.sh +if minetest.settings:get_bool("minetest_game_smoke_test") then + minetest.after(0, function() + minetest.emerge_area(vector.new(0, 0, 0), vector.new(32, 32, 32)) + local pos = vector.new(9, 9, 9) + local function check() + if minetest.get_node(pos).name ~= "ignore" then + minetest.request_shutdown() + return + end + minetest.after(0, check) + end + check() + end) +end diff --git a/utils/test/minetest.conf b/utils/test/minetest.conf new file mode 100644 index 00000000..5bbe6e27 --- /dev/null +++ b/utils/test/minetest.conf @@ -0,0 +1 @@ +minetest_game_smoke_test = true diff --git a/utils/test/run.sh b/utils/test/run.sh new file mode 100755 index 00000000..284b2daf --- /dev/null +++ b/utils/test/run.sh @@ -0,0 +1,19 @@ +#!/bin/bash -e +world=$(mktemp -d) +trap 'rm -rf "$world" || :' EXIT + +[ -f game.conf ] || { echo "Must be run in game root folder." >&2; exit 1; } + +cp -v utils/test/world.mt "$world/" +chmod -R a+rwX "$world" # needed because server runs as unprivileged user inside container + +vol=( + -v "$PWD/utils/test/minetest.conf":/etc/minetest/minetest.conf + --tmpfs /var/lib/minetest/.minetest + -v "$PWD":/var/lib/minetest/.minetest/games/minetest_game + -v "$world":/var/lib/minetest/.minetest/world +) +[ -z "$DOCKER_IMAGE" ] && DOCKER_IMAGE="ghcr.io/minetest/minetest:master" +docker run --rm -i "${vol[@]}" "$DOCKER_IMAGE" + +exit 0 diff --git a/utils/test/world.mt b/utils/test/world.mt new file mode 100644 index 00000000..d386d77a --- /dev/null +++ b/utils/test/world.mt @@ -0,0 +1,7 @@ +auth_backend = sqlite3 +backend = sqlite3 +creative_mode = false +enable_damage = true +gameid = minetest +mod_storage_backend = sqlite3 +player_backend = sqlite3 From 16c663f87e63af6f799e2e8f9f8294c633e5786a Mon Sep 17 00:00:00 2001 From: ROllerozxa Date: Thu, 28 Mar 2024 20:45:24 +0100 Subject: [PATCH 13/36] Replace beds_transparent.png with blank.png --- mods/beds/beds.lua | 4 ++-- mods/beds/textures/beds_transparent.png | Bin 83 -> 0 bytes 2 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 mods/beds/textures/beds_transparent.png diff --git a/mods/beds/beds.lua b/mods/beds/beds.lua index 1623de88..e9051076 100644 --- a/mods/beds/beds.lua +++ b/mods/beds/beds.lua @@ -66,7 +66,7 @@ beds.register_bed("beds:bed", { "beds_bed_under.png", "beds_bed_side_bottom_r.png", "beds_bed_side_bottom_r.png^[transformFX", - "beds_transparent.png", + "blank.png", "beds_bed_side_bottom.png" }, top = { @@ -75,7 +75,7 @@ beds.register_bed("beds:bed", { "beds_bed_side_top_r.png", "beds_bed_side_top_r.png^[transformFX", "beds_bed_side_top.png", - "beds_transparent.png", + "blank.png", } }, nodebox = { diff --git a/mods/beds/textures/beds_transparent.png b/mods/beds/textures/beds_transparent.png deleted file mode 100644 index bd36820b890be7c3262e99f4766fb9e39e75a4a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ql2i3Ar`&KfByfsXI5<}ywVWJ f?8Ymh2UPMmO8;Tqmh+c@su(<7{an^LB{Ts54P_Rm From a43a6bcdeff2f6d7656164da2aaa28967dd52e57 Mon Sep 17 00:00:00 2001 From: tour <129965577+a-tour-ist@users.noreply.github.com> Date: Sat, 6 Apr 2024 22:34:20 +0200 Subject: [PATCH 14/36] fix crash from default.chest.register_chest --- mods/default/chests.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/default/chests.lua b/mods/default/chests.lua index 1c1ce051..1c97b73a 100644 --- a/mods/default/chests.lua +++ b/mods/default/chests.lua @@ -297,9 +297,10 @@ function default.chest.register_chest(prefixed_name, d) end -- close opened chests on load + local modname, chestname = prefixed_name:match("^(:?.-):(.*)$") minetest.register_lbm({ label = "close opened chests on load", - name = "default:close_" .. prefixed_name:gsub(":", "_") .. "_open", + name = modname .. ":close_" .. chestname .. "_open", nodenames = {prefixed_name .. "_open"}, run_at_every_load = true, action = function(pos, node) From 0639681f9ba817992c1373b461eeda039149c679 Mon Sep 17 00:00:00 2001 From: 1F616EMO~nya Date: Sat, 13 Apr 2024 19:07:13 +0800 Subject: [PATCH 15/36] Log bucket liquid placement (#3108) --- mods/bucket/init.lua | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/mods/bucket/init.lua b/mods/bucket/init.lua index ebdf2e74..d3d3151b 100644 --- a/mods/bucket/init.lua +++ b/mods/bucket/init.lua @@ -33,6 +33,11 @@ local function check_protection(pos, name, text) return false end +local function log_action(pos, name, action) + minetest.log("action", (name ~= "" and name or "A mod") + .. " " .. action .. " at " .. minetest.pos_to_string(pos) .. " with a bucket") +end + -- Register a new liquid -- source = name of the source node -- flowing = name of the flowing node @@ -101,13 +106,13 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name end end - if check_protection(lpos, user - and user:get_player_name() - or "", "place "..source) then + local pname = user and user:get_player_name() or "" + if check_protection(lpos, pname, "place "..source) then return end minetest.set_node(lpos, {name = source}) + log_action(lpos, pname, "placed " .. source) return ItemStack("bucket:bucket_empty") end }) @@ -128,16 +133,16 @@ minetest.register_craftitem("bucket:bucket_empty", { return end -- Check if pointing to a liquid source - local node = minetest.get_node(pointed_thing.under) + local pos = pointed_thing.under + local node = minetest.get_node(pos) local liquiddef = bucket.liquids[node.name] local item_count = user:get_wielded_item():get_count() if liquiddef ~= nil and liquiddef.itemname ~= nil and node.name == liquiddef.source then - if check_protection(pointed_thing.under, - user:get_player_name(), - "take ".. node.name) then + local pname = user:get_player_name() + if check_protection(pos, pname, "take ".. node.name) then return end @@ -152,9 +157,9 @@ minetest.register_craftitem("bucket:bucket_empty", { if inv:room_for_item("main", {name=liquiddef.itemname}) then inv:add_item("main", liquiddef.itemname) else - local pos = user:get_pos() - pos.y = math.floor(pos.y + 0.5) - minetest.add_item(pos, liquiddef.itemname) + local upos = user:get_pos() + upos.y = math.floor(upos.y + 0.5) + minetest.add_item(upos, liquiddef.itemname) end -- set to return empty buckets minus 1 @@ -166,10 +171,13 @@ minetest.register_craftitem("bucket:bucket_empty", { local source_neighbor = false if liquiddef.force_renew then source_neighbor = - minetest.find_node_near(pointed_thing.under, 1, liquiddef.source) + minetest.find_node_near(pos, 1, liquiddef.source) end - if not (source_neighbor and liquiddef.force_renew) then - minetest.add_node(pointed_thing.under, {name = "air"}) + if source_neighbor and liquiddef.force_renew then + log_action(pos, pname, "picked up " .. liquiddef.source .. " (force renewed)") + else + minetest.add_node(pos, {name = "air"}) + log_action(pos, pname, "picked up " .. liquiddef.source) end return ItemStack(giving_back) @@ -177,7 +185,7 @@ minetest.register_craftitem("bucket:bucket_empty", { -- non-liquid nodes will have their on_punch triggered local node_def = minetest.registered_nodes[node.name] if node_def then - node_def.on_punch(pointed_thing.under, node, user, pointed_thing) + node_def.on_punch(pos, node, user, pointed_thing) end return user:get_wielded_item() end From 31133a371eb28d2844500895c834b1f72bacb83a Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 13 Apr 2024 13:32:18 +0200 Subject: [PATCH 16/36] Fix set_node(air) calls In the fireflies case it can be replaced with remove_node. In the beds case we fix the logic to do what it should. Coincidentally the end result was correct nonetheless. --- mods/beds/api.lua | 17 +++++++++++------ mods/fireflies/init.lua | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/mods/beds/api.lua b/mods/beds/api.lua index ea3149a6..6873c1a9 100644 --- a/mods/beds/api.lua +++ b/mods/beds/api.lua @@ -1,3 +1,10 @@ +-- Removes a node without calling on on_destruct() +-- We use this to mess with bed nodes without causing unwanted recursion. +local function remove_no_destruct(pos) + minetest.swap_node(pos, {name = "air"}) + minetest.remove_node(pos) -- Now clear the meta + minetest.check_for_falling(pos) +end local function destruct_bed(pos, n) local node = minetest.get_node(pos) @@ -12,10 +19,7 @@ local function destruct_bed(pos, n) end local oname = minetest.get_node(other).name if minetest.get_item_group(oname, "bed") ~= 0 then - -- Swap node leaves meta, but doesn't call destruct_bed again - minetest.swap_node(other, {name = "air"}) - minetest.remove_node(other) -- Now clear the meta - minetest.check_for_falling(other) + remove_no_destruct(other) beds.remove_spawns_at(pos) beds.remove_spawns_at(other) end @@ -110,6 +114,7 @@ function beds.register_bed(name, def) on_rotate = function(pos, node, user, _, new_param2) local dir = minetest.facedir_to_dir(node.param2) + -- old position of the top node local p = vector.add(pos, dir) local node2 = minetest.get_node_or_nil(p) if not node2 or minetest.get_item_group(node2.name, "bed") ~= 2 or @@ -123,6 +128,7 @@ function beds.register_bed(name, def) if new_param2 % 32 > 3 then return false end + -- new position of the top node local newp = vector.add(pos, minetest.facedir_to_dir(new_param2)) local node3 = minetest.get_node_or_nil(newp) local node_def = node3 and minetest.registered_nodes[node3.name] @@ -134,8 +140,7 @@ function beds.register_bed(name, def) return false end node.param2 = new_param2 - -- do not remove_node here - it will trigger destroy_bed() - minetest.set_node(p, {name = "air"}) + remove_no_destruct(p) minetest.set_node(pos, node) minetest.set_node(newp, {name = name .. "_top", param2 = new_param2}) return true diff --git a/mods/fireflies/init.lua b/mods/fireflies/init.lua index 4aba655d..be8fac60 100644 --- a/mods/fireflies/init.lua +++ b/mods/fireflies/init.lua @@ -104,7 +104,7 @@ minetest.register_tool("fireflies:bug_net", { local node_name = minetest.get_node(pointed_thing.under).name local inv = player:get_inventory() if minetest.get_item_group(node_name, "catchable") == 1 then - minetest.set_node(pointed_thing.under, {name = "air"}) + minetest.remove_node(pointed_thing.under) local stack = ItemStack(node_name.." 1") local leftover = inv:add_item("main", stack) if leftover:get_count() > 0 then From d1ba7c3db3a3d06b4b2b82bb0d043d7801f99d27 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 10 Apr 2024 18:24:00 +0200 Subject: [PATCH 17/36] Add API to weather mod Co-authored-by: Till Affeldt --- game_api.txt | 18 +++++++++++ mods/weather/api.lua | 32 ++++++++++++++++++++ mods/weather/init.lua | 70 ++++++++++++++++--------------------------- 3 files changed, 75 insertions(+), 45 deletions(-) create mode 100644 mods/weather/api.lua diff --git a/game_api.txt b/game_api.txt index e46ea6bd..9a7ef8fb 100644 --- a/game_api.txt +++ b/game_api.txt @@ -1169,3 +1169,21 @@ the log. * after logging the action, the original callback (if any) is called * `def` See [Node definition] * `name` Description of the node in the log message + + +Weather API +----------- + +The weather mod will constantly adjust weather effects seen by the player +(that is: cloud parameters and shadow intensity). +These can be influenced using this API. + +#### `weather.get = function(player)` + +* Returns the current weather effects seen by the player. + It returns a table with two keys: + * `clouds`: A table (or `nil`) with cloud data following the same format as used for `player:set_clouds()`. + * `lighting`: A table (or `nil`) with lighting data following the same format as used for `player:set_lighting()`. +* `player`: ObjectRef of the relevant player +* You can override this function to change the weather effects by simply returning different values. + Setting `clouds` or `lighting` in the result table to `nil` will *prevent* those from changing. diff --git a/mods/weather/api.lua b/mods/weather/api.lua new file mode 100644 index 00000000..818e26a3 --- /dev/null +++ b/mods/weather/api.lua @@ -0,0 +1,32 @@ +local CYCLE = 8 -- Time period of cyclic clouds update in seconds + +weather = {} + +-- default implementation is empty +function weather.get(player) + return {} +end + +local function do_update() + for _, player in ipairs(minetest.get_connected_players()) do + local params = weather.get(player) + assert(params ~= nil, "weather.get() must not return nil") + if params.clouds then + player:set_clouds(params.clouds) + end + if params.lighting then + player:set_lighting(params.lighting) + end + end +end + +local function cyclic_update() + do_update() + minetest.after(CYCLE, cyclic_update) +end +minetest.after(0, cyclic_update) + +-- Update on player join to instantly alter clouds from the default +minetest.register_on_joinplayer(function(player) + do_update() +end) diff --git a/mods/weather/init.lua b/mods/weather/init.lua index 7d6d9484..cc498694 100644 --- a/mods/weather/init.lua +++ b/mods/weather/init.lua @@ -1,10 +1,13 @@ +-- Always load the API +dofile(minetest.get_modpath(minetest.get_current_modname()) .. "/api.lua") + -- Disable by mapgen or setting -local mg_name = minetest.get_mapgen_setting("mg_name") if minetest.settings:get_bool("enable_weather") == false then return end +local mg_name = minetest.get_mapgen_setting("mg_name") if mg_name == "v6" or mg_name == "singlenode" then -- set a default shadow intensity for mgv6 and singlenode minetest.register_on_joinplayer(function(player) @@ -14,10 +17,9 @@ if mg_name == "v6" or mg_name == "singlenode" then return end --- Parameters +-- Default implementation for noise based cloud appearance local TSCALE = 600 -- Time scale of noise variation in seconds -local CYCLE = 8 -- Time period of cyclic clouds update in seconds local np_density = { offset = 0.5, @@ -59,19 +61,11 @@ local np_speedz = { lacunarity = 2, } --- End parameters - - --- Initialise noise objects to nil - local nobj_density = nil local nobj_thickness = nil local nobj_speedx = nil local nobj_speedz = nil - --- Update clouds function - local function rangelim(value, lower, upper) return math.min(math.max(value, lower), upper) end @@ -88,7 +82,7 @@ do end end -local function update_clouds() +function weather.get(player) -- Adjusted time in seconds local time = math.floor(minetest.get_gametime() - t_offset) @@ -102,42 +96,28 @@ local function update_clouds() local n_speedx = nobj_speedx:get_2d({x = time, y = 0}) -- -1 to 1 local n_speedz = nobj_speedz:get_2d({x = time, y = 0}) -- -1 to 1 - for _, player in ipairs(minetest.get_connected_players()) do - -- Fallback to mid-value 50 for very old worlds - local humid = minetest.get_humidity(player:get_pos()) or 50 - -- Default and classic density value is 0.4, make this happen - -- at humidity midvalue 50 when n_density is at midvalue 0.5. - -- density_max = 0.25 at humid = 0. - -- density_max = 0.8 at humid = 50. - -- density_max = 1.35 at humid = 100. - local density_max = 0.8 + ((humid - 50) / 50) * 0.55 - -- Range limit density_max to always have occasional - -- small scattered clouds at extreme low humidity. - local density = rangelim(density_max, 0.2, 1.0) * n_density - player:set_clouds({ + -- Fallback to mid-value 50 for very old worlds + local humid = minetest.get_humidity(player:get_pos()) or 50 + -- Default and classic density value is 0.4, make this happen + -- at humidity midvalue 50 when n_density is at midvalue 0.5. + -- density_max = 0.25 at humid = 0. + -- density_max = 0.8 at humid = 50. + -- density_max = 1.35 at humid = 100. + local density_max = 0.8 + ((humid - 50) / 50) * 0.55 + -- Range limit density_max to always have occasional + -- small scattered clouds at extreme low humidity. + local density = rangelim(density_max, 0.2, 1.0) * n_density + + return { + clouds = { density = density, thickness = math.max(math.floor( rangelim(32 * humid / 100, 8, 32) * n_thickness ), 2), speed = {x = n_speedx * 4, z = n_speedz * 4}, - }) - -- now adjust the shadow intensity - player:set_lighting({ shadows = { intensity = 0.7 * (1 - density) } }) - end + }, + lighting = { + shadows = { intensity = 0.7 * (1 - density) } + } + } end - - -local function cyclic_update() - update_clouds() - minetest.after(CYCLE, cyclic_update) -end - - -minetest.after(0, cyclic_update) - - --- Update on player join to instantly alter clouds from the default - -minetest.register_on_joinplayer(function(player) - update_clouds() -end) From c60d8e4da0d55014c06ee78b366be23152da35e0 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 10 Apr 2024 20:27:57 +0200 Subject: [PATCH 18/36] Add API to control respawn logic and behavior --- game_api.txt | 28 ++++++++++++ mods/beds/functions.lua | 7 ++- mods/beds/mod.conf | 2 +- mods/spawn/api.lua | 49 +++++++++++++++++++++ mods/spawn/init.lua | 94 +++++++++++++++-------------------------- mods/spawn/mod.conf | 1 - 6 files changed, 115 insertions(+), 66 deletions(-) create mode 100644 mods/spawn/api.lua diff --git a/game_api.txt b/game_api.txt index 9a7ef8fb..b3f6efc6 100644 --- a/game_api.txt +++ b/game_api.txt @@ -632,6 +632,34 @@ set a players home position and teleport a player to home position. * `name` Player you wish to teleport to their home position * return value: false if player cannot be sent home, otherwise true +Spawn API +--------- + +The spawn mod takes care of deciding the position of new and respawning players +in the world and has an API to modify its behavior. + +`spawn.get_default_pos()` +* Gets the default spawn position as decided by a biome-dependent algorithm. +* This is not influenced by settings like "static_spawnpoint" or "engine_spawn". +* return value: a vector or `nil` on failure + +`spawn.add_suitable_biome(biome)`: +* Adds a biome to the list of allowed biomes for the above algorithm. +* `biome`: Name of a registered biome + +`spawn.register_on_spawn(func)`: +* Registers a callback to be called when a player (re-)spawns. This can be used + to intercept the normal logic to e.g. respawn a player at his bed. +* `func`: `function(player, is_new)` with arguments + - `player`: ObjectRef + - `is_new`: true if the player is joining the server for the first time + - return value: true to skip all other spawn logic, false or nil otherwise + +When a player (re-)spawns the following order is executed: +1. All spawn callbacks in order of registration. +2. If no result, teleport player to `spawn.get_default_pos()`. +3. If that fails, spawning is left up to engine. + Sfinv API --------- diff --git a/mods/beds/functions.lua b/mods/beds/functions.lua index 0668976e..c3e2a2c9 100644 --- a/mods/beds/functions.lua +++ b/mods/beds/functions.lua @@ -244,10 +244,9 @@ end -- Callbacks -- Only register respawn callback if respawn enabled if enable_respawn then - -- respawn player at bed if enabled and valid position is found - minetest.register_on_respawnplayer(function(player) - local name = player:get_player_name() - local pos = beds.spawn[name] + -- Respawn player at bed if valid position is found + spawn.register_on_spawn(function(player, is_new) + local pos = beds.spawn[player:get_player_name()] if pos then player:set_pos(pos) return true diff --git a/mods/beds/mod.conf b/mods/beds/mod.conf index 450ec138..ef88ad18 100644 --- a/mods/beds/mod.conf +++ b/mods/beds/mod.conf @@ -1,3 +1,3 @@ name = beds description = Minetest Game mod: beds -depends = default, wool +depends = default, wool, spawn diff --git a/mods/spawn/api.lua b/mods/spawn/api.lua new file mode 100644 index 00000000..bffe32a3 --- /dev/null +++ b/mods/spawn/api.lua @@ -0,0 +1,49 @@ +spawn = {} + +-- provide empty default implementations + +function spawn.get_default_pos() + return nil +end + +function spawn.add_suitable_biome(biome) +end + +-- Callback registration + +spawn.registered_on_spawn = {} + +function spawn.register_on_spawn(func) + table.insert(spawn.registered_on_spawn, func) +end + +-- Logic run on spawn + +local use_engine_spawn = minetest.settings:get("static_spawnpoint") or + minetest.settings:get_bool("engine_spawn") + +local function on_spawn(player, is_new) + -- Ask all callbacks first + for _, cb in ipairs(spawn.registered_on_spawn) do + if cb(player, is_new) then + return true + end + end + -- Fall back to default spawn + if not use_engine_spawn then + local pos = spawn.get_default_pos() + if pos then + player:set_pos(pos) + return true + end + end + return false +end + +minetest.register_on_newplayer(function(player) + on_spawn(player, true) +end) + +minetest.register_on_respawnplayer(function(player) + return on_spawn(player, false) +end) diff --git a/mods/spawn/init.lua b/mods/spawn/init.lua index 12c957f9..df30a25e 100644 --- a/mods/spawn/init.lua +++ b/mods/spawn/init.lua @@ -1,12 +1,12 @@ --- spawn/init.lua +-- Always load the API +---------------------- +dofile(minetest.get_modpath(minetest.get_current_modname()) .. "/api.lua") --- Disable by mapgen, setting or if 'static_spawnpoint' is set --------------------------------------------------------------- +-- Disable biome-search implementation on unsuitable mapgens +------------------------------------------------------------ local mg_name = minetest.get_mapgen_setting("mg_name") -if mg_name == "v6" or mg_name == "singlenode" or - minetest.settings:get("static_spawnpoint") or - minetest.settings:get_bool("engine_spawn") then +if mg_name == "v6" or mg_name == "singlenode" then return end @@ -23,27 +23,32 @@ local checks = 128 * 128 local pos = {x = 0, y = 8, z = 0} --- Table of suitable biomes +-- Table of suitable biomes and matching API function -local biome_ids = { - minetest.get_biome_id("taiga"), - minetest.get_biome_id("coniferous_forest"), - minetest.get_biome_id("deciduous_forest"), - minetest.get_biome_id("grassland"), - minetest.get_biome_id("savanna"), -} +local biome_ids = {} + +function spawn.add_suitable_biome(biome) + local id = minetest.get_biome_id(biome) + assert(id ~= nil) + biome_ids[id] = true +end + +for _, name in ipairs({ + "taiga", "coniferous_forest", "deciduous_forest", "grassland", "savanna" +}) do + spawn.add_suitable_biome(name) +end -- End of parameters -------------------- - -- Direction table local dirs = { - {x = 0, y = 0, z = 1}, - {x = -1, y = 0, z = 0}, - {x = 0, y = 0, z = -1}, - {x = 1, y = 0, z = 0}, + vector.new(0, 0, 1), + vector.new(-1, 0, 0), + vector.new(0, 0, -1), + vector.new(1, 0, 0), } @@ -67,8 +72,8 @@ local chunksize = tonumber(minetest.get_mapgen_setting("chunksize")) local spawn_limit = math.max(mapgen_limit - (chunksize + 1) * 16, 0) ---Functions ------------ +-- Functions +------------ -- Get next position on square search spiral @@ -98,15 +103,11 @@ local function search() for iter = 1, checks do local biome_data = minetest.get_biome_data(pos) -- Sometimes biome_data is nil - local biome = biome_data and biome_data.biome - for id_ind = 1, #biome_ids do - local biome_id = biome_ids[id_ind] - if biome == biome_id then - local spawn_y = minetest.get_spawn_level(pos.x, pos.z) - if spawn_y then - spawn_pos = {x = pos.x, y = spawn_y, z = pos.z} - return true - end + if biome_data and biome_ids[biome_data.biome] then + local spawn_y = minetest.get_spawn_level(pos.x, pos.z) + if spawn_y then + spawn_pos = vector.new(pos.x, spawn_y, pos.z) + return true end end @@ -121,38 +122,11 @@ local function search() end --- On new player spawn and player respawn - --- Search for spawn position once per server session. If successful, store --- position and reposition players, otherwise leave them at engine spawn --- position. - -local function on_spawn(player) +function spawn.get_default_pos() + -- Search for spawn position once per server session if not searched then success = search() searched = true end - if success then - player:set_pos(spawn_pos) - end - return success + return success and spawn_pos end - -minetest.register_on_newplayer(function(player) - on_spawn(player) -end) - -local enable_bed_respawn = minetest.settings:get_bool("enable_bed_respawn") -if enable_bed_respawn == nil then - enable_bed_respawn = true -end - -minetest.register_on_respawnplayer(function(player) - -- Avoid respawn conflict with beds mod - if beds and enable_bed_respawn and - beds.spawn[player:get_player_name()] then - return - end - - return on_spawn(player) -end) diff --git a/mods/spawn/mod.conf b/mods/spawn/mod.conf index ec3d5648..7a09d4a5 100644 --- a/mods/spawn/mod.conf +++ b/mods/spawn/mod.conf @@ -1,4 +1,3 @@ name = spawn description = Minetest Game mod: spawn depends = default -optional_depends = beds From 1ce48351ea7b1586710c1e60e863e94ed06e2721 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 12 May 2024 17:23:41 +0200 Subject: [PATCH 19/36] Add random_mod_load_order to test config --- utils/test/minetest.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/test/minetest.conf b/utils/test/minetest.conf index 5bbe6e27..395319bd 100644 --- a/utils/test/minetest.conf +++ b/utils/test/minetest.conf @@ -1 +1,2 @@ minetest_game_smoke_test = true +random_mod_load_order = true From 3ad8a6a473afcdfccdc675fd4eb771f9a9d4897d Mon Sep 17 00:00:00 2001 From: Lars Date: Sat, 25 May 2024 14:15:31 -0700 Subject: [PATCH 20/36] Fix possible invalid object reference in TNT mod --- mods/tnt/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 622b6c97..ab438a5c 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -159,6 +159,7 @@ local function entity_physics(pos, radius, drops) local objs = minetest.get_objects_inside_radius(pos, radius) for _, obj in pairs(objs) do local obj_pos = obj:get_pos() + if obj_pos then local dist = math.max(1, vector.distance(pos, obj_pos)) local damage = (4 / dist) * radius @@ -200,6 +201,7 @@ local function entity_physics(pos, radius, drops) end end end + end end end From 511619253facd524df75ae44537d7b2c4e30a8db Mon Sep 17 00:00:00 2001 From: mruncreative <67873653+mruncreative@users.noreply.github.com> Date: Sun, 2 Jun 2024 19:38:35 +0200 Subject: [PATCH 21/36] Fix upside down nodes in large cactus schematic (#3123) * Update schematic_tables.txt (large_cactus) * Replace large_cactus with upside down nodes with fixed one --- mods/default/schematics/large_cactus.mts | Bin 99 -> 87 bytes schematic_tables.txt | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/default/schematics/large_cactus.mts b/mods/default/schematics/large_cactus.mts index cadcdccbbbe730fc23537bf7d3311831e2aed19f..755e2d8c508ad4f6d05bbe79139dab4d555123e6 100644 GIT binary patch delta 13 UcmYcepWx5ouE4->@F9C602~AaGXMYp delta 25 gcmWGfp5QOSE-c`v=5m1HM3X=OXBGp4+76Dj09cU*^8f$< diff --git a/schematic_tables.txt b/schematic_tables.txt index eff2d359..14e696a9 100644 --- a/schematic_tables.txt +++ b/schematic_tables.txt @@ -2045,9 +2045,9 @@ mts_save("aspen_log", { -- Large cactus -local C = {name = "default:cactus", prob = 255, param2 = 20} -local R = {name = "default:cactus", prob = 255, param2 = 20, force_place = true} -local E = {name = "default:cactus", prob = 127, param2 = 20} +local C = {name = "default:cactus", prob = 255} +local R = {name = "default:cactus", prob = 255, force_place = true} +local E = {name = "default:cactus", prob = 127} mts_save("large_cactus", { size = {x = 5, y = 7, z = 5}, From 82b017af6b03731c2ebd320ff81a85c808054ead Mon Sep 17 00:00:00 2001 From: 1F616EMO~nya Date: Mon, 17 Jun 2024 02:08:42 +0800 Subject: [PATCH 22/36] Avoid using the global 'table' as a function argument name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: José Douglas da Silva Souza <44056294+JoseDouglas26@users.noreply.github.com> --- mods/default/functions.lua | 168 ++++++++++++++++++------------------- 1 file changed, 84 insertions(+), 84 deletions(-) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index def607bf..fc641a09 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -2,149 +2,149 @@ -- Sounds -- -function default.node_sound_defaults(table) - table = table or {} - table.footstep = table.footstep or +function default.node_sound_defaults(tbl) + tbl = tbl or {} + tbl.footstep = tbl.footstep or {name = "", gain = 1.0} - table.dug = table.dug or + tbl.dug = tbl.dug or {name = "default_dug_node", gain = 0.25} - table.place = table.place or + tbl.place = tbl.place or {name = "default_place_node_hard", gain = 1.0} - return table + return tbl end -function default.node_sound_stone_defaults(table) - table = table or {} - table.footstep = table.footstep or +function default.node_sound_stone_defaults(tbl) + tbl = tbl or {} + tbl.footstep = tbl.footstep or {name = "default_hard_footstep", gain = 0.2} - table.dug = table.dug or + tbl.dug = tbl.dug or {name = "default_hard_footstep", gain = 1.0} - default.node_sound_defaults(table) - return table + default.node_sound_defaults(tbl) + return tbl end -function default.node_sound_dirt_defaults(table) - table = table or {} - table.footstep = table.footstep or +function default.node_sound_dirt_defaults(tbl) + tbl = tbl or {} + tbl.footstep = tbl.footstep or {name = "default_dirt_footstep", gain = 0.25} - table.dig = table.dig or + tbl.dig = tbl.dig or {name = "default_dig_crumbly", gain = 0.4} - table.dug = table.dug or + tbl.dug = tbl.dug or {name = "default_dirt_footstep", gain = 1.0} - table.place = table.place or + tbl.place = tbl.place or {name = "default_place_node", gain = 1.0} - default.node_sound_defaults(table) - return table + default.node_sound_defaults(tbl) + return tbl end -function default.node_sound_sand_defaults(table) - table = table or {} - table.footstep = table.footstep or +function default.node_sound_sand_defaults(tbl) + tbl = tbl or {} + tbl.footstep = tbl.footstep or {name = "default_sand_footstep", gain = 0.05} - table.dug = table.dug or + tbl.dug = tbl.dug or {name = "default_sand_footstep", gain = 0.15} - table.place = table.place or + tbl.place = tbl.place or {name = "default_place_node", gain = 1.0} - default.node_sound_defaults(table) - return table + default.node_sound_defaults(tbl) + return tbl end -function default.node_sound_gravel_defaults(table) - table = table or {} - table.footstep = table.footstep or +function default.node_sound_gravel_defaults(tbl) + tbl = tbl or {} + tbl.footstep = tbl.footstep or {name = "default_gravel_footstep", gain = 0.25} - table.dig = table.dig or + tbl.dig = tbl.dig or {name = "default_gravel_dig", gain = 0.35} - table.dug = table.dug or + tbl.dug = tbl.dug or {name = "default_gravel_dug", gain = 1.0} - table.place = table.place or + tbl.place = tbl.place or {name = "default_place_node", gain = 1.0} - default.node_sound_defaults(table) - return table + default.node_sound_defaults(tbl) + return tbl end -function default.node_sound_wood_defaults(table) - table = table or {} - table.footstep = table.footstep or +function default.node_sound_wood_defaults(tbl) + tbl = tbl or {} + tbl.footstep = tbl.footstep or {name = "default_wood_footstep", gain = 0.15} - table.dig = table.dig or + tbl.dig = tbl.dig or {name = "default_dig_choppy", gain = 0.4} - table.dug = table.dug or + tbl.dug = tbl.dug or {name = "default_wood_footstep", gain = 1.0} - default.node_sound_defaults(table) - return table + default.node_sound_defaults(tbl) + return tbl end -function default.node_sound_leaves_defaults(table) - table = table or {} - table.footstep = table.footstep or +function default.node_sound_leaves_defaults(tbl) + tbl = tbl or {} + tbl.footstep = tbl.footstep or {name = "default_grass_footstep", gain = 0.45} - table.dug = table.dug or + tbl.dug = tbl.dug or {name = "default_grass_footstep", gain = 0.7} - table.place = table.place or + tbl.place = tbl.place or {name = "default_place_node", gain = 1.0} - default.node_sound_defaults(table) - return table + default.node_sound_defaults(tbl) + return tbl end -function default.node_sound_glass_defaults(table) - table = table or {} - table.footstep = table.footstep or +function default.node_sound_glass_defaults(tbl) + tbl = tbl or {} + tbl.footstep = tbl.footstep or {name = "default_glass_footstep", gain = 0.3} - table.dig = table.dig or + tbl.dig = tbl.dig or {name = "default_glass_footstep", gain = 0.5} - table.dug = table.dug or + tbl.dug = tbl.dug or {name = "default_break_glass", gain = 1.0} - default.node_sound_defaults(table) - return table + default.node_sound_defaults(tbl) + return tbl end -function default.node_sound_ice_defaults(table) - table = table or {} - table.footstep = table.footstep or +function default.node_sound_ice_defaults(tbl) + tbl = tbl or {} + tbl.footstep = tbl.footstep or {name = "default_ice_footstep", gain = 0.15} - table.dig = table.dig or + tbl.dig = tbl.dig or {name = "default_ice_dig", gain = 0.5} - table.dug = table.dug or + tbl.dug = tbl.dug or {name = "default_ice_dug", gain = 0.5} - default.node_sound_defaults(table) - return table + default.node_sound_defaults(tbl) + return tbl end -function default.node_sound_metal_defaults(table) - table = table or {} - table.footstep = table.footstep or +function default.node_sound_metal_defaults(tbl) + tbl = tbl or {} + tbl.footstep = tbl.footstep or {name = "default_metal_footstep", gain = 0.2} - table.dig = table.dig or + tbl.dig = tbl.dig or {name = "default_dig_metal", gain = 0.5} - table.dug = table.dug or + tbl.dug = tbl.dug or {name = "default_dug_metal", gain = 0.5} - table.place = table.place or + tbl.place = tbl.place or {name = "default_place_node_metal", gain = 0.5} - default.node_sound_defaults(table) - return table + default.node_sound_defaults(tbl) + return tbl end -function default.node_sound_water_defaults(table) - table = table or {} - table.footstep = table.footstep or +function default.node_sound_water_defaults(tbl) + tbl = tbl or {} + tbl.footstep = tbl.footstep or {name = "default_water_footstep", gain = 0.2} - default.node_sound_defaults(table) - return table + default.node_sound_defaults(tbl) + return tbl end -function default.node_sound_snow_defaults(table) - table = table or {} - table.footstep = table.footstep or +function default.node_sound_snow_defaults(tbl) + tbl = tbl or {} + tbl.footstep = tbl.footstep or {name = "default_snow_footstep", gain = 0.2} - table.dig = table.dig or + tbl.dig = tbl.dig or {name = "default_snow_footstep", gain = 0.3} - table.dug = table.dug or + tbl.dug = tbl.dug or {name = "default_snow_footstep", gain = 0.3} - table.place = table.place or + tbl.place = tbl.place or {name = "default_place_node", gain = 1.0} - default.node_sound_defaults(table) - return table + default.node_sound_defaults(tbl) + return tbl end From 91f6e5faecc9f327ac00cb265f26d5ae8500e306 Mon Sep 17 00:00:00 2001 From: 1F616EMO~nya Date: Sat, 22 Jun 2024 18:54:27 +0800 Subject: [PATCH 23/36] Fix crafting for fences etc. starting with colon (#3132) --- game_api.txt | 2 +- mods/default/functions.lua | 64 ++++++++++++++++++++++---------------- 2 files changed, 39 insertions(+), 27 deletions(-) diff --git a/game_api.txt b/game_api.txt index b3f6efc6..fb769c8d 100644 --- a/game_api.txt +++ b/game_api.txt @@ -324,7 +324,7 @@ Allows creation of new fences with "fencelike" drawtype. name = "default:fence_wood", description = "Wooden Fence", texture = "default_wood.png", - material = "default:wood", + material = "default:wood", -- `nil` if you don't want the recipe groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults(), diff --git a/mods/default/functions.lua b/mods/default/functions.lua index fc641a09..ee98efcd 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -309,14 +309,6 @@ end local fence_collision_extra = minetest.settings:get_bool("enable_fence_tall") and 3/8 or 0 function default.register_fence(name, def) - minetest.register_craft({ - output = name .. " 4", - recipe = { - { def.material, 'group:stick', def.material }, - { def.material, 'group:stick', def.material }, - } - }) - local fence_texture = "default_fence_overlay.png^" .. def.texture .. "^default_fence_overlay.png^[makealpha:255,126,126" -- Allow almost everything to be overridden @@ -364,10 +356,22 @@ function default.register_fence(name, def) -- Always add to the fence group, even if no group provided def.groups.fence = 1 + local material = def.material def.texture = nil def.material = nil minetest.register_node(name, def) + + -- Register crafting recipe, trim away starting colon if any + if not material then return end + name = string.gsub(name, "^:", "") + minetest.register_craft({ + output = name .. " 4", + recipe = { + { material, 'group:stick', material }, + { material, 'group:stick', material }, + } + }) end @@ -376,15 +380,6 @@ end -- function default.register_fence_rail(name, def) - minetest.register_craft({ - output = name .. " 16", - recipe = { - { def.material, def.material }, - { "", ""}, - { def.material, def.material }, - } - }) - local fence_rail_texture = "default_fence_rail_overlay.png^" .. def.texture .. "^default_fence_rail_overlay.png^[makealpha:255,126,126" -- Allow almost everything to be overridden @@ -433,10 +428,23 @@ function default.register_fence_rail(name, def) -- Always add to the fence group, even if no group provided def.groups.fence = 1 + local material = def.material def.texture = nil def.material = nil minetest.register_node(name, def) + + -- Register crafting recipe, trim away starting colon if any + if not material then return end + name = string.gsub(name, "^:", "") + minetest.register_craft({ + output = name .. " 16", + recipe = { + { material, material }, + { "", ""}, + { material, material }, + } + }) end -- @@ -444,15 +452,6 @@ end -- function default.register_mesepost(name, def) - minetest.register_craft({ - output = name .. " 4", - recipe = { - {'', 'default:glass', ''}, - {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, - {'', def.material, ''}, - } - }) - local post_texture = def.texture .. "^default_mese_post_light_side.png^[makealpha:0,0,0" local post_texture_dark = def.texture .. "^default_mese_post_light_side_dark.png^[makealpha:0,0,0" -- Allow almost everything to be overridden @@ -480,10 +479,23 @@ function default.register_mesepost(name, def) end end + local material = def.material def.texture = nil def.material = nil minetest.register_node(name, def) + + -- Register crafting recipe, trim away starting colon if any + if not material then return end + name = string.gsub(name, "^:", "") + minetest.register_craft({ + output = name .. " 4", + recipe = { + {'', 'default:glass', ''}, + {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, + {'', material, ''}, + } + }) end -- From f03c99286439c992191913c60a0c98bcc8109721 Mon Sep 17 00:00:00 2001 From: Andrii Nemchenko <62670490+andriyndev@users.noreply.github.com> Date: Sat, 22 Jun 2024 13:54:57 +0300 Subject: [PATCH 24/36] Fix the possibility to put fire in a protected area (#3129) --- mods/fire/init.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 3069aa80..538cfa6f 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -101,13 +101,18 @@ minetest.register_tool("fire:flint_and_steel", { return end if minetest.is_protected(pointed_thing.under, player_name) then - minetest.chat_send_player(player_name, "This area is protected") + minetest.record_protection_violation(pointed_thing.under, player_name) return end if nodedef.on_ignite then nodedef.on_ignite(pointed_thing.under, user) elseif minetest.get_item_group(node_under, "flammable") >= 1 and minetest.get_node(pointed_thing.above).name == "air" then + if minetest.is_protected(pointed_thing.above, player_name) then + minetest.record_protection_violation(pointed_thing.above, player_name) + return + end + minetest.set_node(pointed_thing.above, {name = "fire:basic_flame"}) end end From 061f4e76dd1e42517c618d2e6bd8d0c88b0ed5c7 Mon Sep 17 00:00:00 2001 From: ssdaniel24 <107036969+ssdaniel24@users.noreply.github.com> Date: Sun, 23 Jun 2024 19:03:36 +0300 Subject: [PATCH 25/36] Added can_grow function to plant definition (#3131) --- game_api.txt | 2 ++ mods/farming/api.lua | 10 +++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/game_api.txt b/game_api.txt index fb769c8d..3dcb2578 100644 --- a/game_api.txt +++ b/game_api.txt @@ -382,6 +382,8 @@ The farming API allows you to easily register plants and hoes. -- ^ Always provide a plant texture for each step, format: modname_plantname_i.png (i = stepnumber) minlight = 13, -- Minimum light to grow maxlight = default.LIGHT_MAX -- Maximum light to grow + can_grow = function(pos) -- Сalled every growth tick to check if the plant can grow, returns bool + -- (optional, checks for wet soil by default) } diff --git a/mods/farming/api.lua b/mods/farming/api.lua index 96f9f636..08ab0a0a 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -189,6 +189,12 @@ farming.place_seed = function(itemstack, placer, pointed_thing, plantname) return itemstack end +-- check if on wet soil +farming.can_grow = function(pos) + local below = minetest.get_node(pos:offset(0, -1, 0)) + return minetest.get_item_group(below.name, "soil") >= 3 +end + farming.grow_plant = function(pos, elapsed) local node = minetest.get_node(pos) local name = node.name @@ -224,9 +230,7 @@ farming.grow_plant = function(pos, elapsed) return end - -- check if on wet soil - local below = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}) - if minetest.get_item_group(below.name, "soil") < 3 then + if not (def.can_grow or farming.can_grow)(pos) then tick_again(pos) return end From 599dedd92737479e6608fcae28577eb14e30a94c Mon Sep 17 00:00:00 2001 From: Lunovox Date: Mon, 24 Jun 2024 07:23:50 -0300 Subject: [PATCH 26/36] translate to brazilian portuguese and portuguese of Portugal (#3104) --- mods/default/locale/default.pt.tr | 215 +++++++++++++++++++++++++++ mods/default/locale/default.pt_BR.tr | 2 +- mods/farming/locale/farming.pt.tr | 28 ++++ mods/fire/locale/fire.pt.tr | 4 + mods/fire/locale/fire.pt_BR.tr | 2 +- mods/wool/locale/wool.pt.tr | 16 ++ mods/wool/locale/wool.pt_BR.tr | 30 ++-- 7 files changed, 280 insertions(+), 17 deletions(-) create mode 100644 mods/default/locale/default.pt.tr create mode 100644 mods/farming/locale/farming.pt.tr create mode 100644 mods/fire/locale/fire.pt.tr create mode 100644 mods/wool/locale/wool.pt.tr diff --git a/mods/default/locale/default.pt.tr b/mods/default/locale/default.pt.tr new file mode 100644 index 00000000..80ad5875 --- /dev/null +++ b/mods/default/locale/default.pt.tr @@ -0,0 +1,215 @@ +# textdomain: default +Locked Chest=Baú Trancado +Locked Chest (owned by @1)=Baú Trancado (pertence a @1) +You do not own this chest.=Você não é dono deste baú. +a locked chest=um baú trancado +Chest=Baú +Write= +Read= +Title:=Título: +Contents:=Conteúdo: +Save=Salvar +by @1=por @1 +Page @1 of @2=Página @1 de @2 +The book you were writing to mysteriously disappeared.= +"@1" by @2="@1" por @2 +Blueberries=Mirtilo +Book=Livro +Book with Text=Livro com Texto +Bronze Ingot=Lingote de Bronze +Clay Brick=Tijolo de Argila +Clay Lump=Pedaço de Argila +Coal Lump=Pedaço de Carvão +Copper Ingot=Lingote de Cobre +Copper Lump=Pedaço de Cobre +Diamond=Diamante +Flint=Rocha Sílex +Gold Ingot=Lingote de Ouro +Gold Lump=Pedaço de Ouro +Iron Lump=Pedaço de Ferro +Mese Crystal=Cristal de Mese +Mese Crystal Fragment=Fragmento de Cristal de Mese +Obsidian Shard=Caco de Obsidian +Paper=Papel +Steel Ingot=Lingote de Aço +Stick=Graveto +Tin Ingot=Lingote de Estanho +Tin Lump=Pedaço de Estanho +Furnace is empty=A fornalha está vazia +100% (output full)=100% (saída cheia) +@1%=@1% +Not cookable=Não pode cozinhar +Empty=Vazio +Furnace active=Fornalha ativa +Furnace inactive=Fornalha inativa +(Item: @1; Fuel: @2)=(Item: @1; Combustível: @2) +Furnace=Fornalha +Stone=Pedra +Cobblestone=Pedregulho +Stone Brick=Tijolo de Pedra +Stone Block=Bloco de Pedra +Mossy Cobblestone=Pedregulho Musgoso +Desert Stone=Pedra do Deserto +Desert Cobblestone=Pedregulho do Deserto +Desert Stone Brick=Tijolo de Pedra do Deserto +Desert Stone Block=Bloco de Pedra do Deserto +Sandstone=Arenito +Sandstone Brick=Tijolo de Arenito +Sandstone Block=Bloco de Arenito +Desert Sandstone=Bloco de Arenito do Deserto +Desert Sandstone Brick=Tijolo de Arenito do Deserto +Desert Sandstone Block=Bloco de Arenito do Deserto +Silver Sandstone=Arenito Prateado +Silver Sandstone Brick=Tijolo de Arenito Prateado +Silver Sandstone Block=Bloco de Arenito Prateado +Obsidian=Obsidiana +Obsidian Brick=Tijolo de Obsidiana +Obsidian Block=Bloco de Obsidiana +Dirt=Terra +Dirt with Grass=Terra com Grama +Dirt with Grass and Footsteps=Terra com Grama e Pegadas +Dirt with Savanna Grass=Terra com Grama da Savana +Dirt with Snow=Terra com Neve +Dirt with Rainforest Litter=Terra com Serrapilheira Tropical +Dirt with Coniferous Litter=Terra com Serrapilheira +Savanna Dirt=Terra da Savana +Savanna Dirt with Savanna Grass=Terra da Savana com Grama da Savana +Permafrost=Terra Congelada +Permafrost with Stones=Terra Congelada com Pedras +Permafrost with Moss=Terra Congelada com Musgo +Sand=Areia +Desert Sand=Areia do Deserto +Silver Sand=Areia Prateada +Gravel=Cascalho +Clay=Argila +Snow=Neve +Snow Block=Bloco de Neve +Ice=Gelo +Cave Ice=Caverna de Gelo +Apple Tree=Macieira +Apple Wood Planks=Tábuas de Macieira +Apple Tree Sapling=Muda de Macieira +Apple Tree Leaves=Folhas de Macieira +Apple=Maçã +Apple Marker=Marcador de Maçã +Jungle Tree=Árvore da Selva +Jungle Wood Planks=Tábuas de Árvore da Selva +Jungle Tree Leaves=Folhas de Árvore da Selva +Jungle Tree Sapling=Muda de Árvore da Selva +Emergent Jungle Tree Sapling=Muda Crescida de Árvore da Selva +Pine Tree=Pinheiro +Pine Wood Planks=Tábuas de Pinheiro +Pine Needles=Agulhas de Pinheiro +Pine Tree Sapling=Muda de Pinheiro +Acacia Tree=Acácia +Acacia Wood Planks=Tábuas de Acácia +Acacia Tree Leaves=Folhas de Acácia +Acacia Tree Sapling=Mudas de Acácia +Aspen Tree=Álamo +Aspen Wood Planks=Tábuas de Álamo +Aspen Tree Leaves=Folhas de Álamo +Aspen Tree Sapling=Muda de Álamo +Coal Ore=Minério de Carvão +Coal Block=Bloco de Carvão +Iron Ore=Minério de Ferro +Steel Block=Bloco de Aço +Copper Ore=Minério de Cobre +Copper Block=Bloco de Cobre +Tin Ore=Minério de Estanho +Tin Block=Bloco de Estanho +Bronze Block=Bloco de Bronze +Mese Ore=Minério de Mese +Mese Block=Bloco de Mese +Gold Ore=Minério de Ouro +Gold Block=Bloco de Ouro +Diamond Ore=Minério de Diamante +Diamond Block=Bloco de Diamante +Cactus=Cacto +Large Cactus Seedling=Grande Muda de Cacto +Papyrus=Papiro +Dry Shrub=Arbusto Seco +Jungle Grass=Grama da Selva +Grass=Grama +Savanna Grass=Grama da Savana +Fern=Samambaia +Marram Grass=Grama de Feno +Bush Stem=Caule de Arbusto +Bush Leaves=Folhas de Arbusto +Bush Sapling=Muda de Arbusto +Blueberry Bush Leaves with Berries=Folhas de Arbusto de Mirtilo com Bagas +Blueberry Bush Leaves=Folhas de Arbusto de Mirtilo +Blueberry Bush Sapling=Muda de Arbusto de Mirtilo +Acacia Bush Stem=Caule de Arbusto de Acácia +Acacia Bush Leaves=Folhas de Arbusto de Acácia +Acacia Bush Sapling=Muda de Arbusto de Acácia +Pine Bush Stem=Caule de Arbusto de Pinheiro +Pine Bush Needles=Agulha de Arbusto de Pinheiro +Pine Bush Sapling=Muda de Arbusto de Pinheiro +Kelp=Alga +Green Coral=Coral Verde +Pink Coral=Coral Rosa +Cyan Coral=Coral Ciano +Brown Coral=Coral Marrom +Orange Coral=Coral Laranja +Coral Skeleton=Esqueleto de Coral +Water Source=Fonte de Água +Flowing Water=Água Corrente +River Water Source=Fonte de Água do Rio +Flowing River Water=Água Corrente do Rio +Lava Source=Fonte de Lava +Flowing Lava=Lava Corrente +Empty Bookshelf=Estante de Livros Vazia +Bookshelf (@1 written, @2 empty books)=Estante de Livros (@1 livros escritos, @2 livros em branco) +Bookshelf=Estante de Livros +Text too long=Texto muito longo +"@1"="@1" +Wooden Sign=Placa de Madeira +Steel Sign=Placa de Aço +Wooden Ladder=Escada de Madeira +Steel Ladder=Escada de Aço +Apple Wood Fence=Cerca de Macieira +Acacia Wood Fence=Cerca de Acácia +Jungle Wood Fence=Cerca de Madeira da Selva +Pine Wood Fence=Cerca de Pinheiro +Aspen Wood Fence=Cerca de Álamo +Apple Wood Fence Rail=Trilho de Cerca de Macieira +Acacia Wood Fence Rail=Trilho de Cerca de Acácia +Jungle Wood Fence Rail=Trilho de Cerca de Madeira da Selva +Pine Wood Fence Rail=Trilho de Cerca de Pinheiro +Aspen Wood Fence Rail=Trilho de Cerca de Álamo +Glass=Vidro +Obsidian Glass=Vidro de Obsidiana +Brick Block=Bloco de Tijolos +Mese Lamp=Lâmpada de Mese +Apple Wood Mese Post Light=Poste de Lâmpada de Mese de Macieira +Acacia Wood Mese Post Light=Poste de Lâmpada de Mese de Acácia +Jungle Wood Mese Post Light=Poste de Lâmpada de Mese de Madeira da Selva +Pine Wood Mese Post Light=Poste de Lâmpada de Mese de Pinheiro +Aspen Wood Mese Post Light=Poste de Lâmpada de Mese de Aspen +Cloud=Nuvem +Wooden Pickaxe=Picareta de Madeira +Stone Pickaxe=Picareta de Pedra +Bronze Pickaxe=Picareta de Bronze +Steel Pickaxe=Picareta de Aço +Mese Pickaxe=Picareta de Mese +Diamond Pickaxe=Picareta de Diamante +Wooden Shovel=Pá de Madeira +Stone Shovel=Pá de Pedra +Bronze Shovel=Pá de Bronze +Steel Shovel=Pá de Aço +Mese Shovel=Pá de Mese +Diamond Shovel=Pá de Diamante +Wooden Axe=Machado de Madeira +Stone Axe=Machado de Pedra +Bronze Axe=Machado de Bronze +Steel Axe=Machado de Aço +Mese Axe=Machado de Mese +Diamond Axe=Machado de Diamante +Wooden Sword=Espada de Madeira +Stone Sword=Espada de Pedra +Bronze Sword=Espada de Bronze +Steel Sword=Espada de Aço +Mese Sword=Espada de Mese +Diamond Sword=Espada de Diamante +Torch=Tocha +@1 will intersect protection on growth.=@1 cruzará a proteção no crescimento. diff --git a/mods/default/locale/default.pt_BR.tr b/mods/default/locale/default.pt_BR.tr index 124e1fa0..80ad5875 100644 --- a/mods/default/locale/default.pt_BR.tr +++ b/mods/default/locale/default.pt_BR.tr @@ -23,7 +23,7 @@ Coal Lump=Pedaço de Carvão Copper Ingot=Lingote de Cobre Copper Lump=Pedaço de Cobre Diamond=Diamante -Flint=Sílex (Flint) +Flint=Rocha Sílex Gold Ingot=Lingote de Ouro Gold Lump=Pedaço de Ouro Iron Lump=Pedaço de Ferro diff --git a/mods/farming/locale/farming.pt.tr b/mods/farming/locale/farming.pt.tr new file mode 100644 index 00000000..fb0a83c1 --- /dev/null +++ b/mods/farming/locale/farming.pt.tr @@ -0,0 +1,28 @@ +# textdomain: farming +Hoe=Enxada +Seed=Semente +Wooden Hoe=Enxada de Madeira +Stone Hoe=Enxada de Pedra +Steel Hoe=Enxada de Aço +Bronze Hoe=Enxada de Bronze +Mese Hoe=Enxada de Mese +Diamond Hoe=Enxada de Diamante +Wheat Seed=Semente de Trigo +Wheat=Trigo +Flour=Farinha +Bread=Pão +Cotton Seed=Semente de Algodão +Cotton=Algodão +String=Fio +Soil=Solo +Wet Soil=Solo Molhado +Savanna Soil=Solo da Savana +Wet Savanna Soil=Solo da Savana Molhado +Desert Sand Soil=Solo Arenoso do Deserto +Wet Desert Sand Soil=Solo Arenoso do Deserto Molhado +Straw=Palha +Straw Stair=Escada de Palha +Inner Straw Stair=Escada de Palha Externa +Outer Straw Stair=Escada de Palha Interna +Straw Slab=Laje de Palha +Wild Cotton=Algodão Selvagem diff --git a/mods/fire/locale/fire.pt.tr b/mods/fire/locale/fire.pt.tr new file mode 100644 index 00000000..4a84b6e5 --- /dev/null +++ b/mods/fire/locale/fire.pt.tr @@ -0,0 +1,4 @@ +# textdomain: fire +Fire=Fogo +Permanent Fire=Fogo Permanente +Flint and Steel=Pederneira Primitiva diff --git a/mods/fire/locale/fire.pt_BR.tr b/mods/fire/locale/fire.pt_BR.tr index 8a37359b..4a84b6e5 100644 --- a/mods/fire/locale/fire.pt_BR.tr +++ b/mods/fire/locale/fire.pt_BR.tr @@ -1,4 +1,4 @@ # textdomain: fire Fire=Fogo Permanent Fire=Fogo Permanente -Flint and Steel=Sílex e Fogo +Flint and Steel=Pederneira Primitiva diff --git a/mods/wool/locale/wool.pt.tr b/mods/wool/locale/wool.pt.tr new file mode 100644 index 00000000..9b4232f7 --- /dev/null +++ b/mods/wool/locale/wool.pt.tr @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool=Tecido Branco +Grey Wool=Tecido Cinza +Dark Grey Wool=Tecido Cinza-escuro +Black Wool=Tecido Preto +Violet Wool=Tecido Violeta +Blue Wool=Tecido Azul +Cyan Wool=Tecido Ciano +Dark Green Wool=Tecido Verde-escuro +Green Wool=Tecido Verde +Yellow Wool=Tecido Amarelo +Brown Wool=Tecido Marrom +Orange Wool=Tecido Laranja +Red Wool=Tecido Vermelho +Magenta Wool=Tecido Magenta +Pink Wool=Tecido Rosa diff --git a/mods/wool/locale/wool.pt_BR.tr b/mods/wool/locale/wool.pt_BR.tr index 7676191e..9b4232f7 100644 --- a/mods/wool/locale/wool.pt_BR.tr +++ b/mods/wool/locale/wool.pt_BR.tr @@ -1,16 +1,16 @@ # textdomain: wool -White Wool=Lã Branca -Grey Wool=Lã Cinza -Dark Grey Wool=Lã Cinza-escuro -Black Wool=Lã Preta -Violet Wool=Lã Violeta -Blue Wool=Lã Azul -Cyan Wool=Lã Ciano -Dark Green Wool=Lã Verde-escuro -Green Wool=Lã Verde -Yellow Wool=Lã Amarela -Brown Wool=Lã Marrom -Orange Wool=Lã Laranja -Red Wool=Lã Vermelha -Magenta Wool=Lã Magenta -Pink Wool=Lã Rosa +White Wool=Tecido Branco +Grey Wool=Tecido Cinza +Dark Grey Wool=Tecido Cinza-escuro +Black Wool=Tecido Preto +Violet Wool=Tecido Violeta +Blue Wool=Tecido Azul +Cyan Wool=Tecido Ciano +Dark Green Wool=Tecido Verde-escuro +Green Wool=Tecido Verde +Yellow Wool=Tecido Amarelo +Brown Wool=Tecido Marrom +Orange Wool=Tecido Laranja +Red Wool=Tecido Vermelho +Magenta Wool=Tecido Magenta +Pink Wool=Tecido Rosa From da0509c5bd4618216856592437beb32447fb7601 Mon Sep 17 00:00:00 2001 From: Niklp Date: Sat, 29 Jun 2024 16:23:01 +0200 Subject: [PATCH 27/36] Replace deprecated `meta:set_string()` call --- mods/default/chests.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/default/chests.lua b/mods/default/chests.lua index 1c97b73a..c8988633 100644 --- a/mods/default/chests.lua +++ b/mods/default/chests.lua @@ -284,7 +284,7 @@ function default.chest.register_chest(prefixed_name, d) nodenames = {name}, action = function(pos, node) local meta = minetest.get_meta(pos) - meta:set_string("formspec", nil) + meta:set_string("formspec", "") local inv = meta:get_inventory() local list = inv:get_list("default:chest") if list then From 77bbcee0cd73ddd2980aadbddb6285550c2735b5 Mon Sep 17 00:00:00 2001 From: 1F616EMO~nya Date: Fri, 26 Jul 2024 15:36:05 +0800 Subject: [PATCH 28/36] Limit furnace sound volume on catch-up smelting (#3144) --- mods/default/furnace.lua | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index e4bc0568..315c32c7 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -134,6 +134,7 @@ local function furnace_node_timer(pos, elapsed) local fuel local update = true + local items_smelt = 0 while elapsed > 0 and update do update = false @@ -171,9 +172,7 @@ local function furnace_node_timer(pos, elapsed) else dst_full = true end - -- Play cooling sound - minetest.sound_play("default_cool_lava", - {pos = pos, max_hear_distance = 16, gain = 0.07}, true) + items_smelt = items_smelt + 1 else -- Item could not be cooked: probably missing fuel update = true @@ -224,6 +223,11 @@ local function furnace_node_timer(pos, elapsed) elapsed = elapsed - el end + if items_smelt > 0 then + -- Play cooling sound + minetest.sound_play("default_cool_lava", + { pos = pos, max_hear_distance = 16, gain = 0.07 * math.min(items_smelt, 7) }, true) + end if fuel and fuel_totaltime > fuel.time then fuel_totaltime = fuel.time end From 9cb57ae5f273ff76c0a67992ae96276bc0c5a02d Mon Sep 17 00:00:00 2001 From: 1F616EMO~nya Date: Sat, 27 Jul 2024 20:41:16 +0800 Subject: [PATCH 29/36] Log furnace inventory actions (#3141) --- mods/default/furnace.lua | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index 315c32c7..4ef4e024 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -333,7 +333,12 @@ end -- Node definitions -- -minetest.register_node("default:furnace", { +local function apply_logger(def) + default.set_inventory_action_loggers(def, "furnace") + return def +end + +minetest.register_node("default:furnace", apply_logger({ description = S("Furnace"), tiles = { "default_furnace_top.png", "default_furnace_bottom.png", @@ -383,9 +388,9 @@ minetest.register_node("default:furnace", { allow_metadata_inventory_put = allow_metadata_inventory_put, allow_metadata_inventory_move = allow_metadata_inventory_move, allow_metadata_inventory_take = allow_metadata_inventory_take, -}) +})) -minetest.register_node("default:furnace_active", { +minetest.register_node("default:furnace_active", apply_logger({ description = S("Furnace"), tiles = { "default_furnace_top.png", "default_furnace_bottom.png", @@ -419,7 +424,7 @@ minetest.register_node("default:furnace_active", { allow_metadata_inventory_put = allow_metadata_inventory_put, allow_metadata_inventory_move = allow_metadata_inventory_move, allow_metadata_inventory_take = allow_metadata_inventory_take, -}) +})) minetest.register_craft({ output = "default:furnace", From 88ecab34d98550c8eb77f49ac2866b480a6e707a Mon Sep 17 00:00:00 2001 From: Niklp Date: Sat, 27 Jul 2024 15:42:08 +0300 Subject: [PATCH 30/36] Replace deprecated `get_metadata()` calls (#3142) --- mods/default/chests.lua | 4 ++-- mods/default/craftitems.lua | 2 +- mods/default/functions.lua | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/default/chests.lua b/mods/default/chests.lua index c8988633..1d9b150a 100644 --- a/mods/default/chests.lua +++ b/mods/default/chests.lua @@ -163,12 +163,12 @@ function default.chest.register_chest(prefixed_name, d) local itemstack = player:get_wielded_item() local key_meta = itemstack:get_meta() - if itemstack:get_metadata() == "" then + if itemstack:get_meta():get_string("") == "" then return end if key_meta:get_string("secret") == "" then - key_meta:set_string("secret", minetest.parse_json(itemstack:get_metadata()).secret) + key_meta:set_string("secret", minetest.parse_json(itemstack:get_meta():get_string("")).secret) itemstack:set_metadata("") end diff --git a/mods/default/craftitems.lua b/mods/default/craftitems.lua index 3cd5da7d..1f251ff4 100644 --- a/mods/default/craftitems.lua +++ b/mods/default/craftitems.lua @@ -57,7 +57,7 @@ local function book_on_use(itemstack, user) local page, page_max, lines, string = 1, 1, {}, "" -- Backwards compatibility - local old_data = minetest.deserialize(itemstack:get_metadata()) + local old_data = minetest.deserialize(itemstack:get_meta():get_string("")) if old_data then meta:from_table({ fields = old_data }) end diff --git a/mods/default/functions.lua b/mods/default/functions.lua index ee98efcd..80f1fe41 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -803,7 +803,7 @@ function default.can_interact_with_node(player, pos) local key_meta = item:get_meta() if key_meta:get_string("secret") == "" then - local key_oldmeta = item:get_metadata() + local key_oldmeta = item:get_meta():get_string("") if key_oldmeta == "" or not minetest.parse_json(key_oldmeta) then return false end From 9bd1f24d366f2dec7ac008a2599d3fbaf4967198 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 14 Aug 2024 13:53:04 +0200 Subject: [PATCH 31/36] Update README for release model --- README.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 36c244f1..f12f1471 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,8 @@ real goals or built-in enemy mobs. While it provides a basic gameplay experience out of the box, it is best played with mods. -Minetest Game is currently in maintenance-only mode, meaning it will not see new -gameplay features or anything else that breaks compatibility (See +Minetest Game is in perpetual maintenance-only mode, meaning it will not see new +gameplay features or anything else that breaks compatibility (see [#2710](https://github.com/minetest/minetest_game/issues/2710)). ## Installation @@ -17,13 +17,13 @@ gameplay features or anything else that breaks compatibility (See ### ContentDB * Content > Browse Online Content -* Search for Minetest Game +* Search for "[Minetest Game](https://content.minetest.net/packages/Minetest/minetest_game/)" * Click Install ### Manually - Unzip the archive, rename the folder to `minetest_game` and -place it in .. `minetest/games/` +place it in `.../minetest/games/` - GNU/Linux: If you use a system-wide installation place it in `~/.minetest/games/`. @@ -33,14 +33,13 @@ For further information or help, see: [Installing Mods](https://wiki.minetest.ne ## Compatibility -The Minetest Game GitHub `master` `HEAD` is generally compatible with the GitHub -`master` `HEAD` of the Minetest engine. +As of January 2024 Minetest Game follows a **rolling release** model with new changes being automatically +published on ContentDB every day. -Additionally, when the Minetest engine is tagged to be a certain version (e.g. -`0.4.10`), Minetest Game is tagged with the version, too. +There are no stable releases or tags, all existing ones are considered legacy. -When stable releases are made, Minetest Game and the Minetest engine is packaged -and made available at [www.minetest.net](https://www.minetest.net/downloads/). +Minetest Game is always compatible to the latest stable release of the engine. +Older releases may be supported too depending on circumstances. ## Licensing From d89170c12901f1b62a87b360dec34e6820cb97cc Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 18 Aug 2024 19:35:43 +0200 Subject: [PATCH 32/36] Simplify and fix docker test --- utils/test/run.sh | 6 +++--- utils/test/world.mt | 7 ------- 2 files changed, 3 insertions(+), 10 deletions(-) delete mode 100644 utils/test/world.mt diff --git a/utils/test/run.sh b/utils/test/run.sh index 284b2daf..fb4fa391 100755 --- a/utils/test/run.sh +++ b/utils/test/run.sh @@ -4,8 +4,7 @@ trap 'rm -rf "$world" || :' EXIT [ -f game.conf ] || { echo "Must be run in game root folder." >&2; exit 1; } -cp -v utils/test/world.mt "$world/" -chmod -R a+rwX "$world" # needed because server runs as unprivileged user inside container +chmod -R 777 "$world" # container uses unprivileged user inside vol=( -v "$PWD/utils/test/minetest.conf":/etc/minetest/minetest.conf @@ -14,6 +13,7 @@ vol=( -v "$world":/var/lib/minetest/.minetest/world ) [ -z "$DOCKER_IMAGE" ] && DOCKER_IMAGE="ghcr.io/minetest/minetest:master" -docker run --rm -i "${vol[@]}" "$DOCKER_IMAGE" +docker run --rm -i "${vol[@]}" "$DOCKER_IMAGE" --config /etc/minetest/minetest.conf --gameid minetest +test -f "$world/map.sqlite" || exit 1 exit 0 diff --git a/utils/test/world.mt b/utils/test/world.mt deleted file mode 100644 index d386d77a..00000000 --- a/utils/test/world.mt +++ /dev/null @@ -1,7 +0,0 @@ -auth_backend = sqlite3 -backend = sqlite3 -creative_mode = false -enable_damage = true -gameid = minetest -mod_storage_backend = sqlite3 -player_backend = sqlite3 From 4e402ec39fb1852b148e62637df0b72ae70ecd7d Mon Sep 17 00:00:00 2001 From: Gundul Date: Sun, 18 Aug 2024 19:40:14 +0200 Subject: [PATCH 33/36] Fix crash if bones punched by non-player (#3146) --- mods/bones/init.lua | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/mods/bones/init.lua b/mods/bones/init.lua index 725f6622..85cb480f 100644 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -16,6 +16,27 @@ local function is_owner(pos, name) return false end +local function drop(pos, itemstack) + local obj = minetest.add_item(pos, itemstack:take_item(itemstack:get_count())) + if obj then + obj:set_velocity({ + x = math.random(-10, 10) / 9, + y = 5, + z = math.random(-10, 10) / 9, + }) + end +end + +local function drop_contents(pos) + local inv = minetest.get_meta(pos):get_inventory() + + for i = 1, inv:get_size("main") do + local stk = inv:get_stack("main", i) + drop(pos, stk) + end + minetest.remove_node(pos) +end + local bones_formspec = "size[8,9]" .. "list[current_name;main;0,0.3;8,4;]" .. @@ -87,6 +108,11 @@ local bones_def = { return end + if not player:is_player() then + drop_contents(pos) + return + end + if minetest.get_meta(pos):get_string("infotext") == "" then return end @@ -171,17 +197,6 @@ local function may_replace(pos, player) return node_definition.buildable_to end -local drop = function(pos, itemstack) - local obj = minetest.add_item(pos, itemstack:take_item(itemstack:get_count())) - if obj then - obj:set_velocity({ - x = math.random(-10, 10) / 9, - y = 5, - z = math.random(-10, 10) / 9, - }) - end -end - local player_inventory_lists = { "main", "craft" } bones.player_inventory_lists = player_inventory_lists From 2ce8ff3306e3624571d88858f9f7dddd9997c18f Mon Sep 17 00:00:00 2001 From: 1F616EMO~nya Date: Sat, 31 Aug 2024 17:43:07 +0800 Subject: [PATCH 34/36] Simplify Butterfly and Firefly code (#3125) --- mods/butterflies/init.lua | 28 +++----------------- mods/fireflies/init.lua | 54 +++++++-------------------------------- 2 files changed, 13 insertions(+), 69 deletions(-) diff --git a/mods/butterflies/init.lua b/mods/butterflies/init.lua index 16b67910..ad3c79fe 100644 --- a/mods/butterflies/init.lua +++ b/mods/butterflies/init.lua @@ -43,18 +43,8 @@ for i in ipairs (butter_list) do fixed = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1}, }, floodable = true, - on_place = function(itemstack, placer, pointed_thing) - local player_name = placer and placer:get_player_name() or "" - local pos = pointed_thing.above - - if not minetest.is_protected(pos, player_name) and - not minetest.is_protected(pointed_thing.under, player_name) and - minetest.get_node(pos).name == "air" then - minetest.set_node(pos, {name = "butterflies:butterfly_"..name}) - minetest.get_node_timer(pos):start(1) - itemstack:take_item() - end - return itemstack + on_construct = function(pos) + minetest.get_node_timer(pos):start(1) end, on_timer = function(pos, elapsed) if minetest.get_node_light(pos) < 11 then @@ -76,18 +66,8 @@ for i in ipairs (butter_list) do drop = "", groups = {not_in_creative_inventory = 1}, floodable = true, - on_place = function(itemstack, placer, pointed_thing) - local player_name = placer and placer:get_player_name() or "" - local pos = pointed_thing.above - - if not minetest.is_protected(pos, player_name) and - not minetest.is_protected(pointed_thing.under, player_name) and - minetest.get_node(pos).name == "air" then - minetest.set_node(pos, {name = "butterflies:hidden_butterfly_"..name}) - minetest.get_node_timer(pos):start(1) - itemstack:take_item() - end - return itemstack + on_construct = function(pos) + minetest.get_node_timer(pos):start(1) end, on_timer = function(pos, elapsed) if minetest.get_node_light(pos) >= 11 then diff --git a/mods/fireflies/init.lua b/mods/fireflies/init.lua index be8fac60..827ed983 100644 --- a/mods/fireflies/init.lua +++ b/mods/fireflies/init.lua @@ -33,18 +33,8 @@ minetest.register_node("fireflies:firefly", { }, light_source = 6, floodable = true, - on_place = function(itemstack, placer, pointed_thing) - local player_name = placer:get_player_name() - local pos = pointed_thing.above - - if not minetest.is_protected(pos, player_name) and - not minetest.is_protected(pointed_thing.under, player_name) and - minetest.get_node(pos).name == "air" then - minetest.set_node(pos, {name = "fireflies:firefly"}) - minetest.get_node_timer(pos):start(1) - itemstack:take_item() - end - return itemstack + on_construct = function(pos) + minetest.get_node_timer(pos):start(1) end, on_timer = function(pos, elapsed) if minetest.get_node_light(pos) > 11 then @@ -68,18 +58,8 @@ minetest.register_node("fireflies:hidden_firefly", { drop = "", groups = {not_in_creative_inventory = 1}, floodable = true, - on_place = function(itemstack, placer, pointed_thing) - local player_name = placer:get_player_name() - local pos = pointed_thing.above - - if not minetest.is_protected(pos, player_name) and - not minetest.is_protected(pointed_thing.under, player_name) and - minetest.get_node(pos).name == "air" then - minetest.set_node(pos, {name = "fireflies:hidden_firefly"}) - minetest.get_node_timer(pos):start(1) - itemstack:take_item() - end - return itemstack + on_construct = function(pos) + minetest.get_node_timer(pos):start(1) end, on_timer = function(pos, elapsed) if minetest.get_node_light(pos) <= 11 then @@ -95,27 +75,11 @@ minetest.register_tool("fireflies:bug_net", { description = S("Bug Net"), inventory_image = "fireflies_bugnet.png", pointabilities = {nodes = {["group:catchable"] = true}}, - on_use = function(itemstack, player, pointed_thing) - local player_name = player and player:get_player_name() or "" - if not pointed_thing or pointed_thing.type ~= "node" or - minetest.is_protected(pointed_thing.under, player_name) then - return - end - local node_name = minetest.get_node(pointed_thing.under).name - local inv = player:get_inventory() - if minetest.get_item_group(node_name, "catchable") == 1 then - minetest.remove_node(pointed_thing.under) - local stack = ItemStack(node_name.." 1") - local leftover = inv:add_item("main", stack) - if leftover:get_count() > 0 then - minetest.add_item(pointed_thing.under, node_name.." 1") - end - end - if not minetest.is_creative_enabled(player_name) then - itemstack:add_wear_by_uses(256) - return itemstack - end - end + tool_capabilities = { + groupcaps = { + catchable = { maxlevel = 1, uses = 256, times = { [1] = 0, [2] = 0, [3] = 0 } } + }, + }, }) minetest.register_craft( { From 7967f77f3bad62be3c9e586b72f257f3ad0003d9 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 8 Sep 2024 22:07:20 +0200 Subject: [PATCH 35/36] Don't assert default biomes in spawn mod fixes #3124 --- mods/spawn/init.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mods/spawn/init.lua b/mods/spawn/init.lua index df30a25e..b439997f 100644 --- a/mods/spawn/init.lua +++ b/mods/spawn/init.lua @@ -36,7 +36,10 @@ end for _, name in ipairs({ "taiga", "coniferous_forest", "deciduous_forest", "grassland", "savanna" }) do - spawn.add_suitable_biome(name) + local id = minetest.get_biome_id(name) + if id then + biome_ids[id] = true + end end -- End of parameters From b23c44d9803d9e368254df688c886b17874b11ea Mon Sep 17 00:00:00 2001 From: 1F616EMO~nya Date: Mon, 9 Sep 2024 04:09:30 +0800 Subject: [PATCH 36/36] Get rid of recursive call in default.dig_up (#3133) --- game_api.txt | 8 ++++++++ mods/default/functions.lua | 27 ++++++++++++++++++++++----- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/game_api.txt b/game_api.txt index 3dcb2578..ff24a7e2 100644 --- a/game_api.txt +++ b/game_api.txt @@ -1217,3 +1217,11 @@ These can be influenced using this API. * `player`: ObjectRef of the relevant player * You can override this function to change the weather effects by simply returning different values. Setting `clouds` or `lighting` in the result table to `nil` will *prevent* those from changing. + +Utilities +--------- + +`default.dig_up(pos, node, digger, max_height)` + + * Find all nodes above `pos` that is the same, then dig them all + * `max_height` Maximum number of nodes to iterate. Default: 100 diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 80f1fe41..e426415c 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -293,15 +293,32 @@ minetest.register_abm({ -- Dig upwards -- -function default.dig_up(pos, node, digger) +local in_dig_up = false + +function default.dig_up(pos, node, digger, max_height) + if in_dig_up then return end -- Do not recurse if digger == nil then return end - local np = {x = pos.x, y = pos.y + 1, z = pos.z} - local nn = minetest.get_node(np) - if nn.name == node.name then - minetest.node_dig(np, nn, digger) + max_height = max_height or 100 + + in_dig_up = true + for y = 1, max_height do + local up_pos = vector.offset(pos, 0, y, 0) + local up_node = minetest.get_node(up_pos) + if up_node.name ~= node.name then + break + end + if not minetest.node_dig(up_pos, up_node, digger) then + break + end end + in_dig_up = false end +-- errors are hard to handle, instead we rely on resetting this value the next step +minetest.register_globalstep(function() + in_dig_up = false +end) + -- -- Fence registration helper