Compare commits

...

33 Commits

Author SHA1 Message Date
93a46c05a6 Merge remote-tracking branch 'upstream/master' 2020-11-10 20:00:23 +01:00
77c02f1b7a added recipe 9x seed = 1x mulch 2020-11-10 18:00:11 +00:00
afc6d7ef12 Merge remote-tracking branch 'upstream/master' 2020-08-30 12:51:47 +02:00
130fffbf97 mt5.x translations added/updated (thanks dacmot) 2020-08-30 08:12:21 +01:00
b604ca39da Merge remote-tracking branch 'upstream/master' 2020-08-04 20:48:01 +02:00
a5a4798aed rename creative check function 2020-08-03 20:27:47 +01:00
97f4b11110 Merge remote-tracking branch 'upstream/master' 2020-07-17 22:45:16 +02:00
ebbec592bf fix loaded translations 2020-07-08 21:10:36 +01:00
19df0b4036 add locales for minetest 5.x translation 2020-07-08 21:06:13 +01:00
e6eaea544c update translation check, added spanish and italian locale 2020-07-08 14:05:34 +01:00
e4a0a9bfe9 add cabbage support 2020-07-01 19:23:47 +01:00
7053e44ea4 Merge remote-tracking branch 'upstream/master' into nalc-1.2-dev 2020-06-16 21:21:14 +02:00
bf7d9d6652 added farming redo's mint onto list 2020-05-27 11:07:55 +01:00
ea34f9cc99 make bones a little more rare when digging dirt 2020-05-20 12:58:34 +01:00
1402047c2e update depends.txt 2020-05-04 20:53:14 +01:00
93f7eb44d6 can craft dye from mulch, bonemeal, fertiliser 2020-05-04 20:52:27 +01:00
48718b60f7 added {bone=1} group to item and recipes 2020-05-03 20:48:12 +01:00
9c335b0029 fix strength bug 2020-04-06 09:44:51 +01:00
e017406a10 added new param2 checks 2020-02-14 18:21:56 +00:00
2b5decbc50 code tweaks 2020-02-14 11:13:49 +00:00
f639917a98 Code tweaked and tidied thanks to MoNTE48 2020-01-25 10:02:51 +00:00
43fd151357 Modifie drop de l'os dans la terre sans supprimer les autres drops 2020-01-04 16:55:07 +01:00
f3ad4abff1 add additional nil checks for servers with luajit issues 2019-11-26 12:34:53 +00:00
c621448df3 nil checks for grass and decoration lists 2019-10-05 10:12:10 +01:00
5949d15726 added nil fallback 2019-09-30 09:06:12 +01:00
1299f39126 fix flowers addition :) 2019-03-25 20:32:13 +00:00
363ec856ee added 5.0 pine bush sapling and additional flowers 2019-03-24 20:37:06 +00:00
5384fc7924 added support for minetest 5.0's new saplings 2019-03-22 17:38:10 +00:00
cff3fc378b added {can_bonemeal=1} group for special node usage 2019-03-07 16:38:42 +00:00
a4c4716c36 bonemeal on dirt/sand only works for that type at one time 2019-03-07 16:02:51 +00:00
797bae9c46 added support for sakura tree in ethereal 2019-02-16 12:24:04 +00:00
54b856158c add support for caverealms mushroom sapling 2019-01-07 10:02:44 +00:00
9bc52e2042 now works with oats, rye and rice plants 2019-01-06 10:27:35 +00:00
17 changed files with 787 additions and 632 deletions

View File

@ -30,5 +30,8 @@ Changelog:
- 0.8 - Added support for farming redo's new garlic, pepper and onion crops
- 0.9 - Added support for farming redo's pea and beetroot crops, checks for place_param
- 1.0 - add_deco() now adds to existing item list while set_deco() replaces item list (thanks h-v-smacker)
- 1.1 - Added {can_bonemeal=1} group for special nodes
- 1.2 - Added support for minetest 5.0 cactus seedling, blueberry bush sapling and emergent jungle tree saplings, additional flowers and pine bush sapling.
- 1.3 - Ability to craft dye from mulch, bonemeal and fertiliser (thanks orbea)
Lucky Blocks: 6

View File

@ -5,3 +5,5 @@ ethereal?
moretrees?
technic_worldgen?
lucky_block?
flowers?
dye?

200
init.lua
View File

@ -1,14 +1,18 @@
bonemeal = {}
local path = minetest.get_modpath("bonemeal")
local min, max, random = math.min, math.max, math.random
-- Load support for intllib.
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP .. "/intllib.lua")
local S = minetest.get_translator and minetest.get_translator("bonemeal") or
dofile(path .. "/intllib.lua")
-- creative check
local creative_mode_cache = minetest.settings:get_bool("creative_mode")
function is_creative(name)
function bonemeal.is_creative(name)
return creative_mode_cache or minetest.check_player_privs(name, {creative = true})
end
@ -16,7 +20,7 @@ end
-- default crops
local crops = {
{"farming:cotton_", 8, "farming:seed_cotton"},
{"farming:wheat_", 8, "farming:seed_wheat"},
{"farming:wheat_", 8, "farming:seed_wheat"}
}
@ -37,11 +41,15 @@ end
local saplings = {
{"default:sapling", default.grow_new_apple_tree, "soil"},
{"default:junglesapling", default.grow_new_jungle_tree, "soil"},
{"default:emergent_jungle_sapling", default.grow_new_emergent_jungle_tree, "soil"},
{"default:acacia_sapling", default.grow_new_acacia_tree, "soil"},
{"default:aspen_sapling", default.grow_new_aspen_tree, "soil"},
{"default:pine_sapling", pine_grow, "soil"},
{"default:bush_sapling", default.grow_bush, "soil"},
{"default:acacia_bush_sapling", default.grow_acacia_bush, "soil"},
{"default:large_cactus_seedling", default.grow_large_cactus, "sand"},
{"default:blueberry_bush_sapling", default.grow_blueberry_bush, "soil"},
{"default:pine_bush_sapling", default.grow_pine_bush, "soil"}
}
-- helper tables ( "" denotes a blank item )
@ -55,18 +63,23 @@ local dry_grass = {
"default:dry_grass_5", "", ""
}
local flowers = {
"flowers:dandelion_white", "flowers:dandelion_yellow", "flowers:geranium",
"flowers:rose", "flowers:tulip", "flowers:viola", ""
}
-- add all in-game flowers except waterlily
local flowers = {}
for node, def in pairs(minetest.registered_nodes) do
if def.groups.flower and not node:find("waterlily") then
flowers[#flowers + 1] = node
end
end
-- add additional bakedclay flowers if enabled
if minetest.get_modpath("bakedclay") then
flowers[7] = "bakedclay:delphinium"
flowers[8] = "bakedclay:thistle"
flowers[9] = "bakedclay:lazarus"
flowers[10] = "bakedclay:mannagrass"
flowers[11] = ""
flowers[#flowers + 1] = "bakedclay:delphinium"
flowers[#flowers + 1] = "bakedclay:thistle"
flowers[#flowers + 1] = "bakedclay:lazarus"
flowers[#flowers + 1] = "bakedclay:mannagrass"
flowers[#flowers + 1] = ""
end
-- default biomes deco
@ -78,7 +91,9 @@ local deco = {
}
----- local functions
--
-- local functions
--
-- particles
@ -97,7 +112,7 @@ local function particle_effect(pos)
maxexptime = 1,
minsize = 1,
maxsize = 3,
texture = "bonemeal_particle.png",
texture = "bonemeal_particle.png"
})
end
@ -181,7 +196,7 @@ local function check_crops(pos, nodename, strength)
-- grow registered crops
for n = 1, #crops do
if string.find(nodename, crops[n][1])
if nodename:find(crops[n][1])
or nodename == crops[n][3] then
-- separate mod and node name
@ -190,7 +205,7 @@ local function check_crops(pos, nodename, strength)
-- get stage number or set to 0 for seed
stage = tonumber( crop:split("_")[2] ) or 0
stage = math.min(stage + strength, crops[n][2])
stage = min(stage + strength, crops[n][2])
-- check for place_param setting
nod = crops[n][1] .. stage
@ -202,11 +217,8 @@ local function check_crops(pos, nodename, strength)
particle_effect(pos)
return
end
end
end
@ -215,13 +227,24 @@ local function check_soil(pos, nodename, strength)
-- set radius according to strength
local side = strength - 1
local tall = math.max(strength - 2, 0)
local tall = max(strength - 2, 0)
local floor
local groups = minetest.registered_items[nodename]
and minetest.registered_items[nodename].groups or {}
-- only place decoration on one type of surface
if groups.soil then
floor = {"group:soil"}
elseif groups.sand then
floor = {"group:sand"}
else
floor = {nodename}
end
-- get area of land with free space above
local dirt = minetest.find_nodes_in_area_under_air(
{x = pos.x - side, y = pos.y - tall, z = pos.z - side},
{x = pos.x + side, y = pos.y + tall, z = pos.z + side},
{"group:soil", "group:sand"})
{x = pos.x + side, y = pos.y + tall, z = pos.z + side}, floor)
-- set default grass and decoration
local grass = green_grass
@ -240,23 +263,38 @@ local function check_soil(pos, nodename, strength)
local pos2, nod, def
-- loop through soil
for _,n in pairs(dirt) do
for _, n in pairs(dirt) do
if random(5) == 5 then
if decor and #decor > 0 then
-- place random decoration (rare)
local dnum = #decor or 1
nod = decor[random(dnum)] or ""
end
else
if grass and #grass > 0 then
-- place random grass (common)
local dgra = #grass or 1
nod = #grass > 0 and grass[random(dgra)] or ""
end
end
pos2 = n
pos2.y = pos2.y + 1
if math.random(1, 5) == 5 then
-- place random decoration (rare)
nod = decor[math.random(1, #decor)] or ""
else
-- place random grass (common)
nod = #grass > 0 and grass[math.random(1, #grass)] or ""
if nod and nod ~= "" then
-- get crop param2 value
def = minetest.registered_nodes[nod]
def = def and def.place_param2
-- if param2 not preset then get from existing node
if not def then
local node = minetest.get_node_or_nil(pos2)
def = node and node.param2 or 0
end
if nod and nod ~= "" then
def = minetest.registered_nodes[nod]
def = def and def.place_param2 or 0
minetest.set_node(pos2, {name = nod, param2 = def})
end
@ -275,7 +313,7 @@ end
function bonemeal:add_sapling(list)
for n = 1, #list do
table.insert(saplings, list[n])
saplings[#saplings + 1] = list[n]
end
end
@ -286,7 +324,7 @@ end
function bonemeal:add_crop(list)
for n = 1, #list do
table.insert(crops, list[n])
crops[#crops + 1] = list[n]
end
end
@ -306,11 +344,11 @@ function bonemeal:add_deco(list)
if list[l][1] == deco[n][1] then
-- adding grass types
for _,extra in ipairs(list[l][2]) do
for _, extra in pairs(list[l][2]) do
if extra ~= "" then
for __,entry in ipairs(deco[n][2]) do
for _, entry in pairs(deco[n][2]) do
if extra == entry then
extra = false
@ -320,16 +358,16 @@ function bonemeal:add_deco(list)
end
if extra then
table.insert(deco[n][2], extra)
deco[n][2][#deco[n][2] + 1] = extra
end
end
-- adding decoration types
for _,extra in ipairs(list[l][3]) do
for _, extra in ipairs(list[l][3]) do
if extra ~= "" then
for __,entry in ipairs(deco[n][3]) do
for __, entry in pairs(deco[n][3]) do
if extra == entry then
extra = false
@ -339,7 +377,7 @@ function bonemeal:add_deco(list)
end
if extra then
table.insert(deco[n][3], extra)
deco[n][3][#deco[n][3] + 1] = extra
end
end
@ -349,7 +387,7 @@ function bonemeal:add_deco(list)
end
if list[l] then
table.insert(deco, list[l])
deco[#deco + 1] = list[l]
end
end
end
@ -373,7 +411,7 @@ function bonemeal:set_deco(list)
end
if list[l] then
table.insert(deco, list[l])
deco[#deco + 1] = list[l]
end
end
end
@ -392,27 +430,27 @@ function bonemeal:on_use(pos, strength, node)
-- make sure strength is between 1 and 4
strength = strength or 1
strength = math.max(strength, 1)
strength = math.min(strength, 4)
strength = max(strength, 1)
strength = min(strength, 4)
-- papyrus and cactus
if node.name == "default:papyrus" then
default.grow_papyrus(pos, node)
particle_effect(pos)
return
elseif node.name == "default:cactus" then
default.grow_cactus(pos, node)
particle_effect(pos)
return
end
-- grow grass and flowers
if minetest.get_item_group(node.name, "soil") > 0
or minetest.get_item_group(node.name, "sand") > 0 then
or minetest.get_item_group(node.name, "sand") > 0
or minetest.get_item_group(node.name, "can_bonemeal") > 0 then
check_soil(pos, node.name, strength)
return
end
@ -424,7 +462,7 @@ function bonemeal:on_use(pos, strength, node)
-- check for tree growth if pointing at sapling
if minetest.get_item_group(node.name, "sapling") > 0
and math.random(1, (5 - strength)) == 1 then
and random(5 - strength) == 1 then
check_sapling(pos, node.name)
return
end
@ -434,7 +472,9 @@ function bonemeal:on_use(pos, strength, node)
end
----- items
--
-- items
--
-- mulch (strength 1)
@ -455,7 +495,7 @@ minetest.register_craftitem("bonemeal:mulch", {
end
-- take item if not in creative
if not is_creative(user:get_player_name()) then
if not bonemeal.is_creative(user:get_player_name()) then
itemstack:take_item()
end
@ -463,7 +503,7 @@ minetest.register_craftitem("bonemeal:mulch", {
bonemeal:on_use(pointed_thing.under, 1)
return itemstack
end,
end
})
@ -485,7 +525,7 @@ minetest.register_craftitem("bonemeal:bonemeal", {
end
-- take item if not in creative
if not is_creative(user:get_player_name()) then
if not bonemeal.is_creative(user:get_player_name()) then
itemstack:take_item()
end
@ -493,7 +533,7 @@ minetest.register_craftitem("bonemeal:bonemeal", {
bonemeal:on_use(pointed_thing.under, 2)
return itemstack
end,
end
})
@ -515,7 +555,7 @@ minetest.register_craftitem("bonemeal:fertiliser", {
end
-- take item if not in creative
if not is_creative(user:get_player_name()) then
if not bonemeal.is_creative(user:get_player_name()) then
itemstack:take_item()
end
@ -523,7 +563,7 @@ minetest.register_craftitem("bonemeal:fertiliser", {
bonemeal:on_use(pointed_thing.under, 3)
return itemstack
end,
end
})
@ -531,50 +571,54 @@ minetest.register_craftitem("bonemeal:fertiliser", {
minetest.register_craftitem("bonemeal:bone", {
description = S("Bone"),
inventory_image = "bonemeal_bone.png",
groups = {bone = 1}
})
-- gelatin powder
minetest.register_craftitem("bonemeal:gelatin_powder", {
description = S("Gelatin Powder"),
inventory_image = "bonemeal_gelatin_powder.png",
groups = {food_gelatin = 1, flammable = 2},
groups = {food_gelatin = 1, flammable = 2}
})
--- crafting recipes
--
-- crafting recipes
--
-- gelatin powder
minetest.register_craft({
output = "bonemeal:gelatin_powder 4",
recipe = {
{"bonemeal:bone", "bonemeal:bone", "bonemeal:bone"},
{"group:bone", "group:bone", "group:bone"},
{"bucket:bucket_water", "bucket:bucket_water", "bucket:bucket_water"},
{"bucket:bucket_water", "default:torch", "bucket:bucket_water"},
},
replacements = {
{"bucket:bucket_water", "bucket:bucket_empty 5"},
},
}
})
-- bonemeal (from bone)
minetest.register_craft({
type = "shapeless",
output = "bonemeal:bonemeal 2",
recipe = {"bonemeal:bone"},
recipe = {"group:bone"}
})
-- bonemeal (from player bones)
minetest.register_craft({
type = "shapeless",
output = "bonemeal:bonemeal 4",
recipe = {"bones:bones"},
recipe = {"bones:bones"}
})
-- bonemeal (from coral skeleton)
minetest.register_craft({
type = "shapeless",
output = "bonemeal:bonemeal 2",
recipe = {"default:coral_skeleton"},
recipe = {"default:coral_skeleton"}
})
-- mulch
@ -585,37 +629,47 @@ minetest.register_craft({
"group:tree", "group:leaves", "group:leaves",
"group:leaves", "group:leaves", "group:leaves",
"group:leaves", "group:leaves", "group:leaves"
},
}
})
minetest.register_craft({
type = "shapeless",
output = "bonemeal:mulch",
recipe = {
"group:seed", "group:seed", "group:seed",
"group:seed", "group:seed", "group:seed",
"group:seed", "group:seed", "group:seed"
}
})
-- fertiliser
minetest.register_craft({
type = "shapeless",
output = "bonemeal:fertiliser 2",
recipe = {"bonemeal:bonemeal", "bonemeal:mulch"},
recipe = {"bonemeal:bonemeal", "bonemeal:mulch"}
})
-- add bones to dirt
minetest.override_item("default:dirt", {
local drop = minetest.registered_items["default:dirt"].drop
if drop then
table.insert(drop.items, 1, {items = {"bonemeal:bone"}, rarity = 30})
else
drop = {
max_items = 1,
items = {
{
items = {"bonemeal:bone"},
rarity = 30,
rarity = 40
},
{
items = {"default:dirt"},
items = {"default:dirt"}
}
}
},
})
}
end
-- add support for other mods
local path = minetest.get_modpath("bonemeal")
dofile(path .. "/mods.lua")
dofile(path .. "/lucky_block.lua")

7
locale/bonemeal.en.tr Normal file
View File

@ -0,0 +1,7 @@
# textdomain:bonemeal
#[MOD] bonemeal loaded=
#Bone=
#Bone Meal=
#Fertiliser=
#Gelatin Powder=
#Mulch=

7
locale/bonemeal.es.tr Normal file
View File

@ -0,0 +1,7 @@
# textdomain:bonemeal
[MOD] bonemeal loaded=[MOD] bonemeal cargado
Bone=Hueso
Bone Meal=Comida de hueso
Fertiliser=Fertilizante
#Gelatin Powder=
Mulch=Mantillo

7
locale/bonemeal.fr.tr Normal file
View File

@ -0,0 +1,7 @@
# textdomain:bonemeal
[MOD] bonemeal loaded=[MOD] bonemeal chargé
Bone=Os
Bone Meal=Poudre d'os
Fertiliser=Engrais
Gelatin Powder=Poudre de gélatine
Mulch=Paillis

7
locale/bonemeal.it.tr Normal file
View File

@ -0,0 +1,7 @@
# textdomain:bonemeal
[MOD] bonemeal loaded=[MOD] bonemeal caricata
Bone=Ossa
Bone Meal=Pasto osseo
Fertiliser=Fertilizzante
#Gelatin Powder=
Mulch=Pacciame

7
locale/bonemeal.ru.tr Normal file
View File

@ -0,0 +1,7 @@
# textdomain:bonemeal
[MOD] bonemeal loaded=[MOD] костная мука загружена
Bone=Кость
Bone Meal=Костная Мука
Fertiliser=Удобрение
#Gelatin Powder=
Mulch=Мульча

7
locale/es.txt Normal file
View File

@ -0,0 +1,7 @@
# init.lua
Mulch = Mantillo
Bone Meal = Comida de hueso
Fertiliser = Fertilizante
Bone = Hueso
[MOD] bonemeal loaded = [MOD] bonemeal cargado

7
locale/it.txt Normal file
View File

@ -0,0 +1,7 @@
# init.lua
Mulch = Pacciame
Bone Meal = Pasto osseo
Fertiliser = Fertilizzante
Bone = Ossa
[MOD] bonemeal loaded = [MOD] bonemeal caricata

7
locale/ru.txt Normal file
View File

@ -0,0 +1,7 @@
# init.lua
Mulch = Мульча
Bone Meal = Костная Мука
Fertiliser = Удобрение
Bone = Кость
[MOD] bonemeal loaded = [MOD] костная мука загружена

View File

@ -4,4 +4,4 @@ Mulch =
Bone Meal =
Fertiliser =
Bone =
[bonemeal] loaded =
[MOD] bonemeal loaded =

View File

@ -5,7 +5,7 @@ if minetest.get_modpath("animalmaterials") then
minetest.register_craft({
type = "shapeless",
output = "bonemeal:bonemeal 2",
recipe = {"animalmaterials:bone"},
recipe = {"animalmaterials:bone"}
})
end
@ -36,6 +36,11 @@ if farming and farming.mod and farming.mod == "redo" then
{"farming:pineapple_", 8},
{"farming:pea_", 5},
{"farming:beetroot_", 5},
{"farming:rye_", 8},
{"farming:oat_", 8},
{"farming:rice_", 8},
{"farming:mint_", 4},
{"farming:cabbage_", 6}
})
end
@ -44,7 +49,7 @@ if minetest.get_modpath("ethereal") then
bonemeal:add_crop({
{"ethereal:strawberry_", 8},
{"ethereal:onion_", 5},
{"ethereal:onion_", 5}
})
bonemeal:add_sapling({
@ -60,6 +65,7 @@ if minetest.get_modpath("ethereal") then
{"ethereal:orange_tree_sapling", ethereal.grow_orange_tree, "soil"},
{"ethereal:bamboo_sprout", ethereal.grow_bamboo_tree, "soil"},
{"ethereal:birch_sapling", ethereal.grow_birch_tree, "soil"},
{"ethereal:sakura_sapling", ethereal.grow_sakura_tree, "soil"}
})
local grass = {"default:grass_3", "default:grass_4", "default:grass_5", ""}
@ -75,7 +81,7 @@ if minetest.get_modpath("ethereal") then
{"ethereal:mushroom_dirt", {}, {"flowers:mushroom_red", "flowers:mushroom_brown", "", "", ""}},
{"ethereal:jungle_dirt", grass, {"default:junglegrass", "", "", ""}},
{"ethereal:grove_dirt", grass, {"ethereal:fern", "", "", ""}},
{"ethereal:bamboo_dirt", grass, {}},
{"ethereal:bamboo_dirt", grass, {}}
})
end
@ -111,12 +117,46 @@ if minetest.get_modpath("moretrees") then
{"moretrees:poplar_sapling", moretrees.spawn_poplar_object, "soil"},
{"moretrees:willow_sapling", moretrees.spawn_willow_object, "soil"},
{"moretrees:rubber_tree_sapling", moretrees.spawn_rubber_tree_object, "soil"},
{"moretrees:fir_sapling", fir_grow, "soil"},
{"moretrees:fir_sapling", fir_grow, "soil"}
})
elseif minetest.get_modpath("technic_worldgen") then
bonemeal:add_sapling({
{"moretrees:rubber_tree_sapling", technic.rubber_tree_model, "soil"},
{"moretrees:rubber_tree_sapling", technic.rubber_tree_model, "soil"}
})
end
if minetest.get_modpath("caverealms") then
local fil = minetest.get_modpath("caverealms") .. "/schematics/shroom.mts"
local add_shroom = function(pos)
minetest.swap_node(pos, {name = "air"})
minetest.place_schematic(
{x = pos.x - 5, y = pos.y, z = pos.z - 5}, fil, 0, nil, false)
end
bonemeal:add_sapling({
{"caverealms:mushroom_sapling", add_shroom, "soil"}
})
end
if minetest.get_modpath("dye") then
local bonemeal_dyes = {
bonemeal = "white", fertiliser = "green", mulch = "brown"}
for mat, dye in pairs(bonemeal_dyes) do
minetest.register_craft({
output = "dye:" .. dye .. " 4",
recipe = {
{"bonemeal:" .. mat}
},
})
end
end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 B

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 B

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 B

After

Width:  |  Height:  |  Size: 182 B