Compare commits
23 Commits
master
...
campfire_u
Author | SHA1 | Date |
---|---|---|
Wbjitscool | d4c164f4f6 | |
thunder1035 | f88a9468e6 | |
PrairieWind | 7706fdf577 | |
PrairieWind | 38a4f13d7c | |
PrairieWind | 7c1fd89ae9 | |
PrairieWind | 2afd532f17 | |
PrairieWind | ebc4a8871c | |
PrairieWind | c3d2805752 | |
DinoNuggies4665 | dfb2fa81d1 | |
PrairieWind | 571d9f69d0 | |
DinoNuggies4665 | 7a0db8967a | |
DinoNuggies4665 | 6a315b2005 | |
DinoNuggies4665 | 285862b35b | |
DinoNuggies4665 | ca2ca70537 | |
PrairieWind | 8b2b3a2a15 | |
DinoNuggies4665 | 31df65c0b2 | |
DinoNuggies4665 | 05c601d220 | |
DinoNuggies4665 | 30e05d514e | |
DinoNuggies4665 | 5d970af1b0 | |
DinoNuggies4665 | e1e97b5d45 | |
DinoNuggies4665 | 9d147e2783 | |
PrairieWind | 1908602a9e | |
PrairieWind | 5e3f820d77 |
|
@ -27,7 +27,6 @@
|
||||||
* jordan4ibanez
|
* jordan4ibanez
|
||||||
* iliekprogrammar
|
* iliekprogrammar
|
||||||
* kabou
|
* kabou
|
||||||
* kay27
|
|
||||||
* Faerraven / Michieal
|
* Faerraven / Michieal
|
||||||
* MysticTempest
|
* MysticTempest
|
||||||
* NO11
|
* NO11
|
||||||
|
@ -71,6 +70,7 @@
|
||||||
* erlehmann
|
* erlehmann
|
||||||
* E
|
* E
|
||||||
* n_to
|
* n_to
|
||||||
|
* kay27
|
||||||
* debiankaios
|
* debiankaios
|
||||||
* Gustavo6046 / wallabra
|
* Gustavo6046 / wallabra
|
||||||
* CableGuy67
|
* CableGuy67
|
||||||
|
@ -111,7 +111,6 @@
|
||||||
* uqers
|
* uqers
|
||||||
* Niterux
|
* Niterux
|
||||||
* appgurueu
|
* appgurueu
|
||||||
* seventeenthShulker
|
|
||||||
|
|
||||||
## Music
|
## Music
|
||||||
* Jordach for the jukebox music compilation from Big Freaking Dig
|
* Jordach for the jukebox music compilation from Big Freaking Dig
|
||||||
|
|
10
README.md
|
@ -79,14 +79,12 @@ The MineClone2 repository is hosted at Mesehub. To contribute or report issues,
|
||||||
* Mesehub: <https://git.minetest.land/MineClone2/MineClone2>
|
* Mesehub: <https://git.minetest.land/MineClone2/MineClone2>
|
||||||
* Discord: <https://discord.gg/xE4z8EEpDC>
|
* Discord: <https://discord.gg/xE4z8EEpDC>
|
||||||
* YouTube: <https://www.youtube.com/channel/UClI_YcsXMF3KNeJtoBfnk9A>
|
* YouTube: <https://www.youtube.com/channel/UClI_YcsXMF3KNeJtoBfnk9A>
|
||||||
|
* IRC: <https://web.libera.chat/#mineclone2>
|
||||||
|
* Matrix: <https://app.element.io/#/room/#mc2:matrix.org>
|
||||||
|
* Reddit: <https://www.reddit.com/r/MineClone2/>
|
||||||
|
* Minetest forums: <https://forum.minetest.net/viewtopic.php?f=50&t=16407>
|
||||||
* ContentDB: <https://content.minetest.net/packages/wuzzy/mineclone2/>
|
* ContentDB: <https://content.minetest.net/packages/wuzzy/mineclone2/>
|
||||||
* OpenCollective: <https://opencollective.com/mineclone2>
|
* OpenCollective: <https://opencollective.com/mineclone2>
|
||||||
* Mastodon: <https://fosstodon.org/@MineClone2>
|
|
||||||
* Lemmy: <https://lemmy.world/c/mineclone2>
|
|
||||||
* Matrix space: <https://app.element.io/#/room/#mcl2:matrix.org>
|
|
||||||
* Minetest forums: <https://forum.minetest.net/viewtopic.php?f=50&t=16407>
|
|
||||||
* Reddit: <https://www.reddit.com/r/MineClone2/>
|
|
||||||
* IRC (barely used): <https://web.libera.chat/#mineclone2>
|
|
||||||
|
|
||||||
## Target
|
## Target
|
||||||
- Create a stable, moddable, free/libre game based on Minecraft
|
- Create a stable, moddable, free/libre game based on Minecraft
|
||||||
|
|
12
RELEASE.md
|
@ -71,13 +71,5 @@ Note: If you have to do more than 1 hotfix release, can do it on the same releas
|
||||||
|
|
||||||
##### Inform people
|
##### Inform people
|
||||||
|
|
||||||
* Upload video to YouTube
|
* Add a comment to the forum post with the release number and what is involved, and maintainer will update main post.
|
||||||
* Add a comment to the forum post with the release number and change log. Maintainer will update main post with code link.
|
* Add a comment in Discord announcement
|
||||||
* Add a Discord announcement post and @everyone with link to video, forum post and release notes.
|
|
||||||
* Share the news on reddit + Lemmy. Good subs to share with:
|
|
||||||
* r/linux_gaming
|
|
||||||
* r/opensourcegames
|
|
||||||
* r/opensource
|
|
||||||
* r/freesoftware
|
|
||||||
* r/linuxmasterrace
|
|
||||||
* r/MineClone2
|
|
|
@ -1,4 +1,4 @@
|
||||||
title = MineClone 2
|
title = MineClone 2
|
||||||
description = A survival sandbox game. Survive, gather, hunt, build, explore, and do much more.
|
description = A survival sandbox game. Survive, gather, hunt, build, explore, and do much more.
|
||||||
disallowed_mapgens = v6
|
disallowed_mapgens = v6
|
||||||
version=0.85.0-SNAPSHOT
|
version=0.84.0-SNAPSHOT
|
|
@ -96,8 +96,8 @@ function mcl_damage.finish_reason(mcl_reason)
|
||||||
end
|
end
|
||||||
|
|
||||||
function mcl_damage.from_mt(mt_reason)
|
function mcl_damage.from_mt(mt_reason)
|
||||||
if mt_reason._mcl_cached_reason then
|
if mt_reason._mcl_chached_reason then
|
||||||
return mt_reason._mcl_cached_reason
|
return mt_reason._mcl_chached_reason
|
||||||
end
|
end
|
||||||
|
|
||||||
local mcl_reason
|
local mcl_reason
|
||||||
|
|
|
@ -169,9 +169,10 @@ local professions = {
|
||||||
jobsite = "mcl_fletching_table:fletching_table",
|
jobsite = "mcl_fletching_table:fletching_table",
|
||||||
trades = {
|
trades = {
|
||||||
{
|
{
|
||||||
{ { "mcl_core:stick", 32, 32 }, E1 },
|
{ { "mcl_mobitems:string", 15, 20 }, E1 },
|
||||||
{ E1, { "mcl_bows:arrow", 8, 12 } },
|
{ E1, { "mcl_bows:arrow", 8, 12 } },
|
||||||
{ { "mcl_core:gravel", 10, 10, "mcl_core:emerald", 1, 1 }, { "mcl_core:flint", 6, 10 } },
|
{ { "mcl_core:gravel", 10, 10, "mcl_core:emerald", 1, 1 }, { "mcl_core:flint", 6, 10 } },
|
||||||
|
{ { "mcl_core:stick", 32, 32 }, E1 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ { "mcl_core:flint", 26, 26 }, E1 },
|
{ { "mcl_core:flint", 26, 26 }, E1 },
|
||||||
|
@ -182,7 +183,7 @@ local professions = {
|
||||||
{ { "mcl_core:emerald", 3, 3 }, { "mcl_bows:crossbow", 1, 1 } },
|
{ { "mcl_core:emerald", 3, 3 }, { "mcl_bows:crossbow", 1, 1 } },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ { "mcl_mobitems:feather", 24, 24 }, E1 },
|
{ { "mcl_mobitems:string", 24, 24 }, E1 },
|
||||||
{ { "mcl_core:emerald", 7, 21 } , { "mcl_bows:bow_enchanted", 1, 1 } },
|
{ { "mcl_core:emerald", 7, 21 } , { "mcl_bows:bow_enchanted", 1, 1 } },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -350,7 +351,7 @@ local professions = {
|
||||||
leatherworker = {
|
leatherworker = {
|
||||||
name = N("Leatherworker"),
|
name = N("Leatherworker"),
|
||||||
texture = "mobs_mc_villager_leatherworker.png",
|
texture = "mobs_mc_villager_leatherworker.png",
|
||||||
jobsite = "group:cauldron",
|
jobsite = "mcl_cauldrons:cauldron",
|
||||||
trades = {
|
trades = {
|
||||||
{
|
{
|
||||||
{ { "mcl_mobitems:leather", 9, 12 }, E1 },
|
{ { "mcl_mobitems:leather", 9, 12 }, E1 },
|
||||||
|
@ -1007,15 +1008,7 @@ end
|
||||||
----- JOBSITE LOGIC
|
----- JOBSITE LOGIC
|
||||||
local function get_profession_by_jobsite(js)
|
local function get_profession_by_jobsite(js)
|
||||||
for k,v in pairs(professions) do
|
for k,v in pairs(professions) do
|
||||||
if v.jobsite == js then
|
if v.jobsite == js then return k end
|
||||||
return k
|
|
||||||
-- Catch Nitwit doesn't have a jobsite
|
|
||||||
elseif v.jobsite and v.jobsite:find("^group:") then
|
|
||||||
local group = v.jobsite:gsub("^group:", "")
|
|
||||||
if minetest.get_item_group(js, group) > 0 then
|
|
||||||
return k
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -53,8 +53,8 @@ Range: 4=Range: 4
|
||||||
Rating @1=Classificação @1
|
Rating @1=Classificação @1
|
||||||
# @1 is minimal rating, @2 is maximum rating
|
# @1 is minimal rating, @2 is maximum rating
|
||||||
Rating @1-@2=Classificação @1-@2
|
Rating @1-@2=Classificação @1-@2
|
||||||
The fall damage on this block is increased by @1%.=O dano por queda nesse bloco é aumentado em @1%.
|
The fall damage on this block is increased by @1%.=O dano por queda nesse bloco é aumentado em @ 1%.
|
||||||
The fall damage on this block is reduced by @1%.=O dano por queda nesse bloco é reduzido em @1%.
|
The fall damage on this block is reduced by @1%.=O dano por queda nesse bloco é reduzido em @ 1%.
|
||||||
This block allows light to propagate with a small loss of brightness, and sunlight can even go through losslessly.=Esse bloco permite que a luz se propague com uma pequena perda de brilho, e a luz solar pode até passar sem perdas.
|
This block allows light to propagate with a small loss of brightness, and sunlight can even go through losslessly.=Esse bloco permite que a luz se propague com uma pequena perda de brilho, e a luz solar pode até passar sem perdas.
|
||||||
This block allows light to propagate with a small loss of brightness.=Esse bloco permite que a luz se propague com uma pequena perda de brilho.
|
This block allows light to propagate with a small loss of brightness.=Esse bloco permite que a luz se propague com uma pequena perda de brilho.
|
||||||
This block allows sunlight to propagate without loss in brightness.=Esse bloco permite que a luz solar se propague sem perda de brilho.
|
This block allows sunlight to propagate without loss in brightness.=Esse bloco permite que a luz solar se propague sem perda de brilho.
|
||||||
|
@ -78,7 +78,7 @@ This block connects to this block: @1.=Esse bloco se conecta a esse bloco: @1.
|
||||||
This block decreases your breath and causes a drowning damage of @1 hit point every 2 seconds.=Esse bloco diminui a sua respiração e causa um dano por afogamento de @1 ponto de vida a cada 2 segundos.
|
This block decreases your breath and causes a drowning damage of @1 hit point every 2 seconds.=Esse bloco diminui a sua respiração e causa um dano por afogamento de @1 ponto de vida a cada 2 segundos.
|
||||||
This block decreases your breath and causes a drowning damage of @1 hit points every 2 seconds.=Esse bloco diminui a sua respiração e causa um dano por afogamento de @1 pontos de vida a cada 2 segundos.
|
This block decreases your breath and causes a drowning damage of @1 hit points every 2 seconds.=Esse bloco diminui a sua respiração e causa um dano por afogamento de @1 pontos de vida a cada 2 segundos.
|
||||||
This block is a light source with a light level of @1.=Esse bloco é uma fonte de luz com um nível de luz de @1.
|
This block is a light source with a light level of @1.=Esse bloco é uma fonte de luz com um nível de luz de @1.
|
||||||
This block glows faintly with a light level of @1.=Esse bloco tem um brilho fraco com um nível de luz de @1.
|
This block glows faintly with a light level of @1.=Esse bloco tem um brilho fraco com um nível de luz de @ 1.
|
||||||
This block is a building block for creating various buildings.=Esse bloco é um bloco de construção para criar vários edifícios.
|
This block is a building block for creating various buildings.=Esse bloco é um bloco de construção para criar vários edifícios.
|
||||||
This block is a liquid with these properties:=Esse bloco é um líquido com as seguintes propriedades:
|
This block is a liquid with these properties:=Esse bloco é um líquido com as seguintes propriedades:
|
||||||
This block is affected by gravity and can fall.=Esse bloco é afetado pela gravidade e pode cair.
|
This block is affected by gravity and can fall.=Esse bloco é afetado pela gravidade e pode cair.
|
||||||
|
@ -123,7 +123,7 @@ any level=qualquer nível
|
||||||
level 0=nível 0
|
level 0=nível 0
|
||||||
level 0-@1=nivel 0-@1
|
level 0-@1=nivel 0-@1
|
||||||
unknown=desconhecido
|
unknown=desconhecido
|
||||||
Unknown item (@1)=Item desconhecido (@1)
|
Unknown item (@1)=Item desconhecido
|
||||||
• @1: @2=
|
• @1: @2=
|
||||||
• @1: @2 HP=
|
• @1: @2 HP=
|
||||||
• @1: @2, @3=
|
• @1: @2, @3=
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
-- This mod has no code and is only a collection of textures.
|
|
@ -0,0 +1,3 @@
|
||||||
|
name = mcl_base_textures
|
||||||
|
author = Wuzzy
|
||||||
|
description = Provides core textures needed by Minetest.
|
|
@ -29,7 +29,6 @@ return {
|
||||||
"jordan4ibanez",
|
"jordan4ibanez",
|
||||||
"iliekprogrammar",
|
"iliekprogrammar",
|
||||||
"kabou",
|
"kabou",
|
||||||
"kay27",
|
|
||||||
"Faerraven / Michieal",
|
"Faerraven / Michieal",
|
||||||
"MysticTempest",
|
"MysticTempest",
|
||||||
"NO11",
|
"NO11",
|
||||||
|
@ -73,6 +72,7 @@ return {
|
||||||
"erlehmann",
|
"erlehmann",
|
||||||
"E",
|
"E",
|
||||||
"n_to",
|
"n_to",
|
||||||
|
"kay27",
|
||||||
"debiankaios",
|
"debiankaios",
|
||||||
"Gustavo6046 / wallabra",
|
"Gustavo6046 / wallabra",
|
||||||
"CableGuy67",
|
"CableGuy67",
|
||||||
|
@ -113,7 +113,6 @@ return {
|
||||||
"uqers",
|
"uqers",
|
||||||
"Niterux",
|
"Niterux",
|
||||||
"appgurueu",
|
"appgurueu",
|
||||||
"seventeenthShulker",
|
|
||||||
}},
|
}},
|
||||||
{S("Music"), 0xA60014, {
|
{S("Music"), 0xA60014, {
|
||||||
"Jordach for the jukebox music compilation from Big Freaking Dig",
|
"Jordach for the jukebox music compilation from Big Freaking Dig",
|
||||||
|
|
|
@ -411,6 +411,10 @@ mesecon.register_mvps_stopper("mesecons_solarpanel:solar_panel_inverted_on")
|
||||||
mesecon.register_mvps_stopper("mesecons_solarpanel:solar_panel_inverted_off")
|
mesecon.register_mvps_stopper("mesecons_solarpanel:solar_panel_inverted_off")
|
||||||
mesecon.register_mvps_stopper("mcl_banners:hanging_banner")
|
mesecon.register_mvps_stopper("mcl_banners:hanging_banner")
|
||||||
mesecon.register_mvps_stopper("mcl_banners:standing_banner")
|
mesecon.register_mvps_stopper("mcl_banners:standing_banner")
|
||||||
|
mesecon.register_mvps_stopper("mcl_campfires:campfire")
|
||||||
|
mesecon.register_mvps_stopper("mcl_campfires:campfire_lit")
|
||||||
|
mesecon.register_mvps_stopper("mcl_campfires:soul_campfire")
|
||||||
|
mesecon.register_mvps_stopper("mcl_campfires:soul_campfire_lit")
|
||||||
|
|
||||||
-- Unmovable by technical restrictions.
|
-- Unmovable by technical restrictions.
|
||||||
-- Open formspec would screw up if node is destroyed (minor problem)
|
-- Open formspec would screw up if node is destroyed (minor problem)
|
||||||
|
@ -935,6 +939,11 @@ mesecon.register_mvps_unsticky("mcl_farming:wheat_4")
|
||||||
mesecon.register_mvps_unsticky("mcl_farming:wheat_5")
|
mesecon.register_mvps_unsticky("mcl_farming:wheat_5")
|
||||||
mesecon.register_mvps_unsticky("mcl_farming:wheat_6")
|
mesecon.register_mvps_unsticky("mcl_farming:wheat_6")
|
||||||
mesecon.register_mvps_unsticky("mcl_farming:wheat_7")
|
mesecon.register_mvps_unsticky("mcl_farming:wheat_7")
|
||||||
|
-- Campfires
|
||||||
|
mesecon.register_mvps_unsticky("mcl_campfires:campfire")
|
||||||
|
mesecon.register_mvps_unsticky("mcl_campfires:campfire_lit")
|
||||||
|
mesecon.register_mvps_unsticky("mcl_campfires:soul_campfire")
|
||||||
|
mesecon.register_mvps_unsticky("mcl_campfires:soul_campfire_lit")
|
||||||
|
|
||||||
-- Includes node heat when moving them
|
-- Includes node heat when moving them
|
||||||
mesecon.register_on_mvps_move(mesecon.move_hot_nodes)
|
mesecon.register_on_mvps_move(mesecon.move_hot_nodes)
|
||||||
|
|
|
@ -203,11 +203,11 @@ local bamboo_def = {
|
||||||
if node_above_name ~= "mcl_core:water_source" and node_above_name ~= "mcl_core:lava_source"
|
if node_above_name ~= "mcl_core:water_source" and node_above_name ~= "mcl_core:lava_source"
|
||||||
and node_above_name ~= "mcl_nether:nether_lava_source" then
|
and node_above_name ~= "mcl_nether:nether_lava_source" then
|
||||||
local _, position = minetest.item_place(place_item, placer, pointed_thing, fdir)
|
local _, position = minetest.item_place(place_item, placer, pointed_thing, fdir)
|
||||||
if position then
|
if not minetest.is_creative_enabled(placer:get_player_name()) then
|
||||||
if not minetest.is_creative_enabled(placer:get_player_name()) then
|
itemstack:take_item(1)
|
||||||
itemstack:take_item(1)
|
end
|
||||||
end
|
if rand_height and rand_height > 1 then
|
||||||
if rand_height and rand_height > 1 then
|
if position then
|
||||||
mcl_bamboo.mcl_log("Setting Height Data...")
|
mcl_bamboo.mcl_log("Setting Height Data...")
|
||||||
meta = minetest.get_meta(position)
|
meta = minetest.get_meta(position)
|
||||||
if meta then
|
if meta then
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
# textdomain: mcl_bamboo
|
|
||||||
|
|
||||||
### bamboo_base.lua ###
|
|
||||||
|
|
||||||
Bamboo=Бамбук
|
|
||||||
Bamboo Mosaic Plank=Бамбуковая мозаика
|
|
||||||
Bamboo Plank=Бамбуковые доски
|
|
||||||
Stripped Bamboo Block=Блок обтёсанного бамбука
|
|
||||||
Bamboo Block=Блок бамбука
|
|
||||||
|
|
||||||
### bamboo_items.lua ###
|
|
||||||
|
|
||||||
A bamboo button is a redstone component made out of stone which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1 second.=Бамбуковая кнопка - это компонент красного камня, который изготовлен из краснокаменной руды. Ее можно нажать, чтобы обеспечить питание красному камню. При нажатии он приводит в действие соседние компоненты красного камня на 1 секунду.
|
|
||||||
|
|
||||||
A wooden pressure plate is a redstone component which supplies its surrounding blocks with redstone power while any movable object (including dropped items, players and mobs) rests on top of it.=Деревянная нажимная пластина - это компонент красного камня, который снабжает окружающие блоки энергией красного камня, в то время как любой подвижный объект (включая выпавшие предметы, игроков и мобов) стоит на ней.
|
|
||||||
|
|
||||||
Bamboo=Бамбук
|
|
||||||
Bamboo Button=Бамбуковая кнопка
|
|
||||||
Bamboo Door=Бамбуковая дверь
|
|
||||||
Bamboo Fence=Бамбуковый забор
|
|
||||||
Bamboo Fence Gate=Бамбуковая калитка
|
|
||||||
Bamboo Mosaic Slab=Плита из бамбуковой мозаики
|
|
||||||
Bamboo Mosaic Stair=Ступеньки из бамбуковой мозаики
|
|
||||||
Bamboo Plank Slab=Бамбуковая плита из досок
|
|
||||||
Bamboo Plank Stair=Бамбуковые ступеньки из досок
|
|
||||||
Bamboo Pressure Plate=Бамбуковая нажимная плита
|
|
||||||
Bamboo Slab=Бамбуковая плита
|
|
||||||
Bamboo Stair=Бамбуковые ступеньки
|
|
||||||
Bamboo Trapdoor=Бамбуковый люк
|
|
||||||
Double Bamboo Mosaic Slab=Двойная бамбуковая мозаичная плита
|
|
||||||
Double Bamboo Plank Slab=Двойная бамбуковая дощатая плита
|
|
||||||
Double Bamboo Slab=Двойная бамбуковая плита
|
|
||||||
Double Stripped Bamboo Slab=Двойная обтесанная бамбуковая плита
|
|
||||||
Scaffolding=Строительные леса
|
|
||||||
Scaffolding (horizontal)=Строительные леса (горизонтальный)
|
|
||||||
Scaffolding block used to climb up or out across areas.=Блок строительных лесов, используемый для подъема вверх или перемещения по другим участкам.
|
|
||||||
Stripped Bamboo Slab=Обтесанная бамбуковая плита
|
|
||||||
Stripped Bamboo Stair=Обтесанные бамбуковые ступеньки
|
|
||||||
|
|
||||||
To open or close the trapdoor, rightclick it or send a redstone signal to it.=Чтобы открыть или закрыть люк, щелкните по нему правой кнопкой мыши или отправьте на него сигнал redstone.
|
|
||||||
|
|
||||||
Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.=Деревянные люки - это горизонтальные барьеры, которые можно открывать и закрывать вручную или по сигналу красного камня. Они занимают верхнюю или нижнюю часть блока, в зависимости от того, как они были размещены. Когда они открыты, по ним можно подниматься, как по лестнице.
|
|
||||||
|
|
||||||
Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.=Деревянные двери представляют собой барьеры высотой в 2 блока, которые можно открывать или закрывать вручную и по сигналу redstone.
|
|
||||||
To open or close a wooden door, rightclick it or supply its lower half with a redstone signal.=Чтобы открыть или закрыть деревянную дверь, щелкните по ней правой кнопкой мыши или снабдите ее нижнюю половину сигналом красного камня.
|
|
|
@ -1,6 +0,0 @@
|
||||||
# textdomain: mcl_beacons
|
|
||||||
Beacon=Маяк
|
|
||||||
Beacon:=Маяк:
|
|
||||||
Primary Power:=Основной эффект:
|
|
||||||
Inventory:=Инвентарь:
|
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
# textdomain: mcl_blackstone
|
|
||||||
Blackstone=Чернит
|
|
||||||
Polished Blackstone=Полированный чернит
|
|
||||||
Chiseled Polished Blackstone=Резной полированный чернит
|
|
||||||
Polished Blackstone Bricks=Полированный чернокаменный кирпич
|
|
||||||
Basalt=Базальт
|
|
||||||
Polished Basalt=Полированный базальт
|
|
||||||
Blackstone Slab=Чернитная плита
|
|
||||||
Polished Blackstone Slab=Плита из полированного чернита
|
|
||||||
Chiseled Polished Blackstone Slab=Резная полированная чернитная плита
|
|
||||||
Polished Blackstone Brick Slab=Плита из полированно-чернитного кирпича
|
|
||||||
Blackstone Stair=Чернитные ступеньки
|
|
||||||
Polished Blackstone Stair=Ступеньки из полированно-чернитного кирпича
|
|
||||||
Chiseled Polished Blackstone Stair=Резные полированные чернитные ступеньки
|
|
||||||
Polished Blackstone Brick Stair=Ступеньки из полированно-чернитного кирпича
|
|
||||||
Quartz Bricks=Кварцевые кирпичи
|
|
||||||
Soul Torch=Факел душ
|
|
||||||
Torches are light sources which can be placed at the side or on the top of most blocks.=Факелы - это источники света, которые могут быть размещены сбоку или сверху большинства блоков.
|
|
||||||
Soul Lantern=Фонарь душ
|
|
||||||
Soul Soil=Почва душ
|
|
||||||
Eternal Soul Fire=Пламя душ
|
|
||||||
Gilded Blackstone=Золочёный чернит
|
|
||||||
Nether Gold Ore=Незерская золотая руда
|
|
||||||
Smooth Basalt=Гладкий базальт
|
|
||||||
Blackstone Wall=Чернитная стена
|
|
||||||
Double Blackstone Slab=Двойная чернитная плита
|
|
||||||
Polished Double Blackstone Slab=Полированная двойная чернитная плита
|
|
||||||
Double Chiseled Polished Blackstone Slab=Двойная резная полированная чернитная плита
|
|
||||||
Double Polished Blackstone Brick Slab=Двойная плита из полированно-чернитного кирпича
|
|
|
@ -1,6 +1,7 @@
|
||||||
local S = minetest.get_translator(minetest.get_current_modname())
|
local S = minetest.get_translator(minetest.get_current_modname())
|
||||||
|
|
||||||
local mod_target = minetest.get_modpath("mcl_target")
|
local mod_target = minetest.get_modpath("mcl_target")
|
||||||
|
local mod_campfire = minetest.get_modpath("mcl_campfires")
|
||||||
local enable_pvp = minetest.settings:get_bool("enable_pvp")
|
local enable_pvp = minetest.settings:get_bool("enable_pvp")
|
||||||
|
|
||||||
local math = math
|
local math = math
|
||||||
|
@ -395,6 +396,11 @@ function ARROW_ENTITY.on_step(self, dtime)
|
||||||
tnt.ignite(self._stuckin)
|
tnt.ignite(self._stuckin)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Ignite Campfires
|
||||||
|
if mod_campfire and mcl_burning.is_burning(self.object) and minetest.get_item_group(snode.name, "campfire") ~= 0 then
|
||||||
|
mcl_campfires.light_campfire(self._stuckin)
|
||||||
|
end
|
||||||
|
|
||||||
-- Activate target
|
-- Activate target
|
||||||
if mod_target and snode.name == "mcl_target:target_off" then
|
if mod_target and snode.name == "mcl_target:target_off" then
|
||||||
mcl_target.hit(self._stuckin, 1) --10 redstone ticks
|
mcl_target.hit(self._stuckin, 1) --10 redstone ticks
|
||||||
|
|
|
@ -105,20 +105,8 @@ local function player_shoot_arrow(wielditem, player, power, damage, is_critical)
|
||||||
local yaw = player:get_look_horizontal()
|
local yaw = player:get_look_horizontal()
|
||||||
|
|
||||||
if has_multishot_enchantment then
|
if has_multishot_enchantment then
|
||||||
-- calculate rotation by 10 degrees 'left' and 'right' of facing direction
|
mcl_bows_s.shoot_arrow_crossbow(arrow_itemstring, {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, {x=dir.x, y=dir.y, z=dir.z + .2}, yaw, player, power, damage, is_critical, player:get_wielded_item(), false)
|
||||||
local pitch = player:get_look_vertical()
|
mcl_bows_s.shoot_arrow_crossbow(arrow_itemstring, {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, {x=dir.x, y=dir.y, z=dir.z - .2}, yaw, player, power, damage, is_critical, player:get_wielded_item(), false)
|
||||||
local pitch_c = math.cos(pitch)
|
|
||||||
local pitch_s = math.sin(pitch)
|
|
||||||
local yaw_c = math.cos(yaw + math.pi / 2)
|
|
||||||
local yaw_s = math.sin(yaw + math.pi / 2)
|
|
||||||
|
|
||||||
local rot_left = {x = yaw_c * pitch_s * math.pi / 18, y = pitch_c * math.pi / 18, z = yaw_s * pitch_s * math.pi / 18}
|
|
||||||
local rot_right = {x = - yaw_c * pitch_s * math.pi / 18, y = - pitch_c * math.pi / 18, z = - yaw_s * pitch_s * math.pi / 18}
|
|
||||||
local dir_left = vector.rotate(dir, rot_left)
|
|
||||||
local dir_right = vector.rotate(dir, rot_right)
|
|
||||||
|
|
||||||
mcl_bows_s.shoot_arrow_crossbow(arrow_itemstring, {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, {x=dir_left.x, y=dir_left.y, z=dir_left.z}, yaw, player, power, damage, is_critical, player:get_wielded_item(), false)
|
|
||||||
mcl_bows_s.shoot_arrow_crossbow(arrow_itemstring, {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, {x=dir_right.x, y=dir_right.y, z=dir_right.z}, yaw, player, power, damage, is_critical, player:get_wielded_item(), false)
|
|
||||||
mcl_bows_s.shoot_arrow_crossbow(arrow_itemstring, {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, dir, yaw, player, power, damage, is_critical, player:get_wielded_item(), true)
|
mcl_bows_s.shoot_arrow_crossbow(arrow_itemstring, {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, dir, yaw, player, power, damage, is_critical, player:get_wielded_item(), true)
|
||||||
else
|
else
|
||||||
mcl_bows_s.shoot_arrow_crossbow(arrow_itemstring, {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, dir, yaw, player, power, damage, is_critical, player:get_wielded_item(), true)
|
mcl_bows_s.shoot_arrow_crossbow(arrow_itemstring, {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, dir, yaw, player, power, damage, is_critical, player:get_wielded_item(), true)
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
MineClone 2 Campfire API
|
# MineClone 2 Campfire API
|
||||||
========================
|
## `mcl_campfires.register_campfire`
|
||||||
`mcl_campfires.register_campfire`
|
|
||||||
---------------------------------
|
|
||||||
Used to register campfires.
|
Used to register campfires.
|
||||||
|
|
||||||
**Example Usage**
|
**Example Usage**
|
||||||
|
@ -24,3 +22,6 @@ mcl_campfires.register_campfire("mcl_campfires:campfire", {
|
||||||
* drops - what items drop when the campfire is mined.
|
* drops - what items drop when the campfire is mined.
|
||||||
* lightlevel - the level of light the campfire emits.
|
* lightlevel - the level of light the campfire emits.
|
||||||
* damage - amount of damage the campfire deals when the player stands on it.
|
* damage - amount of damage the campfire deals when the player stands on it.
|
||||||
|
|
||||||
|
## Cooking Items
|
||||||
|
To allow an item to be cooked on the campfire, it must first have a registered cooked variant. To allow placing the item on the campfire to be cooked, add `campfire_cookable = 1` into the item groups list.
|
||||||
|
|
|
@ -1,6 +1,166 @@
|
||||||
local S = minetest.get_translator(minetest.get_current_modname())
|
local S = minetest.get_translator(minetest.get_current_modname())
|
||||||
mcl_campfires = {}
|
mcl_campfires = {}
|
||||||
|
|
||||||
|
local COOK_TIME = 30 -- Time it takes to cook food on a campfire.
|
||||||
|
|
||||||
|
local food_entity = {nil, nil, nil, nil}
|
||||||
|
local campfire_spots = {
|
||||||
|
vector.new(-0.25, -0.04, -0.25),
|
||||||
|
vector.new( 0.25, -0.04, -0.25),
|
||||||
|
vector.new( 0.25, -0.04, 0.25),
|
||||||
|
vector.new(-0.25, -0.04, 0.25),
|
||||||
|
}
|
||||||
|
|
||||||
|
local drop_inventory = mcl_util.drop_items_from_meta_container("main")
|
||||||
|
|
||||||
|
local function campfire_drops(pos, digger, drops, nodename)
|
||||||
|
local wield_item = digger:get_wielded_item()
|
||||||
|
local silk_touch = mcl_enchanting.has_enchantment(wield_item, "silk_touch")
|
||||||
|
local is_creative = minetest.is_creative_enabled(digger:get_player_name())
|
||||||
|
local inv = digger:get_inventory()
|
||||||
|
if not is_creative then
|
||||||
|
if silk_touch then
|
||||||
|
minetest.add_item(pos, nodename)
|
||||||
|
else
|
||||||
|
minetest.add_item(pos, drops)
|
||||||
|
end
|
||||||
|
elseif is_creative and inv:room_for_item("main", nodename) and not inv:contains_item("main", nodename) then
|
||||||
|
inv:add_item("main", nodename)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function drop_items(pos, node, oldmeta)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
drop_inventory(pos, node, oldmeta)
|
||||||
|
local entites = minetest.get_objects_inside_radius(pos, 0.5)
|
||||||
|
if entites then
|
||||||
|
for _, food_entity in ipairs(entites) do
|
||||||
|
if food_entity then
|
||||||
|
if food_entity:get_luaentity().name == "mcl_campfires:food_entity" then
|
||||||
|
food_entity:remove()
|
||||||
|
for i = 1, 4 do
|
||||||
|
meta:set_string("food_x_"..tostring(i), nil)
|
||||||
|
meta:set_string("food_y_"..tostring(i), nil)
|
||||||
|
meta:set_string("food_z_"..tostring(i), nil)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function on_blast(pos)
|
||||||
|
local node = minetest.get_node(pos)
|
||||||
|
drop_items(pos, node)
|
||||||
|
minetest.remove_node(pos)
|
||||||
|
end
|
||||||
|
|
||||||
|
function mcl_campfires.light_campfire(pos)
|
||||||
|
local campfire = minetest.get_node(pos)
|
||||||
|
local name = campfire.name .. "_lit"
|
||||||
|
minetest.set_node(pos, {name = name, param2 = campfire.param2})
|
||||||
|
end
|
||||||
|
|
||||||
|
-- on_rightclick function to take items that are cookable in a campfire, and put them in the campfire inventory
|
||||||
|
function mcl_campfires.take_item(pos, node, player, itemstack)
|
||||||
|
local food_entity = {nil,nil,nil,nil}
|
||||||
|
local is_creative = minetest.is_creative_enabled(player:get_player_name())
|
||||||
|
local inv = player:get_inventory()
|
||||||
|
local campfire_meta = minetest.get_meta(pos)
|
||||||
|
local campfire_inv = campfire_meta:get_inventory()
|
||||||
|
local timer = minetest.get_node_timer(pos)
|
||||||
|
local stack = itemstack:peek_item(1)
|
||||||
|
if minetest.get_item_group(itemstack:get_name(), "campfire_cookable") ~= 0 then
|
||||||
|
local cookable = minetest.get_craft_result({method = "cooking", width = 1, items = {itemstack}})
|
||||||
|
if cookable then
|
||||||
|
for space = 1, 4 do -- Cycle through spots
|
||||||
|
local spot = campfire_inv:get_stack("main", space)
|
||||||
|
if not spot or spot == (ItemStack("") or ItemStack("nil")) then -- Check if the spot is empty or not
|
||||||
|
if not is_creative then itemstack:take_item(1) end -- Take the item if in creative
|
||||||
|
campfire_inv:set_stack("main", space, stack) -- Set the inventory itemstack at the empty spot
|
||||||
|
campfire_meta:set_int("cooktime_"..tostring(space), COOK_TIME) -- Set the cook time meta
|
||||||
|
food_entity[space] = minetest.add_entity(pos + campfire_spots[space], "mcl_campfires:food_entity") -- Spawn food item on the campfire
|
||||||
|
local food_luaentity = food_entity[space]:get_luaentity()
|
||||||
|
food_luaentity.wield_item = campfire_inv:get_stack("main", space):get_name() -- Set the wielditem of the food item to the food on the campfire
|
||||||
|
food_luaentity.wield_image = "mcl_mobitems_"..string.sub(campfire_inv:get_stack("main", space):get_name(), 14).."_raw.png" -- Set the wield_image to the food item on the campfire
|
||||||
|
food_entity[space]:set_properties(food_luaentity) -- Apply changes to the food entity
|
||||||
|
campfire_meta:set_string("food_x_"..tostring(space), tostring(food_entity[space]:get_pos().x))
|
||||||
|
campfire_meta:set_string("food_y_"..tostring(space), tostring(food_entity[space]:get_pos().y))
|
||||||
|
campfire_meta:set_string("food_z_"..tostring(space), tostring(food_entity[space]:get_pos().z))
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
timer:start(1) -- Start cook timer
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- on_timer function to run the cook timer and cook items.
|
||||||
|
function mcl_campfires.cook_item(pos, elapsed)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
local continue = 0
|
||||||
|
-- Cycle through slots to cook them.
|
||||||
|
for i = 1, 4 do
|
||||||
|
local time_r = meta:get_int("cooktime_"..tostring(i))
|
||||||
|
local item = inv:get_stack("main", i)
|
||||||
|
local food_entity = nil
|
||||||
|
local food_x = tonumber(meta:get_string("food_x_"..tostring(i)))
|
||||||
|
local food_y = tonumber(meta:get_string("food_y_"..tostring(i)))
|
||||||
|
local food_z = tonumber(meta:get_string("food_z_"..tostring(i)))
|
||||||
|
if food_x and food_y and food_z then
|
||||||
|
local entites = minetest.get_objects_inside_radius(vector.new(food_x, food_y, food_z), 0)
|
||||||
|
if entites then
|
||||||
|
for _, entity in ipairs(entites) do
|
||||||
|
if entity then
|
||||||
|
local luaentity = entity:get_luaentity()
|
||||||
|
if luaentity then
|
||||||
|
local name = luaentity.name
|
||||||
|
if name == "mcl_campfires:food_entity" then
|
||||||
|
food_entity = entity
|
||||||
|
food_entity:set_properties({wield_item = inv:get_stack("main", i):get_name()})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if item ~= (ItemStack("") or ItemStack("nil")) then
|
||||||
|
-- Item hasn't been cooked completely, continue cook timer countdown.
|
||||||
|
if time_r > 0 then
|
||||||
|
meta:set_int("cooktime_"..tostring(i), time_r - 1)
|
||||||
|
-- Item cook timer is up, finish cooking process and drop cooked item.
|
||||||
|
elseif time_r <= 0 then
|
||||||
|
local cooked = minetest.get_craft_result({method = "cooking", width = 1, items = {item}})
|
||||||
|
if cooked then
|
||||||
|
if food_entity then
|
||||||
|
food_entity:remove() -- Remove visual food entity
|
||||||
|
meta:set_string("food_x_"..tostring(i), nil)
|
||||||
|
meta:set_string("food_y_"..tostring(i), nil)
|
||||||
|
meta:set_string("food_z_"..tostring(i), nil)
|
||||||
|
minetest.add_item(pos, cooked.item) -- Drop Cooked Item
|
||||||
|
-- Throw some Experience Points because why not?
|
||||||
|
-- Food is cooked, xp is deserved for using this unique cooking method. Take that Minecraft ;)
|
||||||
|
local dir = vector.divide(minetest.facedir_to_dir(minetest.get_node(pos).param2),-1.95)
|
||||||
|
mcl_experience.throw_xp(vector.add(pos, dir), 1)
|
||||||
|
inv:set_stack("main", i, "") -- Clear Inventory
|
||||||
|
continue = continue + 1 -- Indicate that the slot is clear.
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
continue = continue + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- Not all slots are empty, continue timer.
|
||||||
|
if continue ~= 4 then
|
||||||
|
return true
|
||||||
|
-- Slots are empty, stop node timer.
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function mcl_campfires.register_campfire(name, def)
|
function mcl_campfires.register_campfire(name, def)
|
||||||
-- Define Campfire
|
-- Define Campfire
|
||||||
minetest.register_node(name, {
|
minetest.register_node(name, {
|
||||||
|
@ -15,16 +175,13 @@ function mcl_campfires.register_campfire(name, def)
|
||||||
use_texture_alpha = "clip",
|
use_texture_alpha = "clip",
|
||||||
groups = { handy=1, axey=1, material_wood=1, not_in_creative_inventory=1, campfire=1, },
|
groups = { handy=1, axey=1, material_wood=1, not_in_creative_inventory=1, campfire=1, },
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "4dir",
|
||||||
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
|
_on_ignite = function(player, node)
|
||||||
if player:get_wielded_item():get_name() == "mcl_fire:flint_and_steel" then
|
mcl_campfires.light_campfire(node.under)
|
||||||
node.name = name.."_lit"
|
return true
|
||||||
minetest.set_node(pos, node)
|
|
||||||
end
|
|
||||||
end,
|
end,
|
||||||
drop = def.drops,
|
drop = "",
|
||||||
_mcl_silk_touch_drop = {name},
|
sounds = mcl_sounds.node_sound_wood_defaults(),
|
||||||
mcl_sounds.node_sound_wood_defaults(),
|
|
||||||
selection_box = {
|
selection_box = {
|
||||||
type = 'fixed',
|
type = 'fixed',
|
||||||
fixed = {-.5, -.5, -.5, .5, -.05, .5}, --left, bottom, front, right, top
|
fixed = {-.5, -.5, -.5, .5, -.05, .5}, --left, bottom, front, right, top
|
||||||
|
@ -35,6 +192,9 @@ function mcl_campfires.register_campfire(name, def)
|
||||||
},
|
},
|
||||||
_mcl_blast_resistance = 2,
|
_mcl_blast_resistance = 2,
|
||||||
_mcl_hardness = 2,
|
_mcl_hardness = 2,
|
||||||
|
after_dig_node = function(pos, node, oldmeta, digger)
|
||||||
|
campfire_drops(pos, digger, def.drops, name.."_lit")
|
||||||
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
--Define Lit Campfire
|
--Define Lit Campfire
|
||||||
|
@ -45,38 +205,64 @@ function mcl_campfires.register_campfire(name, def)
|
||||||
inventory_image = def.inv_texture,
|
inventory_image = def.inv_texture,
|
||||||
wield_image = def.inv_texture,
|
wield_image = def.inv_texture,
|
||||||
drawtype = "mesh",
|
drawtype = "mesh",
|
||||||
mesh = "mcl_campfires_campfire_lit.obj",
|
mesh = "mcl_campfires_campfire.obj",
|
||||||
tiles = {{
|
tiles = {
|
||||||
name=def.fire_texture,
|
{name=def.fire_texture,
|
||||||
animation={
|
animation={
|
||||||
type="vertical_frames",
|
type="vertical_frames",
|
||||||
aspect_w=16,
|
aspect_w=32,
|
||||||
aspect_h=16,
|
|
||||||
length=2.0
|
|
||||||
}},
|
|
||||||
{name=def.lit_logs_texture,
|
|
||||||
animation={
|
|
||||||
type="vertical_frames",
|
|
||||||
aspect_w=16,
|
|
||||||
aspect_h=16,
|
aspect_h=16,
|
||||||
length=2.0
|
length=2.0
|
||||||
}}
|
}}
|
||||||
},
|
},
|
||||||
|
overlay_tiles = {{
|
||||||
|
name=def.lit_logs_texture,
|
||||||
|
animation = {
|
||||||
|
type = "vertical_frames",
|
||||||
|
aspect_w = 32,
|
||||||
|
aspect_h = 16,
|
||||||
|
length = 2.0,
|
||||||
|
}},
|
||||||
|
},
|
||||||
use_texture_alpha = "clip",
|
use_texture_alpha = "clip",
|
||||||
groups = { handy=1, axey=1, material_wood=1, campfire=1, lit_campfire=1 },
|
groups = { handy=1, axey=1, material_wood=1, lit_campfire=1 },
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "4dir",
|
||||||
|
on_construct = function(pos)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
inv:set_size("main", 4)
|
||||||
|
end,
|
||||||
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
|
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
|
||||||
if player:get_wielded_item():get_name():find("shovel") then
|
local meta = minetest.get_meta(pos)
|
||||||
node.name = name
|
local inv = meta:get_inventory()
|
||||||
minetest.set_node(pos, node)
|
if not inv then inv:set_size("main", 4) end
|
||||||
minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true)
|
|
||||||
|
if minetest.get_item_group(itemstack:get_name(), "shovel") ~= 0 then
|
||||||
|
local protected = mcl_util.check_position_protection(pos, player)
|
||||||
|
if not protected then
|
||||||
|
if not minetest.is_creative_enabled(player:get_player_name()) then
|
||||||
|
-- Add wear (as if digging a shovely node)
|
||||||
|
local toolname = itemstack:get_name()
|
||||||
|
local wear = mcl_autogroup.get_wear(toolname, "shovely")
|
||||||
|
if wear then
|
||||||
|
itemstack:add_wear(wear)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
node.name = name
|
||||||
|
minetest.set_node(pos, node)
|
||||||
|
minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true)
|
||||||
|
end
|
||||||
|
elseif minetest.get_item_group(itemstack:get_name(), "campfire_cookable") ~= 0 then
|
||||||
|
mcl_campfires.take_item(pos, node, player, itemstack)
|
||||||
|
else
|
||||||
|
minetest.item_place_node(itemstack, player, pointed_thing)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
drop = def.drops,
|
on_timer = mcl_campfires.cook_item,
|
||||||
_mcl_silk_touch_drop = {name.."_lit"},
|
drop = "",
|
||||||
light_source = def.lightlevel,
|
light_source = def.lightlevel,
|
||||||
mcl_sounds.node_sound_wood_defaults(),
|
sounds = mcl_sounds.node_sound_wood_defaults(),
|
||||||
selection_box = {
|
selection_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {-.5, -.5, -.5, .5, -.05, .5}, --left, bottom, front, right, top
|
fixed = {-.5, -.5, -.5, .5, -.05, .5}, --left, bottom, front, right, top
|
||||||
|
@ -87,7 +273,13 @@ function mcl_campfires.register_campfire(name, def)
|
||||||
},
|
},
|
||||||
_mcl_blast_resistance = 2,
|
_mcl_blast_resistance = 2,
|
||||||
_mcl_hardness = 2,
|
_mcl_hardness = 2,
|
||||||
damage_per_second = def.damage,
|
damage_per_second = def.damage, -- FIXME: Once entity burning is fixed, this needs to be removed.
|
||||||
|
on_blast = on_blast,
|
||||||
|
after_dig_node = function(pos, node, oldmeta, digger)
|
||||||
|
drop_items(pos, node, oldmeta)
|
||||||
|
campfire_drops(pos, digger, def.drops, name.."_lit")
|
||||||
|
end,
|
||||||
|
_mcl_campfires_smothered_form = name,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -107,11 +299,50 @@ minetest.register_globalstep(function(dtime)
|
||||||
if etime < 0.5 then return end
|
if etime < 0.5 then return end
|
||||||
etime = 0
|
etime = 0
|
||||||
for _,pl in pairs(minetest.get_connected_players()) do
|
for _,pl in pairs(minetest.get_connected_players()) do
|
||||||
|
local armor_feet = pl:get_inventory():get_stack("armor", 5)
|
||||||
|
if pl and pl:get_player_control().sneak or (minetest.global_exists("mcl_enchanting") and mcl_enchanting.has_enchantment(armor_feet, "frost_walker")) or (minetest.global_exists("mcl_potions") and mcl_potions.player_has_effect(pl, "fire_proof")) then
|
||||||
|
return
|
||||||
|
end
|
||||||
burn_in_campfire(pl)
|
burn_in_campfire(pl)
|
||||||
end
|
end
|
||||||
for _,ent in pairs(minetest.luaentities) do
|
for _,ent in pairs(minetest.luaentities) do
|
||||||
if ent.is_mob then
|
if ent.is_mob then
|
||||||
burn_in_campfire(ent.object)
|
burn_in_campfire(ent.object) -- FIXME: Mobs don't seem to burn properly anymore.
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
function mcl_campfires.generate_smoke(pos, haybale)
|
||||||
|
local smoke_timer
|
||||||
|
|
||||||
|
if haybale then
|
||||||
|
smoke_timer = 8
|
||||||
|
else
|
||||||
|
smoke_timer = 4.75
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.add_particle({
|
||||||
|
pos = vector.offset(pos, math.random(-0.5, 0.5), 0, math.random(-0.5, 0.5)),
|
||||||
|
velocity = vector.new(0, 1, 0),
|
||||||
|
texture = "mcl_campfires_particle_" .. math.random(1, 12) .. ".png",
|
||||||
|
size = 10,
|
||||||
|
acceleration = vector.new(0, 0.5, 0),
|
||||||
|
collisiondetection = true,
|
||||||
|
expirationtime = smoke_timer,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_abm({
|
||||||
|
label = "Campfire Smoke",
|
||||||
|
nodenames = {"group:lit_campfire"},
|
||||||
|
interval = 2,
|
||||||
|
chance = 2,
|
||||||
|
action = function(pos, node)
|
||||||
|
local node_below = vector.offset(pos, 0, -1, 0)
|
||||||
|
local haybale = false
|
||||||
|
if minetest.get_node(node_below).name == "mcl_farming:hay_block" then
|
||||||
|
haybale = true
|
||||||
|
end
|
||||||
|
mcl_campfires.generate_smoke(pos, haybale)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
-- TO-DO:
|
-- TO-DO:
|
||||||
-- * Add Smoke Particles
|
|
||||||
-- * Add Spark Particles
|
-- * Add Spark Particles
|
||||||
-- * Add Cooking Meat
|
|
||||||
-- * Add Working Sounds
|
-- * Add Working Sounds
|
||||||
|
-- * Waterlogging (needs engine change)
|
||||||
|
-- * Fix the mob damage when mobs go back to burning again
|
||||||
local modname = minetest.get_modpath(minetest.get_current_modname())
|
local modname = minetest.get_modpath(minetest.get_current_modname())
|
||||||
|
|
||||||
dofile(modname.."/api.lua") -- Load API File
|
dofile(modname.."/api.lua") -- Load API File
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
name = mcl_campfires
|
name = mcl_campfires
|
||||||
depends = mcl_sounds
|
depends = mcl_sounds, mcl_util
|
||||||
author = PrairieWind, Gerold55
|
author = PrairieWind, Gerold55
|
|
@ -1,35 +0,0 @@
|
||||||
# Blender MTL File: 'campfire.blend'
|
|
||||||
# Material Count: 3
|
|
||||||
|
|
||||||
newmtl Material.001
|
|
||||||
Ns 96.078431
|
|
||||||
Ka 1.000000 1.000000 1.000000
|
|
||||||
Kd 0.640000 0.640000 0.640000
|
|
||||||
Ks 0.500000 0.500000 0.500000
|
|
||||||
Ke 0.000000 0.000000 0.000000
|
|
||||||
Ni 1.000000
|
|
||||||
d 1.000000
|
|
||||||
illum 2
|
|
||||||
map_Kd G:\minetest-0.4.16-win641\textures\Pixel Perfection v4.0\mcl_campfire_fire.png
|
|
||||||
|
|
||||||
newmtl none
|
|
||||||
Ns 96.078431
|
|
||||||
Ka 1.000000 1.000000 1.000000
|
|
||||||
Kd 0.640000 0.640000 0.640000
|
|
||||||
Ks 0.500000 0.500000 0.500000
|
|
||||||
Ke 0.000000 0.000000 0.000000
|
|
||||||
Ni 1.000000
|
|
||||||
d 1.000000
|
|
||||||
illum 2
|
|
||||||
map_Kd \home\nathan\Downloads\mcl_campfire_log.png
|
|
||||||
|
|
||||||
newmtl none_NONE
|
|
||||||
Ns 96.078431
|
|
||||||
Ka 1.000000 1.000000 1.000000
|
|
||||||
Kd 0.640000 0.640000 0.640000
|
|
||||||
Ks 0.500000 0.500000 0.500000
|
|
||||||
Ke 0.000000 0.000000 0.000000
|
|
||||||
Ni 1.000000
|
|
||||||
d 1.000000
|
|
||||||
illum 2
|
|
||||||
map_Kd \\home\\nathan\\Downloads\\mcl_campfire_log.png
|
|
|
@ -1,248 +0,0 @@
|
||||||
# Blender v2.78 (sub 0) OBJ File: 'campfire.blend'
|
|
||||||
# www.blender.org
|
|
||||||
mtllib campfire1.mtl
|
|
||||||
o nodebox4.005_nodebox4.006
|
|
||||||
v 0.243779 -0.499707 -0.497529
|
|
||||||
v 0.493779 -0.499707 -0.497421
|
|
||||||
v 0.493779 -0.249707 -0.497421
|
|
||||||
v 0.243779 -0.249707 -0.497529
|
|
||||||
v 0.243349 -0.499707 0.502471
|
|
||||||
v 0.493349 -0.499707 0.502578
|
|
||||||
v 0.493349 -0.249707 0.502578
|
|
||||||
v 0.243349 -0.249707 0.502471
|
|
||||||
v 0.493779 -0.499707 -0.497421
|
|
||||||
v 0.493779 -0.249707 -0.497421
|
|
||||||
v 0.493349 -0.499707 0.502578
|
|
||||||
v 0.493349 -0.249707 0.502578
|
|
||||||
vt -0.0000 0.7500
|
|
||||||
vt -0.0000 0.5000
|
|
||||||
vt 0.2500 0.5000
|
|
||||||
vt 0.2500 0.7500
|
|
||||||
vt -0.0000 0.7500
|
|
||||||
vt -0.0000 0.5000
|
|
||||||
vt 0.2500 0.5000
|
|
||||||
vt 0.2500 0.7500
|
|
||||||
vt 1.0000 0.7500
|
|
||||||
vt 1.0000 1.0000
|
|
||||||
vt 0.0000 1.0000
|
|
||||||
vt 1.0000 1.0000
|
|
||||||
vt 0.0000 1.0000
|
|
||||||
vt 1.0000 0.7500
|
|
||||||
vt 1.0000 1.0000
|
|
||||||
vt 0.0000 1.0000
|
|
||||||
vt -0.0000 0.7500
|
|
||||||
vt 1.0000 0.7500
|
|
||||||
vt 1.0000 1.0000
|
|
||||||
vt 0.0000 1.0000
|
|
||||||
vt -0.0000 0.7500
|
|
||||||
vn -0.0004 0.0000 1.0000
|
|
||||||
vn 1.0000 -0.0000 0.0004
|
|
||||||
vn -0.0000 -1.0000 0.0000
|
|
||||||
usemtl none
|
|
||||||
s off
|
|
||||||
f 1/1/1 2/2/1 3/3/1 4/4/1
|
|
||||||
f 5/5/1 6/6/1 7/7/1 8/8/1
|
|
||||||
f 1/9/2 4/10/2 8/11/2 5/5/2
|
|
||||||
f 1/9/3 2/12/3 6/13/3 5/5/3
|
|
||||||
f 4/14/3 3/15/3 7/16/3 8/17/3
|
|
||||||
f 9/18/2 10/19/2 12/20/2 11/21/2
|
|
||||||
o nodebox4.004_nodebox4.005
|
|
||||||
v -0.500021 -0.499707 -0.497848
|
|
||||||
v -0.250021 -0.499707 -0.497741
|
|
||||||
v -0.250021 -0.249707 -0.497741
|
|
||||||
v -0.500021 -0.249707 -0.497848
|
|
||||||
v -0.500451 -0.499707 0.502152
|
|
||||||
v -0.250451 -0.499707 0.502259
|
|
||||||
v -0.250451 -0.249707 0.502259
|
|
||||||
v -0.500451 -0.249707 0.502152
|
|
||||||
v -0.250021 -0.499707 -0.497741
|
|
||||||
v -0.250021 -0.249707 -0.497741
|
|
||||||
v -0.250451 -0.499707 0.502259
|
|
||||||
v -0.250451 -0.249707 0.502259
|
|
||||||
vt -0.0000 0.7500
|
|
||||||
vt -0.0000 0.5000
|
|
||||||
vt 0.2500 0.5000
|
|
||||||
vt 0.2500 0.7500
|
|
||||||
vt -0.0000 0.7500
|
|
||||||
vt -0.0000 0.5000
|
|
||||||
vt 0.2500 0.5000
|
|
||||||
vt 0.2500 0.7500
|
|
||||||
vt 1.0000 0.7500
|
|
||||||
vt 1.0000 1.0000
|
|
||||||
vt 0.0000 1.0000
|
|
||||||
vt 1.0000 1.0000
|
|
||||||
vt 0.0000 1.0000
|
|
||||||
vt 1.0000 0.7500
|
|
||||||
vt 1.0000 1.0000
|
|
||||||
vt 0.0000 1.0000
|
|
||||||
vt -0.0000 0.7500
|
|
||||||
vt 1.0000 0.7500
|
|
||||||
vt 1.0000 1.0000
|
|
||||||
vt 0.0000 1.0000
|
|
||||||
vt -0.0000 0.7500
|
|
||||||
vn -0.0004 0.0000 1.0000
|
|
||||||
vn 1.0000 -0.0000 0.0004
|
|
||||||
vn -0.0000 -1.0000 0.0000
|
|
||||||
usemtl none
|
|
||||||
s off
|
|
||||||
f 13/22/4 14/23/4 15/24/4 16/25/4
|
|
||||||
f 17/26/4 18/27/4 19/28/4 20/29/4
|
|
||||||
f 13/30/5 16/31/5 20/32/5 17/26/5
|
|
||||||
f 13/30/6 14/33/6 18/34/6 17/26/6
|
|
||||||
f 16/35/6 15/36/6 19/37/6 20/38/6
|
|
||||||
f 21/39/5 22/40/5 24/41/5 23/42/5
|
|
||||||
o nodebox4.001_nodebox4.004
|
|
||||||
v 0.500000 -0.312500 -0.493800
|
|
||||||
v 0.500000 -0.312500 -0.243800
|
|
||||||
v 0.500000 -0.062500 -0.243800
|
|
||||||
v 0.500000 -0.062500 -0.493800
|
|
||||||
v -0.500000 -0.312500 -0.493800
|
|
||||||
v -0.500000 -0.312500 -0.243800
|
|
||||||
v -0.500000 -0.062500 -0.243800
|
|
||||||
v -0.500000 -0.062500 -0.493800
|
|
||||||
v 0.500000 -0.312500 -0.243800
|
|
||||||
v 0.500000 -0.062500 -0.243800
|
|
||||||
v -0.500000 -0.312500 -0.243800
|
|
||||||
v -0.500000 -0.062500 -0.243800
|
|
||||||
vt 0.0000 0.7500
|
|
||||||
vt 0.0000 0.5000
|
|
||||||
vt 0.2500 0.5000
|
|
||||||
vt 0.2500 0.7500
|
|
||||||
vt 0.0000 0.7500
|
|
||||||
vt 0.0000 0.5000
|
|
||||||
vt 0.2500 0.5000
|
|
||||||
vt 0.2500 0.7500
|
|
||||||
vt 1.0000 0.7500
|
|
||||||
vt 1.0000 1.0000
|
|
||||||
vt 0.0000 1.0000
|
|
||||||
vt 1.0000 1.0000
|
|
||||||
vt 0.0000 1.0000
|
|
||||||
vt 1.0000 0.7500
|
|
||||||
vt 1.0000 1.0000
|
|
||||||
vt 0.0000 1.0000
|
|
||||||
vt 0.0000 0.7500
|
|
||||||
vt 1.0000 0.7500
|
|
||||||
vt 1.0000 1.0000
|
|
||||||
vt 0.0000 1.0000
|
|
||||||
vt 0.0000 0.7500
|
|
||||||
vn -1.0000 0.0000 0.0000
|
|
||||||
vn 0.0000 -0.0000 1.0000
|
|
||||||
vn 0.0000 -1.0000 -0.0000
|
|
||||||
usemtl none
|
|
||||||
s off
|
|
||||||
f 25/43/7 26/44/7 27/45/7 28/46/7
|
|
||||||
f 29/47/7 30/48/7 31/49/7 32/50/7
|
|
||||||
f 25/51/8 28/52/8 32/53/8 29/47/8
|
|
||||||
f 25/51/9 26/54/9 30/55/9 29/47/9
|
|
||||||
f 28/56/9 27/57/9 31/58/9 32/59/9
|
|
||||||
f 33/60/8 34/61/8 36/62/8 35/63/8
|
|
||||||
o Plane
|
|
||||||
v -0.311754 -0.438770 -0.196249
|
|
||||||
v 0.276360 -0.438621 0.247948
|
|
||||||
v -0.311276 0.135801 -0.196634
|
|
||||||
v 0.276838 0.135950 0.247562
|
|
||||||
v -0.274993 -0.438696 0.270317
|
|
||||||
v 0.240407 -0.438696 -0.218656
|
|
||||||
v -0.275322 0.135875 0.269969
|
|
||||||
v 0.240077 0.135875 -0.219003
|
|
||||||
vt 0.0000 0.0000
|
|
||||||
vt 1.0000 0.0000
|
|
||||||
vt 1.0000 1.0000
|
|
||||||
vt 0.0000 1.0000
|
|
||||||
vt 0.0000 0.0000
|
|
||||||
vt 1.0000 0.0000
|
|
||||||
vt 1.0000 1.0000
|
|
||||||
vt -0.0000 1.0000
|
|
||||||
vn -0.6027 0.0010 0.7980
|
|
||||||
vn 0.6883 0.0008 0.7255
|
|
||||||
usemtl Material.001
|
|
||||||
s off
|
|
||||||
f 37/64/10 38/65/10 40/66/10 39/67/10
|
|
||||||
f 41/68/11 42/69/11 44/70/11 43/71/11
|
|
||||||
o nodebox3
|
|
||||||
v 0.250000 -0.500000 -0.500000
|
|
||||||
v 0.250000 -0.500000 0.500000
|
|
||||||
v 0.250000 -0.437500 0.500000
|
|
||||||
v 0.250000 -0.437500 -0.500000
|
|
||||||
v -0.250000 -0.500000 -0.500000
|
|
||||||
v -0.250000 -0.500000 0.500000
|
|
||||||
v -0.250000 -0.437500 0.500000
|
|
||||||
v -0.250000 -0.437500 -0.500000
|
|
||||||
vt 1.0000 0.0000
|
|
||||||
vt 1.0000 0.0625
|
|
||||||
vt 0.0000 0.0625
|
|
||||||
vt 0.0000 0.0000
|
|
||||||
vt 1.0000 0.0000
|
|
||||||
vt 1.0000 0.0625
|
|
||||||
vt 0.0000 0.0625
|
|
||||||
vt 0.0000 0.0000
|
|
||||||
vt 1.0000 0.4375
|
|
||||||
vt 0.0000 0.4375
|
|
||||||
vt 0.0001 0.0001
|
|
||||||
vt 0.9999 0.0001
|
|
||||||
vt 1.0000 0.5000
|
|
||||||
vt 0.0000 0.5000
|
|
||||||
vt 0.0001 0.0001
|
|
||||||
vt 0.0000 0.0000
|
|
||||||
vt 0.0000 0.0000
|
|
||||||
vt 0.0000 0.0000
|
|
||||||
vt 0.0000 0.0000
|
|
||||||
vt 0.0000 0.0000
|
|
||||||
vt 0.0000 0.0000
|
|
||||||
vn 0.0000 0.0000 1.0000
|
|
||||||
vn 0.0000 -1.0000 -0.0000
|
|
||||||
vn -1.0000 0.0000 0.0000
|
|
||||||
usemtl none
|
|
||||||
s off
|
|
||||||
f 45/72/12 48/73/12 52/74/12 49/75/12
|
|
||||||
f 46/76/12 47/77/12 51/78/12 50/79/12
|
|
||||||
f 45/72/13 46/80/13 50/81/13 49/82/13
|
|
||||||
f 48/83/13 47/84/13 51/85/13 52/86/13
|
|
||||||
usemtl none_NONE
|
|
||||||
f 45/87/14 46/88/14 47/89/14 48/90/14
|
|
||||||
f 49/75/14 50/79/14 51/91/14 52/92/14
|
|
||||||
o nodebox4
|
|
||||||
v 0.500000 -0.312500 0.250000
|
|
||||||
v 0.500000 -0.312500 0.500000
|
|
||||||
v 0.500000 -0.062500 0.500000
|
|
||||||
v 0.500000 -0.062500 0.250000
|
|
||||||
v -0.500000 -0.312500 0.250000
|
|
||||||
v -0.500000 -0.312500 0.500000
|
|
||||||
v -0.500000 -0.062500 0.500000
|
|
||||||
v -0.500000 -0.062500 0.250000
|
|
||||||
v 0.500000 -0.312500 0.500000
|
|
||||||
v 0.500000 -0.062500 0.500000
|
|
||||||
v -0.500000 -0.312500 0.500000
|
|
||||||
v -0.500000 -0.062500 0.500000
|
|
||||||
vt -0.0000 0.7500
|
|
||||||
vt 0.0000 0.5000
|
|
||||||
vt 0.2500 0.5000
|
|
||||||
vt 0.2500 0.7500
|
|
||||||
vt -0.0000 0.7500
|
|
||||||
vt -0.0000 0.5000
|
|
||||||
vt 0.2500 0.5000
|
|
||||||
vt 0.2500 0.7500
|
|
||||||
vt 1.0000 0.7500
|
|
||||||
vt 1.0000 1.0000
|
|
||||||
vt 0.0000 1.0000
|
|
||||||
vt 1.0000 1.0000
|
|
||||||
vt 0.0000 1.0000
|
|
||||||
vt 1.0000 0.7500
|
|
||||||
vt 1.0000 1.0000
|
|
||||||
vt 0.0000 1.0000
|
|
||||||
vt -0.0000 0.7500
|
|
||||||
vt 1.0000 0.7500
|
|
||||||
vt 1.0000 1.0000
|
|
||||||
vt 0.0000 1.0000
|
|
||||||
vt -0.0000 0.7500
|
|
||||||
vn -1.0000 0.0000 0.0000
|
|
||||||
vn 0.0000 -0.0000 1.0000
|
|
||||||
vn 0.0000 -1.0000 -0.0000
|
|
||||||
usemtl none
|
|
||||||
s off
|
|
||||||
f 53/93/15 54/94/15 55/95/15 56/96/15
|
|
||||||
f 57/97/15 58/98/15 59/99/15 60/100/15
|
|
||||||
f 53/101/16 56/102/16 60/103/16 57/97/16
|
|
||||||
f 53/101/17 54/104/17 58/105/17 57/97/17
|
|
||||||
f 56/106/17 55/107/17 59/108/17 60/109/17
|
|
||||||
f 61/110/16 62/111/16 64/112/16 63/113/16
|
|
|
@ -1,225 +0,0 @@
|
||||||
# Blender v2.79 (sub 7) OBJ File: 'campfire.blend'
|
|
||||||
# www.blender.org
|
|
||||||
o Plane
|
|
||||||
v -0.240246 -0.438696 -0.141059
|
|
||||||
v 0.205043 -0.438696 0.192756
|
|
||||||
v -0.239959 0.135875 -0.141442
|
|
||||||
v 0.205331 0.135875 0.192373
|
|
||||||
v -0.216088 -0.438696 0.214432
|
|
||||||
v 0.181502 -0.438696 -0.162771
|
|
||||||
v -0.216417 0.135875 0.214085
|
|
||||||
v 0.181172 0.135875 -0.163119
|
|
||||||
vt 0.000000 0.000000
|
|
||||||
vt 1.000000 0.000000
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt 0.000000 1.000000
|
|
||||||
vt 0.000000 0.000000
|
|
||||||
vt 1.000000 0.000000
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt -0.000000 1.000000
|
|
||||||
vn -0.5998 0.0008 0.8001
|
|
||||||
vn 0.6883 0.0008 0.7255
|
|
||||||
g Plane_Plane_Material.001
|
|
||||||
s off
|
|
||||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
|
||||||
f 5/5/2 6/6/2 8/7/2 7/8/2
|
|
||||||
o nodebox3
|
|
||||||
v 0.250000 -0.500000 -0.500000
|
|
||||||
v 0.250000 -0.500000 0.500000
|
|
||||||
v 0.250000 -0.437500 0.500000
|
|
||||||
v 0.250000 -0.437500 -0.500000
|
|
||||||
v -0.250000 -0.500000 -0.500000
|
|
||||||
v -0.250000 -0.500000 0.500000
|
|
||||||
v -0.250000 -0.437500 0.500000
|
|
||||||
v -0.250000 -0.437500 -0.500000
|
|
||||||
v 0.243779 -0.499707 -0.497529
|
|
||||||
v 0.493779 -0.499707 -0.497421
|
|
||||||
v 0.493779 -0.249707 -0.497421
|
|
||||||
v 0.243779 -0.249707 -0.497529
|
|
||||||
v 0.243349 -0.499707 0.502471
|
|
||||||
v 0.493349 -0.499707 0.502579
|
|
||||||
v 0.493349 -0.249707 0.502578
|
|
||||||
v 0.243349 -0.249707 0.502471
|
|
||||||
v 0.493779 -0.499707 -0.497421
|
|
||||||
v 0.493779 -0.249707 -0.497421
|
|
||||||
v 0.493349 -0.499707 0.502579
|
|
||||||
v 0.493349 -0.249707 0.502578
|
|
||||||
v -0.500021 -0.499707 -0.497848
|
|
||||||
v -0.250021 -0.499707 -0.497741
|
|
||||||
v -0.250021 -0.249707 -0.497741
|
|
||||||
v -0.500021 -0.249707 -0.497848
|
|
||||||
v -0.500451 -0.499707 0.502152
|
|
||||||
v -0.250451 -0.499707 0.502259
|
|
||||||
v -0.250451 -0.249707 0.502259
|
|
||||||
v -0.500451 -0.249707 0.502152
|
|
||||||
v -0.250021 -0.499707 -0.497741
|
|
||||||
v -0.250021 -0.249707 -0.497741
|
|
||||||
v -0.250451 -0.499707 0.502259
|
|
||||||
v -0.250451 -0.249707 0.502259
|
|
||||||
v 0.500000 -0.312500 -0.493800
|
|
||||||
v 0.500000 -0.312500 -0.243800
|
|
||||||
v 0.500000 -0.062500 -0.243800
|
|
||||||
v 0.500000 -0.062500 -0.493800
|
|
||||||
v -0.500000 -0.312500 -0.493800
|
|
||||||
v -0.500000 -0.312500 -0.243800
|
|
||||||
v -0.500000 -0.062500 -0.243800
|
|
||||||
v -0.500000 -0.062500 -0.493800
|
|
||||||
v 0.500000 -0.312500 -0.243800
|
|
||||||
v 0.500000 -0.062500 -0.243800
|
|
||||||
v -0.500000 -0.312500 -0.243800
|
|
||||||
v -0.500000 -0.062500 -0.243800
|
|
||||||
v 0.500000 -0.312500 0.250000
|
|
||||||
v 0.500000 -0.312500 0.500000
|
|
||||||
v 0.500000 -0.062500 0.500000
|
|
||||||
v 0.500000 -0.062500 0.250000
|
|
||||||
v -0.500000 -0.312500 0.250000
|
|
||||||
v -0.500000 -0.312500 0.500000
|
|
||||||
v -0.500000 -0.062500 0.500000
|
|
||||||
v -0.500000 -0.062500 0.250000
|
|
||||||
v 0.500000 -0.312500 0.500000
|
|
||||||
v 0.500000 -0.062500 0.500000
|
|
||||||
v -0.500000 -0.312500 0.500000
|
|
||||||
v -0.500000 -0.062500 0.500000
|
|
||||||
vt 0.999982 0.000018
|
|
||||||
vt 1.000000 0.062500
|
|
||||||
vt 0.000000 0.062500
|
|
||||||
vt 0.000018 0.000018
|
|
||||||
vt 0.999982 0.000018
|
|
||||||
vt 1.000000 0.062500
|
|
||||||
vt 0.000000 0.062500
|
|
||||||
vt 0.000018 0.000018
|
|
||||||
vt 1.000000 0.437500
|
|
||||||
vt 0.000000 0.437500
|
|
||||||
vt 0.000071 0.000071
|
|
||||||
vt 0.999929 0.000071
|
|
||||||
vt 1.000000 0.500000
|
|
||||||
vt 0.000000 0.500000
|
|
||||||
vt 0.000071 0.000071
|
|
||||||
vt -0.000000 0.750000
|
|
||||||
vt -0.000000 0.500000
|
|
||||||
vt 0.250000 0.500000
|
|
||||||
vt 0.250000 0.750000
|
|
||||||
vt -0.000000 0.750000
|
|
||||||
vt -0.000000 0.500000
|
|
||||||
vt 0.250000 0.500000
|
|
||||||
vt 0.250000 0.750000
|
|
||||||
vt 1.000000 0.750000
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt 0.000000 1.000000
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt 0.000000 1.000000
|
|
||||||
vt 1.000000 0.750000
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt 0.000000 1.000000
|
|
||||||
vt -0.000000 0.750000
|
|
||||||
vt 1.000000 0.750000
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt 0.000000 1.000000
|
|
||||||
vt -0.000000 0.750000
|
|
||||||
vt -0.000000 0.750000
|
|
||||||
vt -0.000000 0.500000
|
|
||||||
vt 0.250000 0.500000
|
|
||||||
vt 0.250000 0.750000
|
|
||||||
vt -0.000000 0.750000
|
|
||||||
vt -0.000000 0.500000
|
|
||||||
vt 0.250000 0.500000
|
|
||||||
vt 0.250000 0.750000
|
|
||||||
vt 1.000000 0.750000
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt 0.000000 1.000000
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt 0.000000 1.000000
|
|
||||||
vt 1.000000 0.750000
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt 0.000000 1.000000
|
|
||||||
vt -0.000000 0.750000
|
|
||||||
vt 1.000000 0.750000
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt 0.000000 1.000000
|
|
||||||
vt -0.000000 0.750000
|
|
||||||
vt 0.000000 0.750000
|
|
||||||
vt 0.000000 0.500000
|
|
||||||
vt 0.250000 0.500000
|
|
||||||
vt 0.250000 0.750000
|
|
||||||
vt 0.000000 0.750000
|
|
||||||
vt 0.000000 0.500000
|
|
||||||
vt 0.250000 0.500000
|
|
||||||
vt 0.250000 0.750000
|
|
||||||
vt 1.000000 0.750000
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt 0.000000 1.000000
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt 0.000000 1.000000
|
|
||||||
vt 1.000000 0.750000
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt 0.000000 1.000000
|
|
||||||
vt 0.000000 0.750000
|
|
||||||
vt 1.000000 0.750000
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt 0.000000 1.000000
|
|
||||||
vt 0.000000 0.750000
|
|
||||||
vt -0.000000 0.750000
|
|
||||||
vt 0.000000 0.500000
|
|
||||||
vt 0.250000 0.500000
|
|
||||||
vt 0.250000 0.750000
|
|
||||||
vt -0.000000 0.750000
|
|
||||||
vt -0.000000 0.500000
|
|
||||||
vt 0.250000 0.500000
|
|
||||||
vt 0.250000 0.750000
|
|
||||||
vt 1.000000 0.750000
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt 0.000000 1.000000
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt 0.000000 1.000000
|
|
||||||
vt 1.000000 0.750000
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt 0.000000 1.000000
|
|
||||||
vt -0.000000 0.750000
|
|
||||||
vt 1.000000 0.750000
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt 0.000000 1.000000
|
|
||||||
vt -0.000000 0.750000
|
|
||||||
vt 0.000000 0.000000
|
|
||||||
vt 0.000000 0.000000
|
|
||||||
vt 0.000000 0.000000
|
|
||||||
vt 0.000000 0.000000
|
|
||||||
vt 0.000000 0.000000
|
|
||||||
vt 0.000000 0.000000
|
|
||||||
vn 0.0000 0.0000 1.0000
|
|
||||||
vn 0.0000 -1.0000 -0.0000
|
|
||||||
vn -0.0004 0.0000 1.0000
|
|
||||||
vn 1.0000 -0.0000 0.0004
|
|
||||||
vn -1.0000 0.0000 0.0000
|
|
||||||
g nodebox3_nodebox3_none
|
|
||||||
s off
|
|
||||||
f 9/9/3 12/10/3 16/11/3 13/12/3
|
|
||||||
f 10/13/3 11/14/3 15/15/3 14/16/3
|
|
||||||
f 9/9/4 10/17/4 14/18/4 13/19/4
|
|
||||||
f 12/20/4 11/21/4 15/22/4 16/23/4
|
|
||||||
f 17/24/5 18/25/5 19/26/5 20/27/5
|
|
||||||
f 21/28/5 22/29/5 23/30/5 24/31/5
|
|
||||||
f 17/32/6 20/33/6 24/34/6 21/28/6
|
|
||||||
f 17/32/4 18/35/4 22/36/4 21/28/4
|
|
||||||
f 20/37/4 19/38/4 23/39/4 24/40/4
|
|
||||||
f 25/41/6 26/42/6 28/43/6 27/44/6
|
|
||||||
f 29/45/5 30/46/5 31/47/5 32/48/5
|
|
||||||
f 33/49/5 34/50/5 35/51/5 36/52/5
|
|
||||||
f 29/53/6 32/54/6 36/55/6 33/49/6
|
|
||||||
f 29/53/4 30/56/4 34/57/4 33/49/4
|
|
||||||
f 32/58/4 31/59/4 35/60/4 36/61/4
|
|
||||||
f 37/62/6 38/63/6 40/64/6 39/65/6
|
|
||||||
f 41/66/7 42/67/7 43/68/7 44/69/7
|
|
||||||
f 45/70/7 46/71/7 47/72/7 48/73/7
|
|
||||||
f 41/74/3 44/75/3 48/76/3 45/70/3
|
|
||||||
f 41/74/4 42/77/4 46/78/4 45/70/4
|
|
||||||
f 44/79/4 43/80/4 47/81/4 48/82/4
|
|
||||||
f 49/83/3 50/84/3 52/85/3 51/86/3
|
|
||||||
f 53/87/7 54/88/7 55/89/7 56/90/7
|
|
||||||
f 57/91/7 58/92/7 59/93/7 60/94/7
|
|
||||||
f 53/95/3 56/96/3 60/97/3 57/91/3
|
|
||||||
f 53/95/4 54/98/4 58/99/4 57/91/4
|
|
||||||
f 56/100/4 55/101/4 59/102/4 60/103/4
|
|
||||||
f 61/104/3 62/105/3 64/106/3 63/107/3
|
|
||||||
g nodebox3_nodebox3_none_NONE
|
|
||||||
f 9/108/7 10/109/7 11/110/7 12/111/7
|
|
||||||
f 13/12/7 14/16/7 15/112/7 16/113/7
|
|
|
@ -40,3 +40,19 @@ minetest.register_craft({
|
||||||
{ "group:tree", "group:tree", "group:tree" },
|
{ "group:tree", "group:tree", "group:tree" },
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- Register Visual Food Entity
|
||||||
|
minetest.register_entity("mcl_campfires:food_entity", {
|
||||||
|
initial_properties = {
|
||||||
|
physical = false,
|
||||||
|
visual = "wielditem",
|
||||||
|
wield_item = "mcl_mobitems:mutton",
|
||||||
|
wield_image = "mcl_mobitems_mutton_raw.png",
|
||||||
|
visual_size = {x=0.25, y=0.25},
|
||||||
|
collisionbox = {0,0,0,0,0,0},
|
||||||
|
pointable = false,
|
||||||
|
},
|
||||||
|
on_activate = function(self, staticdata)
|
||||||
|
self.object:set_rotation({x = math.pi / -2, y = 0, z = 0})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
# textdomain: mcl_cherry_blossom
|
|
||||||
Cherry Log=Вишнёвое бревно
|
|
||||||
The trunk of a cherry blossom tree.=Ствол цветущего вишневого дерева.
|
|
||||||
Stripped Cherry Log=Обтёсанное вишнёвое бревно
|
|
||||||
The stripped trunk of a cherry blossom tree.=Обтёсанный ствол цветущей вишни.
|
|
||||||
Cherry Bark=Вишня
|
|
||||||
This is a decorative block surrounded by the bark of a tree trunk.=Это декоративный блок, окруженный корой ствола дерева.
|
|
||||||
Stripped Cherry Wood=Обтёсанная вишнёвая древесина
|
|
||||||
The stripped wood of a cherry blossom tree.=Обтёсанная древесина цветущей вишни.
|
|
||||||
Cherry Wood Planks=Вишнёвые доски
|
|
||||||
Cherry Leaves=Вишнёвые листья
|
|
||||||
Cherry blossom leaves are grown from cherry blossom trees.=Листья цветущей вишни выращивают на вишневых деревьях.
|
|
||||||
Cherry Sapling=Саженец вишни
|
|
||||||
Cherry blossom sapling can be planted to grow cherry trees.=Саженец цветущей вишни можно посадить для выращивания вишневых деревьев.
|
|
||||||
Cherry Door=Вишнёвая дверь
|
|
||||||
Cherry Trapdoor=Вишнёвый люк
|
|
||||||
Cherry Stairs=Вишнёвые ступеньки
|
|
||||||
Cherry Slab=Вишнёвая плита
|
|
||||||
Double Cherry Slab=Двойная вишнёвая плита
|
|
||||||
Cherry Sign=Вишнёвая табличка
|
|
||||||
Cherry Fence=Вишнёвый забор
|
|
||||||
Cherry Gate=Вишнёвая калитка
|
|
||||||
Cherry Pressure Plate=Вишнёвая нажимная плита
|
|
||||||
Cherry Button=Вишнёвая кнопка
|
|
|
@ -217,7 +217,8 @@ Stripped Spruce Wood=Madeira de Pinheiro Descascada
|
||||||
Stone Bricks=Tijolo de Rocha
|
Stone Bricks=Tijolo de Rocha
|
||||||
Sugar=Açúcar
|
Sugar=Açúcar
|
||||||
Sugar Canes=Cana de Açúcar
|
Sugar Canes=Cana de Açúcar
|
||||||
Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well.=Canas de açúcar são plantas que possui alguns usos em fabricações. Canas de açúcar crescerão lentamente até 3 blocos quando estão próximas da água e são colocadas em blocos de grama, terra, areia, areia vermelha, podzol ou terra infértil. Quando uma cana de açúcar é quebrada, todas as canas de açúcar conectadas acima também se quebrarão.
|
Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well.=
|
||||||
|
Canas de açúcar são plantas que possui alguns usos em fabricações. Canas de açúcar crescerão lentamente até 3 blocos quando estão próximas da água e são colocadas em blocos de grama, terra, areia, areia vermelha, podzol ou terra infértil.
|
||||||
Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow.=Canas de açúcar só podem ser colocados emcima de outras canas de açúcar ou sobre blocos em qual elas podem crescer.
|
Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow.=Canas de açúcar só podem ser colocados emcima de outras canas de açúcar ou sobre blocos em qual elas podem crescer.
|
||||||
Sugar comes from sugar canes and is used to make sweet foods.=Açúcar vem de canas de açúcar e é utilizado para fazer doces comidas.
|
Sugar comes from sugar canes and is used to make sweet foods.=Açúcar vem de canas de açúcar e é utilizado para fazer doces comidas.
|
||||||
The stripped trunk of an acacia tree.=O tronco descascado de uma acácia.
|
The stripped trunk of an acacia tree.=O tronco descascado de uma acácia.
|
||||||
|
|
|
@ -681,7 +681,7 @@ mcl_doors:register_trapdoor("mcl_crimson:crimson_trapdoor", {
|
||||||
_doc_items_longdesc = S("Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder."),
|
_doc_items_longdesc = S("Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder."),
|
||||||
_doc_items_usagehelp = S("To open or close the trapdoor, rightclick it or send a redstone signal to it."),
|
_doc_items_usagehelp = S("To open or close the trapdoor, rightclick it or send a redstone signal to it."),
|
||||||
tile_front = "mcl_crimson_crimson_trapdoor.png",
|
tile_front = "mcl_crimson_crimson_trapdoor.png",
|
||||||
tile_side = "mcl_crimson_crimson_trapdoor_side.png",
|
tile_side = "mcl_crimson_crimson_hyphae_wood.png",
|
||||||
wield_image = "mcl_crimson_crimson_trapdoor.png",
|
wield_image = "mcl_crimson_crimson_trapdoor.png",
|
||||||
groups = {handy=1,axey=1, mesecon_effector_on=1, material_wood=1, flammable=-1},
|
groups = {handy=1,axey=1, mesecon_effector_on=1, material_wood=1, flammable=-1},
|
||||||
_mcl_hardness = 3,
|
_mcl_hardness = 3,
|
||||||
|
@ -719,7 +719,7 @@ mcl_doors:register_trapdoor("mcl_crimson:warped_trapdoor", {
|
||||||
_doc_items_longdesc = S("Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder."),
|
_doc_items_longdesc = S("Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder."),
|
||||||
_doc_items_usagehelp = S("To open or close the trapdoor, rightclick it or send a redstone signal to it."),
|
_doc_items_usagehelp = S("To open or close the trapdoor, rightclick it or send a redstone signal to it."),
|
||||||
tile_front = "mcl_crimson_warped_trapdoor.png",
|
tile_front = "mcl_crimson_warped_trapdoor.png",
|
||||||
tile_side = "mcl_crimson_warped_trapdoor_side.png",
|
tile_side = "mcl_crimson_warped_hyphae_wood.png",
|
||||||
wield_image = "mcl_crimson_warped_trapdoor.png",
|
wield_image = "mcl_crimson_warped_trapdoor.png",
|
||||||
groups = {handy=1,axey=1, mesecon_effector_on=1, material_wood=1, flammable=-1},
|
groups = {handy=1,axey=1, mesecon_effector_on=1, material_wood=1, flammable=-1},
|
||||||
_mcl_hardness = 3,
|
_mcl_hardness = 3,
|
||||||
|
|
|
@ -66,6 +66,12 @@ minetest.register_tool("mcl_fire:flint_and_steel", {
|
||||||
if not minetest.is_creative_enabled("") then
|
if not minetest.is_creative_enabled("") then
|
||||||
stack:add_wear(65535/65) -- 65 uses
|
stack:add_wear(65535/65) -- 65 uses
|
||||||
end
|
end
|
||||||
|
-- Ignite Campfire
|
||||||
|
elseif minetest.get_item_group(dropnode.name, "campfire") ~= 0 then
|
||||||
|
add_node(droppos, {name=dropnode.name.."_lit"})
|
||||||
|
if not minetest.is_creative_enabled("") then
|
||||||
|
stack:add_wear(65535/65) -- 65 uses
|
||||||
|
end
|
||||||
end
|
end
|
||||||
return stack
|
return stack
|
||||||
end,
|
end,
|
||||||
|
|
|
@ -435,7 +435,7 @@ minetest.register_craftitem("mcl_fishing:fish_raw", {
|
||||||
on_place = minetest.item_eat(2),
|
on_place = minetest.item_eat(2),
|
||||||
on_secondary_use = minetest.item_eat(2),
|
on_secondary_use = minetest.item_eat(2),
|
||||||
stack_max = 64,
|
stack_max = 64,
|
||||||
groups = { food=2, eatable = 2, smoker_cookable = 1 },
|
groups = { food=2, eatable = 2, smoker_cookable = 1, campfire_cookable = 1 },
|
||||||
_mcl_saturation = 0.4,
|
_mcl_saturation = 0.4,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -465,7 +465,7 @@ minetest.register_craftitem("mcl_fishing:salmon_raw", {
|
||||||
on_place = minetest.item_eat(2),
|
on_place = minetest.item_eat(2),
|
||||||
on_secondary_use = minetest.item_eat(2),
|
on_secondary_use = minetest.item_eat(2),
|
||||||
stack_max = 64,
|
stack_max = 64,
|
||||||
groups = { food=2, eatable = 2, smoker_cookable = 1 },
|
groups = { food=2, eatable = 2, smoker_cookable = 1, campfire_cookable = 1 },
|
||||||
_mcl_saturation = 0.4,
|
_mcl_saturation = 0.4,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -209,9 +209,3 @@ mcl_flowerpots.register_potted_flower("mcl_core:deadbush", {
|
||||||
desc = S("Dead Bush"),
|
desc = S("Dead Bush"),
|
||||||
image = "default_dry_shrub.png",
|
image = "default_dry_shrub.png",
|
||||||
})
|
})
|
||||||
|
|
||||||
mcl_flowerpots.register_potted_flower("mcl_cherry_blossom:cherrysapling", {
|
|
||||||
name = "cherrysapling",
|
|
||||||
desc = S("Cherry Sapling"),
|
|
||||||
image = "mcl_cherry_blossom_sapling.png",
|
|
||||||
})
|
|
||||||
|
|
|
@ -24,4 +24,3 @@ Flower Pot=
|
||||||
Flower pots are decorative blocks in which flowers and other small plants can be placed.=
|
Flower pots are decorative blocks in which flowers and other small plants can be placed.=
|
||||||
Just place a plant on the flower pot. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant.=
|
Just place a plant on the flower pot. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant.=
|
||||||
Can hold a small flower or plant=
|
Can hold a small flower or plant=
|
||||||
Cherry Sapling Flower Pot=
|
|
||||||
|
|
|
@ -298,7 +298,7 @@ mcl_doors:register_trapdoor("mcl_mangrove:mangrove_trapdoor", {
|
||||||
_doc_items_longdesc = S("Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder."),
|
_doc_items_longdesc = S("Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder."),
|
||||||
_doc_items_usagehelp = S("To open or close the trapdoor, rightclick it or send a redstone signal to it."),
|
_doc_items_usagehelp = S("To open or close the trapdoor, rightclick it or send a redstone signal to it."),
|
||||||
tile_front = "mcl_mangrove_trapdoor.png",
|
tile_front = "mcl_mangrove_trapdoor.png",
|
||||||
tile_side = "mcl_mangrove_trapdoor_side.png",
|
tile_side = "mcl_mangrove_planks.png",
|
||||||
wield_image = "mcl_mangrove_trapdoor.png",
|
wield_image = "mcl_mangrove_trapdoor.png",
|
||||||
groups = {handy=1,axey=1, mesecon_effector_on=1, material_wood=1, flammable=-1},
|
groups = {handy=1,axey=1, mesecon_effector_on=1, material_wood=1, flammable=-1},
|
||||||
_mcl_hardness = 3,
|
_mcl_hardness = 3,
|
||||||
|
|
|
@ -20,7 +20,7 @@ minetest.register_craftitem("mcl_mobitems:mutton", {
|
||||||
wield_image = "mcl_mobitems_mutton_raw.png",
|
wield_image = "mcl_mobitems_mutton_raw.png",
|
||||||
on_place = minetest.item_eat(2),
|
on_place = minetest.item_eat(2),
|
||||||
on_secondary_use = minetest.item_eat(2),
|
on_secondary_use = minetest.item_eat(2),
|
||||||
groups = { food = 2, eatable = 2, smoker_cookable = 1 },
|
groups = { food = 2, eatable = 2, smoker_cookable = 1, campfire_cookable = 1 },
|
||||||
_mcl_saturation = 1.2,
|
_mcl_saturation = 1.2,
|
||||||
stack_max = 64,
|
stack_max = 64,
|
||||||
})
|
})
|
||||||
|
@ -44,7 +44,7 @@ minetest.register_craftitem("mcl_mobitems:beef", {
|
||||||
wield_image = "mcl_mobitems_beef_raw.png",
|
wield_image = "mcl_mobitems_beef_raw.png",
|
||||||
on_place = minetest.item_eat(3),
|
on_place = minetest.item_eat(3),
|
||||||
on_secondary_use = minetest.item_eat(3),
|
on_secondary_use = minetest.item_eat(3),
|
||||||
groups = { food = 2, eatable = 3, smoker_cookable = 1 },
|
groups = { food = 2, eatable = 3, smoker_cookable = 1, campfire_cookable = 1 },
|
||||||
_mcl_saturation = 1.8,
|
_mcl_saturation = 1.8,
|
||||||
stack_max = 64,
|
stack_max = 64,
|
||||||
})
|
})
|
||||||
|
@ -69,7 +69,7 @@ minetest.register_craftitem("mcl_mobitems:chicken", {
|
||||||
wield_image = "mcl_mobitems_chicken_raw.png",
|
wield_image = "mcl_mobitems_chicken_raw.png",
|
||||||
on_place = minetest.item_eat(2),
|
on_place = minetest.item_eat(2),
|
||||||
on_secondary_use = minetest.item_eat(2),
|
on_secondary_use = minetest.item_eat(2),
|
||||||
groups = { food = 2, eatable = 2, smoker_cookable = 1 },
|
groups = { food = 2, eatable = 2, smoker_cookable = 1, campfire_cookable = 1 },
|
||||||
_mcl_saturation = 1.2,
|
_mcl_saturation = 1.2,
|
||||||
stack_max = 64,
|
stack_max = 64,
|
||||||
})
|
})
|
||||||
|
@ -93,7 +93,7 @@ minetest.register_craftitem("mcl_mobitems:porkchop", {
|
||||||
wield_image = "mcl_mobitems_porkchop_raw.png",
|
wield_image = "mcl_mobitems_porkchop_raw.png",
|
||||||
on_place = minetest.item_eat(3),
|
on_place = minetest.item_eat(3),
|
||||||
on_secondary_use = minetest.item_eat(3),
|
on_secondary_use = minetest.item_eat(3),
|
||||||
groups = { food = 2, eatable = 3, smoker_cookable = 1 },
|
groups = { food = 2, eatable = 3, smoker_cookable = 1, campfire_cookable = 1 },
|
||||||
_mcl_saturation = 1.8,
|
_mcl_saturation = 1.8,
|
||||||
stack_max = 64,
|
stack_max = 64,
|
||||||
})
|
})
|
||||||
|
@ -117,7 +117,7 @@ minetest.register_craftitem("mcl_mobitems:rabbit", {
|
||||||
wield_image = "mcl_mobitems_rabbit_raw.png",
|
wield_image = "mcl_mobitems_rabbit_raw.png",
|
||||||
on_place = minetest.item_eat(3),
|
on_place = minetest.item_eat(3),
|
||||||
on_secondary_use = minetest.item_eat(3),
|
on_secondary_use = minetest.item_eat(3),
|
||||||
groups = { food = 2, eatable = 3, smoker_cookable = 1 },
|
groups = { food = 2, eatable = 3, smoker_cookable = 1, campfire_cookable = 1 },
|
||||||
_mcl_saturation = 1.8,
|
_mcl_saturation = 1.8,
|
||||||
stack_max = 64,
|
stack_max = 64,
|
||||||
})
|
})
|
||||||
|
|
|
@ -969,7 +969,7 @@ end
|
||||||
function mcl_potions._extinguish_nearby_fire(pos, radius)
|
function mcl_potions._extinguish_nearby_fire(pos, radius)
|
||||||
local epos = {x=pos.x, y=pos.y+0.5, z=pos.z}
|
local epos = {x=pos.x, y=pos.y+0.5, z=pos.z}
|
||||||
local dnode = minetest.get_node({x=pos.x,y=pos.y-0.5,z=pos.z})
|
local dnode = minetest.get_node({x=pos.x,y=pos.y-0.5,z=pos.z})
|
||||||
if minetest.get_item_group(dnode.name, "fire") ~= 0 then
|
if minetest.get_item_group(dnode.name, "fire") ~= 0 or minetest.get_item_group(dnode.name, "lit_campfire") ~= 0 then
|
||||||
epos.y = pos.y - 0.5
|
epos.y = pos.y - 0.5
|
||||||
end
|
end
|
||||||
local exting = false
|
local exting = false
|
||||||
|
@ -989,6 +989,11 @@ function mcl_potions._extinguish_nearby_fire(pos, radius)
|
||||||
minetest.sound_play("fire_extinguish_flame", {pos = tpos, gain = 0.25, max_hear_distance = 16}, true)
|
minetest.sound_play("fire_extinguish_flame", {pos = tpos, gain = 0.25, max_hear_distance = 16}, true)
|
||||||
minetest.remove_node(tpos)
|
minetest.remove_node(tpos)
|
||||||
exting = true
|
exting = true
|
||||||
|
elseif minetest.get_item_group(node.name, "lit_campfire") ~= 0 then
|
||||||
|
minetest.sound_play("fire_extinguish_flame", {pos = tpos, gain = 0.25, max_hear_distance = 16}, true)
|
||||||
|
local def = minetest.registered_nodes[node.name]
|
||||||
|
minetest.set_node(tpos, {name = def._mcl_campfires_smothered_form, param2 = node.param2})
|
||||||
|
exting = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- Has radius: lingering, extinguish all nodes in area
|
-- Has radius: lingering, extinguish all nodes in area
|
||||||
|
@ -996,10 +1001,16 @@ function mcl_potions._extinguish_nearby_fire(pos, radius)
|
||||||
local nodes = minetest.find_nodes_in_area(
|
local nodes = minetest.find_nodes_in_area(
|
||||||
{x=epos.x-radius,y=epos.y,z=epos.z-radius},
|
{x=epos.x-radius,y=epos.y,z=epos.z-radius},
|
||||||
{x=epos.x+radius,y=epos.y,z=epos.z+radius},
|
{x=epos.x+radius,y=epos.y,z=epos.z+radius},
|
||||||
{"group:fire"})
|
{"group:fire", "group:lit_campfire"})
|
||||||
for n=1, #nodes do
|
for n=1, #nodes do
|
||||||
|
local node = minetest.get_node(nodes[n])
|
||||||
minetest.sound_play("fire_extinguish_flame", {pos = nodes[n], gain = 0.25, max_hear_distance = 16}, true)
|
minetest.sound_play("fire_extinguish_flame", {pos = nodes[n], gain = 0.25, max_hear_distance = 16}, true)
|
||||||
minetest.remove_node(nodes[n])
|
if minetest.get_item_group(node.name, "fire") ~= 0 then
|
||||||
|
minetest.remove_node(nodes[n])
|
||||||
|
elseif minetest.get_item_group(node.name, "lit_campfire") ~= 0 then
|
||||||
|
local def = minetest.registered_nodes[node.name]
|
||||||
|
minetest.set_node(nodes[n], {name = def._mcl_campfires_smothered_form, param2 = node.param2})
|
||||||
|
end
|
||||||
exting = true
|
exting = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -187,7 +187,7 @@ local make_grass_path = function(itemstack, placer, pointed_thing)
|
||||||
itemstack:add_wear(wear)
|
itemstack:add_wear(wear)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
minetest.sound_play({name="default_grass_footstep", gain=1}, {pos = above}, true)
|
minetest.sound_play({name="default_grass_footstep", gain=1}, {pos = above, max_hear_distance = 16}, true)
|
||||||
minetest.swap_node(pointed_thing.under, {name="mcl_core:grass_path"})
|
minetest.swap_node(pointed_thing.under, {name="mcl_core:grass_path"})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,160 +0,0 @@
|
||||||
### 0.84 - The Very Nice release
|
|
||||||
|
|
||||||
### Contributors
|
|
||||||
#### New contributors
|
|
||||||
|
|
||||||
* appgurueu
|
|
||||||
* kbundg
|
|
||||||
* megustanlosfrijoles
|
|
||||||
* Niterux
|
|
||||||
* seventeenthShulker
|
|
||||||
* Temak
|
|
||||||
* uqers
|
|
||||||
|
|
||||||
#### Returning contributors
|
|
||||||
|
|
||||||
* 3raven
|
|
||||||
* AncientMariner
|
|
||||||
* chmodsayshello
|
|
||||||
* cora
|
|
||||||
* epCode
|
|
||||||
* Exhale
|
|
||||||
* FlamingRCCars
|
|
||||||
* FossFanatic
|
|
||||||
* MrRar
|
|
||||||
* Nicu
|
|
||||||
* PrairieWind
|
|
||||||
* rudzik8
|
|
||||||
* SmokeyDope
|
|
||||||
* Wbjitscool
|
|
||||||
|
|
||||||
## Important Info
|
|
||||||
|
|
||||||
### New server commands
|
|
||||||
|
|
||||||
minetest.register_chatcommand("music", {
|
|
||||||
params = "[on|off|invert [<player name>]]",
|
|
||||||
description = S("Turns music for yourself or another player on or off."),
|
|
||||||
|
|
||||||
|
|
||||||
### New settings added
|
|
||||||
|
|
||||||
#Maximum amount of hostile mobs (default:300)
|
|
||||||
mcl_mob_cap_hostile (Global hostile mob cap) int 300 0 2048
|
|
||||||
|
|
||||||
#Maximum amount of non-hostile mobs (default:300)
|
|
||||||
mcl_mob_cap_non_hostile (Global non-hostile mob cap) int 300 0 2048
|
|
||||||
|
|
||||||
#Maximum amount of ambient water mobs that will spawn near a player (default:20)
|
|
||||||
mcl_mob_cap_water_ambient (Mob cap ambient water) int 20 0 1024
|
|
||||||
|
|
||||||
#Maximum amount of underground water mobs that will spawn near a player (default:5)
|
|
||||||
mcl_mob_cap_water_underground (Mob cap underground water) int 5 0 1024
|
|
||||||
|
|
||||||
#Maximum amount of axolotl mobs that will spawn near a player (default:5)
|
|
||||||
mcl_mob_cap_axolotl (Mob cap axolotl) int 5 0 1024
|
|
||||||
|
|
||||||
## Change Log
|
|
||||||
|
|
||||||
### Gameplay Improvements
|
|
||||||
|
|
||||||
* Cherry Blossoms - Saplings added as loot, and trees and craftables added. Initial changes to enable a Wood API. - PrairieWind, SmokeyDope, Wbjitscool
|
|
||||||
* Fix issue with drops turning black due to clipping into walls and floors and visually demonstrate drops merging - AncientMariner
|
|
||||||
* Hoglins attack frequency reduced now due to new attack_frequency mob setting - AncientMariner
|
|
||||||
* Hostile mobs should lose aggro if they cannot see their target - AncientMariner
|
|
||||||
* Nerf skeleton attack - AncientMariner
|
|
||||||
* Split global cap for peaceful and hostile. Introduce underground water, ambient water, axolotl cap. Slight peaceful spawn balancing. Mob spawning can have more density in some instances. Slightly less passive mob spawning. Some mobs were not counted in cap calculations. Refreshed cap space after spawning in cycle. - AncientMariner
|
|
||||||
* Prevent slime blocks from 'connecting' to honey blocks when pushing/pulling, like in Minecraft - seventeenthShulker
|
|
||||||
* Add support for external custom skins mod - MrRar
|
|
||||||
* Double doors fixed - FossFanatic
|
|
||||||
* Make elytra enchantable and the enchanted elytra usable - PrairieWind/FlamingRCCars/MrRar
|
|
||||||
* Remove slimes from mushroom islands - AncientMariner
|
|
||||||
* Remove Flower Forest Beaches from Wolf biome spawn list - PrairieWind
|
|
||||||
* Make Piglin Brutes drop golden axes = PrairieWind
|
|
||||||
* Make end crystals explode when nearby crystals are punched and explode - PrairieWind
|
|
||||||
* Improved pig riding - PrairieWind
|
|
||||||
|
|
||||||
|
|
||||||
### Visual Improvements
|
|
||||||
|
|
||||||
* Incorporate sheep eating animation. - epCode
|
|
||||||
* New textures for warped for Crimson Fungus, Crimson Fungus planks, Warped Hyphae planks - Exhale
|
|
||||||
* New sweet berry textures - SmokeyDope
|
|
||||||
* Add Piglin and Creeper description names to death message - AncientMariner
|
|
||||||
* Creeper should not walk to player if it does not have line of sight. Mob shouldn't look at player it does not have line of sight to. - AncientMariner
|
|
||||||
* Remove one cause of extra jittering in mobs - AncientMariner
|
|
||||||
* Update dead bush generation - PrairieWind
|
|
||||||
* Fix a typo in the Acquire Hardware achievement - uqers
|
|
||||||
* Clean-up mcl_bamboo text - rudzik8
|
|
||||||
|
|
||||||
|
|
||||||
### Sounds
|
|
||||||
|
|
||||||
* Add more fishing sounds! - Niterux
|
|
||||||
* Add max_hear_distance flag to composter sounds - SmokeyDope
|
|
||||||
* Add barrel sounds - SmokeyDope
|
|
||||||
|
|
||||||
|
|
||||||
### Translations
|
|
||||||
|
|
||||||
* Update russian translation - Temak
|
|
||||||
* (french) translation enhancements - 3raven
|
|
||||||
* Add spanish translations - megustanlosfrijoles
|
|
||||||
|
|
||||||
|
|
||||||
### Performance
|
|
||||||
|
|
||||||
* Reduce network activity for elytra flying rocket particles - AncientMariner
|
|
||||||
* Mapgen Performance Improvements - FossFanatic
|
|
||||||
* Migrate beacons back to abm - chmodsayshello
|
|
||||||
* Frequent danger checks and movement actions removed from non-moving and out of range mobs - AncientMariner
|
|
||||||
* Duplicate jump and danger checks removed from mob processing - AncientMariner
|
|
||||||
* Decreased frequency of processing for some mob actions - AncientMariner
|
|
||||||
* Only run certain checks if applicable for mob - AncientMariner
|
|
||||||
|
|
||||||
|
|
||||||
### Multiplayer
|
|
||||||
|
|
||||||
* Add global cooldown for the bed quick chat feature - chmodsayshello/AncientMariner
|
|
||||||
* Music toggle for players connecting to servers - chmodsayshello
|
|
||||||
* Make sure dying sign text respects protection - AncientMariner
|
|
||||||
|
|
||||||
|
|
||||||
### Code Quality
|
|
||||||
|
|
||||||
* Oxidation API - PrairieWind
|
|
||||||
* Fix sign color requirement and translation issue - PrairieWind
|
|
||||||
* Standardise despawn logic and add asserts. Add persistent flag for mobs that have been interacted with. - AncientMariner
|
|
||||||
* Replace the zombie pigman with the zombified piglin - AncientMariner
|
|
||||||
* Clean up crash code and convert to new style vectors - AncientMariner
|
|
||||||
* Fix png start warning and double slab description warning. - AncientMariner
|
|
||||||
* OptiPNG a bunch of textures - PrairieWind
|
|
||||||
* Beds mesecons dependency incorrectly named - AncientMariner
|
|
||||||
* Rename Bucket Textures - AncientMariner
|
|
||||||
* Fix global variable references and exit mob_step if missing pos - AncientMariner
|
|
||||||
* Fix texture modifiers relying on undocumented behavior - appgurueu
|
|
||||||
|
|
||||||
|
|
||||||
### Fixes
|
|
||||||
|
|
||||||
* Piglins no longer aggro for enchanted gold armour - AncientMariner
|
|
||||||
* Drop pumpkins, melons and buttons via piston or dirt next to piston - AncientMariner
|
|
||||||
* Llamas and other mobs change skin color - AncientMariner
|
|
||||||
* Mobs more easily jump from stationary up a block - epCode
|
|
||||||
* Fix waterlogged mangrove roots leaving water in the nether - AncientMariner
|
|
||||||
* Prevent ALL furnaces from being moved (xp dupe fix) - chmodsayshello
|
|
||||||
* Fix gilded blackstone fortune dupe - cora
|
|
||||||
* Lightning rod param2 is now saved upon being struck - AncientMariner
|
|
||||||
* Adjust hot stuff achievement to use new lava bucket texture name - SmokeyDope
|
|
||||||
* Fix dropped out bamboo lines from translation work - AncientMariner
|
|
||||||
* Zombie piglin no longer prevent sleep unless hostile. - AncientMariner
|
|
||||||
|
|
||||||
|
|
||||||
### Crashes
|
|
||||||
|
|
||||||
* Fix crash when creeper explodes in minecart - AncientMariner
|
|
||||||
* Fix crash when using a named spawn egg - cora
|
|
||||||
* Fix crash when parrot sits on shoulder - AncientMariner
|
|
||||||
* Fix 2 automated wool farm crash and elytra fly over unknown block crash - AncientMariner
|
|
||||||
* Change order of numbers passed into random that crash on some Lua versions - AncientMariner
|
|
||||||
* solar panels: No crash when minetest.get_natural_light() return nil - MrRar
|
|
Before Width: | Height: | Size: 474 B After Width: | Height: | Size: 670 B |
Before Width: | Height: | Size: 412 B After Width: | Height: | Size: 602 B |
Before Width: | Height: | Size: 644 B |
Before Width: | Height: | Size: 263 B After Width: | Height: | Size: 317 B |
After Width: | Height: | Size: 105 B |
After Width: | Height: | Size: 239 B |
After Width: | Height: | Size: 286 B |
After Width: | Height: | Size: 336 B |
After Width: | Height: | Size: 186 B |
After Width: | Height: | Size: 276 B |
After Width: | Height: | Size: 299 B |
After Width: | Height: | Size: 275 B |
After Width: | Height: | Size: 301 B |
After Width: | Height: | Size: 386 B |
After Width: | Height: | Size: 382 B |
After Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 454 B After Width: | Height: | Size: 689 B |
Before Width: | Height: | Size: 412 B After Width: | Height: | Size: 623 B |
Before Width: | Height: | Size: 166 B |
Before Width: | Height: | Size: 164 B |
Before Width: | Height: | Size: 156 B |