1
0
mirror of https://codeberg.org/tenplus1/farming.git synced 2025-07-21 09:32:36 +02:00

Compare commits

..

37 Commits

Author SHA1 Message Date
a26e4f94f2 Merge remote-tracking branch 'upstream/master' 2023-11-22 23:32:31 +01:00
f1d02c7877 Merge remote-tracking branch 'upstream/master' 2023-06-05 23:46:11 +02:00
31101de345 Merge remote-tracking branch 'upstream/master' 2022-08-26 14:56:17 +02:00
19d5001f46 Merge remote-tracking branch 'upstream/master' 2022-06-25 16:46:39 +02:00
7e5db833e0 Merge remote-tracking branch 'upstream/master' 2022-05-27 18:30:28 +02:00
cfe731352d Merge remote-tracking branch 'upstream/master' 2022-03-05 11:21:27 +01:00
22fc0be525 Merge remote-tracking branch 'upstream/master' 2021-12-10 21:36:18 +01:00
1b0e96cfc7 Merge remote-tracking branch 'upstream/master' 2021-11-26 21:41:25 +01:00
d087d639b8 Merge remote-tracking branch 'upstream/master' 2021-10-04 21:33:02 +02:00
23d12c3c8c Merge remote-tracking branch 'upstream/master' 2021-08-31 19:45:54 +02:00
942d6eafba Merge remote-tracking branch 'upstream/master' 2021-07-26 22:13:26 +02:00
9b6a055534 Merge remote-tracking branch 'upstream/master' 2021-07-24 13:06:40 +02:00
361e006b56 Merge remote-tracking branch 'upstream/master' 2021-07-17 20:45:17 +02:00
48951090c0 Merge remote-tracking branch 'upstream/master' 2021-07-16 23:37:53 +02:00
3246f11594 Merge remote-tracking branch 'upstream/master' 2021-07-05 22:09:01 +02:00
756b4417ea Merge remote-tracking branch 'upstream/master' 2021-06-20 17:08:12 +02:00
787b7b3396 Merge remote-tracking branch 'upstream/master' 2021-05-09 21:36:27 +02:00
847a9a4527 Merge remote-tracking branch 'upstream/master' 2021-04-17 13:47:05 +02:00
9fa818c1aa Merge remote-tracking branch 'upstream/master' 2021-04-04 20:57:42 +02:00
13df43deeb Merge remote-tracking branch 'upstream/master' 2021-03-25 21:38:38 +01:00
e0340ce2cf Merge remote-tracking branch 'upstream/master' 2021-03-12 12:19:42 +01:00
8f2c41abe9 Merge remote-tracking branch 'upstream/master' 2021-02-23 21:15:00 +01:00
59743d747f Merge remote-tracking branch 'upstream/master' 2021-02-07 13:06:50 +01:00
c8284b6410 Merge remote-tracking branch 'upstream/master' 2021-01-15 21:09:25 +01:00
62b83f71a4 Merge remote-tracking branch 'upstream/master' 2021-01-02 14:23:48 +01:00
11b79dffd2 Merge remote-tracking branch 'upstream/master' 2020-12-15 23:26:24 +01:00
52575203c4 Merge remote-tracking branch 'upstream/master' 2020-09-04 21:39:24 +02:00
5c012d470b Merge remote-tracking branch 'upstream/master' 2020-08-29 20:32:26 +02:00
a6bc7aaf9e Merge remote-tracking branch 'upstream/master' 2020-08-25 20:02:52 +02:00
0cc0a7233f Merge remote-tracking branch 'upstream/master' 2020-08-22 09:17:06 +02:00
58f3dbf783 Merge remote-tracking branch 'upstream/master' 2020-08-04 20:46:58 +02:00
fb733d8f6f Merge remote-tracking branch 'upstream/master' 2020-07-17 22:51:45 +02:00
016528f585 Merge remote-tracking branch 'upstream/master' into nalc-1.2-dev 2020-06-16 21:43:22 +02:00
88ed7b5a7f Supprime la génération des carottes et du maïs 2020-06-14 15:42:23 +02:00
e9d97cfeb1 Merge branch 'master' of yunohost.local:mtcontrib/farming into nalc-1.2-dev 2019-12-22 13:05:51 +01:00
19577a3917 Merge branch 'master' into nalc-1.2 2019-05-09 21:40:50 +02:00
ec40c00836 Ajoute message de chargement du mod dans le journal "action" 2018-12-25 15:48:08 +01:00
129 changed files with 4738 additions and 5789 deletions

View File

@ -217,7 +217,6 @@ on an older map are enabled and growing properly.
### Changelog:
- 1.49 - Added {eatable=1} groups to food items with the value giving HP when eaten, improved mineclone support, separated foods from crop files, hoes can deal damage. Add weed and weed bale (with setting to disable weed growth).
- 1.48 - added 'farming_use_utensils' setting to enable/disable utensils in recipes, added mayonnaise (thx felfa), added gingerbread man, Added MineClone2 compatibility
- 1.47 - Now blueberries can make blue dye, tweak soil types to work better with older 0.4.x clients and add spanish translation (thx mckaygerhard), add trellis setting to registered_crops and fix pea and soy crop names (thx nixnoxus), add strawberries if ethereal mod not active, added asparagus; spinach; eggplant (thx Atlante for new textures), Sugar Cube
- 1.46 - Added min/max default light settings, added lettuce and blackberries with food items (thanks OgelGames), added soya, vanilla and sunflowers (thanks Felfa), added tofu, added salt crystals (thanks gorlock)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 382 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 234 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 382 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 487 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 687 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 325 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 557 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 703 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 440 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

25
api.txt
View File

@ -20,6 +20,7 @@ The farming API allows you to easily register plants and hoes.
### Hoe Definition
{
description = "My Hoe", -- Description for tooltip
inventory_image = "unknown_item.png", -- Image to be used as wield- and inventory image
@ -41,7 +42,6 @@ The farming API allows you to easily register plants and hoes.
-- ^ Always provide a plant texture for each step, format: modname_plantname_i.png (i = stepnumber)
minlight = 13, -- Minimum light to grow
maxlight = minetest.LIGHT_MAX -- Maximum light to grow
can_grow = function(pos) -- Called every growth tick to check if plant can grow returning True if needs are met (optional, defaults to checking for wet soil below plant).
}
Note: Any crops registered with the above function will use the new growing routines, also if crops are manually added with the {growing=1} group they will also grow.
@ -50,7 +50,7 @@ Note: Any crops registered with the above function will use the new growing rout
If a mod registers nodes to be used as crops using the {growing=1} group then an additional function can be used for custom growth checks instead of the standard 'are we above wet soil'.
growth_check = function(pos, [node_name]) [DEPRECATED for above can_grow function]
growth_check = function(pos, node_name)
-- check surrounding for jungle tree
if minetest.find_node_near(pos, 1, {"default:jungletree"}) then
return true -- place next growth stage
@ -70,24 +70,3 @@ A handy function that starts a crops timer with a randomly selected time set by
stage_length setting. This is mostly used for special functions or 3rd party mods.
farming.start_seed_timer(pos)
Node Sounds
-----------
Farming Redo will detect wether the Default mod or MineClone/VoxeLibre mod is active and
store whichever sound set is available inside the following to save any other farming
mods from having to detect it themselves:
farming.node_sound_defaults()
farming.node_sound_stone_defaults()
farming.node_sound_dirt_defaults()
farming.node_sound_sand_defaults()
farming.node_sound_gravel_defaults()
farming.node_sound_wood_defaults()
farming.node_sound_leaves_defaults()
farming.node_sound_ice_defaults()
farming.node_sound_metal_defaults()
farming.node_sound_water_defaults()
farming.node_sound_snow_defaults()
farming.node_sound_glass_defaults()

View File

@ -1,30 +1,22 @@
local S = core.get_translator("farming")
local S = farming.translate
--= Helpers
local eth = core.get_modpath("ethereal")
local eth = minetest.get_modpath("ethereal")
local alias = function(orig, new)
core.register_alias(orig, new)
minetest.register_alias(orig, new)
end
--= Add {eatable} group to default food items if found
farming.add_eatable("default:apple", 2)
farming.add_eatable("default:blueberries", 1)
farming.add_eatable("flowers:mushroom_brown", 1)
farming.add_eatable("flowers:mushroom_red", -5)
--= Aliases
-- Banana
if eth then
alias("farming_plus:banana_sapling", "ethereal:banana_tree_sapling")
alias("farming_plus:banana_leaves", "ethereal:bananaleaves")
alias("farming_plus:banana", "ethereal:banana")
else
core.register_node(":ethereal:banana", {
minetest.register_node(":ethereal:banana", {
description = S("Banana"),
drawtype = "torchlike",
tiles = {"farming_banana_single.png"},
@ -34,26 +26,23 @@ else
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed", fixed = {-0.2, -0.5, -0.2, 0.2, 0.2, 0.2}
type = "fixed",
fixed = {-0.2, -0.5, -0.2, 0.2, 0.2, 0.2}
},
groups = {food_banana = 1, fleshy = 3, dig_immediate = 3},
is_ground_content = false,
on_use = core.item_eat(2),
sounds = farming.node_sound_leaves_defaults()
groups = {food_banana = 1, fleshy = 3, dig_immediate = 3, flammable = 2},
on_use = minetest.item_eat(2),
sounds = default.node_sound_leaves_defaults()
})
farming.add_eatable("ethereal:banana", 2)
core.register_node(":ethereal:bananaleaves", {
minetest.register_node(":ethereal:bananaleaves", {
description = S("Banana Leaves"),
tiles = {"ethereal_banana_leaf.png"},
inventory_image = "ethereal_banana_leaf.png",
wield_image = "ethereal_banana_leaf.png",
tiles = {"farming_banana_leaf.png"},
inventory_image = "farming_banana_leaf.png",
wield_image = "farming_banana_leaf.png",
paramtype = "light",
waving = 1,
groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2},
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = default.node_sound_leaves_defaults()
})
alias("farming_plus:banana_sapling", "default:sapling")
@ -62,7 +51,6 @@ else
end
-- Carrot
alias("farming_plus:carrot_seed", "farming:carrot")
alias("farming_plus:carrot_1", "farming:carrot_1")
alias("farming_plus:carrot_2", "farming:carrot_4")
@ -71,14 +59,12 @@ alias("farming_plus:carrot", "farming:carrot_8")
alias("farming_plus:carrot_item", "farming:carrot")
-- Cocoa
alias("farming_plus:cocoa_sapling", "farming:cocoa_beans")
alias("farming_plus:cocoa_leaves", "default:leaves")
alias("farming_plus:cocoa", "default:apple")
alias("farming_plus:cocoa_bean", "farming:cocoa_beans")
-- Orange
alias("farming_plus:orange_1", "farming:tomato_1")
alias("farming_plus:orange_2", "farming:tomato_4")
alias("farming_plus:orange_3", "farming:tomato_6")
@ -88,7 +74,7 @@ if eth then
alias("farming_plus:orange", "ethereal:orange")
alias("farming_plus:orange_seed", "ethereal:orange_tree_sapling")
else
core.register_node(":ethereal:orange", {
minetest.register_node(":ethereal:orange", {
description = S("Orange"),
drawtype = "plantlike",
tiles = {"farming_orange.png"},
@ -98,23 +84,20 @@ else
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed", fixed = {-0.2, -0.3, -0.2, 0.2, 0.2, 0.2}
type = "fixed",
fixed = {-0.2, -0.3, -0.2, 0.2, 0.2, 0.2}
},
groups = {food_orange = 1, fleshy = 3, dig_immediate = 3, flammable = 2},
is_ground_content = false,
on_use = core.item_eat(4),
sounds = farming.node_sound_leaves_defaults()
on_use = minetest.item_eat(4),
sounds = default.node_sound_leaves_defaults()
})
farming.add_eatable("ethereal:orange", 4)
alias("farming_plus:orange_item", "ethereal:orange")
alias("farming_plus:orange", "ethereal:orange")
alias("farming_plus:orange_seed", "default:sapling")
end
-- Potato
alias("farming_plus:potato_item", "farming:potato")
alias("farming_plus:potato_1", "farming:potato_1")
alias("farming_plus:potato_2", "farming:potato_2")
@ -122,7 +105,6 @@ alias("farming_plus:potato", "farming:potato_3")
alias("farming_plus:potato_seed", "farming:potato")
-- Pumpkin
alias("farming:pumpkin_seed", "farming:pumpkin_slice")
alias("farming:pumpkin_face", "farming:jackolantern")
alias("farming:pumpkin_face_light", "farming:jackolantern_on")
@ -135,7 +117,6 @@ alias("farming:scarecrow_light", "farming:jackolantern_on")
alias("farming:pumpkin_flour", "farming:pumpkin_dough")
-- Rhubarb
alias("farming_plus:rhubarb_seed", "farming:rhubarb")
alias("farming_plus:rhubarb_1", "farming:rhubarb_1")
alias("farming_plus:rhubarb_2", "farming:rhubarb_2")
@ -143,7 +124,6 @@ alias("farming_plus:rhubarb", "farming:rhubarb_3")
alias("farming_plus:rhubarb_item", "farming:rhubarb")
-- Strawberry
alias("farming_plus:strawberry_item", "ethereal:strawberry")
alias("farming_plus:strawberry_seed", "ethereal:strawberry")
alias("farming_plus:strawberry_1", "ethereal:strawberry_1")
@ -152,10 +132,12 @@ alias("farming_plus:strawberry_3", "ethereal:strawberry_5")
alias("farming_plus:strawberry", "ethereal:strawberry_7")
-- Tomato
alias("farming_plus:tomato_seed", "farming:tomato")
alias("farming_plus:tomato_item", "farming:tomato")
alias("farming_plus:tomato_1", "farming:tomato_2")
alias("farming_plus:tomato_2", "farming:tomato_4")
alias("farming_plus:tomato_3", "farming:tomato_6")
alias("farming_plus:tomato", "farming:tomato_8")
-- Weed
alias("farming:weed", "default:grass_2")

View File

@ -1,25 +1,19 @@
local S = core.get_translator("farming")
local S = farming.translate
-- item/seed
core.register_craftitem("farming:artichoke", {
-- item definition
minetest.register_craftitem("farming:artichoke", {
description = S("Artichoke"),
inventory_image = "farming_artichoke.png",
groups = {compostability = 48, seed = 2, food_artichoke = 1},
on_use = core.item_eat(4),
groups = {compostability = 48, seed = 2, food_artichoke = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:artichoke_1")
end
end,
on_use = minetest.item_eat(4)
})
farming.add_eatable("farming:artichoke", 4)
-- crop definition
local def = {
description = S("Artichoke") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_artichoke_1.png"},
paramtype = "light",
@ -33,37 +27,25 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:artichoke_1", table.copy(def))
minetest.register_node("farming:artichoke_1", table.copy(def))
-- stage 2
def.tiles = {"farming_artichoke_2.png"}
core.register_node("farming:artichoke_2", table.copy(def))
minetest.register_node("farming:artichoke_2", table.copy(def))
-- stage 3
def.tiles = {"farming_artichoke_3.png"}
core.register_node("farming:artichoke_3", table.copy(def))
minetest.register_node("farming:artichoke_3", table.copy(def))
-- stage 4
def.tiles = {"farming_artichoke_4.png"}
def.drop = {
items = {
{items = {"farming:artichoke"}, rarity = 1}
}
}
core.register_node("farming:artichoke_4", table.copy(def))
minetest.register_node("farming:artichoke_4", table.copy(def))
-- stage 5 (final)
def.tiles = {"farming_artichoke_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
@ -73,10 +55,9 @@ def.drop = {
{items = {"farming:artichoke"}, rarity = 2}
}
}
core.register_node("farming:artichoke_5", table.copy(def))
minetest.register_node("farming:artichoke_5", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:artichoke"] = {
crop = "farming:artichoke",
seed = "farming:artichoke",
@ -86,12 +67,9 @@ farming.registered_plants["farming:artichoke"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:grove_dirt"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -101,7 +79,9 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 13,
decoration = "farming:artichoke_4",
spawn_by = "group:tree", num_spawn_by = 1
y_min = 1,
y_max = 13,
decoration = {"farming:artichoke_5"},
spawn_by = "group:tree",
num_spawn_by = 1
})

View File

@ -1,25 +1,19 @@
local S = core.get_translator("farming")
local S = farming.translate
-- item/seed
core.register_craftitem("farming:asparagus", {
-- asparagus
minetest.register_craftitem("farming:asparagus", {
description = S("Asparagus"),
inventory_image = "farming_asparagus.png",
groups = {compostability = 48, seed = 2, food_asparagus = 1},
on_use = core.item_eat(1),
groups = {compostability = 48, seed = 2, food_asparagus = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:asparagus_1")
end
end,
on_use = minetest.item_eat(1)
})
farming.add_eatable("farming:asparagus", 1)
-- crop definition
-- asparagus definition
local def = {
description = S("Asparagus") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_asparagus_1.png"},
paramtype = "light",
@ -35,50 +29,42 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:asparagus_1", table.copy(def))
minetest.register_node("farming:asparagus_1", table.copy(def))
-- stage 2
def.tiles = {"farming_asparagus_2.png"}
core.register_node("farming:asparagus_2", table.copy(def))
minetest.register_node("farming:asparagus_2", table.copy(def))
-- stage 3
def.tiles = {"farming_asparagus_3.png"}
core.register_node("farming:asparagus_3", table.copy(def))
minetest.register_node("farming:asparagus_3", table.copy(def))
-- stage 4
def.tiles = {"farming_asparagus_4.png"}
def.drop = {
items = {
{items = {"farming:asparagus"}, rarity = 1}
{items = {"farming:asparagus"}, rarity = 2}
}
}
core.register_node("farming:asparagus_4", table.copy(def))
-- stage 5 (final)
minetest.register_node("farming:asparagus_4", table.copy(def))
-- stage 5
def.tiles = {"farming_asparagus_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:asparagus 2"}, rarity = 1},
{items = {"farming:asparagus"}, rarity = 2}
{items = {"farming:asparagus"}, rarity = 1},
{items = {"farming:asparagus 2"}, rarity = 2}
}
}
core.register_node("farming:asparagus_5", table.copy(def))
minetest.register_node("farming:asparagus_5", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:asparagus"] = {
crop = "farming:asparagus",
seed = "farming:asparagus",
@ -88,21 +74,21 @@ farming.registered_plants["farming:asparagus"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
name = "farming:asparagus_5",
deco_type = "simple",
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
offset = -0.1,
scale = farming.asparagus,
spread = {x = 100, y = 100, z = 100},
seed = 234,
octaves = 3,
persist = 0.6
},
y_min = 8, y_max = 32,
decoration = "farming:asparagus_4",
y_min = 8,
y_max = 32,
decoration = "farming:asparagus_5",
param2 = 3
})

View File

@ -1,48 +1,48 @@
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- seed
core.register_node("farming:seed_barley", {
-- barley seeds
minetest.register_node("farming:seed_barley", {
description = S("Barley Seed"),
tiles = {"farming_barley_seed.png"},
inventory_image = "farming_barley_seed.png",
wield_image = "farming_barley_seed.png",
drawtype = "signlike",
groups = {
handy = 1, compostability = 48, seed = 1, snappy = 3, attached_node = 1,
growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
groups = {compostability = 48, seed = 1, snappy = 3, attached_node = 1, growing = 1},
paramtype = "light",
paramtype2 = "wallmounted",
walkable = false,
sunlight_propagates = true,
next_plant = "farming:barley_1",
selection_box = farming.select,
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_barley")
end,
on_timer = function(pos, elapsed)
core.set_node(pos, {name = "farming:barley_1", param2 = 3})
minetest.set_node(pos, {name = "farming:barley_1", param2 = 3})
end
})
-- item
core.register_craftitem("farming:barley", {
-- harvested barley
minetest.register_craftitem("farming:barley", {
description = S("Barley"),
inventory_image = "farming_barley.png",
groups = {food_barley = 1, flammable = 2, compostability = 65}
})
-- crop definition
-- flour
minetest.register_craft({
output = "farming:flour",
recipe = {
{"farming:barley", "farming:barley", "farming:barley"},
{"farming:barley", a.mortar_pestle, ""}
},
replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}}
})
-- barley definition
local def = {
description = S("Barley") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_barley_1.png"},
paramtype = "light",
@ -58,37 +58,29 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:barley_1", table.copy(def))
minetest.register_node("farming:barley_1", table.copy(def))
-- stage 2
def.tiles = {"farming_barley_2.png"}
core.register_node("farming:barley_2", table.copy(def))
minetest.register_node("farming:barley_2", table.copy(def))
-- stage 3
def.tiles = {"farming_barley_3.png"}
core.register_node("farming:barley_3", table.copy(def))
minetest.register_node("farming:barley_3", table.copy(def))
-- stage 4
def.tiles = {"farming_barley_4.png"}
core.register_node("farming:barley_4", table.copy(def))
minetest.register_node("farming:barley_4", table.copy(def))
-- stage 5
def.tiles = {"farming_barley_5.png"}
core.register_node("farming:barley_5", table.copy(def))
minetest.register_node("farming:barley_5", table.copy(def))
-- stage 6
def.tiles = {"farming_barley_6.png"}
def.drop = {
items = {
@ -96,10 +88,9 @@ def.drop = {
{items = {"farming:seed_barley"}, rarity = 2}
}
}
core.register_node("farming:barley_6", table.copy(def))
minetest.register_node("farming:barley_6", table.copy(def))
-- stage 7
def.tiles = {"farming_barley_7.png"}
def.drop = {
items = {
@ -107,25 +98,23 @@ def.drop = {
{items = {"farming:seed_barley"}, rarity = 1}
}
}
core.register_node("farming:barley_7", table.copy(def))
minetest.register_node("farming:barley_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_barley_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:barley 2"}, rarity = 1},
{items = {"farming:barley"}, rarity = 2},
{items = {"farming:seed_barley 2"}, rarity = 1},
{items = {"farming:seed_barley"}, rarity = 2}
{items = {"farming:barley"}, rarity = 1},
{items = {"farming:barley"}, rarity = 3},
{items = {"farming:seed_barley"}, rarity = 1},
{items = {"farming:seed_barley"}, rarity = 3}
}
}
core.register_node("farming:barley_8", table.copy(def))
minetest.register_node("farming:barley_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:barley"] = {
crop = "farming:barley",
seed = "farming:seed_barley",
@ -133,3 +122,10 @@ farming.registered_plants["farming:barley"] = {
maxlight = farming.max_light,
steps = 8
}
-- Fuel
minetest.register_craft({
type = "fuel",
recipe = "farming:barley",
burntime = 1
})

View File

@ -1,26 +1,32 @@
--[[
All textures by
(C) Auke Kok <sofar@foo-projects.org>
CC-BY-SA-3.0
]]
-- All textures by (C) Auke Kok <sofar@foo-projects.org> CC-BY-SA-3.0
local S = core.get_translator("farming")
-- place beans helper
local S = farming.translate
local a = farming.recipe_items
-- place beans
local function place_beans(itemstack, placer, pointed_thing, plantname)
local pt = pointed_thing
-- check if pointing at a node
if not pt or pt.type ~= "node" then return end
if not pt or pt.type ~= "node" then
return
end
local under = core.get_node(pt.under)
local under = minetest.get_node(pt.under)
-- return if any of the nodes are not registered
if not core.registered_nodes[under.name] then return end
if not minetest.registered_nodes[under.name] then
return
end
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = core.registered_nodes[under.name]
local def = minetest.registered_nodes[under.name]
if placer and itemstack and def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt)
end
@ -29,15 +35,19 @@ local function place_beans(itemstack, placer, pointed_thing, plantname)
local name = placer and placer:get_player_name() or ""
-- check for protection
if core.is_protected(pt.under, name) then return end
if minetest.is_protected(pt.under, name) then
return
end
-- check if pointing at bean pole
if under.name ~= "farming:beanpole" then return end
if under.name ~= "farming:beanpole" then
return
end
-- add the node and remove 1 item from the itemstack
core.set_node(pt.under, {name = plantname})
minetest.set_node(pt.under, {name = plantname})
core.sound_play("default_place_node", {pos = pt.under, gain = 1.0}, true)
minetest.sound_play("default_place_node", {pos = pt.under, gain = 1.0})
if placer or not farming.is_creative(placer:get_player_name()) then
@ -46,32 +56,37 @@ local function place_beans(itemstack, placer, pointed_thing, plantname)
-- check for refill
if itemstack:get_count() == 0 then
core.after(0.20,
farming.refill_plant, placer, "farming:beans", placer:get_wield_index())
minetest.after(0.20,
farming.refill_plant,
placer,
"farming:beans",
placer:get_wield_index()
)
end
end
return itemstack
end
-- item/seed
core.register_craftitem("farming:beans", {
-- beans
minetest.register_craftitem("farming:beans", {
description = S("Green Beans"),
inventory_image = "farming_beans.png",
groups = {compostability = 48, seed = 2, food_beans = 1},
on_use = core.item_eat(1),
groups = {compostability = 48, seed = 2, food_beans = 1, flammable = 2},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
return place_beans(itemstack, placer, pointed_thing, "farming:beanpole_1")
end
})
farming.add_eatable("farming:beans", 1)
-- beans can be used for green dye
minetest.register_craft({
output = a.dye_green,
recipe = {{"farming:beans"}}
})
-- beanpole
core.register_node("farming:beanpole", {
minetest.register_node("farming:beanpole", {
description = S("Bean Pole (place on soil before planting beans)"),
drawtype = "plantlike",
tiles = {"farming_beanpole.png"},
@ -84,36 +99,40 @@ core.register_node("farming:beanpole", {
drop = "farming:beanpole",
selection_box = farming.select,
groups = {handy = 1, snappy = 3, flammable = 2, attached_node = 1},
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults(),
sounds = farming.sounds.node_sound_leaves_defaults(),
on_place = function(itemstack, placer, pointed_thing)
local pt = pointed_thing
-- check if pointing at a node
if not pt or pt.type ~= "node" then return end
if not pt or pt.type ~= "node" then
return
end
local under = core.get_node(pt.under)
local under = minetest.get_node(pt.under)
-- return if any of the nodes are not registered
if not core.registered_nodes[under.name] then return end
if not minetest.registered_nodes[under.name] then
return
end
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = core.registered_nodes[under.name]
local def = minetest.registered_nodes[under.name]
if def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt)
end
if core.is_protected(pt.above, placer:get_player_name()) then
if minetest.is_protected(pt.above, placer:get_player_name()) then
return
end
local nodename = under.name
if core.get_item_group(nodename, "soil") < 2 then return end
if minetest.get_item_group(nodename, "soil") < 2 then
return
end
local top = {
x = pointed_thing.above.x,
@ -121,11 +140,13 @@ core.register_node("farming:beanpole", {
z = pointed_thing.above.z
}
nodename = core.get_node(top).name
nodename = minetest.get_node(top).name
if nodename ~= "air" then return end
if nodename ~= "air" then
return
end
core.set_node(pointed_thing.above, {name = "farming:beanpole"})
minetest.set_node(pointed_thing.above, {name = "farming:beanpole"})
if not farming.is_creative(placer:get_player_name()) then
itemstack:take_item()
@ -135,10 +156,23 @@ core.register_node("farming:beanpole", {
end
})
-- crop definition
minetest.register_craft({
output = "farming:beanpole",
recipe = {
{"", "", ""},
{"group:stick", "", "group:stick"},
{"group:stick", "", "group:stick"}
}
})
minetest.register_craft({
type = "fuel",
recipe = "farming:beanpole",
burntime = 10
})
-- green bean definition
local def = {
description = S("Green Beans") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_beanpole_1.png"},
visual_scale = 1.90,
@ -156,32 +190,25 @@ local def = {
handy = 1, snappy = 3, flammable = 3, not_in_creative_inventory = 1,
attached_node = 1, growing = 1, plant = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:beanpole_1", table.copy(def))
minetest.register_node("farming:beanpole_1", table.copy(def))
-- stage2
def.tiles = {"farming_beanpole_2.png"}
core.register_node("farming:beanpole_2", table.copy(def))
minetest.register_node("farming:beanpole_2", table.copy(def))
-- stage 3
def.tiles = {"farming_beanpole_3.png"}
core.register_node("farming:beanpole_3", table.copy(def))
minetest.register_node("farming:beanpole_3", table.copy(def))
-- stage 4
def.tiles = {"farming_beanpole_4.png"}
core.register_node("farming:beanpole_4", table.copy(def))
minetest.register_node("farming:beanpole_4", table.copy(def))
-- stage 5 (final)
def.tiles = {"farming_beanpole_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
@ -189,14 +216,13 @@ def.drop = {
items = {
{items = {"farming:beanpole"}, rarity = 1},
{items = {"farming:beans 3"}, rarity = 1},
{items = {"farming:beans"}, rarity = 2},
{items = {"farming:beans"}, rarity = 3}
{items = {"farming:beans 2"}, rarity = 2},
{items = {"farming:beans 2"}, rarity = 3}
}
}
core.register_node("farming:beanpole_5", table.copy(def))
minetest.register_node("farming:beanpole_5", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:beans"] = {
trellis = "farming:beanpole",
crop = "farming:beanpole",
@ -207,8 +233,7 @@ farming.registered_plants["farming:beans"] = {
}
-- wild green bean bush (this is what you find on the map)
core.register_node("farming:beanbush", {
minetest.register_node("farming:beanbush", {
drawtype = "plantlike",
tiles = {"farming_beanbush.png"},
paramtype = "light",
@ -228,13 +253,11 @@ core.register_node("farming:beanbush", {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
compostability = 35, not_in_creative_inventory = 1
},
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
})
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
@ -246,6 +269,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 18, y_max = 38,
y_min = 18,
y_max = 38,
decoration = "farming:beanbush"
})

View File

@ -1,25 +1,41 @@
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- item/seed
core.register_craftitem("farming:beetroot", {
-- beetroot
minetest.register_craftitem("farming:beetroot", {
description = S("Beetroot"),
inventory_image = "farming_beetroot.png",
groups = {compostability = 48, seed = 2, food_beetroot = 1},
on_use = core.item_eat(1),
groups = {compostability = 48, seed = 2, food_beetroot = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:beetroot_1")
end
end,
on_use = minetest.item_eat(1)
})
farming.add_eatable("farming:beetroot", 1)
-- beetroot soup
minetest.register_craftitem("farming:beetroot_soup", {
description = S("Beetroot Soup"),
inventory_image = "farming_beetroot_soup.png",
groups = {flammable = 2},
on_use = minetest.item_eat(6, "farming:bowl")
})
-- crop definition
minetest.register_craft({
output = "farming:beetroot_soup",
recipe = {
{"group:food_beetroot", "group:food_beetroot", "group:food_beetroot"},
{"group:food_beetroot", "group:food_bowl", "group:food_beetroot"}
}
})
-- red dye
minetest.register_craft({
output = a.dye_red,
recipe = {{"group:food_beetroot"}}
})
local def = {
description = S("Beetroot") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_beetroot_1.png"},
paramtype = "light",
@ -33,46 +49,39 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:beetroot_1", table.copy(def))
minetest.register_node("farming:beetroot_1", table.copy(def))
-- stage 2
def.tiles = {"farming_beetroot_2.png"}
core.register_node("farming:beetroot_2", table.copy(def))
minetest.register_node("farming:beetroot_2", table.copy(def))
-- stage 3
def.tiles = {"farming_beetroot_3.png"}
core.register_node("farming:beetroot_3", table.copy(def))
minetest.register_node("farming:beetroot_3", table.copy(def))
-- stage 4
def.tiles = {"farming_beetroot_4.png"}
core.register_node("farming:beetroot_4", table.copy(def))
-- stage 5 (final)
minetest.register_node("farming:beetroot_4", table.copy(def))
-- stage 5
def.tiles = {"farming_beetroot_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:beetroot 2"}, rarity = 1},
max_items = 4, items = {
{items = {"farming:beetroot"}, rarity = 1},
{items = {"farming:beetroot"}, rarity = 2},
{items = {"farming:beetroot"}, rarity = 3}
{items = {"farming:beetroot"}, rarity = 3},
{items = {"farming:beetroot"}, rarity = 4}
}
}
core.register_node("farming:beetroot_5", table.copy(def))
minetest.register_node("farming:beetroot_5", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:beetroot"] = {
crop = "farming:beetroot",
seed = "farming:beetroot",
@ -82,16 +91,9 @@ farming.registered_plants["farming:beetroot"] = {
}
-- mapgen
local spawn_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}
if farming.eth then
spawn_on = {"ethereal:prairie_dirt"}
end
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = spawn_on,
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -101,6 +103,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 20,
y_min = 1,
y_max = 20,
decoration = "farming:beetroot_5"
})

View File

@ -1,28 +1,21 @@
local S = core.get_translator("farming")
local S = farming.translate
-- item/seed
core.register_craftitem("farming:blackberry", {
-- blackberries
minetest.register_craftitem("farming:blackberry", {
description = S("Blackberries"),
inventory_image = "farming_blackberry.png",
groups = {
compostability = 48, seed = 2, food_blackberries = 1, food_blackberry = 1,
food_berry = 1
food_berry = 1, flammable = 2
},
on_use = core.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:blackberry_1")
end
end,
on_use = minetest.item_eat(1)
})
farming.add_eatable("farming:blackberry", 1)
-- crop definition
local def = {
description = S("Blackberry") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_blackberry_1.png"},
paramtype = "light",
@ -35,41 +28,34 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:blackberry_1", table.copy(def))
minetest.register_node("farming:blackberry_1", table.copy(def))
-- stage 2
def.tiles = {"farming_blackberry_2.png"}
core.register_node("farming:blackberry_2", table.copy(def))
minetest.register_node("farming:blackberry_2", table.copy(def))
-- stage 3
def.tiles = {"farming_blackberry_3.png"}
core.register_node("farming:blackberry_3", table.copy(def))
-- stage 4 (final)
minetest.register_node("farming:blackberry_3", table.copy(def))
-- stage 4
def.tiles = {"farming_blackberry_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:blackberry 2"}, rarity = 1},
{items = {"farming:blackberry"}, rarity = 2},
{items = {"farming:blackberry"}, rarity = 3},
{items = {'farming:blackberry 2'}, rarity = 1},
{items = {'farming:blackberry'}, rarity = 2},
{items = {'farming:blackberry'}, rarity = 3},
}
}
core.register_node("farming:blackberry_4", table.copy(def))
minetest.register_node("farming:blackberry_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:blackberry"] = {
crop = "farming:blackberry",
seed = "farming:blackberry",
@ -79,12 +65,9 @@ farming.registered_plants["farming:blackberry"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -94,6 +77,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 3, y_max = 20,
y_min = 3,
y_max = 20,
decoration = "farming:blackberry_4"
})

View File

@ -1,27 +1,61 @@
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- item/seed
core.register_craftitem("farming:blueberries", {
-- blueberries
minetest.register_craftitem("farming:blueberries", {
description = S("Wild Blueberries"),
inventory_image = "farming_blueberries.png",
groups = {
compostability = 48,seed = 2, food_blueberries = 1, food_blueberry = 1,
food_berry = 1
food_berry = 1, flammable = 2
},
on_use = core.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:blueberry_1")
end
end,
on_use = minetest.item_eat(1)
})
farming.add_eatable("farming:blueberries", 1)
-- blueberry muffin (thanks to sosogirl123 @ deviantart.com for muffin image)
minetest.register_craftitem("farming:muffin_blueberry", {
description = S("Blueberry Muffin"),
inventory_image = "farming_blueberry_muffin.png",
on_use = minetest.item_eat(2),
groups = {compostability = 65}
})
-- ctop definition
minetest.register_craft({
output = "farming:muffin_blueberry 2",
recipe = {
{"group:food_blueberries", "group:food_bread", "group:food_blueberries"}
}
})
-- Blueberry Pie
minetest.register_craftitem("farming:blueberry_pie", {
description = S("Blueberry Pie"),
inventory_image = "farming_blueberry_pie.png",
on_use = minetest.item_eat(6),
groups = {compostability = 75}
})
minetest.register_craft({
output = "farming:blueberry_pie",
recipe = {
{"group:food_flour", "group:food_sugar", "group:food_blueberries"},
{"", a.baking_tray, ""}
},
replacements = {{"group:food_baking_tray", "farming:baking_tray"}}
})
-- Blue Dye
minetest.register_craft({
output = a.dye_blue,
recipe = {{"farming:blueberries"}}
})
-- blueberry definition
local def = {
description = S("Blueberry") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_blueberry_1.png"},
paramtype = "light",
@ -34,27 +68,21 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:blueberry_1", table.copy(def))
minetest.register_node("farming:blueberry_1", table.copy(def))
-- stage 2
def.tiles = {"farming_blueberry_2.png"}
core.register_node("farming:blueberry_2", table.copy(def))
minetest.register_node("farming:blueberry_2", table.copy(def))
-- stage 3
def.tiles = {"farming_blueberry_3.png"}
core.register_node("farming:blueberry_3", table.copy(def))
minetest.register_node("farming:blueberry_3", table.copy(def))
-- stage 4 (final)
def.tiles = {"farming_blueberry_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
@ -65,10 +93,9 @@ def.drop = {
{items = {"farming:blueberries"}, rarity = 3}
}
}
core.register_node("farming:blueberry_4", table.copy(def))
minetest.register_node("farming:blueberry_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:blueberries"] = {
crop = "farming:blueberry",
seed = "farming:blueberries",
@ -78,12 +105,9 @@ farming.registered_plants["farming:blueberries"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -93,6 +117,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 3, y_max = 15,
y_min = 3,
y_max = 15,
decoration = "farming:blueberry_4"
})

View File

@ -1,25 +1,18 @@
local S = core.get_translator("farming")
local S = farming.translate
-- item/seed
core.register_craftitem("farming:cabbage", {
-- cabbage
minetest.register_craftitem("farming:cabbage", {
description = S("Cabbage"),
inventory_image = "farming_cabbage.png",
groups = {compostability = 48, seed = 2, food_cabbage = 1},
on_use = core.item_eat(1),
groups = {compostability = 48, seed = 2, food_cabbage = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:cabbage_1")
end
end,
on_use = minetest.item_eat(1)
})
farming.add_eatable("farming:cabbage", 1)
-- crop definition
local def = {
description = S("Cabbage") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_cabbage_1.png"},
paramtype = "light",
@ -33,50 +26,41 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:cabbage_1", table.copy(def))
minetest.register_node("farming:cabbage_1", table.copy(def))
-- stage 2
def.tiles = {"farming_cabbage_2.png"}
core.register_node("farming:cabbage_2", table.copy(def))
minetest.register_node("farming:cabbage_2", table.copy(def))
-- stage 3
def.tiles = {"farming_cabbage_3.png"}
core.register_node("farming:cabbage_3", table.copy(def))
minetest.register_node("farming:cabbage_3", table.copy(def))
-- stage 4
def.tiles = {"farming_cabbage_4.png"}
core.register_node("farming:cabbage_4", table.copy(def))
minetest.register_node("farming:cabbage_4", table.copy(def))
-- stage 5
def.tiles = {"farming_cabbage_5.png"}
core.register_node("farming:cabbage_5", table.copy(def))
-- stage 6 (final)
minetest.register_node("farming:cabbage_5", table.copy(def))
-- stage 6
def.tiles = {"farming_cabbage_6.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
max_items = 2, items = {
{items = {"farming:cabbage 2"}, rarity = 1},
{items = {"farming:cabbage"}, rarity = 3}
{items = {"farming:cabbage 1"}, rarity = 2}
}
}
core.register_node("farming:cabbage_6", table.copy(def))
minetest.register_node("farming:cabbage_6", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:cabbage"] = {
crop = "farming:cabbage",
seed = "farming:cabbage",
@ -86,8 +70,7 @@ farming.registered_plants["farming:cabbage"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
@ -99,6 +82,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 2, y_max = 15,
y_min = 2,
y_max = 15,
decoration = "farming:cabbage_6"
})

View File

@ -1,28 +1,57 @@
-- Original textures from PixelBox texture pack
-- https://forum.core.net/viewtopic.php?id=4990
--[[
Original textures from PixelBox texture pack
https://forum.minetest.net/viewtopic.php?id=4990
]]
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- item/seed
core.register_craftitem("farming:carrot", {
-- carrot
minetest.register_craftitem("farming:carrot", {
description = S("Carrot"),
inventory_image = "farming_carrot.png",
groups = {compostability = 48, seed = 2, food_carrot = 1},
on_use = core.item_eat(4),
groups = {compostability = 48, seed = 2, food_carrot = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:carrot_1")
end
end,
on_use = minetest.item_eat(4)
})
farming.add_eatable("farming:carrot", 4)
-- carrot juice
minetest.register_craftitem("farming:carrot_juice", {
description = S("Carrot Juice"),
inventory_image = "farming_carrot_juice.png",
on_use = minetest.item_eat(4, "vessels:drinking_glass"),
groups = {vessel = 1, drink = 1}
})
-- crop definition
minetest.register_craft({
output = "farming:carrot_juice",
recipe = {
{a.juicer},
{"group:food_carrot"},
{"vessels:drinking_glass"}
},
replacements = {
{"group:food_juicer", "farming:juicer"}
}
})
-- golden carrot
minetest.register_craftitem("farming:carrot_gold", {
description = S("Golden Carrot"),
inventory_image = "farming_carrot_gold.png",
on_use = minetest.item_eat(10)
})
minetest.register_craft({
output = "farming:carrot_gold",
recipe = {{"group:food_carrot", "default:gold_lump"}}
})
-- carrot definition
local def = {
description = S("Carrot") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_carrot_1.png"},
paramtype = "light",
@ -36,67 +65,56 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:carrot_1", table.copy(def))
-- stage 1
minetest.register_node("farming:carrot_1", table.copy(def))
-- stage 2
def.tiles = {"farming_carrot_2.png"}
core.register_node("farming:carrot_2", table.copy(def))
minetest.register_node("farming:carrot_2", table.copy(def))
-- stage 3
def.tiles = {"farming_carrot_3.png"}
core.register_node("farming:carrot_3", table.copy(def))
minetest.register_node("farming:carrot_3", table.copy(def))
-- stage 4
def.tiles = {"farming_carrot_4.png"}
core.register_node("farming:carrot_4", table.copy(def))
minetest.register_node("farming:carrot_4", table.copy(def))
-- stage 5
def.tiles = {"farming_carrot_5.png"}
core.register_node("farming:carrot_5", table.copy(def))
minetest.register_node("farming:carrot_5", table.copy(def))
-- stage 6
def.tiles = {"farming_carrot_6.png"}
core.register_node("farming:carrot_6", table.copy(def))
minetest.register_node("farming:carrot_6", table.copy(def))
-- stage 7
def.tiles = {"farming_carrot_7.png"}
def.drop = {
items = {
{items = {"farming:carrot"}, rarity = 1},
{items = {"farming:carrot"}, rarity = 3}
{items = {"farming:carrot 2"}, rarity = 3}
}
}
core.register_node("farming:carrot_7", table.copy(def))
minetest.register_node("farming:carrot_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_carrot_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:carrot 2"}, rarity = 1},
{items = {"farming:carrot"}, rarity = 2},
{items = {"farming:carrot"}, rarity = 3},
{items = {"farming:carrot 3"}, rarity = 2}
}
}
core.register_node("farming:carrot_8", table.copy(def))
minetest.register_node("farming:carrot_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:carrot"] = {
crop = "farming:carrot",
seed = "farming:carrot",
@ -106,12 +124,17 @@ farming.registered_plants["farming:carrot"] = {
}
-- mapgen
local mg = farming.mapgen == "v6"
core.register_decoration({
def = {
y_max = mg and 30 or 20,
near = mg and "group:water" or nil,
num = mg and 1 or -1,
}
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -121,6 +144,9 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 30,
decoration = "farming:carrot_7"
y_min = 1,
y_max = def.y_max,
decoration = "farming:carrot_8",
spawn_by = def.near,
num_spawn_by = def.num
})

View File

@ -1,25 +1,59 @@
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- item/seed
core.register_craftitem("farming:chili_pepper", {
-- chili pepper
minetest.register_craftitem("farming:chili_pepper", {
description = S("Chili Pepper"),
inventory_image = "farming_chili_pepper.png",
groups = {compostability = 48, seed = 2, food_chili_pepper = 1},
on_use = core.item_eat(2),
groups = {compostability = 48, seed = 2, food_chili_pepper = 1, flammable = 4},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:chili_1")
end
end,
on_use = minetest.item_eat(2)
})
farming.add_eatable("farming:chili_pepper", 2)
-- bowl of chili
minetest.register_craftitem("farming:chili_bowl", {
description = S("Bowl of Chili"),
inventory_image = "farming_chili_bowl.png",
on_use = minetest.item_eat(8, a.bowl),
groups = {compostability = 65}
})
-- crop definition
minetest.register_craft({
output = "farming:chili_bowl",
recipe = {
{"group:food_chili_pepper", "group:food_rice", "group:food_tomato"},
{"group:food_beans", "group:food_bowl", ""}
}
})
-- chili can be used for red dye
minetest.register_craft({
output = a.dye_red,
recipe = {{"farming:chili_pepper"}}
})
-- chili powder
minetest.register_craftitem("farming:chili_powder", {
description = S("Chili Powder"),
on_use = minetest.item_eat(-1),
inventory_image = "farming_chili_powder.png",
groups = {compostability = 45}
})
minetest.register_craft({
output = "farming:chili_powder",
recipe = {
{"farming:chili_pepper", a.mortar_pestle}
},
replacements = {{"farming:mortar_pestle", "farming:mortar_pestle"}}
})
-- chili definition
local def = {
description = S("Chili Pepper") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_chili_1.png"},
paramtype = "light",
@ -33,62 +67,49 @@ local def = {
handy = 1, snappy = 3, flammable = 4, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:chili_1", table.copy(def))
minetest.register_node("farming:chili_1", table.copy(def))
-- stage 2
def.tiles = {"farming_chili_2.png"}
core.register_node("farming:chili_2", table.copy(def))
minetest.register_node("farming:chili_2", table.copy(def))
-- stage 3
def.tiles = {"farming_chili_3.png"}
core.register_node("farming:chili_3", table.copy(def))
minetest.register_node("farming:chili_3", table.copy(def))
-- stage 4
def.tiles = {"farming_chili_4.png"}
core.register_node("farming:chili_4", table.copy(def))
minetest.register_node("farming:chili_4", table.copy(def))
-- stage 5
def.tiles = {"farming_chili_5.png"}
core.register_node("farming:chili_5", table.copy(def))
minetest.register_node("farming:chili_5", table.copy(def))
-- stage 6
def.tiles = {"farming_chili_6.png"}
core.register_node("farming:chili_6", table.copy(def))
minetest.register_node("farming:chili_6", table.copy(def))
-- stage 7
def.tiles = {"farming_chili_7.png"}
core.register_node("farming:chili_7", table.copy(def))
minetest.register_node("farming:chili_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_chili_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:chili_pepper 2"}, rarity = 1},
{items = {"farming:chili_pepper"}, rarity = 2},
{items = {"farming:chili_pepper"}, rarity = 3},
{items = {"farming:chili_pepper"}, rarity = 4}
{items = {"farming:chili_pepper 3"}, rarity = 1},
{items = {"farming:chili_pepper 2"}, rarity = 2}
}
}
core.register_node("farming:chili_8", table.copy(def))
minetest.register_node("farming:chili_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:chili_pepper"] = {
crop = "farming:chili",
seed = "farming:chili_pepper",
@ -98,12 +119,11 @@ farming.registered_plants["farming:chili_pepper"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "default:dirt_with_rainforest_litter",
"mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
"mcl_core:dirt_with_grass"
},
sidelen = 16,
noise_params = {
@ -114,7 +134,9 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 45,
decoration = "farming:chili_8",
spawn_by = "group:tree", num_spawn_by = 1
y_min = 5,
y_max = 35,
decoration = {"farming:chili_8"},
spawn_by = "group:tree",
num_spawn_by = 1
})

View File

@ -1,5 +1,6 @@
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- place cocoa
local function place_cocoa(itemstack, placer, pointed_thing, plantname)
@ -7,24 +8,27 @@ local function place_cocoa(itemstack, placer, pointed_thing, plantname)
local pt = pointed_thing
-- check if pointing at a node
if not pt or pt.type ~= "node" then return end
if not pt or pt.type ~= "node" then
return
end
local under = core.get_node(pt.under)
local under = minetest.get_node(pt.under)
-- return if any of the nodes are not registered
if not core.registered_nodes[under.name] then return end
if not minetest.registered_nodes[under.name] then
return
end
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = core.registered_nodes[under.name]
local def = minetest.registered_nodes[under.name]
if placer and itemstack and def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt)
end
-- check if pointing at jungletree
if (under.name ~= "default:jungletree" and under.name ~= "mcl_core:jungletree")
or core.get_node(pt.above).name ~= "air" then
or minetest.get_node(pt.above).name ~= "air" then
return
end
@ -32,12 +36,14 @@ local function place_cocoa(itemstack, placer, pointed_thing, plantname)
local name = placer and placer:get_player_name() or ""
-- check for protection
if core.is_protected(pt.above, name) then return end
if minetest.is_protected(pt.above, name) then
return
end
-- add the node and remove 1 item from the itemstack
core.set_node(pt.above, {name = plantname})
minetest.set_node(pt.above, {name = plantname})
core.sound_play("default_place_node", {pos = pt.above, gain = 1.0}, true)
minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0})
if placer and not farming.is_creative(placer:get_player_name()) then
@ -46,30 +52,99 @@ local function place_cocoa(itemstack, placer, pointed_thing, plantname)
-- check for refill
if itemstack:get_count() == 0 then
core.after(0.20, farming.refill_plant, placer,
"farming:cocoa_beans_raw", placer:get_wield_index())
minetest.after(0.20,
farming.refill_plant,
placer,
"farming:cocoa_beans_raw",
placer:get_wield_index()
)
end
end
return itemstack
end
-- item/seed
core.register_craftitem("farming:cocoa_beans_raw", {
-- cocoa beans
minetest.register_craftitem("farming:cocoa_beans_raw", {
description = S("Raw Cocoa Beans"),
inventory_image = "farming_cocoa_beans.png^[brighten",
groups = {compostability = 48, seed = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return place_cocoa(itemstack, placer, pointed_thing, "farming:cocoa_1")
end
})
-- crop definition
minetest.register_craftitem("farming:cocoa_beans", {
description = S("Cocoa Beans"),
inventory_image = "farming_cocoa_beans.png",
groups = {compostability = 65, food_cocoa = 1, flammable = 2}
})
minetest.register_craft({
type = "cooking",
cooktime = 5,
output = "farming:cocoa_beans",
recipe = "farming:cocoa_beans_raw"
})
minetest.register_craft( {
output = a.dye_brown,
recipe = {{"farming:cocoa_beans"}}
})
-- chocolate cookie
minetest.register_craftitem("farming:cookie", {
description = S("Cookie"),
inventory_image = "farming_cookie.png",
on_use = minetest.item_eat(2)
})
minetest.register_craft( {
output = "farming:cookie 8",
recipe = {
{"group:food_wheat", "group:food_cocoa", "group:food_wheat" }
}
})
-- bar of dark chocolate (thanks to Ice Pandora for her deviantart.com chocolate tutorial)
minetest.register_craftitem("farming:chocolate_dark", {
description = S("Bar of Dark Chocolate"),
inventory_image = "farming_chocolate_dark.png",
on_use = minetest.item_eat(3)
})
minetest.register_craft( {
output = "farming:chocolate_dark",
recipe = {
{"group:food_cocoa", "group:food_cocoa", "group:food_cocoa"}
}
})
-- chocolate block
minetest.register_node("farming:chocolate_block", {
description = S("Chocolate Block"),
tiles = {"farming_chocolate_block.png"},
is_ground_content = false,
groups = {cracky = 2, oddly_breakable_by_hand = 2},
sounds = farming.sounds.node_sound_stone_defaults()
})
minetest.register_craft({
output = "farming:chocolate_block",
recipe = {
{"farming:chocolate_dark", "farming:chocolate_dark", "farming:chocolate_dark"},
{"farming:chocolate_dark", "farming:chocolate_dark", "farming:chocolate_dark"},
{"farming:chocolate_dark", "farming:chocolate_dark", "farming:chocolate_dark"}
}
})
minetest.register_craft({
output = "farming:chocolate_dark 9",
recipe = {{"farming:chocolate_block"}}
})
-- cocoa definition
local def = {
description = S("Cocoa Beans") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_cocoa_1.png"},
paramtype = "light",
@ -83,14 +158,10 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, growing = 1,
not_in_creative_inventory = 1, leafdecay = 1, leafdecay_drop = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults(),
-- custom function that returns True when conditions are met
sounds = farming.sounds.node_sound_leaves_defaults(),
growth_check = function(pos, node_name)
if core.find_node_near(pos, 1,
if minetest.find_node_near(pos, 1,
{"default:jungletree", "mcl_core:jungletree"}) then
return true -- place next growth stage
end
@ -100,40 +171,35 @@ local def = {
}
-- stage 1
core.register_node("farming:cocoa_1", table.copy(def))
minetest.register_node("farming:cocoa_1", table.copy(def))
-- stage 2
def.tiles = {"farming_cocoa_2.png"}
core.register_node("farming:cocoa_2", table.copy(def))
minetest.register_node("farming:cocoa_2", table.copy(def))
-- stage3
def.tiles = {"farming_cocoa_3.png"}
def.drop = {
items = {
{items = {"farming:cocoa_beans_raw"}, rarity = 1}
{items = {"farming:cocoa_beans_raw 1"}, rarity = 1}
}
}
core.register_node("farming:cocoa_3", table.copy(def))
minetest.register_node("farming:cocoa_3", table.copy(def))
-- stage 4 (final)
def.tiles = {"farming_cocoa_4.png"}
def.groups.growing = nil
def.growth_check = nil
def.drop = {
items = {
{items = {"farming:cocoa_beans_raw 2"}, rarity = 1},
{items = {"farming:cocoa_beans_raw"}, rarity = 2},
{items = {"farming:cocoa_beans_raw"}, rarity = 3}
{items = {"farming:cocoa_beans_raw 1"}, rarity = 2},
{items = {"farming:cocoa_beans_raw 1"}, rarity = 4}
}
}
core.register_node("farming:cocoa_4", table.copy(def))
minetest.register_node("farming:cocoa_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:cocoa_beans"] = {
trellis = "default:jungletree",
crop = "farming:cocoa",
@ -143,23 +209,25 @@ farming.registered_plants["farming:cocoa_beans"] = {
steps = 4
}
-- localize math.random for speed
local random = math.random
-- add random cocoa pods to jungle tree's
minetest.register_on_generated(function(minp, maxp)
local random = math.random -- localise for speed
core.register_on_generated(function(minp, maxp)
if maxp.y < 0 then return end
if maxp.y < 0 then
return
end
local pos, dir
local cocoa = core.find_nodes_in_area(minp, maxp,
local cocoa = minetest.find_nodes_in_area(minp, maxp,
{"default:jungletree", "mcl_core:jungletree"})
for n = 1, #cocoa do
pos = cocoa[n]
if core.find_node_near(pos, 1,
if minetest.find_node_near(pos, 1,
{"default:jungleleaves", "moretrees:jungletree_leaves_green",
"mcl_core:jungleleaves"}) then
@ -172,12 +240,12 @@ core.register_on_generated(function(minp, maxp)
end
if dir < 5
and core.get_node(pos).name == "air"
and core.get_node_light(pos) > 12 then
and minetest.get_node(pos).name == "air"
and minetest.get_node_light(pos) > 12 then
--print ("Cocoa Pod added at " .. core.pos_to_string(pos))
--print ("Cocoa Pod added at " .. minetest.pos_to_string(pos))
core.set_node(pos, {
minetest.swap_node(pos, {
name = "farming:cocoa_" .. tostring(random(4))
})
end

View File

@ -1,22 +1,51 @@
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- item/seed
core.register_craftitem("farming:coffee_beans", {
-- coffee
minetest.register_craftitem("farming:coffee_beans", {
description = S("Coffee Beans"),
inventory_image = "farming_coffee_beans.png",
groups = {compostability = 48, seed = 2, food_coffee = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:coffee_1")
end
})
-- crop definition
-- cup of coffee
minetest.register_node("farming:coffee_cup", {
description = S("Cup of Coffee"),
drawtype = "torchlike",
tiles = {"farming_coffee_cup.png"},
inventory_image = "farming_coffee_cup.png",
wield_image = "farming_coffee_cup.png",
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25}
},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1, drink = 1},
on_use = minetest.item_eat(2, "vessels:drinking_glass"),
sounds = farming.sounds.node_sound_glass_defaults()
})
minetest.register_alias("farming:coffee_cup_hot", "farming:coffee_cup")
minetest.register_alias("farming:drinking_cup", "vessels:drinking_glass")
minetest.register_craft( {
output = "farming:coffee_cup",
recipe = {
{"group:food_coffee", "group:food_glass_water", a.saucepan}
},
replacements = {
{"group:food_saucepan", "farming:saucepan"}
}
})
-- coffee definition
local def = {
description = S("Coffee") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_coffee_1.png"},
paramtype = "light",
@ -30,46 +59,38 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:coffee_1", table.copy(def))
minetest.register_node("farming:coffee_1", table.copy(def))
-- stage 2
def.tiles = {"farming_coffee_2.png"}
core.register_node("farming:coffee_2", table.copy(def))
minetest.register_node("farming:coffee_2", table.copy(def))
-- stage 3
def.tiles = {"farming_coffee_3.png"}
core.register_node("farming:coffee_3", table.copy(def))
minetest.register_node("farming:coffee_3", table.copy(def))
-- stage 4
def.tiles = {"farming_coffee_4.png"}
core.register_node("farming:coffee_4", table.copy(def))
minetest.register_node("farming:coffee_4", table.copy(def))
-- stage 5 (final)
def.tiles = {"farming_coffee_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:coffee_beans 2"}, rarity = 1},
{items = {"farming:coffee_beans"}, rarity = 2},
{items = {"farming:coffee_beans"}, rarity = 3}
{items = {"farming:coffee_beans 2"}, rarity = 2},
{items = {"farming:coffee_beans 2"}, rarity = 3}
}
}
core.register_node("farming:coffee_5", table.copy(def))
minetest.register_node("farming:coffee_5", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:coffee"] = {
crop = "farming:coffee",
seed = "farming:coffee_beans",
@ -79,20 +100,18 @@ farming.registered_plants["farming:coffee"] = {
}
-- mapgen
local mg = farming.mapgen == "v6"
local spawn_on = {
"default:dirt_with_dry_grass", "default:dirt_with_rainforest_litter",
"default:dry_dirt_with_dry_grass", "mcl_core:dirt_with_grass",
"ethereal:prairie_dirt"
def = {
y_max = mg and 50 or 55,
spawn_on = mg and {"default:dirt_with_grass"} or {"default:dirt_with_dry_grass",
"default:dirt_with_rainforest_litter", "default:dry_dirt_with_dry_grass",
"mcl_core:dirt_with_grass"}
}
if farming.mapgen == "v6" then
spawn_on = {"default:dirt_with_grass"}
end
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = spawn_on,
place_on = def.spawn_on,
sidelen = 16,
noise_params = {
offset = 0,
@ -102,6 +121,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 20, y_max = 55,
y_min = 20,
y_max = def.y_max,
decoration = "farming:coffee_5"
})

View File

@ -4,27 +4,109 @@
http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/wip-mods/1440575-1-2-5-generation-minecraft-beta-1-2-farming-and
]]
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- item/seed
core.register_craftitem("farming:corn", {
-- corn
minetest.register_craftitem("farming:corn", {
description = S("Corn"),
inventory_image = "farming_corn.png",
groups = {compostability = 45, seed = 2, food_corn = 1},
on_use = core.item_eat(3),
groups = {compostability = 45, seed = 2, food_corn = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:corn_1")
end
end,
on_use = minetest.item_eat(3)
})
farming.add_eatable("farming:corn", 3)
-- corn on the cob (texture by TenPlus1)
minetest.register_craftitem("farming:corn_cob", {
description = S("Corn on the Cob"),
inventory_image = "farming_corn_cob.png",
groups = {compostability = 65, food_corn_cooked = 1, flammable = 2},
on_use = minetest.item_eat(5)
})
-- crop definition
minetest.register_craft({
type = "cooking",
cooktime = 10,
output = "farming:corn_cob",
recipe = "group:food_corn"
})
-- popcorn
minetest.register_craftitem("farming:popcorn", {
description = S("Popcorn"),
inventory_image = "farming_popcorn.png",
groups = {compostability = 55, food_popcorn = 1, flammable = 2},
on_use = minetest.item_eat(4)
})
minetest.register_craft({
output = "farming:popcorn",
recipe = {
{"group:food_oil", "group:food_corn", a.pot}
},
replacements = {
{"group:food_pot", "farming:pot"},
{"group:food_oil", "vessels:glass_bottle"}
}
})
-- cornstarch
minetest.register_craftitem("farming:cornstarch", {
description = S("Cornstarch"),
inventory_image = "farming_cornstarch.png",
groups = {food_cornstarch = 1, food_gelatin = 1, flammable = 2, compostability = 65}
})
minetest.register_craft({
output = "farming:cornstarch",
recipe = {
{a.mortar_pestle, "group:food_corn_cooked", a.baking_tray},
{"", "group:food_bowl", ""},
},
replacements = {
{"group:food_mortar_pestle", "farming:mortar_pestle"},
{"group:food_baking_tray", "farming:baking_tray"}
}
})
-- ethanol (thanks to JKMurray for this idea)
minetest.register_node("farming:bottle_ethanol", {
description = S("Bottle of Ethanol"),
drawtype = "plantlike",
tiles = {"farming_bottle_ethanol.png"},
inventory_image = "farming_bottle_ethanol.png",
wield_image = "farming_bottle_ethanol.png",
paramtype = "light",
is_ground_content = false,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
sounds = farming.sounds.node_sound_glass_defaults()
})
minetest.register_craft( {
output = "farming:bottle_ethanol",
recipe = {
{"group:food_corn", "group:food_corn", "group:food_corn"},
{"group:food_corn", a.glass_bottle, "group:food_corn"},
{"group:food_corn", "group:food_corn", "group:food_corn"}
}
})
minetest.register_craft({
type = "fuel",
recipe = "farming:bottle_ethanol",
burntime = 80,
replacements = {{"farming:bottle_ethanol", a.glass_bottle}}
})
-- corn definition
local def = {
description = S("Corn") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_corn_1.png"},
paramtype = "light",
@ -38,68 +120,58 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:corn_1", table.copy(def))
minetest.register_node("farming:corn_1", table.copy(def))
-- stage 2
def.tiles = {"farming_corn_2.png"}
core.register_node("farming:corn_2", table.copy(def))
minetest.register_node("farming:corn_2", table.copy(def))
-- stage 3
def.tiles = {"farming_corn_3.png"}
core.register_node("farming:corn_3", table.copy(def))
minetest.register_node("farming:corn_3", table.copy(def))
-- stage 4
def.tiles = {"farming_corn_4.png"}
core.register_node("farming:corn_4", table.copy(def))
minetest.register_node("farming:corn_4", table.copy(def))
-- stage 5
def.tiles = {"farming_corn_5.png"}
core.register_node("farming:corn_5", table.copy(def))
minetest.register_node("farming:corn_5", table.copy(def))
-- stage 6
def.tiles = {"farming_corn_6.png"}
def.visual_scale = 1.9
core.register_node("farming:corn_6", table.copy(def))
minetest.register_node("farming:corn_6", table.copy(def))
-- stage 7
def.tiles = {"farming_corn_7.png"}
def.drop = {
items = {
{items = {"farming:corn"}, rarity = 1},
{items = {"farming:corn"}, rarity = 2},
{items = {"farming:corn"}, rarity = 3}
}
}
core.register_node("farming:corn_7", table.copy(def))
minetest.register_node("farming:corn_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_corn_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:corn 2"}, rarity = 1},
{items = {"farming:corn"}, rarity = 2},
{items = {"farming:corn"}, rarity = 3}
{items = {"farming:corn 2"}, rarity = 2},
{items = {"farming:corn 2"}, rarity = 2}
}
}
core.register_node("farming:corn_8", table.copy(def))
minetest.register_node("farming:corn_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:corn"] = {
crop = "farming:corn",
seed = "farming:corn",
@ -109,12 +181,9 @@ farming.registered_plants["farming:corn"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -124,6 +193,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 12, y_max = 27,
y_min = 12,
y_max = 25,
decoration = "farming:corn_7"
})

View File

@ -1,9 +1,35 @@
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- seed
-- wild cotton as a source of cotton seed and a chance of cotton itself
minetest.register_node("farming:cotton_wild", {
description = S("Wild Cotton"),
drawtype = "plantlike",
waving = 1,
tiles = {"farming_cotton_wild.png"},
inventory_image = "farming_cotton_wild.png",
wield_image = "farming_cotton_wild.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {handy = 1, snappy = 3, attached_node = 1, flammable = 4, compostability = 60},
drop = {
items = {
{items = {"farming:cotton"}, rarity = 2},
{items = {"farming:seed_cotton"}, rarity = 1}
}
},
sounds = farming.sounds.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-6 / 16, -8 / 16, -6 / 16, 6 / 16, 5 / 16, 6 / 16}
}
})
core.register_node("farming:seed_cotton", {
-- cotton seeds
minetest.register_node("farming:seed_cotton", {
description = S("Cotton Seed"),
tiles = {"farming_cotton_seed.png"},
inventory_image = "farming_cotton_seed.png",
@ -13,36 +39,70 @@ core.register_node("farming:seed_cotton", {
compostability = 48, seed = 1, snappy = 3, attached_node = 1,
flammable = 4, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
paramtype = "light",
paramtype2 = "wallmounted",
walkable = false,
sunlight_propagates = true,
selection_box = farming.select,
next_plant = "farming:cotton_1",
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_cotton")
end,
on_timer = function(pos, elapsed)
core.set_node(pos, {name = "farming:cotton_1", param2 = 1})
minetest.set_node(pos, {name = "farming:cotton_1", param2 = 1})
end
})
-- item
core.register_craftitem("farming:cotton", {
-- cotton
minetest.register_craftitem("farming:cotton", {
description = S("Cotton"),
inventory_image = "farming_cotton.png",
groups = {flammable = 4, compostability = 50}
})
-- crop definition
-- string
if not farming.mcl then
minetest.register_craftitem("farming:string", {
description = S("String"),
inventory_image = "farming_string.png",
groups = {flammable = 2}
})
end
-- cotton to wool
minetest.register_craft({
output = a.wool,
recipe = {
{"farming:cotton", "farming:cotton"},
{"farming:cotton", "farming:cotton"}
}
})
-- cotton to string
minetest.register_craft({
output = a.string .. " 2",
recipe = {
{"farming:cotton"},
{"farming:cotton"}
}
})
-- can be used as fuel
minetest.register_craft({
type = "fuel",
recipe = "farming:string",
burntime = 1
})
minetest.register_craft({
type = "fuel",
recipe = "farming:cotton",
burntime = 1
})
-- cotton definition
local def = {
description = S("Cotton") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_cotton_1.png"},
paramtype = "light",
@ -56,58 +116,56 @@ local def = {
handy = 1, snappy = 3, flammable = 4, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:cotton_1", table.copy(def))
minetest.register_node("farming:cotton_1", table.copy(def))
-- stage 2
def.tiles = {"farming_cotton_2.png"}
core.register_node("farming:cotton_2", table.copy(def))
minetest.register_node("farming:cotton_2", table.copy(def))
-- stage 3
def.tiles = {"farming_cotton_3.png"}
core.register_node("farming:cotton_3", table.copy(def))
minetest.register_node("farming:cotton_3", table.copy(def))
-- stage 4
def.tiles = {"farming_cotton_4.png"}
core.register_node("farming:cotton_4", table.copy(def))
minetest.register_node("farming:cotton_4", table.copy(def))
-- stage 5
def.tiles = {"farming_cotton_5.png"}
def.drop = {
items = {
{items = {"farming:seed_cotton"}, rarity = 1}
}
}
core.register_node("farming:cotton_5", table.copy(def))
minetest.register_node("farming:cotton_5", table.copy(def))
-- stage 6
def.tiles = {"farming_cotton_6.png"}
core.register_node("farming:cotton_6", table.copy(def))
def.drop = {
items = {
{items = {"farming:cotton"}, rarity = 1},
{items = {"farming:cotton"}, rarity = 2}
}
}
minetest.register_node("farming:cotton_6", table.copy(def))
-- stage 7
def.tiles = {"farming_cotton_7.png"}
def.drop = {
items = {
{items = {"farming:cotton"}, rarity = 1},
{items = {"farming:cotton"}, rarity = 2},
{items = {"farming:seed_cotton"}, rarity = 1}
{items = {"farming:seed_cotton"}, rarity = 1},
{items = {"farming:seed_cotton"}, rarity = 2}
}
}
core.register_node("farming:cotton_7", table.copy(def))
minetest.register_node("farming:cotton_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_cotton_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
@ -121,10 +179,9 @@ def.drop = {
{items = {"farming:seed_cotton"}, rarity = 3}
}
}
core.register_node("farming:cotton_8", table.copy(def))
minetest.register_node("farming:cotton_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:cotton"] = {
crop = "farming:cotton",
seed = "farming:seed_cotton",
@ -133,63 +190,6 @@ farming.registered_plants["farming:cotton"] = {
steps = 8
}
-- wild cotton (this is what you find on the map)
core.register_node("farming:cotton_wild", {
description = S("Wild Cotton"),
drawtype = "plantlike",
waving = 1,
tiles = {"farming_cotton_wild.png"},
inventory_image = "farming_cotton_wild.png",
wield_image = "farming_cotton_wild.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {handy = 1, snappy = 3, attached_node = 1, flammable = 4, compostability = 60},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
drop = {
items = {
{items = {"farming:cotton"}, rarity = 2},
{items = {"farming:seed_cotton"}, rarity = 1}
}
},
sounds = farming.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-6 / 16, -8 / 16, -6 / 16, 6 / 16, 5 / 16, 6 / 16}
}
})
-- mapgen
local spawn_on = {
"default:dry_dirt_with_dry_grass", "default:dirt_with_dry_grass",
"mcl_core:dirt_with_grass"
}
if farming.mapgen == "v6" then
spawn_on = {"default:dirt_with_grass"}
end
core.register_decoration({
name = "farming:cotton_wild",
deco_type = "simple",
place_on = spawn_on,
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.cotton,
spread = {x = 100, y = 100, z = 100},
seed = 4242,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 120,
decoration = "farming:cotton_wild"
})
--[[ Cotton using api
farming.register_plant("farming:cotton", {
description = "Cotton seed",
@ -197,3 +197,31 @@ farming.register_plant("farming:cotton", {
groups = {flammable = 2},
steps = 8,
})]]
-- mapgen
local mg = farming.mapgen == "v6"
def = {
grow_on = mg and {"default:dirt_with_grass"} or {"default:dry_dirt_with_dry_grass",
"mcl_core:dirt_with_grass"},
biome = mg and {"jungle"} or {"savanna"}
}
minetest.register_decoration({
name = "farming:cotton_wild",
deco_type = "simple",
place_on = def.grow_on,
sidelen = 16,
noise_params = {
offset = -0.1,
scale = 0.1,
spread = {x = 50, y = 50, z = 50},
seed = 4242,
octaves = 3,
persist = 0.7
},
biomes = def.biome,
y_max = 31000,
y_min = 1,
decoration = "farming:cotton_wild"
})

View File

@ -1,30 +1,24 @@
--[[
Original textures from DocFarming mod
https://forum.core.net/viewtopic.php?id=3948
https://forum.minetest.net/viewtopic.php?id=3948
]]
local S = core.get_translator("farming")
local S = farming.translate
-- item/seed
core.register_craftitem("farming:cucumber", {
-- cucumber
minetest.register_craftitem("farming:cucumber", {
description = S("Cucumber"),
inventory_image = "farming_cucumber.png",
groups = {compostability = 48, seed = 2, food_cucumber = 1},
on_use = core.item_eat(4),
groups = {compostability = 48, seed = 2, food_cucumber = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:cucumber_1")
end
end,
on_use = minetest.item_eat(4)
})
farming.add_eatable("farming:cucumber", 4)
-- crop definition
-- cucumber definition
local def = {
description = S("Cucumber") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_cucumber_1.png"},
paramtype = "light",
@ -36,40 +30,33 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:cucumber_1", table.copy(def))
minetest.register_node("farming:cucumber_1", table.copy(def))
-- stage 2
def.tiles = {"farming_cucumber_2.png"}
core.register_node("farming:cucumber_2", table.copy(def))
minetest.register_node("farming:cucumber_2", table.copy(def))
-- stage 3
def.tiles = {"farming_cucumber_3.png"}
core.register_node("farming:cucumber_3", table.copy(def))
minetest.register_node("farming:cucumber_3", table.copy(def))
-- stage 4 (final)
def.tiles = {"farming_cucumber_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:cucumber 2"}, rarity = 1},
{items = {"farming:cucumber"}, rarity = 2}
{items = {"farming:cucumber 2"}, rarity = 2}
}
}
core.register_node("farming:cucumber_4", table.copy(def))
minetest.register_node("farming:cucumber_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:cucumber"] = {
crop = "farming:cucumber",
seed = "farming:cucumber",
@ -79,12 +66,16 @@ farming.registered_plants["farming:cucumber"] = {
}
-- mapgen
local mg = farming.mapgen == "v6"
core.register_decoration({
def = {
near = mg and "group:water" or nil,
num = mg and 1 or -1,
}
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -94,7 +85,9 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 20,
y_min = 1,
y_max = 20,
decoration = "farming:cucumber_4",
spawn_by = {"group:water", "group:sand"}, num_spawn_by = 1
spawn_by = def.near,
num_spawn_by = def.num
})

View File

@ -1,25 +1,19 @@
local S = core.get_translator("farming")
local S = farming.translate
-- item/seed
core.register_craftitem("farming:eggplant", {
-- eggplant
minetest.register_craftitem("farming:eggplant", {
description = S("Eggplant"),
inventory_image = "farming_eggplant.png",
groups = {compostability = 48, seed = 2, food_eggplant = 1},
on_use = core.item_eat(3),
groups = {compostability = 48, seed = 2, food_eggplant = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:eggplant_1")
end
end,
on_use = minetest.item_eat(3)
})
farming.add_eatable("farming:eggplant", 3)
-- crop definition
-- definition
local def = {
description = S("Eggplant") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_eggplant_1.png"},
paramtype = "light",
@ -34,22 +28,17 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:eggplant_1", table.copy(def))
minetest.register_node("farming:eggplant_1", table.copy(def))
-- stage 2
def.tiles = {"farming_eggplant_2.png"}
core.register_node("farming:eggplant_2", table.copy(def))
minetest.register_node("farming:eggplant_2", table.copy(def))
-- stage 3
def.tiles = {"farming_eggplant_3.png"}
def.drop = {
items = {
@ -57,23 +46,21 @@ def.drop = {
{items = {"farming:eggplant"}, rarity = 3}
}
}
core.register_node("farming:eggplant_3", table.copy(def))
-- stage 4 (final)
minetest.register_node("farming:eggplant_3", table.copy(def))
-- stage 4
def.tiles = {"farming_eggplant_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:eggplant 2"}, rarity = 1},
{items = {"farming:eggplant"}, rarity = 2}
{items = {"farming:eggplant 2"}, rarity = 2}
}
}
core.register_node("farming:eggplant_4", table.copy(def))
minetest.register_node("farming:eggplant_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:eggplant"] = {
crop = "farming:eggplant",
seed = "farming:eggplant",
@ -83,20 +70,21 @@ farming.registered_plants["farming:eggplant"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
offset = -0.1,
scale = farming.eggplant,
spread = {x = 100, y = 100, z = 100},
seed = 356,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 40,
decoration = "farming:eggplant_3",
biomes = {"deciduous_forest"},
y_max = 31000,
y_min = 1,
decoration = "farming:eggplant_4",
param2 = 3
})

View File

@ -1,22 +1,82 @@
local S = core.get_translator("farming")
local S = farming.translate
-- item/seed
core.register_craftitem("farming:garlic_clove", {
-- garlic clove
minetest.register_craftitem("farming:garlic_clove", {
description = S("Garlic clove"),
inventory_image = "crops_garlic_clove.png",
groups = {compostability = 35, seed = 2, food_garlic_clove = 1, flammable = 3},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:garlic_1")
end
})
-- crop definition
-- garlic bulb
minetest.register_craftitem("farming:garlic", {
description = S("Garlic"),
inventory_image = "crops_garlic.png",
on_use = minetest.item_eat(1),
groups = {food_garlic = 1, flammable = 3, compostability = 55}
})
minetest.register_craft({
output = "farming:garlic_clove 8",
recipe = {{"farming:garlic"}}
})
minetest.register_craft({
output = "farming:garlic",
recipe = {
{"farming:garlic_clove", "farming:garlic_clove", "farming:garlic_clove"},
{"farming:garlic_clove", "", "farming:garlic_clove"},
{"farming:garlic_clove", "farming:garlic_clove", "farming:garlic_clove"}
}
})
-- garlic braid
minetest.register_node("farming:garlic_braid", {
description = S("Garlic Braid"),
inventory_image = "crops_garlic_braid.png",
wield_image = "crops_garlic_braid.png",
drawtype = "nodebox",
use_texture_alpha = "clip",
paramtype = "light",
paramtype2 = "facedir",
tiles = {
"crops_garlic_braid_top.png",
"crops_garlic_braid.png",
"crops_garlic_braid_side.png^[transformFx",
"crops_garlic_braid_side.png",
"crops_garlic_braid.png",
"crops_garlic_braid.png"
},
groups = {vessel = 1, dig_immediate = 3, flammable = 3, compostability = 65},
sounds = farming.sounds.node_sound_leaves_defaults(),
node_box = {
type = "fixed",
fixed = {
{-0.1875, -0.5, 0.5, 0.1875, 0.5, 0.125}
}
}
})
minetest.register_craft({
output = "farming:garlic_braid",
recipe = {
{"farming:garlic", "farming:garlic", "farming:garlic"},
{"farming:garlic", "farming:garlic", "farming:garlic"},
{"farming:garlic", "farming:garlic", "farming:garlic"}
}
})
minetest.register_craft({
type = "shapeless",
output = "farming:garlic 9",
recipe = {"farming:garlic_braid"}
})
-- crop definition
local def = {
description = S("Garlic") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"crops_garlic_plant_1.png"},
paramtype = "light",
@ -32,46 +92,38 @@ local def = {
handy = 1, snappy = 3, flammable = 3, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:garlic_1", table.copy(def))
minetest.register_node("farming:garlic_1", table.copy(def))
-- stage 2
def.tiles = {"crops_garlic_plant_2.png"}
core.register_node("farming:garlic_2", table.copy(def))
minetest.register_node("farming:garlic_2", table.copy(def))
-- stage 3
def.tiles = {"crops_garlic_plant_3.png"}
core.register_node("farming:garlic_3", table.copy(def))
minetest.register_node("farming:garlic_3", table.copy(def))
-- stage 4
def.tiles = {"crops_garlic_plant_4.png"}
core.register_node("farming:garlic_4", table.copy(def))
minetest.register_node("farming:garlic_4", table.copy(def))
-- stage 5
def.tiles = {"crops_garlic_plant_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:garlic 2"}, rarity = 1},
{items = {"farming:garlic 3"}, rarity = 1},
{items = {"farming:garlic"}, rarity = 2},
{items = {"farming:garlic"}, rarity = 3}
{items = {"farming:garlic"}, rarity = 5}
}
}
core.register_node("farming:garlic_5", table.copy(def))
minetest.register_node("farming:garlic_5", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:garlic"] = {
crop = "farming:garlic",
seed = "farming:garlic_clove",
@ -81,13 +133,9 @@ farming.registered_plants["farming:garlic"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt",
"default:dirt_with_rainforest_litter"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -97,7 +145,9 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 3, y_max = 45,
y_min = 3,
y_max = 35,
decoration = "farming:garlic_5",
spawn_by = "group:tree", num_spawn_by = 1
spawn_by = "group:tree",
num_spawn_by = 1
})

View File

@ -1,25 +1,19 @@
local S = core.get_translator("farming")
local S = farming.translate
-- item/seed
core.register_craftitem("farming:ginger", {
-- ginger
minetest.register_craftitem("farming:ginger", {
description = S("Ginger"),
inventory_image = "farming_ginger.png",
groups = {compostability = 48, seed = 2, food_ginger = 1},
on_use = core.item_eat(1),
groups = {compostability = 48, seed = 2, food_ginger = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:ginger_1")
end
end,
on_use = minetest.item_eat(1)
})
farming.add_eatable("farming:ginger", 1)
-- crop definition
-- ginger definition
local def = {
description = S("Ginger") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_ginger_1.png"},
paramtype = "light",
@ -33,22 +27,17 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:ginger_1", table.copy(def))
minetest.register_node("farming:ginger_1", table.copy(def))
-- stage 2
def.tiles = {"farming_ginger_2.png"}
core.register_node("farming:ginger_2", table.copy(def))
minetest.register_node("farming:ginger_2", table.copy(def))
-- stage 3
def.tiles = {"farming_ginger_3.png"}
def.drop = {
items = {
@ -56,41 +45,34 @@ def.drop = {
{items = {"farming:ginger"}, rarity = 3}
}
}
core.register_node("farming:ginger_3", table.copy(def))
minetest.register_node("farming:ginger_3", table.copy(def))
-- stage 4 (final)
def.tiles = {"farming_ginger_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:ginger 2"}, rarity = 1},
{items = {"farming:ginger"}, rarity = 2},
{items = {"farming:ginger"}, rarity = 3}
{items = {"farming:ginger 2"}, rarity = 2}
}
}
core.register_node("farming:ginger_4", table.copy(def))
minetest.register_node("farming:ginger_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:ginger"] = {
crop = "farming:ginger",
seed = "farming:ginger",
minlight = 5,
maxlight = core.LIGHT_MAX,
maxlight = minetest.LIGHT_MAX,
steps = 4
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
name = "farming:ginger_4",
deco_type = "simple",
place_on = {
"default:dirt_with_rainforest_litter", "mcl_core:dirt_with_grass",
"ethereal:prairie_dirt"
},
place_on = {"default:dirt_with_rainforest_litter", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -100,7 +82,8 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 80,
y_max = 80,
y_min = 1,
decoration = "farming:ginger_3",
param2 = 3
})

View File

@ -1,24 +1,27 @@
local S = core.get_translator("farming")
-- place trellis helper
local S = farming.translate
local a = farming.recipe_items
-- place trellis
local function place_grapes(itemstack, placer, pointed_thing, plantname)
local pt = pointed_thing
-- check if pointing at a node
if not pt or pt.type ~= "node" then return end
if not pt or pt.type ~= "node" then
return
end
local under = core.get_node(pt.under)
local under = minetest.get_node(pt.under)
-- return if any of the nodes are not registered
if not core.registered_nodes[under.name] then return end
if not minetest.registered_nodes[under.name] then
return
end
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = core.registered_nodes[under.name]
local def = minetest.registered_nodes[under.name]
if placer and itemstack and def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt)
end
@ -27,15 +30,19 @@ local function place_grapes(itemstack, placer, pointed_thing, plantname)
local name = placer and placer:get_player_name() or ""
-- check for protection
if core.is_protected(pt.under, name) then return end
if minetest.is_protected(pt.under, name) then
return
end
-- check if pointing at trellis
if under.name ~= "farming:trellis" then return end
if under.name ~= "farming:trellis" then
return
end
-- add the node and remove 1 item from the itemstack
core.set_node(pt.under, {name = plantname})
minetest.set_node(pt.under, {name = plantname})
core.sound_play("default_place_node", {pos = pt.under, gain = 1.0}, true)
minetest.sound_play("default_place_node", {pos = pt.under, gain = 1.0})
if placer and not farming.is_creative(placer:get_player_name()) then
@ -44,8 +51,11 @@ local function place_grapes(itemstack, placer, pointed_thing, plantname)
-- check for refill
if itemstack:get_count() == 0 then
core.after(0.20, farming.refill_plant, placer,
"farming:grapes", placer:get_wield_index()
minetest.after(0.20,
farming.refill_plant,
placer,
"farming:grapes",
placer:get_wield_index()
)
end
end
@ -53,24 +63,25 @@ local function place_grapes(itemstack, placer, pointed_thing, plantname)
return itemstack
end
-- item/seed
core.register_craftitem("farming:grapes", {
-- grapes
minetest.register_craftitem("farming:grapes", {
description = S("Grapes"),
inventory_image = "farming_grapes.png",
groups = {compostability = 48, seed = 2, food_grapes = 1},
on_use = core.item_eat(2),
on_use = minetest.item_eat(2),
groups = {compostability = 48, seed = 2, food_grapes = 1, flammable = 3},
on_place = function(itemstack, placer, pointed_thing)
return place_grapes(itemstack, placer, pointed_thing, "farming:grapes_1")
end
})
farming.add_eatable("farming:grapes", 2)
-- grapes can be used for violet dye
minetest.register_craft({
output = a.dye_violet,
recipe = {{"farming:grapes"}}
})
-- trellis
core.register_node("farming:trellis", {
minetest.register_node("farming:trellis", {
description = S("Trellis (place on soil before planting grapes)"),
drawtype = "plantlike",
tiles = {"farming_trellis.png"},
@ -83,36 +94,40 @@ core.register_node("farming:trellis", {
drop = "farming:trellis",
selection_box = farming.select,
groups = {handy = 1, snappy = 3, flammable = 2, attached_node = 1},
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults(),
sounds = farming.sounds.node_sound_leaves_defaults(),
on_place = function(itemstack, placer, pointed_thing)
local pt = pointed_thing
-- check if pointing at a node
if not pt or pt.type ~= "node" then return end
if not pt or pt.type ~= "node" then
return
end
local under = core.get_node(pt.under)
local under = minetest.get_node(pt.under)
-- return if any of the nodes are not registered
if not core.registered_nodes[under.name] then return end
if not minetest.registered_nodes[under.name] then
return
end
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = core.registered_nodes[under.name]
local def = minetest.registered_nodes[under.name]
if def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt)
end
if core.is_protected(pt.above, placer:get_player_name()) then
if minetest.is_protected(pt.above, placer:get_player_name()) then
return
end
local nodename = under.name
if core.get_item_group(nodename, "soil") < 2 then return end
if minetest.get_item_group(nodename, "soil") < 2 then
return
end
local top = {
x = pointed_thing.above.x,
@ -120,11 +135,13 @@ core.register_node("farming:trellis", {
z = pointed_thing.above.z
}
nodename = core.get_node(top).name
nodename = minetest.get_node(top).name
if nodename ~= "air" then return end
if nodename ~= "air" then
return
end
core.set_node(pointed_thing.above, {name = "farming:trellis"})
minetest.set_node(pointed_thing.above, {name = "farming:trellis"})
if not farming.is_creative(placer:get_player_name()) then
itemstack:take_item()
@ -134,10 +151,23 @@ core.register_node("farming:trellis", {
end
})
-- crop definition
minetest.register_craft({
output = "farming:trellis",
recipe = {
{"group:stick", "group:stick", "group:stick"},
{"group:stick", "group:stick", "group:stick"},
{"group:stick", "group:stick", "group:stick"}
}
})
minetest.register_craft({
type = "fuel",
recipe = "farming:trellis",
burntime = 15
})
-- grapes definition
local def = {
description = S("Grapes") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_grapes_1.png"},
visual_scale = 1.9,
@ -155,63 +185,51 @@ local def = {
handy = 1, snappy = 3, flammable = 3, not_in_creative_inventory = 1,
attached_node = 1, growing = 1, plant = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:grapes_1", table.copy(def))
minetest.register_node("farming:grapes_1", table.copy(def))
-- stage2
def.tiles = {"farming_grapes_2.png"}
core.register_node("farming:grapes_2", table.copy(def))
minetest.register_node("farming:grapes_2", table.copy(def))
-- stage 3
def.tiles = {"farming_grapes_3.png"}
core.register_node("farming:grapes_3", table.copy(def))
minetest.register_node("farming:grapes_3", table.copy(def))
-- stage 4
def.tiles = {"farming_grapes_4.png"}
core.register_node("farming:grapes_4", table.copy(def))
minetest.register_node("farming:grapes_4", table.copy(def))
-- stage 5
def.tiles = {"farming_grapes_5.png"}
core.register_node("farming:grapes_5", table.copy(def))
minetest.register_node("farming:grapes_5", table.copy(def))
-- stage 6
def.tiles = {"farming_grapes_6.png"}
core.register_node("farming:grapes_6", table.copy(def))
minetest.register_node("farming:grapes_6", table.copy(def))
-- stage 7
def.tiles = {"farming_grapes_7.png"}
core.register_node("farming:grapes_7", table.copy(def))
minetest.register_node("farming:grapes_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_grapes_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:trellis"}, rarity = 1},
{items = {"farming:grapes 2"}, rarity = 1},
{items = {"farming:grapes"}, rarity = 2},
{items = {"farming:grapes"}, rarity = 3},
{items = {"farming:grapes"}, rarity = 4}
{items = {"farming:grapes 3"}, rarity = 1},
{items = {"farming:grapes 1"}, rarity = 2},
{items = {"farming:grapes 1"}, rarity = 3}
}
}
core.register_node("farming:grapes_8", table.copy(def))
minetest.register_node("farming:grapes_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:grapes"] = {
trellis = "farming:trellis",
crop = "farming:grapes",
@ -222,8 +240,7 @@ farming.registered_plants["farming:grapes"] = {
}
-- wild grape vine (this is what you find on the map)
core.register_node("farming:grapebush", {
minetest.register_node("farming:grapebush", {
drawtype = "plantlike",
tiles = {"farming_grapebush.png"},
paramtype = "light",
@ -233,9 +250,9 @@ core.register_node("farming:grapebush", {
sunlight_propagates = true,
drop = {
items = {
{items = {"farming:grapes"}, rarity = 1},
{items = {"farming:grapes"}, rarity = 2},
{items = {"farming:grapes"}, rarity = 3}
{items = {"farming:grapes 1"}, rarity = 1},
{items = {"farming:grapes 1"}, rarity = 2},
{items = {"farming:grapes 1"}, rarity = 3}
}
},
selection_box = farming.select,
@ -243,17 +260,13 @@ core.register_node("farming:grapebush", {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, compostability = 35
},
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
})
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -263,6 +276,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 25, y_max = 50,
y_min = 25,
y_max = 50,
decoration = "farming:grapebush"
})

View File

@ -1,48 +1,204 @@
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- seed
core.register_node("farming:seed_hemp", {
-- hemp seeds
minetest.register_node("farming:seed_hemp", {
description = S("Hemp Seed"),
tiles = {"farming_hemp_seed.png"},
inventory_image = "farming_hemp_seed.png",
wield_image = "farming_hemp_seed.png",
drawtype = "signlike",
groups = {
handy = 1, compostability = 38, seed = 1, snappy = 3, attached_node = 1,
growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
groups = {compostability = 38, seed = 1, snappy = 3, attached_node = 1, growing = 1},
paramtype = "light",
paramtype2 = "wallmounted",
walkable = false,
sunlight_propagates = true,
selection_box = farming.select,
next_plant = "farming:hemp_1",
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_hemp")
end,
on_timer = function(pos, elapsed)
core.set_node(pos, {name = "farming:hemp_1", param2 = 1})
minetest.set_node(pos, {name = "farming:hemp_1", param2 = 1})
end
})
-- item
core.register_craftitem("farming:hemp_leaf", {
-- harvested hemp
minetest.register_craftitem("farming:hemp_leaf", {
description = S("Hemp Leaf"),
inventory_image = "farming_hemp_leaf.png",
groups = {compostability = 35}
})
-- crop definition
-- hemp oil
minetest.register_node("farming:hemp_oil", {
description = S("Bottle of Hemp Oil"),
drawtype = "plantlike",
tiles = {"farming_hemp_oil.png"},
inventory_image = "farming_hemp_oil.png",
wield_image = "farming_hemp_oil.png",
paramtype = "light",
is_ground_content = false,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
},
groups = {
food_oil = 1, vessel = 1, dig_immediate = 3, attached_node = 1,
compostability = 45
},
sounds = farming.sounds.node_sound_glass_defaults()
})
minetest.register_craft( {
output = "farming:hemp_oil",
recipe = {
{"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"},
{"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"},
{"", a.glass_bottle, ""}
}
})
minetest.register_craft( {
output = "farming:hemp_oil",
recipe = {
{"farming:seed_hemp", "farming:seed_hemp", "farming:seed_hemp"},
{"farming:seed_hemp", "farming:seed_hemp", "farming:seed_hemp"},
{"farming:seed_hemp", a.glass_bottle, "farming:seed_hemp"}
}
})
minetest.register_craft({
type = "fuel",
recipe = "farming:hemp_oil",
burntime = 20,
replacements = {{"farming:hemp_oil", a.glass_bottle}}
})
-- hemp fibre
minetest.register_craftitem("farming:hemp_fibre", {
description = S("Hemp Fibre"),
inventory_image = "farming_hemp_fibre.png",
groups = {compostability = 55}
})
minetest.register_craft( {
output = "farming:hemp_fibre 8",
recipe = {
{"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"},
{"farming:hemp_leaf", "group:water_bucket", "farming:hemp_leaf"},
{"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}
},
replacements = {{a.bucket_water, a.bucket_empty}}
})
if minetest.get_modpath("bucket_wooden") then
minetest.register_craft( {
output = "farming:hemp_fibre 8",
recipe = {
{"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"},
{"farming:hemp_leaf", "group:water_bucket_wooden", "farming:hemp_leaf"},
{"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}
},
replacements = {{"group:water_bucket_wooden", "bucket_wooden:bucket_empty"}}
})
end
-- hemp block
minetest.register_node("farming:hemp_block", {
description = S("Hemp Block"),
tiles = {"farming_hemp_block.png"},
paramtype = "light",
groups = {
handy = 1, snappy = 2, oddly_breakable_by_hand = 1, flammable = 2,
compostability = 85
},
sounds = farming.sounds.node_sound_leaves_defaults()
})
minetest.register_craft( {
output = "farming:hemp_block",
recipe = {
{"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"},
{"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"},
{"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"}
}
})
-- check and register stairs
if minetest.global_exists("stairs") then
if stairs.mod and stairs.mod == "redo" then
stairs.register_all("hemp_block", "farming:hemp_block",
{snappy = 2, oddly_breakable_by_hand = 1, flammable = 2},
{"farming_hemp_block.png"},
"Hemp Block",
farming.sounds.node_sound_leaves_defaults())
else
stairs.register_stair_and_slab("hemp_block", "farming:hemp_block",
{snappy = 2, oddly_breakable_by_hand = 1, flammable = 2},
{"farming_hemp_block.png"},
"Hemp Block Stair",
"Hemp Block Slab",
farming.sounds.node_sound_leaves_defaults())
end
end
-- paper
minetest.register_craft( {
output = a.paper .. " 3",
recipe = {
{"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"}
}
})
-- string
minetest.register_craft( {
output = "farming:cotton 3",
recipe = {
{"farming:hemp_fibre"},
{"farming:hemp_fibre"},
{"farming:hemp_fibre"}
}
})
-- hemp rope
minetest.register_node("farming:hemp_rope", {
description = S("Hemp Rope"),
walkable = false,
climbable = true,
sunlight_propagates = true,
paramtype = "light",
tiles = {"farming_hemp_rope.png"},
wield_image = "farming_hemp_rope.png",
inventory_image = "farming_hemp_rope.png",
drawtype = "plantlike",
groups = {
flammable = 2, choppy = 3, oddly_breakable_by_hand = 3, compostability = 55
},
sounds = farming.sounds.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}
}
})
-- string
minetest.register_craft( {
output = "farming:hemp_rope 6",
recipe = {
{"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"},
{"farming:cotton", "farming:cotton", "farming:cotton"},
{"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"}
}
})
-- hemp definition
local def = {
description = S("Hemp") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_hemp_1.png"},
paramtype = "light",
@ -56,37 +212,29 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:hemp_1", table.copy(def))
minetest.register_node("farming:hemp_1", table.copy(def))
-- stage 2
def.tiles = {"farming_hemp_2.png"}
core.register_node("farming:hemp_2", table.copy(def))
minetest.register_node("farming:hemp_2", table.copy(def))
-- stage 3
def.tiles = {"farming_hemp_3.png"}
core.register_node("farming:hemp_3", table.copy(def))
minetest.register_node("farming:hemp_3", table.copy(def))
-- stage 4
def.tiles = {"farming_hemp_4.png"}
core.register_node("farming:hemp_4", table.copy(def))
minetest.register_node("farming:hemp_4", table.copy(def))
-- stage 5
def.tiles = {"farming_hemp_5.png"}
core.register_node("farming:hemp_5", table.copy(def))
minetest.register_node("farming:hemp_5", table.copy(def))
-- stage 6
def.tiles = {"farming_hemp_6.png"}
def.drop = {
items = {
@ -94,10 +242,9 @@ def.drop = {
{items = {"farming:seed_hemp"}, rarity = 1}
}
}
core.register_node("farming:hemp_6", table.copy(def))
minetest.register_node("farming:hemp_6", table.copy(def))
-- stage 7
def.tiles = {"farming_hemp_7.png"}
def.drop = {
items = {
@ -107,10 +254,9 @@ def.drop = {
{items = {"farming:seed_hemp"}, rarity = 3}
}
}
core.register_node("farming:hemp_7", table.copy(def))
minetest.register_node("farming:hemp_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_hemp_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
@ -118,14 +264,13 @@ def.drop = {
items = {
{items = {"farming:hemp_leaf 2"}, rarity = 1},
{items = {"farming:hemp_leaf"}, rarity = 2},
{items = {"farming:seed_hemp 2"}, rarity = 1},
{items = {"farming:seed_hemp"}, rarity = 1},
{items = {"farming:seed_hemp"}, rarity = 2}
}
}
core.register_node("farming:hemp_8", table.copy(def))
minetest.register_node("farming:hemp_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:hemp"] = {
crop = "farming:hemp",
seed = "farming:seed_hemp",
@ -135,12 +280,11 @@ farming.registered_plants["farming:hemp"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "default:dirt_with_rainforest_litter",
"mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
"mcl_core:dirt_with_grass"
},
sidelen = 16,
noise_params = {
@ -151,7 +295,9 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 3, y_max = 45,
y_min = 3,
y_max = 45,
decoration = "farming:hemp_7",
spawn_by = "group:tree", num_spawn_by = 1
spawn_by = "group:tree",
num_spawn_by = 1
})

View File

@ -1,25 +1,18 @@
local S = core.get_translator("farming")
local S = farming.translate
-- item/seed
core.register_craftitem("farming:lettuce", {
-- lettuce
minetest.register_craftitem("farming:lettuce", {
description = S("Lettuce"),
inventory_image = "farming_lettuce.png",
groups = {compostability = 48, seed = 2, food_lettuce = 1},
on_use = core.item_eat(2),
groups = {compostability = 48, seed = 2, food_lettuce = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:lettuce_1")
end
end,
on_use = minetest.item_eat(2)
})
farming.add_eatable("farming:lettuce", 2)
-- crop definition
local def = {
description = S("Lettuce") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_lettuce_1.png"},
paramtype = "light",
@ -32,45 +25,37 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:lettuce_1", table.copy(def))
minetest.register_node("farming:lettuce_1", table.copy(def))
-- stage 2
def.tiles = {"farming_lettuce_2.png"}
core.register_node("farming:lettuce_2", table.copy(def))
minetest.register_node("farming:lettuce_2", table.copy(def))
-- stage 3
def.tiles = {"farming_lettuce_3.png"}
core.register_node("farming:lettuce_3", table.copy(def))
minetest.register_node("farming:lettuce_3", table.copy(def))
-- stage 4
def.tiles = {"farming_lettuce_4.png"}
core.register_node("farming:lettuce_4", table.copy(def))
minetest.register_node("farming:lettuce_4", table.copy(def))
-- stage 5
def.tiles = {"farming_lettuce_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:lettuce 2"}, rarity = 1},
{items = {"farming:lettuce"}, rarity = 3}
{items = {"farming:lettuce 1"}, rarity = 2}
}
}
core.register_node("farming:lettuce_5", table.copy(def))
minetest.register_node("farming:lettuce_5", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:lettuce"] = {
crop = "farming:lettuce",
seed = "farming:lettuce",
@ -80,12 +65,9 @@ farming.registered_plants["farming:lettuce"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -95,6 +77,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 35,
y_min = 5,
y_max = 35,
decoration = "farming:lettuce_5"
})

View File

@ -1,25 +1,34 @@
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- item/seed
core.register_craftitem("farming:melon_slice", {
-- melon
minetest.register_craftitem("farming:melon_slice", {
description = S("Melon Slice"),
inventory_image = "farming_melon_slice.png",
groups = {compostability = 48, seed = 2, food_melon_slice = 1},
on_use = core.item_eat(2),
groups = {compostability = 48, seed = 2, food_melon_slice = 1, flammable = 3},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:melon_1")
end
end,
on_use = minetest.item_eat(2)
})
farming.add_eatable("farming:melon_slice", 2)
minetest.register_craft({
output = "farming:melon_8",
recipe = {
{"farming:melon_slice", "farming:melon_slice"},
{"farming:melon_slice", "farming:melon_slice"}
}
})
-- crop definition
minetest.register_craft({
output = "farming:melon_slice 4",
recipe = {{"farming:melon_8", a.cutting_board}},
replacements = {{"farming:cutting_board", "farming:cutting_board"}}
})
-- melon definition
local def = {
description = S("Melon") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_melon_1.png"},
paramtype = "light",
@ -32,48 +41,38 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:melon_1", table.copy(def))
minetest.register_node("farming:melon_1", table.copy(def))
-- stage 2
def.tiles = {"farming_melon_2.png"}
core.register_node("farming:melon_2", table.copy(def))
minetest.register_node("farming:melon_2", table.copy(def))
-- stage 3
def.tiles = {"farming_melon_3.png"}
core.register_node("farming:melon_3", table.copy(def))
minetest.register_node("farming:melon_3", table.copy(def))
-- stage 4
def.tiles = {"farming_melon_4.png"}
core.register_node("farming:melon_4", table.copy(def))
minetest.register_node("farming:melon_4", table.copy(def))
-- stage 5
def.tiles = {"farming_melon_5.png"}
core.register_node("farming:melon_5", table.copy(def))
minetest.register_node("farming:melon_5", table.copy(def))
-- stage 6
def.tiles = {"farming_melon_6.png"}
core.register_node("farming:melon_6", table.copy(def))
minetest.register_node("farming:melon_6", table.copy(def))
-- stage 7
def.tiles = {"farming_melon_7.png"}
core.register_node("farming:melon_7", table.copy(def))
minetest.register_node("farming:melon_7", table.copy(def))
-- stage 8 (final)
core.register_node("farming:melon_8", {
minetest.register_node("farming:melon_8", {
description = S("Melon"),
tiles = {
"farming_melon_top.png",
@ -84,17 +83,13 @@ core.register_node("farming:melon_8", {
food_melon = 1, handy = 1, snappy = 3, choppy = 3, oddly_breakable_by_hand = 2,
flammable = 2, plant = 1, compostability = 65
},
is_ground_content = false,
drop = "farming:melon_8",
sounds = farming.node_sound_wood_defaults(),
sounds = farming.sounds.node_sound_wood_defaults(),
paramtype2 = "facedir",
on_place = core.rotate_node,
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
on_place = minetest.rotate_node
})
-- add to registered_plants
farming.registered_plants["farming:melon"] = {
crop = "farming:melon",
seed = "farming:melon_slice",
@ -104,13 +99,19 @@ farming.registered_plants["farming:melon"] = {
}
-- mapgen
local mg = farming.mapgen == "v6"
core.register_decoration({
def = {
y_max = mg and 20 or 6,
spawn_on = mg and {"default:dirt_with_grass"} or {"default:dirt_with_dry_grass",
"default:dirt_with_rainforest_litter", "mcl_core:dirt_with_grass"},
near = mg and "group:water" or nil,
num = mg and 1 or -1,
}
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "default:dirt_with_dry_grass",
"default:dirt_with_rainforest_litter", "mcl_core:dirt_with_grass"
},
place_on = def.spawn_on,
sidelen = 16,
noise_params = {
offset = 0,
@ -120,7 +121,9 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 3,
y_min = 1,
y_max = def.y_max,
decoration = "farming:melon_8",
spawn_by = {"group:water", "group:sand"}, num_spawn_by = 1
spawn_by = def.near,
num_spawn_by = def.num
})

View File

@ -1,9 +1,9 @@
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- seed
core.register_node("farming:seed_mint", {
-- mint seed
minetest.register_node("farming:seed_mint", {
description = S("Mint Seeds"),
tiles = {"farming_mint_seeds.png"},
inventory_image = "farming_mint_seeds.png",
@ -11,38 +11,51 @@ core.register_node("farming:seed_mint", {
drawtype = "signlike",
groups = {
compostability = 48, seed = 1, snappy = 3, attached_node = 1, growing = 1,
handy = 1, flammable = 2
flammable = 2
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
paramtype = "light",
paramtype2 = "wallmounted",
walkable = false,
sunlight_propagates = true,
selection_box = farming.select,
next_plant = "farming:mint_1",
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_mint")
end,
on_timer = function(pos, elapsed)
core.set_node(pos, {name = "farming:mint_1", param2 = 1})
minetest.set_node(pos, {name = "farming:mint_1", param2 = 1})
end
})
-- item
core.register_craftitem("farming:mint_leaf", {
-- mint leaf
minetest.register_craftitem("farming:mint_leaf", {
description = S("Mint Leaf"),
inventory_image = "farming_mint_leaf.png",
groups = {food_mint = 1, flammable = 4, compostability = 48}
})
-- crop definition
-- mint tea
minetest.register_craftitem("farming:mint_tea", {
description = S("Mint Tea"),
inventory_image = "farming_mint_tea.png",
on_use = minetest.item_eat(2, a.drinking_glass),
groups = {flammable = 4}
})
minetest.register_craft({
output = "farming:mint_tea",
recipe = {
{"group:food_mint", "group:food_mint", "group:food_mint"},
{"group:food_glass_water", a.juicer, ""}
},
replacements = {
{"group:food_juicer", "farming:juicer"}
}
})
-- mint definition
local def = {
description = S("Mint") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_mint_1.png"},
paramtype = "light",
@ -55,42 +68,35 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:mint_1", table.copy(def))
minetest.register_node("farming:mint_1", table.copy(def))
-- stage 2
def.tiles = {"farming_mint_2.png"}
core.register_node("farming:mint_2", table.copy(def))
minetest.register_node("farming:mint_2", table.copy(def))
-- stage 3
def.tiles = {"farming_mint_3.png"}
core.register_node("farming:mint_3", table.copy(def))
minetest.register_node("farming:mint_3", table.copy(def))
-- stage 4 (final)
def.tiles = {"farming_mint_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:mint_leaf 2"}, rarity = 1},
{items = {"farming:mint_leaf"}, rarity = 2},
{items = {"farming:seed_mint 2"}, rarity = 1},
{items = {"farming:seed_mint"}, rarity = 2}
{items = {"farming:mint_leaf 2"}, rarity = 2},
{items = {"farming:seed_mint 1"}, rarity = 1},
{items = {"farming:seed_mint 2"}, rarity = 2}
}
}
core.register_node("farming:mint_4", table.copy(def))
minetest.register_node("farming:mint_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:mint"] = {
crop = "farming:mint",
seed = "farming:seed_mint",
@ -100,12 +106,11 @@ farming.registered_plants["farming:mint"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "default:dirt_with_coniferous_litter",
"mcl_core:dirt_with_grass", "ethereal:bamboo_dirt"
"mcl_core:dirt_with_grass"
},
sidelen = 16,
noise_params = {
@ -116,7 +121,9 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 75,
y_min = 0,
y_max = 75,
decoration = "farming:mint_4",
spawn_by = {"group:water", "group:sand"}, num_spawn_by = 1
spawn_by = {"group:water", "group:sand"},
num_spawn_by = 1
})

View File

@ -2,30 +2,49 @@
--[[
Original textures from Crops Plus mod
Copyright (C) 2018 Grizzly Adam
https://forum.core.net/viewtopic.php?f=9&t=19488
https://forum.minetest.net/viewtopic.php?f=9&t=19488
]]
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- item/seed
core.register_craftitem("farming:onion", {
-- onion
minetest.register_craftitem("farming:onion", {
description = S("Onion"),
inventory_image = "crops_onion.png",
groups = {compostability = 48, seed = 2, food_onion = 1},
on_use = core.item_eat(1),
groups = {compostability = 48, seed = 2, food_onion = 1, flammable = 3},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:onion_1")
end
end,
on_use = minetest.item_eat(1)
})
farming.add_eatable("farming:onion", 1)
-- onion soup
minetest.register_craftitem("farming:onion_soup", {
description = S("Onion Soup"),
inventory_image = "farming_onion_soup.png",
groups = {flammable = 2, compostability = 65},
on_use = minetest.item_eat(6, a.bowl)
})
minetest.register_craft({
output = "farming:onion_soup",
recipe = {
{"group:food_onion", "group:food_onion", "group:food_onion"},
{"group:food_onion", "group:food_bowl", "group:food_onion"},
{"", a.pot, ""}
},
replacements = {{"farming:pot", "farming:pot"}}
})
-- yellow dye
minetest.register_craft({
output = a.dye_yellow,
recipe = {{"group:food_onion"}}
})
-- crop definition
local def = {
description = S("Onion") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"crops_onion_plant_1.png"},
paramtype = "light",
@ -42,46 +61,40 @@ local def = {
handy = 1, snappy = 3, flammable = 3, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:onion_1", table.copy(def))
minetest.register_node("farming:onion_1", table.copy(def))
-- stage 2
def.tiles = {"crops_onion_plant_2.png"}
core.register_node("farming:onion_2", table.copy(def))
minetest.register_node("farming:onion_2", table.copy(def))
-- stage 3
def.tiles = {"crops_onion_plant_3.png"}
core.register_node("farming:onion_3", table.copy(def))
minetest.register_node("farming:onion_3", table.copy(def))
-- stage 4
def.tiles = {"crops_onion_plant_4.png"}
core.register_node("farming:onion_4", table.copy(def))
minetest.register_node("farming:onion_4", table.copy(def))
-- stage 5
def.tiles = {"crops_onion_plant_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:onion 2"}, rarity = 1},
max_items = 5, items = {
{items = {"farming:onion"}, rarity = 1},
{items = {"farming:onion"}, rarity = 1},
{items = {"farming:onion"}, rarity = 2},
{items = {"farming:onion"}, rarity = 4}
{items = {"farming:onion"}, rarity = 2},
{items = {"farming:onion"}, rarity = 5}
}
}
core.register_node("farming:onion_5", table.copy(def))
minetest.register_node("farming:onion_5", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:onion"] = {
crop = "farming:onion",
seed = "farming:onion",
@ -91,12 +104,9 @@ farming.registered_plants["farming:onion"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -106,6 +116,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 28,
y_min = 5,
y_max = 28,
decoration = "farming:onion_5"
})

View File

@ -1,25 +1,18 @@
local S = core.get_translator("farming")
local S = farming.translate
-- item/seed
core.register_craftitem("farming:parsley", {
-- item definition
minetest.register_craftitem("farming:parsley", {
description = S("Parsley"),
inventory_image = "farming_parsley.png",
groups = {compostability = 48, seed = 2, food_parsley = 1},
on_use = core.item_eat(1),
groups = {compostability = 48, seed = 2, food_parsley = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:parsley_1")
end
})
farming.add_eatable("farming:parsley", 1)
-- crop definition
local def = {
description = S("Parsley") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_parsley_1.png"},
paramtype = "light",
@ -33,22 +26,17 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:parsley_1", table.copy(def))
minetest.register_node("farming:parsley_1", table.copy(def))
-- stage 2
def.tiles = {"farming_parsley_2.png"}
core.register_node("farming:parsley_2", table.copy(def))
minetest.register_node("farming:parsley_2", table.copy(def))
-- stage 3 (final)
def.tiles = {"farming_parsley_3.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
@ -59,10 +47,9 @@ def.drop = {
{items = {"farming:parsley"}, rarity = 3}
}
}
core.register_node("farming:parsley_3", table.copy(def))
minetest.register_node("farming:parsley_3", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:parsley"] = {
crop = "farming:parsley",
seed = "farming:parsley",
@ -72,13 +59,9 @@ farming.registered_plants["farming:parsley"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt",
"ethereal:grove_dirt"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -88,6 +71,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 10, y_max = 40,
y_min = 10,
y_max = 40,
decoration = "farming:parsley_3"
})

View File

@ -1,31 +1,43 @@
-- Textures for peas and their crop were done by Andrey01
local S = farming.translate
local a = farming.recipe_items
local S = core.get_translator("farming")
-- Textures for Pea crop and Peas were done by Andrey01
-- item/seed
core.register_craftitem("farming:pea_pod", {
-- pea pod
minetest.register_craftitem("farming:pea_pod", {
description = S("Pea Pod"),
inventory_image = "farming_pea_pod.png",
groups = {compostability = 48, seed = 2, food_peas = 1, food_pea_pod = 1},
on_use = core.item_eat(1),
groups = {
compostability = 48, seed = 2, food_peas = 1, food_pea_pod = 1, flammable = 2
},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:pea_1")
end
end,
on_use = minetest.item_eat(1)
})
farming.add_eatable("farming:pea_pod", 1)
-- replacement for separate peas item that was removed
minetest.register_alias("farming:peas", "farming:pea_pod")
core.register_alias("farming:peas", "farming:pea_pod")
-- pea soup
minetest.register_craftitem("farming:pea_soup", {
description = S("Pea Soup"),
inventory_image = "farming_pea_soup.png",
groups = {flammable = 2, compostability = 65},
on_use = minetest.item_eat(4, a.bowl)
})
-- crop definition
minetest.register_craft({
output = "farming:pea_soup",
recipe = {
{"group:food_peas"},
{"group:food_peas"},
{"group:food_bowl"}
}
})
local def = {
description = S("Pea") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_pea_1.png"},
paramtype = "light",
@ -41,46 +53,39 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:pea_1", table.copy(def))
minetest.register_node("farming:pea_1", table.copy(def))
-- stage 2
def.tiles = {"farming_pea_2.png"}
core.register_node("farming:pea_2", table.copy(def))
minetest.register_node("farming:pea_2", table.copy(def))
-- stage 3
def.tiles = {"farming_pea_3.png"}
core.register_node("farming:pea_3", table.copy(def))
minetest.register_node("farming:pea_3", table.copy(def))
-- stage 4
def.tiles = {"farming_pea_4.png"}
core.register_node("farming:pea_4", table.copy(def))
-- stage 5 (final)
minetest.register_node("farming:pea_4", table.copy(def))
-- stage 5
def.tiles = {"farming_pea_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:pea_pod 2"}, rarity = 1},
max_items = 5, items = {
{items = {"farming:pea_pod"}, rarity = 1},
{items = {"farming:pea_pod"}, rarity = 2},
{items = {"farming:pea_pod"}, rarity = 3}
{items = {"farming:pea_pod"}, rarity = 3},
{items = {"farming:pea_pod"}, rarity = 5}
}
}
core.register_node("farming:pea_5", table.copy(def))
minetest.register_node("farming:pea_5", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:pea_pod"] = {
crop = "farming:pea",
seed = "farming:pea_pod",
@ -90,12 +95,9 @@ farming.registered_plants["farming:pea_pod"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -105,6 +107,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 25, y_max = 55,
y_min = 25,
y_max = 55,
decoration = "farming:pea_5"
})

View File

@ -2,67 +2,83 @@
--[[
Original textures from Crops Plus mod
Copyright (C) 2018 Grizzly Adam
https://forum.core.net/viewtopic.php?f=9&t=19488
https://forum.minetest.net/viewtopic.php?f=9&t=19488
]]
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- seed
core.register_craftitem("farming:peppercorn", {
-- peppercorn (seed)
minetest.register_craftitem("farming:peppercorn", {
description = S("Peppercorn"),
inventory_image = "crops_peppercorn.png",
groups = {compostability = 48, seed = 1, food_peppercorn = 1, flammable = 3},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:pepper_1")
end
})
-- green pepper
core.register_craftitem("farming:pepper", {
minetest.register_craftitem("farming:pepper", {
description = S("Green Pepper"),
inventory_image = "crops_pepper.png",
on_use = core.item_eat(2),
groups = {food_pepper = 1, compostability = 55}
on_use = minetest.item_eat(2),
groups = {food_pepper = 1, flammable = 3, compostability = 55}
})
farming.add_eatable("farming:pepper", 2)
-- yellow pepper
core.register_craftitem("farming:pepper_yellow", {
minetest.register_craftitem("farming:pepper_yellow", {
description = S("Yellow Pepper"),
inventory_image = "crops_pepper_yellow.png",
on_use = core.item_eat(3),
groups = {food_pepper = 1, compostability = 55}
on_use = minetest.item_eat(3),
groups = {food_pepper = 1, flammable = 3, compostability = 55}
})
farming.add_eatable("farming:pepper_yellow", 3)
-- red pepper
core.register_craftitem("farming:pepper_red", {
minetest.register_craftitem("farming:pepper_red", {
description = S("Red Pepper"),
inventory_image = "crops_pepper_red.png",
on_use = core.item_eat(4),
groups = {food_pepper = 1, compostability = 55}
on_use = minetest.item_eat(4),
groups = {food_pepper = 1, flammable = 3, compostability = 55}
})
farming.add_eatable("farming:pepper_red", 4)
-- pepper to peppercorn recipe
core.register_craft({
minetest.register_craft({
output = "farming:peppercorn",
recipe = {{"group:food_pepper"}}
})
-- crop definition
-- ground pepper
minetest.register_node("farming:pepper_ground", {
description = S("Ground Pepper"),
inventory_image = "crops_pepper_ground.png",
wield_image = "crops_pepper_ground.png",
drawtype = "plantlike",
visual_scale = 0.8,
paramtype = "light",
tiles = {"crops_pepper_ground.png"},
groups = {
vessel = 1, food_pepper_ground = 1,
dig_immediate = 3, attached_node = 1, compostability = 30
},
sounds = farming.sounds.node_sound_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
}
})
minetest.register_craft( {
output = "farming:pepper_ground",
recipe = {
{"group:food_peppercorn"},
{a.glass_bottle},
{a.mortar_pestle}
},
replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}}
})
-- crop definition
local def = {
description = S("Pepper") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"crops_pepper_plant_1.png"},
paramtype = "light",
@ -78,70 +94,60 @@ local def = {
handy = 1, snappy = 3, flammable = 3, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:pepper_1", table.copy(def))
minetest.register_node("farming:pepper_1", table.copy(def))
-- stage 2
def.tiles = {"crops_pepper_plant_2.png"}
core.register_node("farming:pepper_2", table.copy(def))
minetest.register_node("farming:pepper_2", table.copy(def))
-- stage 3
def.tiles = {"crops_pepper_plant_3.png"}
core.register_node("farming:pepper_3", table.copy(def))
minetest.register_node("farming:pepper_3", table.copy(def))
-- stage 4
def.tiles = {"crops_pepper_plant_4.png"}
core.register_node("farming:pepper_4", table.copy(def))
minetest.register_node("farming:pepper_4", table.copy(def))
-- stage 5 (green pepper)
def.tiles = {"crops_pepper_plant_5.png"}
def.selection_box = farming.select_final
def.drop = {
items = {
max_items = 2, items = {
{items = {"farming:pepper 2"}, rarity = 1},
{items = {"farming:pepper"}, rarity = 2},
{items = {"farming:pepper"}, rarity = 3}
}
}
core.register_node("farming:pepper_5", table.copy(def))
minetest.register_node("farming:pepper_5", table.copy(def))
-- stage 6 (yellow pepper)
def.tiles = {"crops_pepper_plant_6.png"}
def.drop = {
items = {
max_items = 2, items = {
{items = {"farming:pepper_yellow 2"}, rarity = 1},
{items = {"farming:pepper_yellow"}, rarity = 2},
{items = {"farming:pepper_yellow"}, rarity = 3}
}
}
core.register_node("farming:pepper_6", table.copy(def))
-- stage 7 (red pepper - final)
minetest.register_node("farming:pepper_6", table.copy(def))
-- stage 7 (red pepper)
def.tiles = {"crops_pepper_plant_7.png"}
def.groups.growing = nil
def.drop = {
items = {
max_items = 2, items = {
{items = {"farming:pepper_red 2"}, rarity = 1},
{items = {"farming:pepper_red"}, rarity = 2},
{items = {"farming:pepper_red"}, rarity = 3}
}
}
core.register_node("farming:pepper_7", table.copy(def))
minetest.register_node("farming:pepper_7", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:pepper"] = {
crop = "farming:pepper",
seed = "farming:peppercorn",
@ -151,13 +157,16 @@ farming.registered_plants["farming:pepper"] = {
}
-- mapgen
local mg = farming.mapgen == "v6"
core.register_decoration({
def = {
grow_on = mg and {"default:dirt_with_grass"} or {
"default:dirt_with_rainforest_litter", "mcl_core:dirt_with_grass"}
}
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "default:dirt_with_rainforest_litter",
"mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
place_on = def.grow_on,
sidelen = 16,
noise_params = {
offset = 0,
@ -167,7 +176,9 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 35,
y_min = 5,
y_max = 35,
decoration = {"farming:pepper_5", "farming:pepper_6", "farming:pepper_7"},
spawn_by = "group:tree", num_spawn_by = 1
spawn_by = "group:tree",
num_spawn_by = 1
})

View File

@ -1,21 +1,19 @@
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- seed
core.register_craftitem("farming:pineapple_top", {
-- pineapple top
minetest.register_craftitem("farming:pineapple_top", {
description = S("Pineapple Top"),
inventory_image = "farming_pineapple_top.png",
groups = {compostability = 48, seed = 2, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:pineapple_1")
end
})
-- item
core.register_node("farming:pineapple", {
-- pineapple
minetest.register_node("farming:pineapple", {
description = S("Pineapple"),
drawtype = "plantlike",
tiles = {"farming_pineapple.png"},
@ -25,20 +23,63 @@ core.register_node("farming:pineapple", {
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed", fixed = {-0.27, -0.37, -0.27, 0.27, 0.44, 0.27}
type = "fixed",
fixed = {-0.27, -0.37, -0.27, 0.27, 0.44, 0.27}
},
groups = {
food_pineapple = 1, fleshy = 3, dig_immediate = 3, flammable = 2,
compostability = 65
}
})
-- pineapple
minetest.register_craftitem("farming:pineapple_ring", {
description = S("Pineapple Ring"),
inventory_image = "farming_pineapple_ring.png",
groups = {food_pineapple_ring = 1, flammable = 2, compostability = 45},
on_use = minetest.item_eat(1)
})
minetest.register_craft( {
output = "farming:pineapple_ring 5",
recipe = {{"group:food_pineapple"}},
replacements = {{"farming:pineapple", "farming:pineapple_top"}}
})
-- pineapple juice
minetest.register_craftitem("farming:pineapple_juice", {
description = S("Pineapple Juice"),
inventory_image = "farming_pineapple_juice.png",
on_use = minetest.item_eat(4, "vessels:drinking_glass"),
groups = {vessel = 1, drink = 1, compostability = 35}
})
minetest.register_craft({
output = "farming:pineapple_juice",
recipe = {
{"group:food_pineapple_ring", "group:food_pineapple_ring",
"group:food_pineapple_ring"},
{"", a.drinking_glass, ""},
{"", a.juicer, ""}
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false
replacements = {
{"group:food_juicer", "farming:juicer"}
}
})
minetest.register_craft({
output = "farming:pineapple_juice 2",
recipe = {
{a.drinking_glass, "group:food_pineapple", a.drinking_glass},
{"", a.juicer, ""}
},
replacements = {
{"group:food_juicer", "farming:juicer"}
}
})
-- crop definition
local def = {
description = S("Pineapple") .. S(" Crop"),
drawtype = "plantlike",
visual_scale = 1.5,
tiles = {"farming_pineapple_1.png"},
@ -53,60 +94,49 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:pineapple_1", table.copy(def))
minetest.register_node("farming:pineapple_1", table.copy(def))
-- stage 2
def.tiles = {"farming_pineapple_2.png"}
core.register_node("farming:pineapple_2", table.copy(def))
minetest.register_node("farming:pineapple_2", table.copy(def))
-- stage 3
def.tiles = {"farming_pineapple_3.png"}
core.register_node("farming:pineapple_3", table.copy(def))
minetest.register_node("farming:pineapple_3", table.copy(def))
-- stage 4
def.tiles = {"farming_pineapple_4.png"}
core.register_node("farming:pineapple_4", table.copy(def))
minetest.register_node("farming:pineapple_4", table.copy(def))
-- stage 5
def.tiles = {"farming_pineapple_5.png"}
core.register_node("farming:pineapple_5", table.copy(def))
minetest.register_node("farming:pineapple_5", table.copy(def))
-- stage 6
def.tiles = {"farming_pineapple_6.png"}
core.register_node("farming:pineapple_6", table.copy(def))
minetest.register_node("farming:pineapple_6", table.copy(def))
-- stage 7
def.tiles = {"farming_pineapple_7.png"}
core.register_node("farming:pineapple_7", table.copy(def))
minetest.register_node("farming:pineapple_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_pineapple_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:pineapple"}, rarity = 1},
{items = {"farming:pineapple"}, rarity = 3}
{items = {"farming:pineapple"}, rarity = 2}
}
}
core.register_node("farming:pineapple_8", table.copy(def))
minetest.register_node("farming:pineapple_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:pineapple"] = {
crop = "farming:pineapple",
seed = "farming:pineapple_top",
@ -116,19 +146,18 @@ farming.registered_plants["farming:pineapple"] = {
}
-- mapgen
local mg = farming.mapgen == "v6"
local spawn_on = {
"default:dirt_with_dry_grass", "default:dry_dirt_with_dry_grass",
"mcl_core:dirt_with_grass"
def = {
grow_on = mg and {"default:dirt_with_grass"} or {"default:dirt_with_dry_grass",
"default:dry_dirt_with_dry_grass", "mcl_core:dirt_with_grass"},
grow_near = mg and "group:sand" or nil,
num = mg and 1 or -1
}
if farming.mapgen == "v6" then
spawn_on = {"default:dirt_with_grass"}
end
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = spawn_on,
place_on = def.grow_on,
sidelen = 16,
noise_params = {
offset = 0,
@ -138,6 +167,9 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 11, y_max = 30,
decoration = "farming:pineapple_8"
y_min = 11,
y_max = 30,
decoration = {"farming:pineapple_8"},
spawn_by = def.grow_near,
num_spawn_by = def.num
})

View File

@ -1,42 +1,63 @@
--[[
Original textures from DocFarming mod
https://forum.core.net/viewtopic.php?id=3948
https://forum.minetest.net/viewtopic.php?id=3948
]]
local S = core.get_translator("farming")
local S = farming.translate
-- item/seed
core.register_craftitem("farming:potato", {
-- potato
minetest.register_craftitem("farming:potato", {
description = S("Potato"),
inventory_image = "farming_potato.png",
groups = {compostability = 48, seed = 2, food_potato = 1},
groups = {compostability = 48, seed = 2, food_potato = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:potato_1")
end,
-- 1 in 3 chance of being poisoned
on_use = function(itemstack, user, pointed_thing)
if user then
if math.random(3) == 1 then
return core.do_item_eat(-1, nil, itemstack, user, pointed_thing)
return minetest.do_item_eat(-1, nil, itemstack, user, pointed_thing)
else
return core.do_item_eat(1, nil, itemstack, user, pointed_thing)
return minetest.do_item_eat(1, nil, itemstack, user, pointed_thing)
end
end
end
})
farming.add_eatable("farming:potato", 1)
-- baked potato
minetest.register_craftitem("farming:baked_potato", {
description = S("Baked Potato"),
inventory_image = "farming_baked_potato.png",
on_use = minetest.item_eat(6)
})
-- crop definition
minetest.register_craft({
type = "cooking",
cooktime = 10,
output = "farming:baked_potato",
recipe = "group:food_potato"
})
-- Potato and cucumber Salad
minetest.register_craftitem("farming:potato_salad", {
description = S("Cucumber and Potato Salad"),
inventory_image = "farming_potato_salad.png",
on_use = minetest.item_eat(10, "farming:bowl")
})
minetest.register_craft({
output = "farming:potato_salad",
recipe = {
{"group:food_cucumber"},
{"farming:baked_potato"},
{"group:food_bowl"}
}
})
-- potato definition
local def = {
description = S("Potato") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_potato_1.png"},
paramtype = "light",
@ -50,22 +71,17 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:potato_1", table.copy(def))
minetest.register_node("farming:potato_1", table.copy(def))
-- stage 2
def.tiles = {"farming_potato_2.png"}
core.register_node("farming:potato_2", table.copy(def))
minetest.register_node("farming:potato_2", table.copy(def))
-- stage 3
def.tiles = {"farming_potato_3.png"}
def.drop = {
items = {
@ -73,24 +89,21 @@ def.drop = {
{items = {"farming:potato"}, rarity = 3}
}
}
core.register_node("farming:potato_3", table.copy(def))
-- stage 4 (final)
minetest.register_node("farming:potato_3", table.copy(def))
-- stage 4
def.tiles = {"farming_potato_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:potato 2"}, rarity = 1},
{items = {"farming:potato"}, rarity = 2},
{items = {"farming:potato"}, rarity = 3}
{items = {"farming:potato 3"}, rarity = 2}
}
}
core.register_node("farming:potato_4", table.copy(def))
minetest.register_node("farming:potato_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:potato"] = {
crop = "farming:potato",
seed = "farming:potato",
@ -100,13 +113,9 @@ farming.registered_plants["farming:potato"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "default:dirt_with_rainforest_litter",
"mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -116,6 +125,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 40,
y_min = 15,
y_max = 40,
decoration = "farming:potato_3"
})

View File

@ -1,25 +1,146 @@
local S = core.get_translator("farming")
local S = farming.translate
-- seed
core.register_craftitem("farming:pumpkin_slice", {
-- pumpkin slice
minetest.register_craftitem("farming:pumpkin_slice", {
description = S("Pumpkin Slice"),
inventory_image = "farming_pumpkin_slice.png",
groups = {compostability = 48, seed = 2, food_pumpkin_slice = 1},
on_use = core.item_eat(2),
groups = {compostability = 48, seed = 2, food_pumpkin_slice = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:pumpkin_1")
end,
on_use = minetest.item_eat(2)
})
minetest.register_craft({
output = "farming:pumpkin",
recipe = {
{"farming:pumpkin_slice", "farming:pumpkin_slice"},
{"farming:pumpkin_slice", "farming:pumpkin_slice"}
}
})
local tmp = farming.use_utensils and "farming:cutting_board" or ""
minetest.register_craft({
output = "farming:pumpkin_slice 4",
recipe = {{"farming:pumpkin", tmp}},
replacements = {{"farming:cutting_board", "farming:cutting_board"}}
})
-- jack 'o lantern
minetest.register_node("farming:jackolantern", {
description = S("Jack 'O Lantern (punch to turn on and off)"),
tiles = {
"farming_pumpkin_bottom.png^farming_pumpkin_top.png",
"farming_pumpkin_bottom.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png^farming_pumpkin_face_off.png"
},
paramtype2 = "facedir",
groups = {
handy = 1, snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2
},
sounds = farming.sounds.node_sound_wood_defaults(),
on_punch = function(pos, node, puncher)
local name = puncher:get_player_name() or ""
if minetest.is_protected(pos, name) then return end
node.name = "farming:jackolantern_on"
minetest.swap_node(pos, node)
end
})
farming.add_eatable("farming:pumpkin_slice", 2)
minetest.register_node("farming:jackolantern_on", {
tiles = {
"farming_pumpkin_bottom.png^farming_pumpkin_top.png",
"farming_pumpkin_bottom.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png^farming_pumpkin_face_on.png"
},
light_source = minetest.LIGHT_MAX - 1,
paramtype2 = "facedir",
groups = {
handy = 1, snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2,
not_in_creative_inventory = 1
},
sounds = farming.sounds.node_sound_wood_defaults(),
drop = "farming:jackolantern",
on_punch = function(pos, node, puncher)
local name = puncher:get_player_name() or ""
if minetest.is_protected(pos, name) then return end
node.name = "farming:jackolantern"
minetest.swap_node(pos, node)
end
})
-- crop definition
minetest.register_craft({
output = "farming:jackolantern",
recipe = {
{"default:torch"},
{"group:food_pumpkin"}
}
})
--- wooden scarecrow base
minetest.register_node("farming:scarecrow_bottom", {
description = S("Scarecrow Bottom"),
paramtype = "light",
sunlight_propagates = true,
paramtype2 = "facedir",
tiles = {"default_wood.png"},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-1/16, -8/16, -1/16, 1/16, 8/16, 1/16},
{-12/16, 4/16, -1/16, 12/16, 2/16, 1/16},
}
},
groups = {handy = 1, snappy = 3, flammable = 2}
})
minetest.register_craft({
output = "farming:scarecrow_bottom",
recipe = {
{"", "group:stick", ""},
{"group:stick", "group:stick", "group:stick"},
{"", "group:stick", ""}
}
})
-- pumpkin bread
minetest.register_craftitem("farming:pumpkin_bread", {
description = S("Pumpkin Bread"),
inventory_image = "farming_pumpkin_bread.png",
on_use = minetest.item_eat(8),
groups = {food_bread = 1, flammable = 2}
})
minetest.register_craftitem("farming:pumpkin_dough", {
description = S("Pumpkin Dough"),
inventory_image = "farming_pumpkin_dough.png"
})
minetest.register_craft({
output = "farming:pumpkin_dough",
recipe = {
{"group:food_pumpkin_slice", "group:food_flour", "group:food_pumpkin_slice"}
}
})
minetest.register_craft({
type = "cooking",
output = "farming:pumpkin_bread",
recipe = "farming:pumpkin_dough",
cooktime = 10
})
-- pumpkin definition
local def = {
description = S("Pumpkin") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_pumpkin_1.png"},
paramtype = "light",
@ -33,48 +154,38 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:pumpkin_1", table.copy(def))
minetest.register_node("farming:pumpkin_1", table.copy(def))
-- stage 2
def.tiles = {"farming_pumpkin_2.png"}
core.register_node("farming:pumpkin_2", table.copy(def))
minetest.register_node("farming:pumpkin_2", table.copy(def))
-- stage 3
def.tiles = {"farming_pumpkin_3.png"}
core.register_node("farming:pumpkin_3", table.copy(def))
minetest.register_node("farming:pumpkin_3", table.copy(def))
-- stage 4
def.tiles = {"farming_pumpkin_4.png"}
core.register_node("farming:pumpkin_4", table.copy(def))
minetest.register_node("farming:pumpkin_4", table.copy(def))
-- stage 5
def.tiles = {"farming_pumpkin_5.png"}
core.register_node("farming:pumpkin_5", table.copy(def))
minetest.register_node("farming:pumpkin_5", table.copy(def))
-- stage 6
def.tiles = {"farming_pumpkin_6.png"}
core.register_node("farming:pumpkin_6", table.copy(def))
minetest.register_node("farming:pumpkin_6", table.copy(def))
-- stage 7
def.tiles = {"farming_pumpkin_7.png"}
core.register_node("farming:pumpkin_7", table.copy(def))
minetest.register_node("farming:pumpkin_7", table.copy(def))
-- stage 8 (final)
core.register_node("farming:pumpkin_8", {
minetest.register_node("farming:pumpkin_8", {
description = S("Pumpkin"),
tiles = {
"farming_pumpkin_bottom.png^farming_pumpkin_top.png",
@ -83,21 +194,17 @@ core.register_node("farming:pumpkin_8", {
},
groups = {
food_pumpkin = 1, snappy = 3, choppy = 3, oddly_breakable_by_hand = 2,
flammable = 2, plant = 1, handy = 1
flammable = 2, plant = 1
},
is_ground_content = false,
drop = "farming:pumpkin_8",
sounds = farming.node_sound_wood_defaults(),
sounds = farming.sounds.node_sound_wood_defaults(),
paramtype2 = "facedir",
on_place = core.rotate_node,
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
on_place = minetest.rotate_node
})
core.register_alias("farming:pumpkin", "farming:pumpkin_8")
minetest.register_alias("farming:pumpkin", "farming:pumpkin_8")
-- add to registered_plants
farming.registered_plants["farming:pumpkin"] = {
crop = "farming:pumpkin",
seed = "farming:pumpkin_slice",
@ -107,13 +214,17 @@ farming.registered_plants["farming:pumpkin"] = {
}
-- mapgen
local mg = farming.mapgen == "v6"
core.register_decoration({
def = {
y_max = mg and 20 or 6,
near = mg and "group:water" or nil,
num = mg and 1 or -1,
}
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "default:dirt_with_rainforest_litter",
"mcl_core:dirt_with_grass"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -123,7 +234,9 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 3,
y_min = 1,
y_max = def.y_max,
decoration = "farming:pumpkin_8",
spawn_by = {"group:water", "group:sand"}, num_spawn_by = 1
spawn_by = def.near,
num_spawn_by = def.num
})

View File

@ -1,28 +1,38 @@
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- item/seed
core.register_craftitem("farming:raspberries", {
-- raspberries
minetest.register_craftitem("farming:raspberries", {
description = S("Raspberries"),
inventory_image = "farming_raspberries.png",
groups = {
compostability = 48, seed = 2, food_raspberries = 1, food_raspberry = 1,
food_berry = 1
},
on_use = core.item_eat(1),
groups = {compostability = 48, seed = 2, food_raspberries = 1, food_raspberry = 1,
food_berry = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:raspberry_1")
end
end,
on_use = minetest.item_eat(1)
})
farming.add_eatable("farming:raspberries", 1)
-- raspberry smoothie
minetest.register_craftitem("farming:smoothie_raspberry", {
description = S("Raspberry Smoothie"),
inventory_image = "farming_raspberry_smoothie.png",
on_use = minetest.item_eat(2, "vessels:drinking_glass"),
groups = {vessel = 1, drink = 1, compostability = 65}
})
-- crop definition
minetest.register_craft({
output = "farming:smoothie_raspberry",
recipe = {
{a.snow},
{"group:food_raspberries"},
{a.drinking_glass}
}
})
-- raspberries definition
local def = {
description = S("Raspberry") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_raspberry_1.png"},
paramtype = "light",
@ -35,27 +45,21 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:raspberry_1", table.copy(def))
minetest.register_node("farming:raspberry_1", table.copy(def))
-- stage 2
def.tiles = {"farming_raspberry_2.png"}
core.register_node("farming:raspberry_2", table.copy(def))
minetest.register_node("farming:raspberry_2", table.copy(def))
-- stage 3
def.tiles = {"farming_raspberry_3.png"}
core.register_node("farming:raspberry_3", table.copy(def))
minetest.register_node("farming:raspberry_3", table.copy(def))
-- stage 4 (final)
def.tiles = {"farming_raspberry_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
@ -66,10 +70,9 @@ def.drop = {
{items = {"farming:raspberries"}, rarity = 3}
}
}
core.register_node("farming:raspberry_4", table.copy(def))
minetest.register_node("farming:raspberry_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:raspberries"] = {
crop = "farming:raspberry",
seed = "farming:raspberries",
@ -79,12 +82,9 @@ farming.registered_plants["farming:raspberries"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -94,6 +94,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 3, y_max = 15,
y_min = 3,
y_max = 15,
decoration = "farming:raspberry_4"
})

View File

@ -1,25 +1,38 @@
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- item/seed
core.register_craftitem("farming:rhubarb", {
-- rhubarb
minetest.register_craftitem("farming:rhubarb", {
description = S("Rhubarb"),
inventory_image = "farming_rhubarb.png",
groups = {compostability = 48, seed = 2, food_rhubarb = 1},
on_use = core.item_eat(1),
groups = {compostability = 48, seed = 2, food_rhubarb = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:rhubarb_1")
end
end,
on_use = minetest.item_eat(1)
})
farming.add_eatable("farming:rhubarb", 1)
-- rhubarb pie
minetest.register_craftitem("farming:rhubarb_pie", {
description = S("Rhubarb Pie"),
inventory_image = "farming_rhubarb_pie.png",
on_use = minetest.item_eat(6),
groups = {compostability = 65}
})
-- crop definition
minetest.register_craft({
output = "farming:rhubarb_pie",
recipe = {
{a.baking_tray, "group:food_sugar", ""},
{"group:food_rhubarb", "group:food_rhubarb", "group:food_rhubarb"},
{"group:food_wheat", "group:food_wheat", "group:food_wheat"}
},
replacements = {{"group:food_baking_tray", "farming:baking_tray"}}
})
-- rhubarb definition
local def = {
description = S("Rhubarb") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_rhubarb_1.png"},
paramtype = "light",
@ -33,35 +46,28 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults(),
sounds = farming.sounds.node_sound_leaves_defaults(),
minlight = 10,
maxlight = 12
}
-- stage 1
core.register_node("farming:rhubarb_1", table.copy(def))
minetest.register_node("farming:rhubarb_1", table.copy(def))
-- stage2
def.tiles = {"farming_rhubarb_2.png"}
core.register_node("farming:rhubarb_2", table.copy(def))
minetest.register_node("farming:rhubarb_2", table.copy(def))
-- stage3
def.tiles = {"farming_rhubarb_3.png"}
def.drop = {
items = {
{items = {"farming:rhubarb"}, rarity = 1},
{items = {"farming:rhubarb"}, rarity = 3}
}
}
core.register_node("farming:rhubarb_3", table.copy(def))
minetest.register_node("farming:rhubarb_3", table.copy(def))
-- stage 4 (final)
def.tiles = {"farming_rhubarb_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
@ -72,10 +78,9 @@ def.drop = {
{items = {"farming:rhubarb"}, rarity = 3}
}
}
core.register_node("farming:rhubarb_4", table.copy(def))
minetest.register_node("farming:rhubarb_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:rhubarb"] = {
crop = "farming:rhubarb",
seed = "farming:rhubarb",
@ -85,12 +90,9 @@ farming.registered_plants["farming:rhubarb"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -100,6 +102,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 3, y_max = 20,
y_min = 3,
y_max = 20,
decoration = "farming:rhubarb_3"
})

View File

@ -1,57 +1,79 @@
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- rice seed
core.register_node("farming:seed_rice", {
minetest.register_node("farming:seed_rice", {
description = S("Rice Seed"),
tiles = {"farming_rice_seed.png"},
inventory_image = "farming_rice_seed.png",
wield_image = "farming_rice_seed.png",
drawtype = "signlike",
groups = {
handy = 1, compostability = 48, seed = 1, snappy = 3, attached_node = 1,
compostability = 48, seed = 1, snappy = 3, attached_node = 1,
flammable = 4, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
paramtype = "light",
paramtype2 = "wallmounted",
walkable = false,
sunlight_propagates = true,
selection_box = farming.select,
next_plant = "farming:rice_1",
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_rice")
end,
on_timer = function(pos, elapsed)
core.set_node(pos, {name = "farming:rice_1", param2 = 3})
minetest.set_node(pos, {name = "farming:rice_1", param2 = 3})
end
})
-- rice item
core.register_craftitem("farming:rice", {
-- rice
minetest.register_craftitem("farming:rice", {
description = S("Rice"),
inventory_image = "farming_rice.png",
groups = {seed = 2, food_rice = 1, flammable = 2, compostability = 65},
})
-- dry rice seed to give edible rice
core.register_craft({
minetest.register_craft({
type = "cooking",
cooktime = 1,
output = "farming:rice",
recipe = "farming:seed_rice"
})
-- crop definition
-- rice flour and bread
minetest.register_craftitem("farming:rice_bread", {
description = S("Rice Bread"),
inventory_image = "farming_rice_bread.png",
on_use = minetest.item_eat(5),
groups = {food_rice_bread = 1, flammable = 2, compostability = 65}
})
minetest.register_craftitem("farming:rice_flour", {
description = S("Rice Flour"),
inventory_image = "farming_rice_flour.png",
groups = {food_rice_flour = 1, flammable = 1, compostability = 65}
})
minetest.register_craft({
output = "farming:rice_flour",
recipe = {
{"farming:rice", "farming:rice", "farming:rice"},
{"farming:rice", a.mortar_pestle, ""}
},
replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}}
})
minetest.register_craft({
type = "cooking",
cooktime = 15,
output = "farming:rice_bread",
recipe = "farming:rice_flour"
})
-- rice definition
local def = {
description = S("Rice") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_rice_1.png"},
paramtype = "light",
@ -67,73 +89,67 @@ local def = {
handy = 1, snappy = 3, flammable = 4, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:rice_1", table.copy(def))
minetest.register_node("farming:rice_1", table.copy(def))
-- stage 2
def.tiles = {"farming_rice_2.png"}
core.register_node("farming:rice_2", table.copy(def))
minetest.register_node("farming:rice_2", table.copy(def))
-- stage 3
def.tiles = {"farming_rice_3.png"}
core.register_node("farming:rice_3", table.copy(def))
minetest.register_node("farming:rice_3", table.copy(def))
-- stage 4
def.tiles = {"farming_rice_4.png"}
core.register_node("farming:rice_4", table.copy(def))
minetest.register_node("farming:rice_4", table.copy(def))
-- stage 5
def.tiles = {"farming_rice_5.png"}
core.register_node("farming:rice_5", table.copy(def))
def.drop = {
items = {
{items = {"farming:rice"}, rarity = 2}
}
}
minetest.register_node("farming:rice_5", table.copy(def))
-- stage 6
def.tiles = {"farming_rice_6.png"}
def.drop = {
items = {
{items = {"farming:seed_rice"}, rarity = 2}
{items = {"farming:rice"}, rarity = 2}
}
}
core.register_node("farming:rice_6", table.copy(def))
minetest.register_node("farming:rice_6", table.copy(def))
-- stage 7
def.tiles = {"farming_rice_7.png"}
def.drop = {
items = {
{items = {"farming:seed_rice"}, rarity = 1},
{items = {"farming:seed_rice"}, rarity = 2},
{items = {"farming:seed_rice"}, rarity = 3}
}
}
core.register_node("farming:rice_7", table.copy(def))
minetest.register_node("farming:rice_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_rice_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:seed_rice 2"}, rarity = 1},
{items = {"farming:seed_rice"}, rarity = 2},
{items = {"farming:seed_rice"}, rarity = 3},
{items = {"farming:seed_rice"}, rarity = 4}
{items = {"farming:seed_rice 2"}, rarity = 2},
{items = {"farming:seed_rice"}, rarity = 3}
}
}
core.register_node("farming:rice_8", table.copy(def))
minetest.register_node("farming:rice_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:rice"] = {
crop = "farming:rice",
seed = "farming:seed_rice",
@ -141,3 +157,16 @@ farming.registered_plants["farming:rice"] = {
maxlight = farming.max_light,
steps = 8
}
-- fuels
minetest.register_craft({
type = "fuel",
recipe = "farming:rice",
burntime = 1
})
minetest.register_craft({
type = "fuel",
recipe = "farming:rice_bread",
burntime = 1
})

View File

@ -1,54 +0,0 @@
local S = core.get_translator("farming")
--= A nice addition from Ademant's grain mod :)
-- Rye
farming.register_plant("farming:rye", {
description = S("Rye seed"),
paramtype2 = "meshoptions",
inventory_image = "farming_rye_seed.png",
steps = 8,
place_param2 = 3
})
-- override rye item
core.override_item("farming:rye", {
description = S("Rye"),
groups = {food_rye = 1, flammable = 4, compostability = 65}
})
-- override rye crop
core.override_item("farming:rye_1", {drop = {}})
core.override_item("farming:rye_2", {drop = {}})
core.override_item("farming:rye_3", {drop = {}})
core.override_item("farming:rye_4", {drop = {}})
core.override_item("farming:rye_5", {drop = {}})
-- Oats
farming.register_plant("farming:oat", {
description = S("Oat seed"),
paramtype2 = "meshoptions",
inventory_image = "farming_oat_seed.png",
steps = 8,
place_param2 = 3
})
-- override oat item
core.override_item("farming:oat", {
description = S("Oats"),
groups = {food_oats = 1, flammable = 4, compostability = 65}
})
-- override oat crop
core.override_item("farming:oat_1", {drop = {}})
core.override_item("farming:oat_2", {drop = {}})
core.override_item("farming:oat_3", {drop = {}})
core.override_item("farming:oat_4", {drop = {}})
core.override_item("farming:oat_5", {drop = {}})

115
crops/ryeoatrice.lua Normal file
View File

@ -0,0 +1,115 @@
local S = farming.translate
local a = farming.recipe_items
--= A nice addition from Ademant's grain mod :)
-- Rye
farming.register_plant("farming:rye", {
description = S("Rye seed"),
paramtype2 = "meshoptions",
inventory_image = "farming_rye_seed.png",
steps = 8,
place_param2 = 3
})
minetest.override_item("farming:rye", {
description = S("Rye"),
groups = {food_rye = 1, flammable = 4, compostability = 65}
})
minetest.override_item("farming:rye_1", {drop = {}})
minetest.override_item("farming:rye_2", {drop = {}})
minetest.override_item("farming:rye_3", {drop = {}})
minetest.register_craft({
output = "farming:flour",
recipe = {
{"farming:rye", "farming:rye", "farming:rye"},
{"farming:rye", a.mortar_pestle, ""}
},
replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}}
})
-- Oats
farming.register_plant("farming:oat", {
description = S("Oat seed"),
paramtype2 = "meshoptions",
inventory_image = "farming_oat_seed.png",
steps = 8,
place_param2 = 3
})
minetest.override_item("farming:oat", {
description = S("Oats"),
groups = {food_oats = 1, flammable = 4, compostability = 65}
})
minetest.override_item("farming:oat_1", {drop = {}})
minetest.override_item("farming:oat_2", {drop = {}})
minetest.override_item("farming:oat_3", {drop = {}})
minetest.register_craft({
output = "farming:flour",
recipe = {
{"farming:oat", "farming:oat", "farming:oat"},
{"farming:oat", a.mortar_pestle, ""}
},
replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}}
})
-- Multigrain flour
minetest.register_craftitem("farming:flour_multigrain", {
description = S("Multigrain Flour"),
inventory_image = "farming_flour_multigrain.png",
groups = {food_flour = 1, flammable = 1},
})
minetest.register_craft({
type = "shapeless",
output = "farming:flour_multigrain",
recipe = {
"group:food_wheat", "group:food_barley", "group:food_oats",
"group:food_rye", a.mortar_pestle
},
replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}}
})
-- Multigrain bread
minetest.register_craftitem("farming:bread_multigrain", {
description = S("Multigrain Bread"),
inventory_image = "farming_bread_multigrain.png",
on_use = minetest.item_eat(7),
groups = {food_bread = 1, flammable = 2, compostability = 65}
})
minetest.register_craft({
type = "cooking",
cooktime = 15,
output = "farming:bread_multigrain",
recipe = "farming:flour_multigrain"
})
-- Fuels
minetest.register_craft({
type = "fuel",
recipe = "farming:bread_multigrain",
burntime = 1
})
minetest.register_craft({
type = "fuel",
recipe = "farming:rye",
burntime = 1
})
minetest.register_craft({
type = "fuel",
recipe = "farming:oat",
burntime = 1
})

View File

@ -1,26 +1,121 @@
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- item/seed
core.register_craftitem("farming:soy_pod", {
-- soy pod
minetest.register_craftitem("farming:soy_pod", {
description = S("Soy Pod"),
inventory_image = "farming_soy_pod.png",
groups = {compostability = 48, seed = 2, food_soy = 1, food_soy_pod = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:soy_1")
end
})
-- replacement for soy beans that was removed
minetest.register_alias("farming:soy_beans", "farming:soy_pod")
core.register_alias("farming:soy_beans", "farming:soy_pod")
-- soy sauce
minetest.register_node("farming:soy_sauce", {
description = S("Soy Sauce"),
drawtype = "plantlike",
tiles = {"farming_soy_sauce.png"},
inventory_image = "farming_soy_sauce.png",
wield_image = "farming_soy_sauce.png",
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
},
groups = {
vessel = 1, food_soy_sauce = 1, dig_immediate = 3, attached_node = 1,
compostability = 65
},
sounds = farming.sounds.node_sound_glass_defaults()
})
-- soy sauce recipe
minetest.register_craft( {
output = "farming:soy_sauce",
recipe = {
{"group:food_soy", "group:food_salt", "group:food_soy"},
{a.juicer, a.bucket_water, a.glass_bottle}
},
replacements = {
{a.bucket_water, a.bucket_empty},
{"group:food_juicer", "farming:juicer"}
}
})
-- soy milk
minetest.register_node("farming:soy_milk", {
description = S("Soy Milk"),
drawtype = "plantlike",
tiles = {"farming_soy_milk_glass.png"},
inventory_image = "farming_soy_milk_glass.png",
wield_image = "farming_soy_milk_glass.png",
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
},
on_use = minetest.item_eat(2, "vessels:drinking_glass"),
groups = {
vessel = 1, food_milk_glass = 1, dig_immediate = 3,
attached_node = 1, drink = 1, compostability = 65
},
sounds = farming.sounds.node_sound_glass_defaults()
})
minetest.register_craft( {
output = "farming:soy_milk",
recipe = {
{"group:food_soy", "group:food_soy", "group:food_soy"},
{"farming:vanilla_extract", "bucket:bucket_water", a.drinking_glass}
},
replacements = {
{a.bucket_water, a.bucket_empty},
{"farming:vanilla_extract", a.glass_bottle}
}
})
-- tofu
minetest.register_craftitem("farming:tofu", {
description = S("Tofu"),
inventory_image = "farming_tofu.png",
groups = {food_tofu = 1, food_meat_raw = 1, flammable = 2, compostability = 65},
on_use = minetest.item_eat(3)
})
minetest.register_craft({
output = "farming:tofu",
recipe = {
{"group:food_soy", "group:food_soy", "group:food_soy"},
{"group:food_soy", "group:food_soy", a.baking_tray}
},
replacements = {{"farming:baking_tray", "farming:baking_tray"}}
})
-- cooked tofu
minetest.register_craftitem("farming:tofu_cooked", {
description = S("Cooked Tofu"),
inventory_image = "farming_tofu_cooked.png",
groups = {food_meat = 1, flammable = 2, compostability = 65},
on_use = minetest.item_eat(6)
})
minetest.register_craft({
type = "cooking",
output = "farming:tofu_cooked",
recipe = "farming:tofu",
cooktime = 5
})
-- crop definition
local def = {
description = S("Soy") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_soy_1.png"},
paramtype = "light",
@ -36,68 +131,60 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:soy_1", table.copy(def))
minetest.register_node("farming:soy_1", table.copy(def))
-- stage 2
def.tiles = {"farming_soy_2.png"}
core.register_node("farming:soy_2", table.copy(def))
minetest.register_node("farming:soy_2", table.copy(def))
-- stage 3
def.tiles = {"farming_soy_3.png"}
core.register_node("farming:soy_3", table.copy(def))
minetest.register_node("farming:soy_3", table.copy(def))
-- stage 4
def.tiles = {"farming_soy_4.png"}
core.register_node("farming:soy_4", table.copy(def))
minetest.register_node("farming:soy_4", table.copy(def))
-- stage 5
def.tiles = {"farming_soy_5.png"}
def.drop = {
items = {
{items = {"farming:soy_pod"}, rarity = 2}
max_items = 1, items = {
{items = {"farming:soy_pod"}, rarity = 1},
}
}
core.register_node("farming:soy_5", table.copy(def))
minetest.register_node("farming:soy_5", table.copy(def))
-- stage 6
def.tiles = {"farming_soy_6.png"}
def.drop = {
items = {
max_items = 3, items = {
{items = {"farming:soy_pod"}, rarity = 1},
{items = {"farming:soy_pod"}, rarity = 2},
{items = {"farming:soy_pod"}, rarity = 3}
}
}
core.register_node("farming:soy_6", table.copy(def))
-- stage 7 (final)
minetest.register_node("farming:soy_6", table.copy(def))
-- stage 7
def.tiles = {"farming_soy_7.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:soy_pod 2"}, rarity = 1},
max_items = 5, items = {
{items = {"farming:soy_pod"}, rarity = 1},
{items = {"farming:soy_pod"}, rarity = 2},
{items = {"farming:soy_pod"}, rarity = 3},
{items = {"farming:soy_pod"}, rarity = 4}
{items = {"farming:soy_pod"}, rarity = 4},
{items = {"farming:soy_pod"}, rarity = 5}
}
}
core.register_node("farming:soy_7", table.copy(def))
minetest.register_node("farming:soy_7", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:soy_pod"] = {
crop = "farming:soy",
seed = "farming:soy_pod",
@ -107,14 +194,17 @@ farming.registered_plants["farming:soy_pod"] = {
}
-- mapgen
local mg = farming.mapgen == "v6"
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "default:dirt_with_dry_grass",
def = {
spawn_on = mg and {"default:dirt_with_grass"} or {"default:dirt_with_dry_grass",
"default:dirt_with_rainforest_litter", "default:dry_dirt_with_dry_grass",
"mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
"mcl_core:dirt_with_grass"}
}
minetest.register_decoration({
deco_type = "simple",
place_on = def.spawn_on,
sidelen = 16,
noise_params = {
offset = 0,
@ -124,6 +214,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 20, y_max = 50,
y_min = 20,
y_max = 50,
decoration = "farming:soy_6"
})

View File

@ -1,25 +1,19 @@
local S = core.get_translator("farming")
local S = farming.translate
-- item/seed
core.register_craftitem("farming:spinach", {
-- spinach
minetest.register_craftitem("farming:spinach", {
description = S("Spinach"),
inventory_image = "farming_spinach.png",
groups = {compostability = 48, seed = 2, food_spinach = 1},
on_use = core.item_eat(1),
groups = {compostability = 48, seed = 2, food_spinach = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:spinach_1")
end
end,
on_use = minetest.item_eat(1)
})
farming.add_eatable("farming:spinach", 1)
-- crop definition
-- definition
local def = {
description = S("Spinach") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_spinach_1.png"},
paramtype = "light",
@ -33,22 +27,17 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:spinach_1", table.copy(def))
minetest.register_node("farming:spinach_1", table.copy(def))
-- stage 2
def.tiles = {"farming_spinach_2.png"}
core.register_node("farming:spinach_2", table.copy(def))
minetest.register_node("farming:spinach_2", table.copy(def))
-- stage 3
def.tiles = {"farming_spinach_3.png"}
def.drop = {
items = {
@ -56,25 +45,22 @@ def.drop = {
{items = {"farming:spinach"}, rarity = 3}
}
}
core.register_node("farming:spinach_3", table.copy(def))
minetest.register_node("farming:spinach_3", table.copy(def))
-- stage 4
def.tiles = {"farming_spinach_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:spinach 2"}, rarity = 1},
{items = {"farming:spinach"}, rarity = 2},
{items = {"farming:spinach"}, rarity = 3},
{items = {"farming:spinach"}, rarity = 4}
{items = {"farming:spinach 2"}, rarity = 2},
{items = {"farming:spinach 2"}, rarity = 3}
}
}
core.register_node("farming:spinach_4", table.copy(def))
minetest.register_node("farming:spinach_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:spinach"] = {
crop = "farming:spinach",
seed = "farming:spinach",
@ -84,20 +70,21 @@ farming.registered_plants["farming:spinach"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
offset = -0.1,
scale = farming.spinach,
spread = {x = 100, y = 100, z = 100},
seed = 910,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 100,
decoration = "farming:spinach_3",
biomes = {"deciduous_forest"},
y_max = 31000,
y_min = 1,
decoration = "farming:spinach_4",
param2 = 3
})

View File

@ -1,25 +1,21 @@
local S = core.get_translator("farming")
local S = farming.translate
-- item/seed
core.register_craftitem(":ethereal:strawberry", {
-- Strawberry (can also be planted as seed)
minetest.register_craftitem(":ethereal:strawberry", {
description = S("Strawberry"),
inventory_image = "ethereal_strawberry.png",
groups = {compostability = 48, seed = 2, food_strawberry = 1, food_berry = 1},
on_use = core.item_eat(1),
groups = {
compostability = 48, seed = 2, food_strawberry = 1, food_berry = 1, flammable = 2
},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "ethereal:strawberry_1")
end,
on_use = minetest.item_eat(1)
})
farming.add_eatable("ethereal:strawberry", 1)
-- crop definition
-- Define Strawberry Bush growth stages
local def = {
description = S("Strawberry") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"ethereal_strawberry_1.png"},
paramtype = "light",
@ -36,68 +32,61 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
--stage 1
core.register_node(":ethereal:strawberry_1", table.copy(def))
minetest.register_node(":ethereal:strawberry_1", table.copy(def))
-- stage 2
def.tiles = {"ethereal_strawberry_2.png"}
core.register_node(":ethereal:strawberry_2", table.copy(def))
minetest.register_node(":ethereal:strawberry_2", table.copy(def))
-- stage 3
def.tiles = {"ethereal_strawberry_3.png"}
core.register_node(":ethereal:strawberry_3", table.copy(def))
minetest.register_node(":ethereal:strawberry_3", table.copy(def))
-- stage 4
def.tiles = {"ethereal_strawberry_4.png"}
core.register_node(":ethereal:strawberry_4", table.copy(def))
minetest.register_node(":ethereal:strawberry_4", table.copy(def))
-- stage 5
def.tiles = {"ethereal_strawberry_5.png"}
core.register_node(":ethereal:strawberry_5", table.copy(def))
minetest.register_node(":ethereal:strawberry_5", table.copy(def))
-- stage 6
def.tiles = {"ethereal_strawberry_6.png"}
core.register_node(":ethereal:strawberry_6", table.copy(def))
def.drop = {
items = {
{items = {"ethereal:strawberry 1"}, rarity = 2},
{items = {"ethereal:strawberry 2"}, rarity = 3}
}
}
minetest.register_node(":ethereal:strawberry_6", table.copy(def))
-- stage 7
def.tiles = {"ethereal_strawberry_7.png"}
def.drop = {
items = {
{items = {"ethereal:strawberry"}, rarity = 1},
{items = {"ethereal:strawberry"}, rarity = 3}
{items = {"ethereal:strawberry 1"}, rarity = 1},
{items = {"ethereal:strawberry 2"}, rarity = 3}
}
}
core.register_node(":ethereal:strawberry_7", table.copy(def))
-- stage 8 (final)
minetest.register_node(":ethereal:strawberry_7", table.copy(def))
-- stage 8
def.tiles = {"ethereal_strawberry_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"ethereal:strawberry 2"}, rarity = 1},
{items = {"ethereal:strawberry"}, rarity = 2},
{items = {"ethereal:strawberry"}, rarity = 3},
{items = {"ethereal:strawberry"}, rarity = 4},
{items = {"ethereal:strawberry 3"}, rarity = 3}
}
}
core.register_node(":ethereal:strawberry_8", table.copy(def))
minetest.register_node(":ethereal:strawberry_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["ethereal:strawberry"] = {
crop = "ethereal:strawberry",
seed = "ethereal:strawberry",
@ -107,12 +96,9 @@ farming.registered_plants["ethereal:strawberry"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -122,6 +108,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 15, y_max = 55,
y_min = 20,
y_max = 55,
decoration = "ethereal:strawberry_7"
})

View File

@ -1,9 +1,16 @@
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- seed
-- sunflower
minetest.register_craftitem("farming:sunflower", {
description = S("Sunflower"),
inventory_image = "farming_sunflower.png",
groups = {flammable = 2}
})
core.register_node("farming:seed_sunflower", {
-- sunflower seeds
minetest.register_node("farming:seed_sunflower", {
description = S("Sunflower Seeds"),
tiles = {"farming_sunflower_seeds.png"},
inventory_image = "farming_sunflower_seeds.png",
@ -11,47 +18,102 @@ core.register_node("farming:seed_sunflower", {
drawtype = "signlike",
groups = {
compostability = 48, seed = 1, snappy = 3, attached_node = 1, growing = 1,
handy = 1, food_sunflower_seeds = 1, flammable = 2
food_sunflower_seeds = 1, flammable = 2
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
paramtype = "light",
paramtype2 = "wallmounted",
walkable = false,
sunlight_propagates = true,
selection_box = farming.select,
next_plant = "farming:sunflower_1",
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_sunflower")
end,
on_timer = function(pos, elapsed)
core.set_node(pos, {name = "farming:sunflower_1", param2 = 1})
minetest.set_node(pos, {name = "farming:sunflower_1", param2 = 1})
end
})
core.register_alias("farming:sunflower_seeds", "farming:seed_sunflower")
minetest.register_alias("farming:sunflower_seeds", "farming:seed_sunflower")
-- item
core.register_craftitem("farming:sunflower", {
description = S("Sunflower"),
inventory_image = "farming_sunflower.png",
groups = {flammable = 2}
})
-- turn item into seeds
core.register_craft({
minetest.register_craft({
output = "farming:seed_sunflower 5",
recipe = {{"farming:sunflower"}}
})
-- crop definition
-- sunflower seeds (toasted)
minetest.register_craftitem("farming:sunflower_seeds_toasted", {
description = S("Toasted Sunflower Seeds"),
inventory_image = "farming_sunflower_seeds_toasted.png",
groups = {food_sunflower_seeds_toasted = 1, flammable = 2, compostability = 65},
on_use = minetest.item_eat(1)
})
minetest.register_craft({
type = "cooking",
cooktime = 10,
output = "farming:sunflower_seeds_toasted",
recipe = "farming:seed_sunflower"
})
-- sunflower oil
minetest.register_node("farming:sunflower_oil", {
description = S("Bottle of Sunflower Oil"),
drawtype = "plantlike",
tiles = {"farming_sunflower_oil.png"},
inventory_image = "farming_sunflower_oil.png",
wield_image = "farming_sunflower_oil.png",
paramtype = "light",
is_ground_content = false,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
},
groups = {
food_oil = 1, vessel = 1, dig_immediate = 3, attached_node = 1,
flammable = 2, compostability = 65
},
sounds = farming.sounds.node_sound_glass_defaults()
})
minetest.register_craft( {
output = "farming:sunflower_oil",
recipe = {
{"group:food_sunflower_seeds", "group:food_sunflower_seeds", "group:food_sunflower_seeds"},
{"group:food_sunflower_seeds", "group:food_sunflower_seeds", "group:food_sunflower_seeds"},
{"group:food_sunflower_seeds", a.glass_bottle, "group:food_sunflower_seeds"}
}
})
minetest.register_craft({
type = "fuel",
recipe = "farming:sunflower_oil",
burntime = 30,
replacements = {{"farming:sunflower_oil", a.glass_bottle}}
})
-- sunflower seed bread
minetest.register_craftitem("farming:sunflower_bread", {
description = S("Sunflower Seed Bread"),
inventory_image = "farming_sunflower_bread.png",
on_use = minetest.item_eat(8),
groups = {food_bread = 1, flammable = 2}
})
minetest.register_craft({
output = "farming:sunflower_bread",
recipe = {
{
"group:food_sunflower_seeds_toasted",
"group:food_bread",
"group:food_sunflower_seeds_toasted"
}
}
})
-- sunflower definition
local def = {
description = S("Sunflower") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_sunflower_1.png"},
paramtype = "light",
@ -65,48 +127,38 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:sunflower_1", table.copy(def))
minetest.register_node("farming:sunflower_1", table.copy(def))
-- stage 2
def.tiles = {"farming_sunflower_2.png"}
core.register_node("farming:sunflower_2", table.copy(def))
minetest.register_node("farming:sunflower_2", table.copy(def))
-- stage 3
def.tiles = {"farming_sunflower_3.png"}
core.register_node("farming:sunflower_3", table.copy(def))
minetest.register_node("farming:sunflower_3", table.copy(def))
-- stage 4
def.tiles = {"farming_sunflower_4.png"}
core.register_node("farming:sunflower_4", table.copy(def))
minetest.register_node("farming:sunflower_4", table.copy(def))
-- stage 5
def.tiles = {"farming_sunflower_5.png"}
core.register_node("farming:sunflower_5", table.copy(def))
minetest.register_node("farming:sunflower_5", table.copy(def))
-- stage 6
def.tiles = {"farming_sunflower_6.png"}
def.visual_scale = 1.9
core.register_node("farming:sunflower_6", table.copy(def))
minetest.register_node("farming:sunflower_6", table.copy(def))
-- stage 7
def.tiles = {"farming_sunflower_7.png"}
core.register_node("farming:sunflower_7", table.copy(def))
minetest.register_node("farming:sunflower_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_sunflower_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
@ -116,10 +168,9 @@ def.drop = {
{items = {"farming:sunflower"}, rarity = 6}
}
}
core.register_node("farming:sunflower_8", table.copy(def))
minetest.register_node("farming:sunflower_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:sunflower"] = {
crop = "farming:sunflower",
seed = "farming:seed_sunflower",
@ -129,12 +180,9 @@ farming.registered_plants["farming:sunflower"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -144,6 +192,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 10, y_max = 40,
y_min = 10,
y_max = 40,
decoration = "farming:sunflower_8"
})

View File

@ -4,27 +4,38 @@
http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1288375-food-plus-mod-more-food-than-you-can-imagine-v2-9)
]]
local S = core.get_translator("farming")
local S = farming.translate
-- item/seed
core.register_craftitem("farming:tomato", {
-- tomato
minetest.register_craftitem("farming:tomato", {
description = S("Tomato"),
inventory_image = "farming_tomato.png",
groups = {compostability = 45, seed = 2, food_tomato = 1},
on_use = core.item_eat(4),
groups = {compostability = 45, seed = 2, food_tomato = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:tomato_1")
end
end,
on_use = minetest.item_eat(4)
})
farming.add_eatable("farming:tomato", 4)
-- tomato soup
minetest.register_craftitem("farming:tomato_soup", {
description = S("Tomato Soup"),
inventory_image = "farming_tomato_soup.png",
groups = {flammable = 2, compostability = 65},
on_use = minetest.item_eat(8, "farming:bowl")
})
-- crop definition
minetest.register_craft({
output = "farming:tomato_soup",
recipe = {
{"group:food_tomato"},
{"group:food_tomato"},
{"group:food_bowl"}
}
})
-- tomato definition
local def = {
description = S("Tomato") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_tomato_1.png"},
paramtype = "light",
@ -38,42 +49,33 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:tomato_1", table.copy(def))
minetest.register_node("farming:tomato_1", table.copy(def))
-- stage2
def.tiles = {"farming_tomato_2.png"}
core.register_node("farming:tomato_2", table.copy(def))
minetest.register_node("farming:tomato_2", table.copy(def))
-- stage 3
def.tiles = {"farming_tomato_3.png"}
core.register_node("farming:tomato_3", table.copy(def))
minetest.register_node("farming:tomato_3", table.copy(def))
-- stage 4
def.tiles = {"farming_tomato_4.png"}
core.register_node("farming:tomato_4", table.copy(def))
minetest.register_node("farming:tomato_4", table.copy(def))
-- stage 5
def.tiles = {"farming_tomato_5.png"}
core.register_node("farming:tomato_5", table.copy(def))
minetest.register_node("farming:tomato_5", table.copy(def))
-- stage 6
def.tiles = {"farming_tomato_6.png"}
core.register_node("farming:tomato_6", table.copy(def))
minetest.register_node("farming:tomato_6", table.copy(def))
-- stage 7
def.tiles = {"farming_tomato_7.png"}
def.drop = {
items = {
@ -81,25 +83,22 @@ def.drop = {
{items = {"farming:tomato"}, rarity = 3}
}
}
core.register_node("farming:tomato_7", table.copy(def))
minetest.register_node("farming:tomato_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_tomato_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:tomato 2"}, rarity = 1},
{items = {"farming:tomato"}, rarity = 2},
{items = {"farming:tomato"}, rarity = 3},
{items = {"farming:tomato"}, rarity = 4}
{items = {"farming:tomato 3"}, rarity = 1},
{items = {"farming:tomato 2"}, rarity = 2},
{items = {"farming:tomato 1"}, rarity = 3}
}
}
core.register_node("farming:tomato_8", table.copy(def))
minetest.register_node("farming:tomato_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:tomato"] = {
crop = "farming:tomato",
seed = "farming:tomato",
@ -109,12 +108,9 @@ farming.registered_plants["farming:tomato"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -124,6 +120,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 25,
y_min = 5,
y_max = 25,
decoration = "farming:tomato_7"
})

View File

@ -1,25 +1,20 @@
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- item/seed
core.register_craftitem("farming:vanilla", {
-- vanilla
minetest.register_craftitem("farming:vanilla", {
description = S("Vanilla"),
inventory_image = "farming_vanilla.png",
groups = {compostability = 48, seed = 2, food_vanilla = 1},
on_use = core.item_eat(1),
groups = {compostability = 48, seed = 2, food_vanilla = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:vanilla_1")
end
end,
on_use = minetest.item_eat(1)
})
farming.add_eatable("farming:vanilla", 1)
-- crop definition
local def = {
description = S("Vanilla") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_vanilla_1.png"},
paramtype = "light",
@ -33,69 +28,95 @@ local def = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
-- vanilla extract
minetest.register_node("farming:vanilla_extract", {
description = S("Vanilla Extract"),
drawtype = "plantlike",
tiles = {"farming_vanilla_extract.png"},
inventory_image = "farming_vanilla_extract.png",
wield_image = "farming_vanilla_extract.png",
paramtype = "light",
is_ground_content = false,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
sounds = farming.sounds.node_sound_glass_defaults(),
})
core.register_node("farming:vanilla_1", table.copy(def))
minetest.register_craft( {
output = "farming:vanilla_extract",
recipe = {
{"group:food_vanilla", "group:food_vanilla", "group:food_vanilla"},
{"group:food_vanilla", "farming:bottle_ethanol", "group:food_glass_water"},
},
replacements = {
{"group:food_glass_water", a.drinking_glass}
}
})
minetest.register_craft({
type = "fuel",
recipe = "farming:vanilla_extract",
burntime = 25,
replacements = {{"farming:vanilla_extract", a.glass_bottle}}
})
-- stage 1
minetest.register_node("farming:vanilla_1", table.copy(def))
-- stage 2
def.tiles = {"farming_vanilla_2.png"}
core.register_node("farming:vanilla_2", table.copy(def))
minetest.register_node("farming:vanilla_2", table.copy(def))
-- stage 3
def.tiles = {"farming_vanilla_3.png"}
core.register_node("farming:vanilla_3", table.copy(def))
minetest.register_node("farming:vanilla_3", table.copy(def))
-- stage 4
def.tiles = {"farming_vanilla_4.png"}
core.register_node("farming:vanilla_4", table.copy(def))
minetest.register_node("farming:vanilla_4", table.copy(def))
-- stage 5
def.tiles = {"farming_vanilla_5.png"}
core.register_node("farming:vanilla_5", table.copy(def))
minetest.register_node("farming:vanilla_5", table.copy(def))
-- stage 6
def.tiles = {"farming_vanilla_6.png"}
def.visual_scale = 1.9
core.register_node("farming:vanilla_6", table.copy(def))
minetest.register_node("farming:vanilla_6", table.copy(def))
-- stage 7
def.tiles = {"farming_vanilla_7.png"}
def.drop = {
items = {
{items = {"farming:vanilla"}, rarity = 1},
{items = {"farming:vanilla"}, rarity = 2},
{items = {"farming:vanilla"}, rarity = 3}
}
}
core.register_node("farming:vanilla_7", table.copy(def))
minetest.register_node("farming:vanilla_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_vanilla_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:vanilla 2"}, rarity = 1},
{items = {"farming:vanilla"}, rarity = 2},
{items = {"farming:vanilla"}, rarity = 3},
{items = {"farming:vanilla"}, rarity = 4}
{items = {"farming:vanilla 2"}, rarity = 2},
{items = {"farming:vanilla 2"}, rarity = 2},
{items = {"farming:vanilla 2"}, rarity = 3}
}
}
core.register_node("farming:vanilla_8", table.copy(def))
minetest.register_node("farming:vanilla_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:vanilla"] = {
crop = "farming:vanilla",
seed = "farming:vanilla",
@ -105,12 +126,9 @@ farming.registered_plants["farming:vanilla"] = {
}
-- mapgen
core.register_decoration({
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:grove_dirt"
},
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
@ -120,6 +138,7 @@ core.register_decoration({
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 35,
y_min = 5,
y_max = 35,
decoration = "farming:vanilla_7"
})

View File

@ -1,47 +1,113 @@
local S = core.get_translator("farming")
local S = farming.translate
local a = farming.recipe_items
-- seed
core.register_node("farming:seed_wheat", {
-- wheat seeds
minetest.register_node("farming:seed_wheat", {
description = S("Wheat Seed"),
tiles = {"farming_wheat_seed.png"},
inventory_image = "farming_wheat_seed.png",
wield_image = "farming_wheat_seed.png",
drawtype = "signlike",
groups = {
handy = 1, seed = 1, snappy = 3, attached_node = 1, flammable = 4, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
groups = {seed = 1, snappy = 3, attached_node = 1, flammable = 4, growing = 1},
paramtype = "light",
paramtype2 = "wallmounted",
walkable = false,
sunlight_propagates = true,
selection_box = farming.select,
next_plant = "farming:wheat_1",
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_wheat")
end,
on_timer = function(pos, elapsed)
core.set_node(pos, {name = "farming:wheat_1", param2 = 3})
minetest.set_node(pos, {name = "farming:wheat_1", param2 = 3})
end
})
-- item
core.register_craftitem("farming:wheat", {
-- harvested wheat
minetest.register_craftitem("farming:wheat", {
description = S("Wheat"),
inventory_image = "farming_wheat.png",
groups = {food_wheat = 1, flammable = 4}
})
-- crop definition
-- straw
minetest.register_node("farming:straw", {
description = S("Straw"),
tiles = {"farming_straw.png"},
is_ground_content = false,
groups = {snappy = 3, flammable = 4, fall_damage_add_percent = -30},
sounds = farming.sounds.node_sound_leaves_defaults()
})
minetest.register_craft({
output = "farming:straw 3",
recipe = {
{"farming:wheat", "farming:wheat", "farming:wheat"},
{"farming:wheat", "farming:wheat", "farming:wheat"},
{"farming:wheat", "farming:wheat", "farming:wheat"}
}
})
minetest.register_craft({
output = "farming:wheat 3",
recipe = {{"farming:straw"}}
})
-- check and register stairs
if minetest.global_exists("stairs") then
if stairs.mod and stairs.mod == "redo" then
stairs.register_all("straw", "farming:straw",
{snappy = 3, flammable = 4},
{"farming_straw.png"},
"Straw",
farming.sounds.node_sound_leaves_defaults())
else
stairs.register_stair_and_slab("straw", "farming:straw",
{snappy = 3, flammable = 4},
{"farming_straw.png"},
"Straw Stair",
"Straw Slab",
farming.sounds.node_sound_leaves_defaults())
end
end
-- flour
minetest.register_craftitem("farming:flour", {
description = S("Flour"),
inventory_image = "farming_flour.png",
groups = {food_flour = 1, flammable = 1}
})
minetest.register_craft({
output = "farming:flour",
recipe = {
{"farming:wheat", "farming:wheat", "farming:wheat"},
{"farming:wheat", a.mortar_pestle, ""}
},
replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}}
})
-- bread
minetest.register_craftitem("farming:bread", {
description = S("Bread"),
inventory_image = "farming_bread.png",
on_use = minetest.item_eat(5),
groups = {food_bread = 1, flammable = 2}
})
minetest.register_craft({
type = "cooking",
cooktime = 15,
output = "farming:bread",
recipe = "farming:flour"
})
-- wheat definition
local def = {
description = S("Wheat") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_wheat_1.png"},
paramtype = "light",
@ -57,74 +123,71 @@ local def = {
snappy = 3, flammable = 4, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
sounds = farming.sounds.node_sound_leaves_defaults()
}
-- stage 1
core.register_node("farming:wheat_1", table.copy(def))
minetest.register_node("farming:wheat_1", table.copy(def))
-- stage 2
def.tiles = {"farming_wheat_2.png"}
core.register_node("farming:wheat_2", table.copy(def))
minetest.register_node("farming:wheat_2", table.copy(def))
-- stage 3
def.tiles = {"farming_wheat_3.png"}
core.register_node("farming:wheat_3", table.copy(def))
minetest.register_node("farming:wheat_3", table.copy(def))
-- stage 4
def.tiles = {"farming_wheat_4.png"}
core.register_node("farming:wheat_4", table.copy(def))
minetest.register_node("farming:wheat_4", table.copy(def))
-- stage 5
def.tiles = {"farming_wheat_5.png"}
core.register_node("farming:wheat_5", table.copy(def))
-- stage 6
def.tiles = {"farming_wheat_6.png"}
def.drop = {
items = {
{items = {"farming:wheat"}, rarity = 2},
{items = {"farming:seed_wheat"}, rarity = 2}
}
}
core.register_node("farming:wheat_6", table.copy(def))
minetest.register_node("farming:wheat_5", table.copy(def))
-- stage 7
def.tiles = {"farming_wheat_7.png"}
-- stage 6
def.tiles = {"farming_wheat_6.png"}
def.drop = {
items = {
{items = {"farming:wheat"}, rarity = 2},
{items = {"farming:seed_wheat"}, rarity = 1}
}
}
core.register_node("farming:wheat_7", table.copy(def))
minetest.register_node("farming:wheat_6", table.copy(def))
-- stage 7
def.tiles = {"farming_wheat_7.png"}
def.drop = {
items = {
{items = {"farming:wheat"}, rarity = 1},
{items = {"farming:wheat"}, rarity = 3},
{items = {"farming:seed_wheat"}, rarity = 1},
{items = {"farming:seed_wheat"}, rarity = 3}
}
}
minetest.register_node("farming:wheat_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_wheat_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:wheat 2"}, rarity = 1},
{items = {"farming:wheat"}, rarity = 2},
{items = {"farming:seed_wheat 2"}, rarity = 1},
{items = {"farming:seed_wheat"}, rarity = 2}
{items = {"farming:wheat"}, rarity = 1},
{items = {"farming:wheat"}, rarity = 3},
{items = {"farming:seed_wheat"}, rarity = 1},
{items = {"farming:seed_wheat"}, rarity = 3}
}
}
core.register_node("farming:wheat_8", table.copy(def))
minetest.register_node("farming:wheat_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:wheat"] = {
crop = "farming:wheat",
seed = "farming:seed_wheat",
@ -132,3 +195,16 @@ farming.registered_plants["farming:wheat"] = {
maxlight = farming.max_light,
steps = 8
}
-- fuels
minetest.register_craft({
type = "fuel",
recipe = "farming:straw",
burntime = 3
})
minetest.register_craft({
type = "fuel",
recipe = "farming:wheat",
burntime = 1
})

View File

@ -9,41 +9,40 @@
farming.asparagus = 0.002
farming.eggplant = 0.002
farming.spinach = 0.002
farming.carrot = 0.002
farming.potato = 0.002
farming.tomato = 0.002
farming.cucumber = 0.002
farming.corn = 0.002
farming.coffee = 0.002
farming.melon = 0.009
farming.pumpkin = 0.009
farming.carrot = 0.001
farming.potato = 0.001
farming.tomato = 0.001
farming.cucumber = 0.001
farming.corn = 0.001
farming.coffee = 0.001
farming.melon = 0.001
farming.pumpkin = 0.001
farming.cocoa = true -- true or false only
farming.raspberry = 0.002
farming.blueberry = 0.002
farming.rhubarb = 0.002
farming.beans = 0.002
farming.grapes = 0.002
farming.raspberry = 0.001
farming.blueberry = 0.001
farming.rhubarb = 0.001
farming.beans = 0.001
farming.grapes = 0.001
farming.barley = true -- true or false only
farming.chili = 0.003
farming.hemp = 0.003
farming.garlic = 0.002
farming.onion = 0.002
farming.garlic = 0.001
farming.onion = 0.001
farming.pepper = 0.002
farming.pineapple = 0.003
farming.peas = 0.002
farming.beetroot = 0.002
farming.pineapple = 0.001
farming.peas = 0.001
farming.beetroot = 0.001
farming.mint = 0.005
farming.cabbage = 0.002
farming.cabbage = 0.001
farming.blackberry = 0.002
farming.lettuce = 0.002
farming.soy = 0.002
farming.vanilla = 0.002
farming.artichoke = 0.002
farming.lettuce = 0.001
farming.soy = 0.001
farming.vanilla = 0.001
farming.artichoke = 0.001
farming.parsley = 0.002
farming.sunflower = 0.002
farming.sunflower = 0.001
farming.ginger = 0.002
farming.cotton = 0.003
farming.strawberry = 0.002
farming.strawberry = not minetest.get_modpath("ethereal") and 0.002
farming.grains = true -- true or false only
farming.rice = true

860
food.lua Normal file
View File

@ -0,0 +1,860 @@
local S = farming.translate
local a = farming.recipe_items
-- sliced bread
minetest.register_craftitem("farming:bread_slice", {
description = S("Sliced Bread"),
inventory_image = "farming_bread_slice.png",
on_use = minetest.item_eat(1),
groups = {food_bread_slice = 1, flammable = 2, compostability = 65}
})
minetest.register_craft({
output = "farming:bread_slice 5",
recipe = {{"group:food_bread", a.cutting_board}},
replacements = {{"group:food_cutting_board", "farming:cutting_board"}}
})
-- toast
minetest.register_craftitem("farming:toast", {
description = S("Toast"),
inventory_image = "farming_toast.png",
on_use = minetest.item_eat(1),
groups = {food_toast = 1, flammable = 2, compostability = 65}
})
minetest.register_craft({
type = "cooking",
cooktime = 3,
output = "farming:toast",
recipe = "farming:bread_slice"
})
-- toast sandwich
minetest.register_craftitem("farming:toast_sandwich", {
description = S("Toast Sandwich"),
inventory_image = "farming_toast_sandwich.png",
on_use = minetest.item_eat(4),
groups = {flammable = 2, compostability = 85}
})
minetest.register_craft({
output = "farming:toast_sandwich",
recipe = {
{"farming:bread_slice"},
{"farming:toast"},
{"farming:bread_slice"}
}
})
-- filter sea water into river water
minetest.register_craft({
output = a.bucket_river_water,
recipe = {
{"farming:hemp_fibre"},
{"farming:hemp_fibre"},
{a.bucket_water}
}
})
if farming.mcl then
minetest.register_craft({
output = "mcl_potions:river_water",
recipe = {
{"farming:hemp_fibre"},
{"mcl_potions:water"}
}
})
end
-- glass of water
minetest.register_craftitem("farming:glass_water", {
description = S("Glass of Water"),
inventory_image = "farming_water_glass.png",
groups = {food_glass_water = 1, flammable = 3, vessel = 1}
})
minetest.register_craft({
output = "farming:glass_water 4",
recipe = {
{a.drinking_glass, a.drinking_glass},
{a.drinking_glass, a.drinking_glass},
{a.bucket_river_water, ""}
},
replacements = {{a.bucket_river_water, a.bucket_empty}}
})
minetest.register_craft({
output = "farming:glass_water 4",
recipe = {
{a.drinking_glass, a.drinking_glass},
{a.drinking_glass, a.drinking_glass},
{a.bucket_water, "farming:hemp_fibre"}
},
replacements = {{a.bucket_water, a.bucket_empty}}
})
if minetest.get_modpath("bucket_wooden") then
minetest.register_craft({
output = "farming:glass_water 4",
recipe = {
{a.drinking_glass, a.drinking_glass},
{a.drinking_glass, a.drinking_glass},
{"group:water_bucket_wooden", "farming:hemp_fibre"}
},
replacements = {{"group:water_bucket_wooden", "bucket_wooden:bucket_empty"}}
})
end
-- Sugar
if not farming.mcl then
minetest.register_craftitem("farming:sugar", {
description = S("Sugar"),
inventory_image = "farming_sugar.png",
groups = {food_sugar = 1, flammable = 3}
})
minetest.register_craft({
type = "cooking",
cooktime = 3,
output = "farming:sugar 2",
recipe = "default:papyrus"
})
end
minetest.register_node("farming:sugar_cube", {
description = S("Sugar Cube"),
tiles = {"farming_sugar_cube.png"},
groups = {crumbly = 2},
floodable = true,
sounds = farming.sounds.node_sound_gravel_defaults()
})
minetest.register_craft({
output = "farming:sugar_cube",
recipe = {
{a.sugar, a.sugar, a.sugar},
{a.sugar, a.sugar, a.sugar},
{a.sugar, a.sugar, a.sugar}
}
})
minetest.register_craft({
output = a.sugar .. " 9",
recipe = {{"farming:sugar_cube"}}
})
-- Sugar caramel
minetest.register_craftitem("farming:caramel", {
description = S("Caramel"),
inventory_image = "farming_caramel.png",
groups = {compostability = 40}
})
minetest.register_craft({
type = "cooking",
cooktime = 6,
output = "farming:caramel",
recipe = "group:food_sugar"
})
-- Salt
minetest.register_node("farming:salt", {
description = S("Salt"),
inventory_image = "farming_salt.png",
wield_image = "farming_salt.png",
drawtype = "plantlike",
visual_scale = 0.8,
paramtype = "light",
tiles = {"farming_salt.png"},
groups = {food_salt = 1, vessel = 1, dig_immediate = 3,
attached_node = 1},
sounds = farming.sounds.node_sound_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
},
-- special function to make salt crystals form inside water
dropped_step = function(self, pos, dtime)
self.ctimer = (self.ctimer or 0) + dtime
if self.ctimer < 15.0 then return end
self.ctimer = 0
local needed
if self.node_inside
and self.node_inside.name == a.water_source then
needed = 8
elseif self.node_inside
and self.node_inside.name == a.river_water_source then
needed = 9
end
if not needed then return end
local objs = core.get_objects_inside_radius(pos, 0.5)
if not objs or #objs ~= 1 then return end
local salt, ent = nil, nil
for k, obj in pairs(objs) do
ent = obj:get_luaentity()
if ent and ent.name == "__builtin:item"
and ent.itemstring == "farming:salt " .. needed then
obj:remove()
core.add_item(pos, "farming:salt_crystal")
return false -- return with no further action
end
end
end
})
minetest.register_craft({
type = "cooking",
cooktime = 15,
output = "farming:salt",
recipe = a.bucket_water,
replacements = {{a.bucket_water, a.bucket_empty}}
})
-- Salt Crystal
minetest.register_node("farming:salt_crystal", {
description = S("Salt crystal"),
inventory_image = "farming_salt_crystal.png",
wield_image = "farming_salt_crystal.png",
drawtype = "plantlike",
visual_scale = 0.8,
paramtype = "light",
light_source = 1,
tiles = {"farming_salt_crystal.png"},
groups = { dig_immediate = 3, attached_node = 1},
sounds = farming.sounds.node_sound_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
}
})
minetest.register_craft({
output = "farming:salt 9",
recipe = {
{"farming:salt_crystal", a.mortar_pestle}
},
replacements = {{"farming:mortar_pestle", "farming:mortar_pestle"}}
})
minetest.register_craft({
output = "farming:salt_crystal",
recipe = {
{"farming:salt", "farming:salt", "farming:salt"},
{"farming:salt", "farming:salt", "farming:salt"},
{"farming:salt", "farming:salt", "farming:salt"}
}
})
-- Mayonnaise
minetest.register_node("farming:mayonnaise", {
description = S("Mayonnaise"),
drawtype = "plantlike",
tiles = {"farming_mayo.png"},
inventory_image = "farming_mayo.png",
wield_image = "farming_mayo.png",
paramtype = "light",
is_ground_content = false,
walkable = false,
on_use = minetest.item_eat(3),
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.45, 0.25}
},
groups = {
compostability = 65, food_mayonnaise = 1, vessel = 1, dig_immediate = 3,
attached_node = 1
},
sounds = farming.sounds.node_sound_glass_defaults()
})
minetest.register_craft({
output = "farming:mayonnaise",
recipe = {
{"group:food_olive_oil", "group:food_lemon"},
{"group:food_egg", "farming:salt"}
},
replacements = {{"farming:olive_oil", a.glass_bottle}}
})
-- Rose Water
minetest.register_node("farming:rose_water", {
description = S("Rose Water"),
inventory_image = "farming_rose_water.png",
wield_image = "farming_rose_water.png",
drawtype = "plantlike",
visual_scale = 0.8,
paramtype = "light",
tiles = {"farming_rose_water.png"},
groups = {
food_rose_water = 1, vessel = 1, dig_immediate = 3, attached_node = 1
},
sounds = farming.sounds.node_sound_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
}
})
minetest.register_craft({
output = "farming:rose_water",
recipe = {
{a.rose, a.rose, a.rose},
{a.rose, a.rose, a.rose},
{"group:food_glass_water", a.pot, a.glass_bottle}
},
replacements = {
{"group:food_glass_water", a.drinking_glass},
{"group:food_pot", "farming:pot"}
}
})
-- Turkish Delight
minetest.register_craftitem("farming:turkish_delight", {
description = S("Turkish Delight"),
inventory_image = "farming_turkish_delight.png",
groups = {flammable = 3, compostability = 85},
on_use = minetest.item_eat(2)
})
minetest.register_craft({
output = "farming:turkish_delight 4",
recipe = {
{"group:food_gelatin", "group:food_sugar", "group:food_gelatin"},
{"group:food_sugar", "group:food_rose_water", "group:food_sugar"},
{"group:food_sugar", a.dye_pink, "group:food_sugar"}
},
replacements = {
{"group:food_cornstarch", a.bowl},
{"group:food_cornstarch", a.bowl},
{"group:food_rose_water", a.glass_bottle}
}
})
-- Garlic Bread
minetest.register_craftitem("farming:garlic_bread", {
description = S("Garlic Bread"),
inventory_image = "farming_garlic_bread.png",
groups = {flammable = 3, compostability = 65},
on_use = minetest.item_eat(2)
})
minetest.register_craft({
output = "farming:garlic_bread",
recipe = {
{"group:food_toast", "group:food_garlic_clove", "group:food_garlic_clove"}
}
})
-- Donuts (thanks to Bockwurst for making the donut images)
minetest.register_craftitem("farming:donut", {
description = S("Donut"),
inventory_image = "farming_donut.png",
on_use = minetest.item_eat(4),
groups = {compostability = 65}
})
minetest.register_craft({
output = "farming:donut 3",
recipe = {
{"", "group:food_wheat", ""},
{"group:food_wheat", "group:food_sugar", "group:food_wheat"},
{"", "group:food_wheat", ""}
}
})
minetest.register_craftitem("farming:donut_chocolate", {
description = S("Chocolate Donut"),
inventory_image = "farming_donut_chocolate.png",
on_use = minetest.item_eat(6),
groups = {compostability = 65}
})
minetest.register_craft({
output = "farming:donut_chocolate",
recipe = {
{"group:food_cocoa"},
{"farming:donut"}
}
})
minetest.register_craftitem("farming:donut_apple", {
description = S("Apple Donut"),
inventory_image = "farming_donut_apple.png",
on_use = minetest.item_eat(6),
groups = {compostability = 65}
})
minetest.register_craft({
output = "farming:donut_apple",
recipe = {
{"group:food_apple"},
{"farming:donut"}
}
})
-- Porridge Oats
minetest.register_craftitem("farming:porridge", {
description = S("Porridge"),
inventory_image = "farming_porridge.png",
on_use = minetest.item_eat(6, a.bowl),
groups = {compostability = 65}
})
minetest.register_craft({
output = "farming:porridge",
recipe = {
{"group:food_oats", "group:food_oats", "group:food_oats"},
{"group:food_oats", "group:food_bowl", "group:food_milk_glass"}
},
replacements = {
{"mobs:glass_milk", a.drinking_glass},
{"farming:soy_milk", a.drinking_glass}
}
})
-- Jaffa Cake
minetest.register_craftitem("farming:jaffa_cake", {
description = S("Jaffa Cake"),
inventory_image = "farming_jaffa_cake.png",
on_use = minetest.item_eat(6),
groups = {compostability = 65}
})
minetest.register_craft({
output = "farming:jaffa_cake 3",
recipe = {
{a.baking_tray, "group:food_egg", "group:food_sugar"},
{a.flour, "group:food_cocoa", "group:food_orange"},
{"group:food_milk", "", ""}
},
replacements = {
{"farming:baking_tray", "farming:baking_tray"},
{"mobs:bucket_milk", a.bucket_empty},
{"mobs:wooden_bucket_milk", "wooden_bucket:bucket_wood_empty"},
{"farming:soy_milk", a.drinking_glass}
}
})
-- Apple Pie
minetest.register_craftitem("farming:apple_pie", {
description = S("Apple Pie"),
inventory_image = "farming_apple_pie.png",
on_use = minetest.item_eat(6),
groups = {compostability = 75}
})
minetest.register_craft({
output = "farming:apple_pie",
recipe = {
{a.flour, "group:food_sugar", "group:food_apple"},
{"", a.baking_tray, ""}
},
replacements = {{"group:food_baking_tray", "farming:baking_tray"}}
})
-- Cactus Juice
minetest.register_craftitem("farming:cactus_juice", {
description = S("Cactus Juice"),
inventory_image = "farming_cactus_juice.png",
groups = {vessel = 1, drink = 1, compostability = 55},
on_use = function(itemstack, user, pointed_thing)
if user then
local num = math.random(5) == 1 and -1 or 2
return minetest.do_item_eat(num, "vessels:drinking_glass",
itemstack, user, pointed_thing)
end
end
})
minetest.register_craft({
output = "farming:cactus_juice",
recipe = {
{a.juicer},
{a.cactus},
{a.drinking_glass}
},
replacements = {
{"group:food_juicer", "farming:juicer"}
}
})
-- Pasta
minetest.register_craftitem("farming:pasta", {
description = S("Pasta"),
inventory_image = "farming_pasta.png",
groups = {compostability = 65, food_pasta = 1}
})
minetest.register_craft({
output = "farming:pasta",
recipe = {
{a.flour, "group:food_butter", a.mixing_bowl}
},
replacements = {{"group:food_mixing_bowl", "farming:mixing_bowl"}}
})
minetest.register_craft({
output = "farming:pasta",
recipe = {
{a.flour, "group:food_oil", a.mixing_bowl}
},
replacements = {
{"group:food_mixing_bowl", "farming:mixing_bowl"},
{"group:food_oil", a.glass_bottle}
}
})
-- Mac & Cheese
minetest.register_craftitem("farming:mac_and_cheese", {
description = S("Mac & Cheese"),
inventory_image = "farming_mac_and_cheese.png",
on_use = minetest.item_eat(6, a.bowl),
groups = {compostability = 65}
})
minetest.register_craft({
output = "farming:mac_and_cheese",
recipe = {
{"group:food_pasta", "group:food_cheese", "group:food_bowl"}
}
})
-- Spaghetti
minetest.register_craftitem("farming:spaghetti", {
description = S("Spaghetti"),
inventory_image = "farming_spaghetti.png",
on_use = minetest.item_eat(8),
groups = {compostability = 65}
})
minetest.register_craft({
output = "farming:spaghetti",
recipe = {
{"group:food_pasta", "group:food_tomato", a.saucepan},
{"group:food_garlic_clove", "group:food_garlic_clove", ""}
},
replacements = {{"group:food_saucepan", "farming:saucepan"}}
})
-- Korean Bibimbap
minetest.register_craftitem("farming:bibimbap", {
description = S("Bibimbap"),
inventory_image = "farming_bibimbap.png",
on_use = minetest.item_eat(8, a.bowl),
groups = {compostability = 65}
})
minetest.register_craft({
output = "farming:bibimbap",
recipe = {
{a.skillet, "group:food_bowl", "group:food_egg"},
{"group:food_rice", "group:food_chicken_raw", "group:food_cabbage"},
{"group:food_carrot", "group:food_chili_pepper", ""}
},
replacements = {{"group:food_skillet", "farming:skillet"}}
})
minetest.register_craft({
output = "farming:bibimbap",
type = "shapeless",
recipe = {
a.skillet, "group:food_bowl", "group:food_mushroom",
"group:food_rice", "group:food_cabbage", "group:food_carrot",
"group:food_mushroom", "group:food_chili_pepper"
},
replacements = {{"group:food_skillet", "farming:skillet"}}
})
-- Burger
minetest.register_craftitem("farming:burger", {
description = S("Burger"),
inventory_image = "farming_burger.png",
on_use = minetest.item_eat(16),
groups = {compostability = 95}
})
minetest.register_craft({
output = "farming:burger",
recipe = {
{a.bread, "group:food_meat", "group:food_cheese"},
{"group:food_tomato", "group:food_cucumber", "group:food_onion"},
{"group:food_lettuce", "", ""}
}
})
-- Salad
minetest.register_craftitem("farming:salad", {
description = S("Salad"),
inventory_image = "farming_salad.png",
on_use = minetest.item_eat(8, a.bowl),
groups = {compostability = 45}
})
minetest.register_craft({
output = "farming:salad",
type = "shapeless",
recipe = {
"group:food_bowl", "group:food_tomato", "group:food_cucumber",
"group:food_lettuce", "group:food_oil"
}
})
-- Triple Berry Smoothie
minetest.register_craftitem("farming:smoothie_berry", {
description = S("Triple Berry Smoothie"),
inventory_image = "farming_berry_smoothie.png",
on_use = minetest.item_eat(6, "vessels:drinking_glass"),
groups = {vessel = 1, drink = 1, compostability = 65}
})
minetest.register_craft({
output = "farming:smoothie_berry",
type = "shapeless",
recipe = {
"group:food_raspberries", "group:food_blackberries",
"group:food_strawberry", "group:food_banana",
a.drinking_glass
}
})
-- Patatas a la importancia
minetest.register_craftitem("farming:spanish_potatoes", {
description = S("Spanish Potatoes"),
inventory_image = "farming_spanish_potatoes.png",
on_use = minetest.item_eat(8, a.bowl),
groups = {compostability = 65}
})
minetest.register_craft({
output = "farming:spanish_potatoes",
recipe = {
{"group:food_potato", "group:food_parsley", "group:food_potato"},
{"group:food_egg", a.flour, "group:food_onion"},
{"farming:garlic_clove", "group:food_bowl", a.skillet}
},
replacements = {{"group:food_skillet", "farming:skillet"}}
})
-- Potato omelet
minetest.register_craftitem("farming:potato_omelet", {
description = S("Potato omelet"),
inventory_image = "farming_potato_omelet.png",
on_use = minetest.item_eat(6, a.bowl),
groups = {compostability = 65}
})
minetest.register_craft({
output = "farming:potato_omelet",
recipe = {
{"group:food_egg", "group:food_potato", "group:food_onion"},
{a.skillet, "group:food_bowl", ""}
},
replacements = {{"group:food_skillet", "farming:skillet"}}
})
-- Paella
minetest.register_craftitem("farming:paella", {
description = S("Paella"),
inventory_image = "farming_paella.png",
on_use = minetest.item_eat(8, a.bowl),
groups = {compostability = 65}
})
minetest.register_craft({
output = "farming:paella",
recipe = {
{"group:food_rice", a.dye_orange, "farming:pepper_red"},
{"group:food_peas", "group:food_chicken", "group:food_bowl"},
{"", a.skillet, ""}
},
replacements = {{"group:food_skillet", "farming:skillet"}}
})
-- Flan
minetest.register_craftitem("farming:flan", {
description = S("Vanilla Flan"),
inventory_image = "farming_vanilla_flan.png",
on_use = minetest.item_eat(6),
groups = {compostability = 65}
})
minetest.register_craft({
output = "farming:flan",
recipe = {
{"group:food_sugar", "group:food_milk", "farming:caramel"},
{"group:food_egg", "group:food_egg", "farming:vanilla_extract"}
},
replacements = {
{"cucina_vegana:soy_milk", a.drinking_glass},
{"mobs:bucket_milk", "bucket:bucket_empty"},
{"mobs:wooden_bucket_milk", "wooden_bucket:bucket_wood_empty"},
{"farming:vanilla_extract", a.glass_bottle}
}
})
-- Vegan Cheese
minetest.register_craftitem("farming:cheese_vegan", {
description = S("Vegan Cheese"),
inventory_image = "farming_cheese_vegan.png",
on_use = minetest.item_eat(2),
groups = {compostability = 65, food_cheese = 1, flammable = 2}
})
minetest.register_craft({
output = "farming:cheese_vegan",
recipe = {
{"farming:soy_milk", "farming:soy_milk", "farming:soy_milk"},
{"group:food_salt", "group:food_peppercorn", "farming:bottle_ethanol"},
{"group:food_gelatin", a.pot, ""}
},
replacements = {
{"farming:soy_milk", a.drinking_glass .. " 3"},
{"farming:pot", "farming:pot"},
{"farming:bottle_ethanol", a.glass_bottle}
}
})
minetest.register_craft({
output = "farming:cheese_vegan",
recipe = {
{"farming:soy_milk", "farming:soy_milk", "farming:soy_milk"},
{"group:food_salt", "group:food_peppercorn", "group:food_lemon"},
{"group:food_gelatin", a.pot, ""}
},
replacements = {
{"farming:soy_milk", a.drinking_glass .. " 3"},
{"farming:pot", "farming:pot"}
}
})
-- Onigiri
minetest.register_craftitem("farming:onigiri", {
description = S("Onigiri"),
inventory_image = "farming_onigiri.png",
on_use = minetest.item_eat(2),
groups = {flammable = 2, compostability = 65}
})
minetest.register_craft({
output = "farming:onigiri",
recipe = {
{"group:food_rice", "group:food_salt", "group:food_rice"},
{"", "group:food_seaweed", ""}
}
})
-- Gyoza
minetest.register_craftitem("farming:gyoza", {
description = S("Gyoza"),
inventory_image = "farming_gyoza.png",
on_use = minetest.item_eat(4),
groups = {flammable = 2, compostability = 65}
})
minetest.register_craft({
output = "farming:gyoza 4",
recipe = {
{"group:food_cabbage", "group:food_garlic_clove", "group:food_onion"},
{"group:food_meat_raw", "group:food_salt", a.flour},
{"", a.skillet, ""}
},
replacements = {
{"group:food_skillet", "farming:skillet"}
}
})
-- Mochi
minetest.register_craftitem("farming:mochi", {
description = S("Mochi"),
inventory_image = "farming_mochi.png",
on_use = minetest.item_eat(3),
groups = {flammable = 2, compostability = 65}
})
minetest.register_craft({
output = "farming:mochi",
recipe = {
{"", a.mortar_pestle, ""},
{"group:food_rice", "group:food_sugar", "group:food_rice"},
{"", "group:food_glass_water", ""}
},
replacements = {
{"group:food_mortar_pestle", "farming:mortar_pestle"},
{"group:food_glass_water", a.drinking_glass}
}
})
-- Gingerbread Man
minetest.register_craftitem("farming:gingerbread_man", {
description = S("Gingerbread Man"),
inventory_image = "farming_gingerbread_man.png",
on_use = minetest.item_eat(2),
groups = {compostability = 85}
})
minetest.register_craft({
output = "farming:gingerbread_man 3",
recipe = {
{"", "group:food_egg", ""},
{"group:food_wheat", "group:food_ginger", "group:food_wheat"},
{"group:food_sugar", "", "group:food_sugar"}
}
})

View File

@ -1,18 +1,16 @@
-- Override grass to drop wheat and oat seeds
-- Override grasses to drop seeds
local rarity_lookup = {[1] = 50, [2] = 50, [3] = 50, [4] = 5, [5] = 5}
if minetest.registered_nodes["default:grass_1"] then
if core.registered_nodes["default:grass_1"] then
for i = 4, 5 do
for i = 1, 5 do
core.override_item("default:grass_" .. i, {
minetest.override_item("default:grass_" .. i, {
drop = {
max_items = 1,
items = {
{items = {"farming:seed_wheat"}, rarity = rarity_lookup[i]},
{items = {"farming:seed_oat"},rarity = rarity_lookup[i]},
{items = {"farming:seed_wheat"}, rarity = 5},
{items = {"farming:seed_oat"},rarity = 5},
{items = {"default:grass_1"}}
}
}
@ -20,18 +18,16 @@ if core.registered_nodes["default:grass_1"] then
end
end
-- override dry grass to drop barley and rye seeds
if minetest.registered_nodes["default:dry_grass_1"] then
if core.registered_nodes["default:dry_grass_1"] then
for i = 4, 5 do
for i = 1, 5 do
core.override_item("default:dry_grass_" .. i, {
minetest.override_item("default:dry_grass_" .. i, {
drop = {
max_items = 1,
items = {
{items = {"farming:seed_barley"}, rarity = rarity_lookup[i]},
{items = {"farming:seed_rye"}, rarity = rarity_lookup[i]},
{items = {"farming:seed_barley"}, rarity = 5},
{items = {"farming:seed_rye"}, rarity = 5},
{items = {"default:dry_grass_1"}}
}
}
@ -39,11 +35,9 @@ if core.registered_nodes["default:dry_grass_1"] then
end
end
-- override jungle grass to drop cotton and rice seeds
if minetest.registered_nodes["default:junglegrass"] then
if core.registered_nodes["default:junglegrass"] then
core.override_item("default:junglegrass", {
minetest.override_item("default:junglegrass", {
drop = {
max_items = 1,
items = {
@ -55,11 +49,9 @@ if core.registered_nodes["default:junglegrass"] then
})
end
-- override mineclone tallgrass to drop all of the above seeds
if farming.mcl then
core.override_item("mcl_flowers:tallgrass", {
minetest.override_item("mcl_flowers:tallgrass", {
drop = {
max_items = 1,
items = {
@ -73,4 +65,3 @@ if farming.mcl then
}
})
end

307
hoes.lua
View File

@ -1,47 +1,52 @@
-- translation and mod check
local S = core.get_translator("farming")
local mod_tr = core.get_modpath("toolranks")
local S = farming.translate
local tr = minetest.get_modpath("toolranks")
-- Hoe registration function
farming.register_hoe = function(name, def)
-- Check for : prefix (register new hoes in your mod's namespace)
if name:sub(1,1) ~= ":" then name = ":" .. name end
if name:sub(1,1) ~= ":" then
name = ":" .. name
end
-- Check def table
if def.description == nil then def.description = S("Hoe") end
if def.description == nil then
def.description = S("Hoe")
end
if def.inventory_image == nil then def.inventory_image = "unknown_item.png" end
if def.inventory_image == nil then
def.inventory_image = "unknown_item.png"
end
if def.max_uses == nil then def.max_uses = 30 end
if def.max_uses == nil then
def.max_uses = 30
end
-- add hoe group
def.groups = def.groups or {}
def.groups.hoe = 1
-- Register the tool
core.register_tool(name, {
minetest.register_tool(name, {
description = def.description,
inventory_image = def.inventory_image,
groups = def.groups,
sound = {breaks = "default_tool_breaks"},
damage_groups = def.damage_groups or {fleshy = 1},
on_use = function(itemstack, user, pointed_thing)
return farming.hoe_on_use(itemstack, user, pointed_thing, def.max_uses)
end
end,
groups = def.groups,
sound = {breaks = "default_tool_breaks"}
})
-- Register its recipe
if def.recipe then
core.register_craft({ output = name:sub(2), recipe = def.recipe })
minetest.register_craft({
output = name:sub(2),
recipe = def.recipe
})
elseif def.material then
core.register_craft({
minetest.register_craft({
output = name:sub(2),
recipe = {
{def.material, def.material, ""},
@ -56,87 +61,76 @@ end
function farming.hoe_on_use(itemstack, user, pointed_thing, uses)
local pt = pointed_thing or {}
local is_used = false
local pt = pointed_thing
-- am I going to hoe the top of a dirt node?
if pt.type == "node" and pt.above.y == pt.under.y + 1 then
if not pt or pt.type ~= "node"
or pt.above.y ~= pt.under.y + 1 then
return
end
local under = core.get_node(pt.under)
local under = minetest.get_node(pt.under)
local upos = pointed_thing.under
if core.is_protected(upos, user:get_player_name()) then
core.record_protection_violation(upos, user:get_player_name())
if minetest.is_protected(upos, user:get_player_name()) then
minetest.record_protection_violation(upos, user:get_player_name())
return
end
local p = {x = pt.under.x, y = pt.under.y + 1, z = pt.under.z}
local above = core.get_node(p)
local above = minetest.get_node(p)
-- return if any of the nodes is not registered
if not core.registered_nodes[under.name]
or not core.registered_nodes[above.name] then return end
if not minetest.registered_nodes[under.name]
or not minetest.registered_nodes[above.name] then
return
end
-- check if the node above the pointed thing is air
if above.name ~= "air" then return end
if above.name ~= "air" then
return
end
-- check if pointing at dirt
if core.get_item_group(under.name, "soil") ~= 1 then return end
if minetest.get_item_group(under.name, "soil") ~= 1 then
return
end
-- check if (wet) soil defined
local ndef = core.registered_nodes[under.name]
local ndef = minetest.registered_nodes[under.name]
if ndef.soil == nil or ndef.soil.wet == nil or ndef.soil.dry == nil then
return
end
if core.is_protected(pt.under, user:get_player_name()) then
core.record_protection_violation(pt.under, user:get_player_name())
if minetest.is_protected(pt.under, user:get_player_name()) then
minetest.record_protection_violation(pt.under, user:get_player_name())
return
end
-- turn the node into soil, wear out item and play sound
core.set_node(pt.under, {name = ndef.soil.dry}) ; is_used = true
minetest.set_node(pt.under, {name = ndef.soil.dry})
core.sound_play("default_dig_crumbly", {pos = pt.under, gain = 0.5}, true)
end
minetest.sound_play("default_dig_crumbly", {pos = pt.under, gain = 0.5}, true)
local wdef = itemstack:get_definition()
local wear = 65535 / (uses - 1)
-- using hoe as weapon
if pt.type == "object" then
local ent = pt.ref and pt.ref:get_luaentity()
local dir = user:get_look_dir()
if (ent and ent.name ~= "__builtin:item"
and ent.name ~= "__builtin:falling_node") or pt.ref:is_player() then
pt.ref:punch(user, nil, {full_punch_interval = 1.0,
damage_groups = wdef.damage_groups}, dir)
is_used = true
end
end
-- only when used on soil top or external entity
if is_used then
-- cretive doesnt wear tools but toolranks registers uses with wear so set to 1
if farming.is_creative(user:get_player_name()) then
if mod_tr then wear = 1 else wear = 0 end
if tr then
wear = 1
else
wear = 0
end
end
if mod_tr then
if tr then
itemstack = toolranks.new_afteruse(itemstack, user, under, {wear = wear})
else
itemstack:add_wear(wear)
end
if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then
core.sound_play(wdef.sound.breaks, {pos = pt.above, gain = 0.5}, true)
end
minetest.sound_play(wdef.sound.breaks, {pos = pt.above, gain = 0.5}, true)
end
return itemstack
@ -151,7 +145,7 @@ farming.register_hoe(":farming:hoe_wood", {
material = "group:wood"
})
core.register_craft({
minetest.register_craft({
type = "fuel",
recipe = "farming:hoe_wood",
burntime = 5
@ -168,17 +162,14 @@ farming.register_hoe(":farming:hoe_steel", {
description = S("Steel Hoe"),
inventory_image = "farming_tool_steelhoe.png",
max_uses = 200,
material = "default:steel_ingot",
damage_groups = {fleshy = 2}
material = "default:steel_ingot"
})
farming.register_hoe(":farming:hoe_bronze", {
description = S("Bronze Hoe"),
inventory_image = "farming_tool_bronzehoe.png",
max_uses = 250,
groups = {not_in_creative_inventory = 1},
material = "default:bronze_ingot",
damage_groups = {fleshy = 2}
max_uses = 500,
groups = {not_in_creative_inventory = 1}
})
farming.register_hoe(":farming:hoe_mese", {
@ -186,116 +177,142 @@ farming.register_hoe(":farming:hoe_mese", {
inventory_image = "farming_tool_mesehoe.png",
max_uses = 350,
groups = {not_in_creative_inventory = 1},
damage_groups = {fleshy = 3}
})
farming.register_hoe(":farming:hoe_diamond", {
description = S("Diamond Hoe"),
inventory_image = "farming_tool_diamondhoe.png",
max_uses = 500,
groups = {not_in_creative_inventory = 1},
damage_groups = {fleshy = 3}
groups = {not_in_creative_inventory = 1}
})
-- Toolranks support
if tr then
if mod_tr then
core.override_item("farming:hoe_wood", {
minetest.override_item("farming:hoe_wood", {
original_description = S("Wood Hoe"),
description = toolranks.create_description(S("Wood Hoe"))})
core.override_item("farming:hoe_stone", {
minetest.override_item("farming:hoe_stone", {
original_description = S("Stone Hoe"),
description = toolranks.create_description(S("Stone Hoe"))})
core.override_item("farming:hoe_steel", {
minetest.override_item("farming:hoe_steel", {
original_description = S("Steel Hoe"),
description = toolranks.create_description(S("Steel Hoe"))})
core.override_item("farming:hoe_bronze", {
minetest.override_item("farming:hoe_bronze", {
original_description = S("Bronze Hoe"),
description = toolranks.create_description(S("Bronze Hoe"))})
core.override_item("farming:hoe_mese", {
minetest.override_item("farming:hoe_mese", {
original_description = S("Mese Hoe"),
description = toolranks.create_description(S("Mese Hoe"))})
core.override_item("farming:hoe_diamond", {
minetest.override_item("farming:hoe_diamond", {
original_description = S("Diamond Hoe"),
description = toolranks.create_description(S("Diamond Hoe"))})
end
-- hoe bomb function
-- hoe bomb function
local function hoe_area(pos, player)
-- check for protection
if core.is_protected(pos, player:get_player_name()) then
core.record_protection_violation(pos, player:get_player_name())
if minetest.is_protected(pos, player:get_player_name()) then
minetest.record_protection_violation(pos, player:get_player_name())
return
end
local r = 5 -- radius
-- remove flora (grass, flowers etc.)
local res = core.find_nodes_in_area(
local res = minetest.find_nodes_in_area(
{x = pos.x - r, y = pos.y - 1, z = pos.z - r},
{x = pos.x + r, y = pos.y + 1, z = pos.z + r},
{"group:flora", "group:grass", "group:dry_grass", "default:dry_shrub"})
{x = pos.x + r, y = pos.y + 2, z = pos.z + r},
{"group:flora"})
for n = 1, #res do
core.swap_node(res[n], {name = "air"})
minetest.swap_node(res[n], {name = "air"})
end
-- replace dirt with tilled soil
res = core.find_nodes_in_area_under_air(
res = nil
res = minetest.find_nodes_in_area_under_air(
{x = pos.x - r, y = pos.y - 1, z = pos.z - r},
{x = pos.x + r, y = pos.y + 2, z = pos.z + r},
{"group:soil", "ethereal:dry_dirt"})
{"group:soil"})
for n = 1, #res do
core.swap_node(res[n], {name = "farming:soil"})
minetest.swap_node(res[n], {name = "farming:soil"})
end
end
-- throwable hoe bomb entity
core.register_entity("farming:hoebomb_entity", {
-- throwable hoe bomb
minetest.register_entity("farming:hoebomb_entity", {
initial_properties = {
physical = true,
visual = "sprite",
visual_size = {x = 1.0, y = 1.0},
textures = {"farming_hoe_bomb.png"},
collisionbox = {-0.2,-0.2,-0.2,0.2,0.2,0.2}
collisionbox = {-0.1,-0.1,-0.1,0.1,0.1,0.1}
},
on_step = function(self, dtime, moveresult)
lastpos = {},
player = "",
on_step = function(self, dtime)
if not self.player then
self.object:remove() ; return
end
if moveresult.collides then
local pos = vector.round(self.object:get_pos())
pos.y = pos.y - 1 ; hoe_area(pos, self.player)
self.object:remove()
return
end
local pos = self.object:get_pos()
if self.lastpos.x ~= nil then
local vel = self.object:get_velocity()
-- only when potion hits something physical
if vel.x == 0
or vel.y == 0
or vel.z == 0 then
if self.player ~= "" then
-- round up coords to fix glitching through doors
self.lastpos = vector.round(self.lastpos)
hoe_area(self.lastpos, self.player)
end
self.object:remove()
return
end
end
self.lastpos = pos
end
})
-- actual throwing function
-- actual throwing function
local function throw_potion(itemstack, player)
local pos = player:get_pos()
local playerpos = player:get_pos()
local obj = core.add_entity({
x = pos.x, y = pos.y + 1.5, z = pos.z}, "farming:hoebomb_entity")
local obj = minetest.add_entity({
x = playerpos.x,
y = playerpos.y + 1.5,
z = playerpos.z
}, "farming:hoebomb_entity")
if not obj then return end
@ -309,17 +326,16 @@ local function throw_potion(itemstack, player)
obj:get_luaentity().player = player
end
-- hoe bomb item
core.register_craftitem("farming:hoe_bomb", {
-- hoe bomb item
minetest.register_craftitem("farming:hoe_bomb", {
description = S("Hoe Bomb (use or throw on grassy areas to hoe land)"),
inventory_image = "farming_hoe_bomb.png",
groups = {flammable = 2, not_in_creative_inventory = 1},
on_use = function(itemstack, user, pointed_thing)
if pointed_thing.type == "node" then
hoe_area(pointed_thing.under, user)
hoe_area(pointed_thing.above, user)
else
throw_potion(itemstack, user)
@ -333,21 +349,7 @@ core.register_craftitem("farming:hoe_bomb", {
end,
})
-- helper function
local function node_not_num(nodename)
local num = #nodename:split("_")
local str = ""
if not num or num == 1 then return end
for v = 1, (num - 1) do
str = str .. nodename:split("_")[v] .. "_"
end
return str
end
-- Mithril Scythe (special item)
farming.scythe_not_drops = {"farming:trellis", "farming:beanpole"}
@ -355,33 +357,37 @@ farming.add_to_scythe_not_drops = function(item)
table.insert(farming.scythe_not_drops, item)
end
-- Mithril Scythe (special item)
core.register_tool("farming:scythe_mithril", {
minetest.register_tool("farming:scythe_mithril", {
description = S("Mithril Scythe (Use to harvest and replant crops)"),
inventory_image = "farming_scythe_mithril.png",
sound = {breaks = "default_tool_breaks"},
on_use = function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" then return end
if pointed_thing.type ~= "node" then
return
end
local pos = pointed_thing.under
local name = placer:get_player_name()
if core.is_protected(pos, name) then return end
if minetest.is_protected(pos, name) then
return
end
local node = core.get_node_or_nil(pos)
local node = minetest.get_node_or_nil(pos)
if not node then return end
if not node then
return
end
local def = core.registered_nodes[node.name]
local def = minetest.registered_nodes[node.name]
if not def or not def.drop or not def.groups or not def.groups.plant then
return
end
local drops = core.get_node_drops(node.name, "")
local drops = minetest.get_node_drops(node.name, "")
if not drops or #drops == 0 or (#drops == 1 and drops[1] == "") then
return
@ -389,9 +395,14 @@ core.register_tool("farming:scythe_mithril", {
-- get crop name
local mname = node.name:split(":")[1]
local pname = node_not_num(node.name:split(":")[2])
local pname = node.name:split(":")[2]
local sname = tonumber(pname:split("_")[2])
if not pname then return end
pname = pname:split("_")[1]
if not sname then
return
end
-- add dropped items
for _, dropped_item in pairs(drops) do
@ -406,12 +417,15 @@ core.register_tool("farming:scythe_mithril", {
if dropped_item then
local obj = core.add_item(pos, dropped_item)
local obj = minetest.add_item(pos, dropped_item)
if obj then
obj:set_velocity({
x = math.random() - 0.5, y = 3, z = math.random() - 0.5})
x = math.random(-10, 10) / 9,
y = 3,
z = math.random(-10, 10) / 9
})
end
end
end
@ -422,18 +436,17 @@ core.register_tool("farming:scythe_mithril", {
end
-- play sound
core.sound_play("default_grass_footstep", {pos = pos, gain = 1.0}, true)
minetest.sound_play("default_grass_footstep", {pos = pos, gain = 1.0}, true)
-- replace with seed or crop_1
local replace = mname .. ":" .. pname .. "1"
local replace = mname .. ":" .. pname .. "_1"
if core.registered_nodes[replace] then
if minetest.registered_nodes[replace] then
local p2 = core.registered_nodes[replace].place_param2 or 1
local p2 = minetest.registered_nodes[replace].place_param2 or 1
core.set_node(pos, {name = replace, param2 = p2})
minetest.set_node(pos, {name = replace, param2 = p2})
else
core.set_node(pos, {name = "air"})
minetest.set_node(pos, {name = "air"})
end
if not farming.is_creative(name) then
@ -442,14 +455,12 @@ core.register_tool("farming:scythe_mithril", {
return itemstack
end
end
end,
})
-- if moreores found add mithril scythe recipe
if minetest.get_modpath("moreores") then
if core.get_modpath("moreores") then
core.register_craft({
minetest.register_craft({
output = "farming:scythe_mithril",
recipe = {
{"", "moreores:mithril_ingot", "moreores:mithril_ingot"},

524
init.lua
View File

@ -1,75 +1,75 @@
--[[
Farming Redo Mod by TenPlus1
Farming Redo Mod
by TenPlus1
NEW growing routine by prestidigitator
auto-refill by crabman77
]]
-- Translation support
local S = core.get_translator("farming")
-- global
farming = {
mod = "redo",
version = "20250717",
path = core.get_modpath("farming"),
select = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}},
select_final = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -2.5/16, 0.5}},
version = "20230915",
path = minetest.get_modpath("farming"),
select = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}
},
select_final = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -2.5/16, 0.5}
},
registered_plants = {},
min_light = 12, max_light = 15,
mapgen = core.get_mapgen_setting("mg_name"),
use_utensils = core.settings:get_bool("farming_use_utensils") ~= false,
mtg = core.get_modpath("default"),
eth = core.get_modpath("ethereal"),
mcl = core.get_modpath("mcl_core"),
mcl_hardness = 0.01,
translate = S
min_light = 12,
max_light = 15,
mapgen = minetest.get_mapgen_setting("mg_name"),
use_utensils = minetest.settings:get_bool("farming_use_utensils") ~= false,
mtg = minetest.get_modpath("default"),
mcl = minetest.get_modpath("mcl_core"),
sounds = {}
}
-- determine which sounds to use, default or mcl_sounds
-- default sound functions just incase
function farming.sounds.node_sound_defaults() end
function farming.sounds.node_sound_leaves_defaults() end
function farming.sounds.node_sound_glass_defaults() end
function farming.sounds.node_sound_wood_defaults() end
function farming.sounds.node_sound_gravel_defaults() end
local function sound_helper(snd)
farming[snd] = (farming.mtg and default[snd]) or (farming.mcl and mcl_sounds[snd])
or function() return {} end
end
sound_helper("node_sound_defaults")
sound_helper("node_sound_stone_defaults")
sound_helper("node_sound_dirt_defaults")
sound_helper("node_sound_sand_defaults")
sound_helper("node_sound_gravel_defaults")
sound_helper("node_sound_wood_defaults")
sound_helper("node_sound_leaves_defaults")
sound_helper("node_sound_ice_defaults")
sound_helper("node_sound_metal_defaults")
sound_helper("node_sound_water_defaults")
sound_helper("node_sound_snow_defaults")
sound_helper("node_sound_glass_defaults")
-- sounds check
if farming.mtg then farming.sounds = default end
if farming.mcl then farming.sounds = mcl_sounds end
-- check for creative mode or priv
local creative_mode_cache = core.settings:get_bool("creative_mode")
local creative_mode_cache = minetest.settings:get_bool("creative_mode")
function farming.is_creative(name)
return creative_mode_cache or core.check_player_privs(name, {creative = true})
return creative_mode_cache or minetest.check_player_privs(name, {creative = true})
end
-- stats, locals, settings, function helper
local statistics = dofile(farming.path .. "/statistics.lua")
local random, floor = math.random, math.floor
local time_speed = tonumber(core.settings:get("time_speed")) or 72
-- Translation support
local S = minetest.get_translator("farming")
farming.translate = S
-- localise
local random = math.random
local floor = math.floor
-- Utility Function
local time_speed = tonumber(minetest.settings:get("time_speed")) or 72
local SECS_PER_CYCLE = (time_speed > 0 and (24 * 60 * 60) / time_speed) or 0
local function clamp(x, min, max) return (x < min and min) or (x > max and max) or x end
local function clamp(x, min, max)
return (x < min and min) or (x > max and max) or x
end
-- return amount of day or night that has elapsed
-- dt is time elapsed, count_day if true counts day, otherwise night
local function day_or_night_time(dt, count_day)
local t_day = core.get_timeofday()
local t_day = minetest.get_timeofday()
local t1_day = t_day - dt / SECS_PER_CYCLE
local t1_c, t2_c -- t1_c < t2_c and t2_c always in [0, 1)
@ -95,9 +95,7 @@ local function day_or_night_time(dt, count_day)
local dt_c = clamp(t2_c, 0, 0.5) - clamp(t1_c, 0, 0.5) -- this cycle
if t1_c < -0.5 then
local nc = floor(-t1_c)
t1_c = t1_c + nc
dt_c = dt_c + 0.5 * nc + clamp(-t1_c - 0.5, 0, 0.5)
end
@ -105,39 +103,43 @@ local function day_or_night_time(dt, count_day)
return dt_c * SECS_PER_CYCLE
end
-- Growth Logic
local STAGE_LENGTH_AVG = tonumber(core.settings:get("farming_stage_length")) or 200
-- Growth Logic
local STAGE_LENGTH_AVG = tonumber(
minetest.settings:get("farming_stage_length")) or 200
local STAGE_LENGTH_DEV = STAGE_LENGTH_AVG / 6
-- quick start seed timer
farming.start_seed_timer = function(pos)
function farming.start_seed_timer(pos)
local timer = core.get_node_timer(pos)
local timer = minetest.get_node_timer(pos)
local grow_time = floor(random(STAGE_LENGTH_DEV, STAGE_LENGTH_AVG))
timer:start(grow_time)
end
-- return plant name and stage from node provided
-- return plant name and stage from node provided
local function plant_name_stage(node)
local name
if type(node) == "table" then
if node.name then name = node.name
if node.name then
name = node.name
elseif node.x and node.y and node.z then
node = core.get_node_or_nil(node)
node = minetest.get_node_or_nil(node)
name = node and node.name
end
else
name = tostring(node)
end
if not name or name == "ignore" then return nil end
if not name or name == "ignore" then
return nil
end
local sep_pos = name:find("_[^_]+$")
@ -153,6 +155,7 @@ local function plant_name_stage(node)
return name, 0
end
-- Map from node name to
-- { plant_name = ..., name = ..., stage = n, stages_left = { node_name, ... } }
@ -161,24 +164,32 @@ local plant_stages = {}
farming.plant_stages = plant_stages
--- Registers the stages of growth of a (possible plant) node.
-- @param node - Node or position table, or node name.
-- @return - The (possibly zero) number of stages of growth the plant will go through
--
-- @param node
-- Node or position table, or node name.
-- @return
-- The (possibly zero) number of stages of growth the plant will go through
-- before being fully grown, or nil if not a plant.
-- Recursive helper
local register_plant_node
-- Recursive helper
local function reg_plant_stages(plant_name, stage, force_last)
local node_name = plant_name and plant_name .. "_" .. stage
local node_def = node_name and core.registered_nodes[node_name]
local node_def = node_name and minetest.registered_nodes[node_name]
if not node_def then return nil end
if not node_def then
return nil
end
local stages = plant_stages[node_name]
if stages then return stages end
if stages then
return stages
end
if core.get_item_group(node_name, "growing") > 0 then
if minetest.get_item_group(node_name, "growing") > 0 then
local ns = reg_plant_stages(plant_name, stage + 1, true)
local stages_left = (ns and { ns.name, unpack(ns.stages_left) }) or {}
@ -195,20 +206,24 @@ local function reg_plant_stages(plant_name, stage, force_last)
local old_constr = node_def.on_construct
local old_destr = node_def.on_destruct
core.override_item(node_name, {
minetest.override_item(node_name, {
on_construct = function(pos)
if old_constr then old_constr(pos) end
if old_constr then
old_constr(pos)
end
farming.handle_growth(pos)
end,
on_destruct = function(pos)
core.get_node_timer(pos):stop()
minetest.get_node_timer(pos):stop()
if old_destr then old_destr(pos) end
if old_destr then
old_destr(pos)
end
end,
on_timer = function(pos, elapsed)
@ -234,27 +249,28 @@ local function reg_plant_stages(plant_name, stage, force_last)
return stages
end
-- split name and stage and register crop
local function register_plant_node(node)
local register_plant_node = function(node)
local plant_name, stage = plant_name_stage(node)
if plant_name then
local stages = reg_plant_stages(plant_name, stage, false)
return stages and #stages.stages_left
else
return nil
end
end
-- check for further growth and set or stop timer
local function set_growing(pos, stages_left)
if not stages_left then return end
if not stages_left then
return
end
local timer = core.get_node_timer(pos)
local timer = minetest.get_node_timer(pos)
if stages_left > 0 then
@ -272,105 +288,141 @@ local function set_growing(pos, stages_left)
end
end
-- detects a crop at given position, starting or stopping growth timer when needed
-- detects a crop at given position, starting or stopping growth timer when needed
function farming.handle_growth(pos, node)
if not pos then return end
if not pos then
return
end
local stages_left = register_plant_node(node or pos)
if stages_left then set_growing(pos, stages_left) end
if stages_left then
set_growing(pos, stages_left)
end
end
-- register crops nodes and add timer functions
core.after(0, function()
minetest.after(0, function()
for _, node_def in pairs(core.registered_nodes) do
for _, node_def in pairs(minetest.registered_nodes) do
register_plant_node(node_def)
end
end)
-- Just in case a growing type or added node is missed (also catches existing
-- nodes added to map before timers were incorporated).
core.register_lbm({
minetest.register_abm({
label = "Start crop timer",
name = "farming:start_crop_timer",
nodenames = {"group:growing"},
run_at_every_load = false,
interval = 300,
chance = 1,
catch_up = false,
action = function(pos, node)
action = function(pos, node, dtime_s)
-- skip if node timer already active
if minetest.get_node_timer(pos):is_started() then
return
end
local timer = core.get_node_timer(pos)
-- check if group:growing node is a seed
local def = minetest.registered_nodes[node.name]
if timer:is_started() then return end
if def and def.groups and def.groups.seed then
-- start node timer if found
if def.on_timer then
farming.start_seed_timer(pos)
return
end
local next_stage = def.next_plant
def = minetest.registered_nodes[next_stage]
-- switch seed without timer to stage_1 of crop
if def then
local p2 = def.place_param2 or 1
minetest.set_node(pos, {name = next_stage, param2 = p2})
end
else
-- start normal crop timer
farming.handle_growth(pos, node)
end
end
})
-- default check crop is on wet soil
farming.can_grow = function(pos)
local below = core.get_node({x = pos.x, y = pos.y -1, z = pos.z})
return core.get_item_group(below.name, "soil") >= 3
end
-- Plant timer function that grows plants under the right conditions.
function farming.plant_growth_timer(pos, elapsed, node_name)
local stages = plant_stages[node_name]
if not stages then return false end
if not stages then
return false
end
local max_growth = #stages.stages_left
if max_growth <= 0 then return false end
if max_growth <= 0 then
return false
end
local chk1 = core.registered_nodes[node_name].growth_check -- old
local chk2 = core.registered_nodes[node_name].can_grow -- new
-- custom growth check
local chk = minetest.registered_nodes[node_name].growth_check
if chk1 then -- custom farming redo growth_check function
if chk then
if not chk1(pos, node_name) then return true end
if not chk(pos, node_name) then
return true
end
elseif chk2 then -- custom mt 5.9x farming can_grow function
-- otherwise check for wet soil beneath crop
else
local under = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z})
if not chk2(pos) then return true end
-- default mt 5.9x farming.can_grow function
elseif not farming.can_grow(pos) then return true end
if minetest.get_item_group(under.name, "soil") < 3 then
return true
end
end
local growth
local light_pos = {x = pos.x, y = pos.y, z = pos.z}
local lambda = elapsed / STAGE_LENGTH_AVG
if lambda < 0.1 then return true end
if lambda < 0.1 then
return true
end
local MIN_LIGHT = core.registered_nodes[node_name].minlight or farming.min_light
local MAX_LIGHT = core.registered_nodes[node_name].maxlight or farming.max_light
local MIN_LIGHT = minetest.registered_nodes[node_name].minlight or farming.min_light
local MAX_LIGHT = minetest.registered_nodes[node_name].maxlight or farming.max_light
if max_growth == 1 or lambda < 2.0 then
local light = (core.get_node_light(light_pos) or 0)
local light = (minetest.get_node_light(light_pos) or 0)
if light < MIN_LIGHT or light > MAX_LIGHT then return true end
if light < MIN_LIGHT or light > MAX_LIGHT then
return true
end
growth = 1
else
local night_light = core.get_node_light(light_pos, 0) or 0
local day_light = core.get_node_light(light_pos, 0.5) or 0
local night_light = (minetest.get_node_light(light_pos, 0) or 0)
local day_light = (minetest.get_node_light(light_pos, 0.5) or 0)
local night_growth = night_light >= MIN_LIGHT and night_light <= MAX_LIGHT
local day_growth = day_light >= MIN_LIGHT and day_light <= MAX_LIGHT
if not night_growth then
if not day_growth then return true end
if not day_growth then
return true
end
lambda = day_or_night_time(elapsed, true) / STAGE_LENGTH_AVG
@ -381,14 +433,16 @@ function farming.plant_growth_timer(pos, elapsed, node_name)
growth = statistics.poisson(lambda, max_growth)
if growth < 1 then return true end
if growth < 1 then
return true
end
end
if core.registered_nodes[stages.stages_left[growth]] then
if minetest.registered_nodes[stages.stages_left[growth]] then
local p2 = core.registered_nodes[stages.stages_left[growth] ].place_param2 or 1
local p2 = minetest.registered_nodes[stages.stages_left[growth] ].place_param2 or 1
core.set_node(pos, {name = stages.stages_left[growth], param2 = p2})
minetest.set_node(pos, {name = stages.stages_left[growth], param2 = p2})
else
return true
end
@ -396,15 +450,21 @@ function farming.plant_growth_timer(pos, elapsed, node_name)
return growth ~= max_growth
end
-- refill placed plant by crabman (26/08/2015) updated by TenPlus1
-- refill placed plant by crabman (26/08/2015) updated by TenPlus1
function farming.refill_plant(player, plantname, index)
local inv = player and player:get_inventory() ; if not inv then return end
if not player then return end
local inv = player:get_inventory()
if not inv then return end
local old_stack = inv:get_stack("main", index)
if old_stack:get_name() ~= "" then return end
if old_stack:get_name() ~= "" then
return
end
for i, stack in ipairs(inv:get_list("main")) do
@ -419,57 +479,62 @@ function farming.refill_plant(player, plantname, index)
end
end
-- Place Seeds on Soil
-- Place Seeds on Soil
function farming.place_seed(itemstack, placer, pointed_thing, plantname)
local pt = pointed_thing
-- check if pointing at a node
if not itemstack or not pt or pt.type ~= "node" then return end
if not pt or pt.type ~= "node" then
return
end
local under = core.get_node(pt.under)
local under = minetest.get_node(pt.under)
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = core.registered_nodes[under.name]
local def = minetest.registered_nodes[under.name]
if placer and itemstack and def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt)
end
local above = core.get_node(pt.above)
local above = minetest.get_node(pt.above)
-- check if pointing at the top of the node
if pt.above.y ~= pt.under.y + 1 then return end
if pt.above.y ~= pt.under.y + 1 then
return
end
-- return if any of the nodes is not registered
if not core.registered_nodes[under.name]
or not core.registered_nodes[above.name] then return end
if not minetest.registered_nodes[under.name]
or not minetest.registered_nodes[above.name] then
return
end
-- can I replace above node, and am I pointing directly at soil
if not core.registered_nodes[above.name].buildable_to
or core.get_item_group(under.name, "soil") < 2
or core.get_item_group(above.name, "plant") ~= 0 then return end
-- can I replace above node, and am I pointing at soil
if not minetest.registered_nodes[above.name].buildable_to
or minetest.get_item_group(under.name, "soil") < 2
-- avoid multiple seed placement bug
or minetest.get_item_group(above.name, "plant") ~= 0 then
return
end
-- is player planting seed?
local name = placer and placer:get_player_name() or ""
-- if not protected then add node and remove 1 item from the itemstack
if not core.is_protected(pt.above, name) then
if not minetest.is_protected(pt.above, name) then
local p2 = core.registered_nodes[plantname].place_param2 or 1
local p2 = minetest.registered_nodes[plantname].place_param2 or 1
core.set_node(pt.above, {name = plantname, param2 = p2})
minetest.set_node(pt.above, {name = plantname, param2 = p2})
farming.start_seed_timer(pt.above)
--minetest.get_node_timer(pt.above):start(1)
--farming.handle_growth(pt.above)--, node)
core.sound_play("default_place_node", {pos = pt.above, gain = 1.0})
core.log("action", string.format("%s planted %s at %s",
(placer and placer:is_player() and placer:get_player_name() or "A mod"),
itemstack:get_name(), core.pos_to_string(pt.above)
))
minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0})
if placer and itemstack
and not farming.is_creative(placer:get_player_name()) then
@ -481,8 +546,12 @@ function farming.place_seed(itemstack, placer, pointed_thing, plantname)
-- check for refill
if itemstack:get_count() == 0 then
core.after(0.2, farming.refill_plant,
placer, name, placer:get_wield_index())
minetest.after(0.2,
farming.refill_plant,
placer,
name,
placer:get_wield_index()
)
end
end
@ -490,11 +559,13 @@ function farming.place_seed(itemstack, placer, pointed_thing, plantname)
end
end
-- Function to register plants (default farming compatibility)
farming.register_plant = function(name, def)
function farming.register_plant(name, def)
if not def.steps then return nil end
if not def.steps then
return nil
end
local mname = name:split(":")[1]
local pname = name:split(":")[2]
@ -506,7 +577,7 @@ function farming.register_plant(name, def)
def.maxlight = def.maxlight or 15
-- Register seed
core.register_node(":" .. mname .. ":seed_" .. pname, {
minetest.register_node(":" .. mname .. ":seed_" .. pname, {
description = def.description,
tiles = {def.inventory_image},
@ -515,37 +586,36 @@ function farming.register_plant(name, def)
drawtype = "signlike",
groups = {
seed = 1, snappy = 3, attached_node = 1, flammable = 2, growing = 1,
compostability = 65, handy = 1
compostability = 65
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
paramtype = "light",
paramtype2 = "wallmounted",
walkable = false,
sunlight_propagates = true,
selection_box = farming.select,
fertility = def.fertility or {},
place_param2 = 1, -- place seed flat
next_plant = mname .. ":" .. pname .. "_1",
on_timer = function(pos, elapsed)
local def = core.registered_nodes[mname .. ":" .. pname .. "_1"]
local def = minetest.registered_nodes[mname .. ":" .. pname .. "_1"]
if def then
core.set_node(pos, {name = def.name, param2 = def.place_param2})
minetest.swap_node(pos, {
name = def.next_plant,
param2 = def.place_param2
})
end
end,
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing,
mname .. ":seed_" .. pname)
end
})
-- Register harvest
core.register_craftitem(":" .. mname .. ":" .. pname, {
minetest.register_craftitem(":" .. mname .. ":" .. pname, {
description = pname:gsub("^%l", string.upper),
inventory_image = mname .. "_" .. pname .. ".png",
groups = def.groups or {flammable = 2},
@ -590,10 +660,7 @@ function farming.register_plant(name, def)
next_plant = mname .. ":" .. pname .. "_" .. (i + 1)
end
local desc = pname:gsub("^%l", string.upper)
core.register_node(node_name, {
description = S(desc) .. S(" Crop"),
minetest.register_node(node_name, {
drawtype = "plantlike",
waving = 1,
tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"},
@ -606,9 +673,7 @@ function farming.register_plant(name, def)
drop = drop,
selection_box = sel,
groups = g,
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults(),
sounds = farming.sounds.node_sound_leaves_defaults(),
minlight = def.minlight,
maxlight = def.maxlight,
next_plant = next_plant
@ -624,98 +689,88 @@ function farming.register_plant(name, def)
maxlight = def.maxlight
}
--print(dump(farming.registered_plants[mname .. ":" .. pname]))
-- Return info
return {seed = mname .. ":seed_" .. pname, harvest = mname .. ":" .. pname}
end
-- default settings
-- default settings
farming.asparagus = 0.002
farming.eggplant = 0.002
farming.spinach = 0.002
farming.carrot = 0.002
farming.potato = 0.002
farming.tomato = 0.002
farming.cucumber = 0.002
farming.corn = 0.002
farming.coffee = 0.002
farming.melon = 0.009
farming.pumpkin = 0.009
farming.carrot = 0.001
farming.potato = 0.001
farming.tomato = 0.001
farming.cucumber = 0.001
farming.corn = 0.001
farming.coffee = 0.001
farming.melon = 0.001
farming.pumpkin = 0.001
farming.cocoa = true
farming.raspberry = 0.002
farming.blueberry = 0.002
farming.rhubarb = 0.002
farming.beans = 0.002
farming.grapes = 0.002
farming.raspberry = 0.001
farming.blueberry = 0.001
farming.rhubarb = 0.001
farming.beans = 0.001
farming.grapes = 0.001
farming.barley = true
farming.chili = 0.003
farming.hemp = 0.003
farming.garlic = 0.002
farming.onion = 0.002
farming.garlic = 0.001
farming.onion = 0.001
farming.pepper = 0.002
farming.pineapple = 0.003
farming.peas = 0.002
farming.beetroot = 0.002
farming.pineapple = 0.001
farming.peas = 0.001
farming.beetroot = 0.001
farming.mint = 0.005
farming.cabbage = 0.002
farming.cabbage = 0.001
farming.blackberry = 0.002
farming.soy = 0.002
farming.vanilla = 0.002
farming.lettuce = 0.002
farming.artichoke = 0.002
farming.soy = 0.001
farming.vanilla = 0.001
farming.lettuce = 0.001
farming.artichoke = 0.001
farming.parsley = 0.002
farming.sunflower = 0.002
farming.sunflower = 0.001
farming.ginger = 0.002
farming.strawberry = 0.002
farming.cotton = 0.003
farming.strawberry = not minetest.get_modpath("ethereal") and 0.002
farming.grains = true
farming.rice = true
-- Load new global settings if found inside mod folder
local input = io.open(farming.path .. "/farming.conf", "r")
if input then dofile(farming.path .. "/farming.conf") ; input:close() end
if input then
dofile(farming.path .. "/farming.conf")
input:close()
end
-- load new world-specific settings if found inside world folder
local worldpath = core.get_worldpath()
local worldpath = minetest.get_worldpath()
input = io.open(worldpath .. "/farming.conf", "r")
if input then dofile(worldpath .. "/farming.conf") ; input:close() end
-- helper function to add {eatable} group to food items, also {flammable}
function farming.add_eatable(item, hp)
local def = core.registered_items[item]
if def then
local groups = table.copy(def.groups) or {}
groups.eatable = hp ; groups.flammable = 2
core.override_item(item, {groups = groups})
end
if input then
dofile(worldpath .. "/farming.conf")
input:close()
end
-- recipe item list and alternatives
-- recipe items
dofile(farming.path .. "/items.lua")
dofile(farming.path .. "/item_list.lua")
-- setup soil, register hoes, override grass
if core.get_modpath("default") then
-- important items
if not farming.mcl then
dofile(farming.path .. "/soil.lua")
dofile(farming.path .. "/hoes.lua")
end
dofile(farming.path.."/grass.lua")
dofile(farming.path.."/utensils.lua")
-- default crops
if not farming.mcl then
dofile(farming.path.."/crops/wheat.lua")
end
dofile(farming.path.."/crops/cotton.lua")
-- disable crops Mineclone already has
if farming.mcl then
farming.carrot = nil
farming.potato = nil
@ -724,17 +779,14 @@ if farming.mcl then
farming.beetroot = nil
farming.sunflower = nil
farming.pumpkin = nil
else
dofile(farming.path.."/crops/wheat.lua") -- default crop outwith mineclone
end
dofile(farming.path.."/crops/cotton.lua") -- default crop
-- helper function
local function ddoo(file, check)
if check then dofile(farming.path .. "/crops/" .. file) end
if check then
dofile(farming.path .. "/crops/" .. file)
end
end
-- add additional crops and food (if enabled)
@ -761,7 +813,7 @@ ddoo("pineapple.lua", farming.pineapple)
ddoo("peas.lua", farming.peas)
ddoo("beetroot.lua", farming.beetroot)
ddoo("chili.lua", farming.chili)
ddoo("rye_oat.lua", farming.grains)
ddoo("ryeoatrice.lua", farming.grains)
ddoo("rice.lua", farming.rice)
ddoo("mint.lua", farming.mint)
ddoo("cabbage.lua", farming.cabbage)
@ -778,18 +830,12 @@ ddoo("eggplant.lua", farming.eggplant)
ddoo("spinach.lua", farming.eggplant)
ddoo("ginger.lua", farming.ginger)
-- register food items, non-food items, recipes and stairs
dofile(farming.path .. "/item_non_food.lua")
dofile(farming.path .. "/item_food.lua")
dofile(farming.path .. "/item_recipes.lua")
dofile(farming.path .. "/item_stairs.lua")
dofile(farming.path .. "/food.lua")
if not farming.mcl then
dofile(farming.path .. "/compatibility.lua") -- Farming Plus compatibility
end
if core.get_modpath("lucky_block") then
if minetest.get_modpath("lucky_block") then
dofile(farming.path .. "/lucky_block.lua")
end

File diff suppressed because it is too large Load Diff

View File

@ -1,304 +0,0 @@
local S = core.get_translator("farming")
-- saucepan
core.register_craftitem("farming:saucepan", {
description = S("Saucepan"),
inventory_image = "farming_saucepan.png",
groups = {food_saucepan = 1, flammable = 2}
})
-- cooking pot
core.register_craftitem("farming:pot", {
description = S("Cooking Pot"),
inventory_image = "farming_pot.png",
groups = {food_pot = 1, flammable = 2}
})
-- baking tray
core.register_craftitem("farming:baking_tray", {
description = S("Baking Tray"),
inventory_image = "farming_baking_tray.png",
groups = {food_baking_tray = 1, flammable = 2}
})
-- skillet
core.register_craftitem("farming:skillet", {
description = S("Skillet"),
inventory_image = "farming_skillet.png",
groups = {food_skillet = 1, flammable = 2}
})
-- mortar & pestle
core.register_craftitem("farming:mortar_pestle", {
description = S("Mortar and Pestle"),
inventory_image = "farming_mortar_pestle.png",
groups = {food_mortar_pestle = 1, flammable = 2}
})
-- cutting board
core.register_craftitem("farming:cutting_board", {
description = S("Cutting Board"),
inventory_image = "farming_cutting_board.png",
groups = {food_cutting_board = 1, flammable = 2}
})
-- juicer
core.register_craftitem("farming:juicer", {
description = S("Juicer"),
inventory_image = "farming_juicer.png",
groups = {food_juicer = 1, flammable = 2}
})
-- glass mixing bowl
core.register_craftitem("farming:mixing_bowl", {
description = S("Glass Mixing Bowl"),
inventory_image = "farming_mixing_bowl.png",
groups = {food_mixing_bowl = 1, flammable = 2}
})
-- Ethanol (thanks to JKMurray for this idea)
core.register_node("farming:bottle_ethanol", {
description = S("Bottle of Ethanol"),
drawtype = "plantlike",
tiles = {"farming_bottle_ethanol.png"},
inventory_image = "farming_bottle_ethanol.png",
wield_image = "farming_bottle_ethanol.png",
paramtype = "light",
is_ground_content = false,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1, handy = 1},
sounds = farming.node_sound_glass_defaults()
})
-- straw
core.register_node("farming:straw", {
description = S("Straw"),
tiles = {"farming_straw.png"},
is_ground_content = false,
groups = {handy = 1, snappy = 3, flammable = 4, fall_damage_add_percent = -30},
sounds = farming.node_sound_leaves_defaults(),
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
-- weed
core.register_node("farming:weed", {
description = S("Weed"),
drawtype = "plantlike",
tiles = {"farming_weed.png"},
inventory_image = "farming_weed.png",
paramtype = "light",
paramtype2 = "meshoptions",
place_param2 = 2,
sunlight_propagates = true,
walkable = false,
buildable_to = true,
waving = 1,
selection_box = farming.select,
groups = {snappy = 3, flammable = 4, plant = 1, attached_node = 1},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
})
-- weed bale
core.register_node("farming:weed_bale", {
description = S("Weed Bale"),
tiles = {
"farming_weed_bale_top.png", "farming_weed_bale_top.png",
"farming_weed_bale_side.png"
},
paramtype2 = "facedir",
groups = {handy = 1, snappy = 3, flammable = 4, fall_damage_add_percent = -30},
sounds = farming.node_sound_leaves_defaults(),
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
-- hemp oil
core.register_node("farming:hemp_oil", {
description = S("Bottle of Hemp Oil"),
drawtype = "plantlike",
tiles = {"farming_hemp_oil.png"},
inventory_image = "farming_hemp_oil.png",
wield_image = "farming_hemp_oil.png",
paramtype = "light",
is_ground_content = false,
walkable = false,
selection_box = {
type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
},
groups = {
food_oil = 1, vessel = 1, dig_immediate = 3, attached_node = 1,
compostability = 45, handy = 1
},
sounds = farming.node_sound_glass_defaults()
})
-- hemp fibre
core.register_craftitem("farming:hemp_fibre", {
description = S("Hemp Fibre"),
inventory_image = "farming_hemp_fibre.png",
groups = {compostability = 55}
})
-- hemp block
core.register_node("farming:hemp_block", {
description = S("Hemp Block"),
tiles = {"farming_hemp_block.png"},
paramtype = "light",
groups = {
axey = 1, handy = 1, snappy = 2, oddly_breakable_by_hand = 1, flammable = 2,
compostability = 85
},
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults(),
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
-- hemp rope
core.register_node("farming:hemp_rope", {
description = S("Hemp Rope"),
walkable = false,
climbable = true,
sunlight_propagates = true,
paramtype = "light",
tiles = {"farming_hemp_rope.png"},
wield_image = "farming_hemp_rope.png",
inventory_image = "farming_hemp_rope.png",
drawtype = "plantlike",
groups = {
handy = 1, axey = 1, swordy = 1, flammable = 2, choppy = 3,
oddly_breakable_by_hand = 3, compostability = 55
},
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults(),
selection_box = {
type = "fixed", fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}
},
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
--- Wooden scarecrow base
core.register_node("farming:scarecrow_bottom", {
description = S("Scarecrow Bottom"),
paramtype = "light",
sunlight_propagates = true,
paramtype2 = "facedir",
tiles = {"default_wood.png"},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-1/16, -8/16, -1/16, 1/16, 8/16, 1/16},
{-12/16, 4/16, -1/16, 12/16, 2/16, 1/16},
}
},
groups = {axey = 1, handy = 1, snappy = 3, flammable = 2},
is_ground_content = false,
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
--= Items we shouldn't add when using Mineclonia/VoxeLibre
if not farming.mcl then
-- Wooden bowl
core.register_craftitem("farming:bowl", {
description = S("Wooden Bowl"),
inventory_image = "farming_bowl.png",
groups = {food_bowl = 1, flammable = 2}
})
-- String
core.register_craftitem("farming:string", {
description = S("String"),
inventory_image = "farming_string.png",
groups = {flammable = 2}
})
-- Jack 'O Lantern
core.register_node("farming:jackolantern", {
description = S("Jack 'O Lantern (punch to turn on and off)"),
tiles = {
"farming_pumpkin_bottom.png^farming_pumpkin_top.png",
"farming_pumpkin_bottom.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png^farming_pumpkin_face_off.png"
},
paramtype2 = "facedir",
groups = {
handy = 1, snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2
},
is_ground_content = false,
sounds = farming.node_sound_wood_defaults(),
on_punch = function(pos, node, puncher)
local name = puncher:get_player_name() or ""
if core.is_protected(pos, name) then return end
node.name = "farming:jackolantern_on"
core.swap_node(pos, node)
end,
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
core.register_node("farming:jackolantern_on", {
tiles = {
"farming_pumpkin_bottom.png^farming_pumpkin_top.png",
"farming_pumpkin_bottom.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png^farming_pumpkin_face_on.png"
},
light_source = core.LIGHT_MAX - 1,
paramtype2 = "facedir",
groups = {
handy = 1, snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2,
not_in_creative_inventory = 1
},
is_ground_content = false,
sounds = farming.node_sound_wood_defaults(),
drop = "farming:jackolantern",
on_punch = function(pos, node, puncher)
local name = puncher:get_player_name() or ""
if core.is_protected(pos, name) then return end
node.name = "farming:jackolantern"
core.swap_node(pos, node)
end,
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
end

File diff suppressed because it is too large Load Diff

View File

@ -1,35 +0,0 @@
-- check and register stairs
if core.global_exists("stairs") then
if stairs.mod and stairs.mod == "redo" then
stairs.register_all("straw", "farming:straw",
{snappy = 3, flammable = 4},
{"farming_straw.png"},
"Straw",
farming.node_sound_leaves_defaults())
stairs.register_all("hemp_block", "farming:hemp_block",
{snappy = 2, oddly_breakable_by_hand = 1, flammable = 2},
{"farming_hemp_block.png"},
"Hemp Block",
farming.node_sound_leaves_defaults())
else
stairs.register_stair_and_slab("straw", "farming:straw",
{snappy = 3, flammable = 4},
{"farming_straw.png"},
"Straw Stair",
"Straw Slab",
farming.node_sound_leaves_defaults())
stairs.register_stair_and_slab("hemp_block", "farming:hemp_block",
{snappy = 2, oddly_breakable_by_hand = 1, flammable = 2},
{"farming_hemp_block.png"},
"Hemp Block Stair",
"Hemp Block Slab",
farming.node_sound_leaves_defaults())
end
end

View File

@ -1,24 +1,21 @@
-- add group helper
-- add group function
local function add_groups(item, groups)
local def = core.registered_items[item]
local def = minetest.registered_items[item]
if def then
if not def then return end
local grps = table.copy(def.groups) or {}
local grp = def.groups
for k, v in pairs(groups) do
grps[k] = v
grp[k] = v
end
core.override_item(item, {groups = grps})
end
minetest.override_item(item, {groups = grp})
end
-- default recipe items
farming.recipe_items = {
-- if utensils are disabled then use blank item
@ -65,8 +62,7 @@ farming.recipe_items = {
add_groups("default:apple", {food_apple = 1})
-- if mineclone found then change recipe items
-- change recipe items to mineclone variations
if farming.mcl then
local a = farming.recipe_items
@ -101,8 +97,6 @@ if farming.mcl then
a.stone = "mcl_core:stone"
a.glass = "mcl_core:glass"
-- add missing groups for recipes to work properly
add_groups("mcl_core:sugar", {food_sugar = 1})
add_groups("mcl_throwing:egg", {food_egg = 1})
add_groups("mcl_farming:wheat_item", {food_wheat = 1})
@ -120,6 +114,8 @@ if farming.mcl then
add_groups("mcl_mobitems:milk_bucket", {food_milk = 1})
add_groups("mcl_ocean:dried_kelp", {food_seaweed = 1})
add_groups("mcl_potions:river_water", {food_glass_water = 1})
-- add missing food groups to current items so recipes work
add_groups("mcl_dye:yellow", {food_lemon = 1, food_banana = 1})
add_groups("mcl_dye:orange", {food_orange = 1})
add_groups("mcl_flowers:sunflower", {food_olive_oil = 1, food_butter = 1})

View File

@ -24,17 +24,6 @@ THE SOFTWARE.
License of media (textures):
----------------------------
Created by TenPlus1 (CC0):
alt_textures/ethereal_strawberry*.png
farming_spanish_potatoes.png
Created by Hugues Ross (CC BY-SA 4.0):
ethereal_strawberry*.png
Created by NameNotQuality (CC0):
farming_vanilla_flan.png
farming_spaghetti.png
Created by Oz-tal (license: CC BY-SA 3.0):
crops_garlic_*.png
crops_onion.png
@ -175,14 +164,11 @@ Created by VanessaE and edited by SpaghettiToastBook (CC0):
Created by mDiyo (Natura), modified by TenPlus1 (License: CC BY-SA 3.0):
farming_barley.png
Created by OgelGames (CC BY-SA 4.0):
Created by OgelGames (CC BY-SA 4.0)
farming_berry_smoothie.png
farming_cactus_juice.png
farming_salad.png
Created by Huhues Ross (CC BY-SA 4.0):
farming_sunflower_bread.png
Created by Felfa (CC0)
farming_blackberry*.png
farming_lettuce*.png
@ -190,12 +176,12 @@ Created by Felfa (CC0)
farming_vanilla_*.png
farming_artichoke*.png
farming_parsley*.png
farming_paella*.png
farming_paella.png
farming_potato_omelette.png
farming_spanish_potatoes_32px.png
farming_vanilla_flan_32px.png
farming_sunflower*.png [except sunflower_bread.png]
farming_mayo*.png
farming_spanish_potatoes.png
farming_vanilla_flan.png
farming_sunflower*.png
farming_mayo.png
Created by gorlock (CC0)
farming_salt_crystal.png
@ -205,8 +191,7 @@ Created by sirrobzeroone (CC0)
farming_pineapple_ring.png
Created by smoke_th (CC0 - https://opengameart.org/content/popcorn-icon)
farming_popcorn_32px.png
farming_popcorn.png [resized and edited by TenPlus1]
farming_popcorn.png
Created by DMBuce (MIT - https://github.com/DMBuce/hatchling-snacks)
farming_mac_and_cheese.png

View File

@ -1,113 +1,50 @@
# textdomain: farming
Banana=Banane
Banana Leaves=Bananenblätter
Orange=Orange
Artichoke=Artischocke
Crop=-Pflanze
Asparagus=Spargel
Barley Seed=Gerstensamen
Artichoke=
Asparagus=
Barley Seed=Gerstenkörner
Barley=Gerste
Green Beans=Grüne Bohnen
Bean Pole (place on soil before planting beans)=Bohnenstange (vor dem Pflanzen der Bohnen auf den@nAckerboden stellen)
Bean Pole (place on soil before planting beans)=Bohnenstange (vor dem Pflanzen der Bohnen auf den\nAckerboden stellen)
Beetroot=Rote Beete
Blackberries=Brombeeren
Blackberry=Brombeere
Beetroot Soup=Rote Beete Suppe
Blackberries=
Wild Blueberries=Wilde Blaubeeren
Blueberry=Blaubeere
Blueberry Muffin=Blaubeermuffin
Blueberry Pie=Blaubeerkuchen
Cabbage=Kohl
Carrot=Möhre
Carrot Juice=Möhrensaft
Golden Carrot=Goldene Möhre
Chili Pepper=Chili
Raw Cocoa Beans=Rohe Kakaobohnen
Cocoa Beans=Kakaobohnen
Bowl of Chili=Chili Schale
Chili Powder=
Raw Cocoa Beans=
Cocoa Beans=Kakaobohne
Cookie=Keks
Bar of Dark Chocolate=Tafel Zartbitterschokolade
Chocolate Block=Schokoladenstück
Coffee Beans=Kaffeebohnen
Coffee=Kaffee
Cup of Coffee=Tasse Kaffee
Banana=Banane
Banana Leaves=Bananenblätter
Orange=Apfelsine
Corn=Mais
Corn on the Cob=Maiskolben
Popcorn=
Cornstarch=Speisestärke
Bottle of Ethanol=Flasche Ethanol
Wild Cotton=Wilde Baumwolle
Cotton Seed=Baumwollsamen
Cotton=Baumwolle
Wild Cotton=Wilde Baumwolle
String=Faden
Cucumber=Gurke
Eggplant=Aubergine
Garlic clove=Knoblauchzehe
Garlic=Knoblauch
Ginger=Lebkuchen
Grapes=Weintrauben
Trellis (place on soil before planting grapes)=Spalier (vor dem Pflanzen der Weintrauben auf den@nAckerboden stellen)
Hemp Seed=Hanfsamen
Hemp Leaf=Hanfblatt
Hemp=Hanf
Lettuce=Kopfsalat
Melon Slice=Melonenscheibe
Melon=Melone
Mint Seeds=Minzsamen
Mint Leaf=Minzblatt
Mint=Minze
Onion=Zwiebel
Parsley=Petersilie
Pea Pod=Erbsenschote
Pea=Erbse
Peppercorn=Pfefferkorn
Green Pepper=Grüne Paprika
Yellow Pepper=Gelbe Paprika
Red Pepper=Rote Paprika
Pepper=Paprika
Pineapple Top=Ananasdeckel
Pineapple=Ananas
Potato=Kartoffel
Pumpkin Slice=Kürbisscheibe
Pumpkin=Kürbis
Raspberries=Himbeeren
Raspberry=Himbeere
Rhubarb=Rhabarber
Rice Seed=Reissamen
Rice=Reis
Rye seed=Roggensamen
Rye=Roggen
Oat seed=Hafersamen
Oats=Hafer
Soy Pod=Sojaschote
Soy=Soja
Spinach=Spinat
Strawberry=Erdbeere
Sunflower Seeds=Sonnenblumensamen
Sunflower=Sonnenblume
Tomato=Tomate
Vanilla=Vanille
Wheat Seed=Weizensamen
Wheat=Weizen
Hoe=Hacke
Wooden Hoe=Holzhacke
Stone Hoe=Steinhacke
Steel Hoe=Stahlhacke
Bronze Hoe=Bronzehacke
Mese Hoe=Mesehacke
Diamond Hoe=Diamanthacke
Wood Hoe=Holzhacke
Hoe Bomb (use or throw on grassy areas to hoe land)=Hackenbombe (Auf Grasland werfen oder benutzen,@num Land zu bestellen)
Mithril Scythe (Use to harvest and replant crops)=Mithrilsichel (Benutzen, um Nutzpflanzen zu ernten und neu zu pflanzen)
Seed=Saatgut
Flour=Mehl
Garlic Braid=Knoblauchzopf
Corn on the Cob=Maiskolben
Popcorn=Popcorn
Cornstarch=Speisestärke
Cup of Coffee=Tasse Kaffee
Bar of Dark Chocolate=Tafel Zartbitterschokolade
Chocolate Block=Schokoladenblock
Bowl of Chili=Schüssel mit Chili
Chili Powder=Chilipulver
Carrot Juice=Möhrensaft
Blueberry Pie=Blaubeerkuchen
Blueberry Muffin=Blaubeermuffin
Tomato Soup=Tomatensuppe
Sliced Bread=Geschnittenes Brot
Toast=Toast
Toast Sandwich=Toast-Sandwich
Glass of Water=Glas Wasser
Sugar Cube=Zuckerwürfel
Caramel=Karamell
Eggplant=
Glass of Water=
Sugar=Zucker
Sugar Cube=
Caramel=
Salt=Salz
Salt crystal=Salzkristall
Mayonnaise=Mayonnaise
Mayonnaise=
Rose Water=Rosenwasser
Turkish Delight=Lokum
Garlic Bread=Knoblauchbrot
@ -115,56 +52,110 @@ Donut=Donut
Chocolate Donut=Schokodonut
Apple Donut=Apfeldonut
Porridge=Haferbrei
Jaffa Cake=Jaffa
Jaffa Cake=Jaffakeks
Apple Pie=Apfelkuchen
Cactus Juice=Kaktussaft
Pasta=Pasta
Mac & Cheese=Makkaroni mit Käse
Mac & Cheese=
Spaghetti=Spaghetti
Bibimbap=Bibimbap
Burger=Burger
Burger=
Salad=Salat
Triple Berry Smoothie=Dreibeersmoothie
Spanish Potatoes=Spanische Kartoffeln
Potato omelette=Kartoffelomelette
Paella=Paella
Vanilla Flan=Vanilletorte
Vegan Cheese=Veganer Käse
Vegan Butter=Vegane Butter
Onigiri=Onigiri
Gyoza=Gyoza
Mochi=Mochi
Gingerbread Man=Lebkuchenmann
Triple Berry Smoothie=
Spanish Potatoes=
Potato omelet=
Paella=
Vanilla Flan=
Vegan Cheese=
Onigiri=
Gyoza=
Mochi=
Gingerbread Man=
Garlic clove=Knoblauchzehe
Garlic=Knoblauch
Garlic Braid=Knoblauchzopf
Ginger=
Grapes=Weintrauben
Trellis (place on soil before planting grapes)=Spalier (vor dem Pflanzen der Weintrauben auf den\nAckerboden stellen)
Hemp Seed=Hanfsamen
Hemp Leaf=Hanfblatt
Bottle of Hemp Oil=Flasche mit Hanföl
Hemp Fibre=Hanffaser
Hemp Block=Hanfblock
Hemp Rope=Hanfseil
Hoe=Hacke
Wooden Hoe=Holzhacke
Stone Hoe=Steinhacke
Steel Hoe=Stahlhacke
Bronze Hoe=Bronzehacke
Mese Hoe=Mesehacke
Diamond Hoe=Diamanthacke
Wood Hoe=
Hoe Bomb (use or throw on grassy areas to hoe land)=Hackbombe (Auf Grasland werfen oder benutzen)
Mithril Scythe (Use to harvest and replant crops)=
Seed=Saatgut
Lettuce=
Melon Slice=Melonenscheibe
Melon=Melone
Mint Seeds=Minzsamen
Mint Leaf=Minzblatt
Mint Tea=Minztee
Onion=Zwiebel
Onion Soup=Zwiebelsuppe
Parsley=
Pea Pod=Erbsenschote
Pea Soup=Erbsensuppe
Peppercorn=Pfefferkorn
Green Pepper=
Yellow Pepper=
Red Pepper=
Ground Pepper=Gemahlener Pfeffer
Pineapple Top=Ananasdeckel
Pineapple=Ananas
Pineapple Ring=Ananasscheibe
Pineapple Juice=Ananassaft
Cucumber and Potato Salad=Gurken-Kartoffelsalat
Pumpkin Dough=Kürbisteig
Potato=Kartoffel
Baked Potato=Ofenkartoffel
Cucumber and Potato Salad=Kartoffelsalat mit Gurke
Pumpkin Slice=Kürbisscheibe
Jack 'O Lantern (punch to turn on and off)=Kürbislaterne (Punch zum Ein- und Ausschalten)
Scarecrow Bottom=Vogelscheuchengestell
Pumpkin Bread=Kürbisbrot
Pumpkin Dough=Kürbisteig
Pumpkin=Kürbis
Raspberries=Himbeeren
Raspberry Smoothie=Himbeersmoothie
Rhubarb=Rhabarber
Rhubarb Pie=Rhabarberkuchen
Rice Flour=Reismehl
Rice Seed=
Rice=Reis
Rice Bread=Reiswaffel
Rice Flour=Reismehl
Rye seed=Roggensaat
Rye=Roggen
Oat seed=Hafersamen
Oats=Hafer
Multigrain Flour=Mehrkornmehl
Multigrain Bread=Mehrkornbrot
Soy Sauce=Sojasoße
Soy Milk=Sojamilch
Tofu=Tofu
Cooked Tofu=Gekochter Tofu
Toasted Sunflower Seeds=Geröstete Sonnenblumensamen
Bottle of Sunflower Oil=Flasche Sonnenblumenöl
Sunflower Seed Bread=Sonnenblumensamenbrot
Vanilla Extract=Vanilleextrakt
Jerusalem Artichokes=Jerusalemartischocken
Bread=Brot
Cookie=Keks
Golden Carrot=Goldene Möhre
Beetroot Soup=Rote-Beete-Suppe
Sugar=Zucker
Baked Potato=Ofenkartoffel
Savanna Soil=Savannaerde
Wet Savanna Soil=Feuchte Savannaerde
Soil=Ackerboden
Wet Soil=Bewässerter Ackerboden
Soy Pod=
Soy Sauce=
Soy Milk=
Tofu=
Cooked Tofu=
Spinach=
Strawberry=Erdbeere
Sunflower=
Sunflower Seeds=
Toasted Sunflower Seeds=
Bottle of Sunflower Oil=
Sunflower Seed Bread=
Tomato=Tomate
Tomato Soup=
Wooden Bowl=Holzschale
Saucepan=Kasserolle
Cooking Pot=Kochtopf
Baking Tray=Kuchenblech
@ -173,17 +164,13 @@ Mortar and Pestle=Mörser und Stößel
Cutting Board=Schneidebrett
Juicer=Entsafter
Glass Mixing Bowl=Glasschüssel
Bottle of Ethanol=Flasche Ethanol
Vanilla=
Vanilla Extract=
Wheat Seed=Weizenkörner
Wheat=Weizen
Straw=Stroh
Bottle of Hemp Oil=Flasche mit Hanföl
Hemp Fibre=Hanffaser
Hemp Block=Hanfblock
Hemp Rope=Hanfseil
Scarecrow Bottom=Vogelscheuchengestell
Wooden Bowl=Holzschale
String=Faden
Jack 'O Lantern (punch to turn on and off)=Kürbislaterne (Hauen zum Ein- und Ausschalten)
Savanna Soil=Savannenerde
Wet Savanna Soil=Feuchte Savannenerde
Soil=Ackerboden
Wet Soil=Feuchter Ackerboden
Flour=Mehl
Bread=Brot
Sliced Bread=Geschnittenes Brot
Toast=Toast
Toast Sandwich=Toast Sandwich

View File

@ -1,5 +1,4 @@
# textdomain: farming
Crop=
Artichoke=
Asparagus=
Barley Seed=
@ -8,10 +7,8 @@ Green Beans=
Bean Pole (place on soil before planting beans)=
Beetroot=
Beetroot Soup=
Blackberry=
Blackberries=
Wild Blueberries=
Blueberry=
Blueberry Muffin=
Blueberry Pie=
Cabbage=
@ -26,7 +23,6 @@ Cocoa Beans=
Cookie=
Bar of Dark Chocolate=
Chocolate Block=
Coffee=
Coffee Beans=
Cup of Coffee=
Banana=
@ -81,7 +77,6 @@ Garlic Braid=
Ginger=
Grapes=
Trellis (place on soil before planting grapes)=
Hemp=
Hemp Seed=
Hemp Leaf=
Bottle of Hemp Oil=
@ -102,17 +97,14 @@ Seed=
Lettuce=
Melon Slice=
Melon=
Mint=
Mint Seeds=
Mint Leaf=
Mint Tea=
Onion=
Onion Soup=
Parsley=
Pea=
Pea Pod=
Pea Soup=
Pepper=
Peppercorn=
Green Pepper=
Yellow Pepper=
@ -131,7 +123,6 @@ Scarecrow Bottom=
Pumpkin Bread=
Pumpkin Dough=
Pumpkin=
Raspberry=
Raspberries=
Raspberry Smoothie=
Rhubarb=
@ -150,7 +141,6 @@ Savanna Soil=
Wet Savanna Soil=
Soil=
Wet Soil=
Soy=
Soy Pod=
Soy Sauce=
Soy Milk=

View File

@ -1,186 +0,0 @@
# textdomain: farming
Crop= Termény
Artichoke=Articsóka
Asparagus=Spárga
Barley Seed=Árpamag
Barley=Árpa
Green Beans=Zöldbab
Bean Pole (place on soil before planting beans)=Karó babhoz (szúrd a földbe és oda vess babot)
Beetroot=Cékla
Beetroot Soup=Céklaleves
Blackberry=Szeder
Blackberries=Szedrek
Wild Blueberries=Vadáfonya
Blueberry=Áfonya
Blueberry Muffin=Áfonyamuffin
Blueberry Pie=Áfonyatorta
Cabbage=Káposzta
Carrot=Répa
Carrot Juice=Répalé
Golden Carrot=Aranyrépa
Chili Pepper=Chilipaprika
Bowl of Chili=Chilis tál
Chili Powder=Chilipor
Raw Cocoa Beans=Nyers kakaóbab
Cocoa Beans=Kakaóbab
Cookie=Süti
Bar of Dark Chocolate=Étcsoki rúd
Chocolate Block=Csokoládé tömb
Coffee=Kávé
Coffee Beans=Kávébab
Cup of Coffee=Csésze kávé
Banana=Banán
Banana Leaves=Banánlevél
Orange=Narancs
Corn=Kukorica
Corn on the Cob=Főtt kukorica
Popcorn=Pattogatott kukorica
Cornstarch=Keményítő
Bottle of Ethanol=Üveg etanol
Wild Cotton=Vadgyapot
Cotton Seed=Gyapotmag
Cotton=Gyapot
String=Madzag
Cucumber=Uborka
Eggplant=Padlizsán
Glass of Water=Pohár víz
Sugar=Cukor
Sugar Cube=Kockacukor
Caramel=Karamell
Salt=Só
Mayonnaise=Majonéz
Rose Water=Rózsavíz
Turkish Delight=Török desszert
Garlic Bread=Fokhagymás kenyér
Donut=Fánk
Chocolate Donut=Csokis fánk
Apple Donut=Almás fánk
Porridge=Zabkása
Jaffa Cake=Jaffatorta
Apple Pie=Almáspite
Cactus Juice=Kaktuszlé
Pasta=Tészta
Mac & Cheese=Sajtos makaróni
Spaghetti=Spagetti
Bibimbap=Bibimbap
Burger=Burger
Salad=Saláta
Triple Berry Smoothie=Hárombogyós turmix
Spanish Potatoes=Tepsis krumpli
Potato omelet=Krumplis rántotta
Paella=Paella
Vanilla Flan=Vaníliás gyümölcstorta
Vegan Cheese=Vegán sajt
Onigiri=Onigiri
Gyoza=Gyoza
Mochi=Mochi
Gingerbread Man=Mézeskalács-emberke
Garlic clove=Fokhagymagerezd
Garlic=Fokhagyma
Garlic Braid=Fokhagymafüzér
Ginger=Gyömbér
Grapes=Szőlő
Trellis (place on soil before planting grapes)=Karó szőlőhöz (szúrd a földbe és oda vess szőlőt)
Hemp=Kender
Hemp Seed=Kendermag
Hemp Leaf=Kenderlevél
Bottle of Hemp Oil=Üveg kenderolaj
Hemp Fibre=Kenderrost
Hemp Block=Kender tömb
Hemp Rope=Kenderkötél
Hoe=Kapa
Wooden Hoe=Fakapa
Stone Hoe=Kőkapa
Steel Hoe=Acélkapa
Bronze Hoe=Bronzkapa
Mese Hoe=Mesekapa
Diamond Hoe=Gyémántkapa
Wood Hoe=Fakapa (2)
Hoe Bomb (use or throw on grassy areas to hoe land)=Kapabomba (használd vagy dobd füves területre a föld felkapálásához)
Mithril Scythe (Use to harvest and replant crops)=Mithrilkasza (használd termények begyűjtéséhez és újravetéséhez)
Seed=Mag
Lettuce=Saláta
Melon Slice=Dinnyeszelet
Melon=Dinnye
Mint=Menta
Mint Seeds=Mentamag
Mint Leaf=Mentalevél
Mint Tea=Mentatea
Onion=Hagyma
Onion Soup=Hagymaleves
Parsley=Petrezselyem
Pea=Borsó
Pea Pod=Hüvelyes borsó
Pea Soup=Borsóleves
Pepper=Bors
Peppercorn=Borsszemek
Green Pepper=Zöldpaprika
Yellow Pepper=Sárga paprika
Red Pepper=Pirospaprika
Ground Pepper=Őrölt bors
Pineapple Top=Ananászüstök
Pineapple=Ananász
Pineapple Ring=Ananász szelet
Pineapple Juice=Ananászlé
Potato=Krumpli
Baked Potato=Sült krumpli
Cucumber and Potato Salad=Uborkás krumplisaláta
Pumpkin Slice=Tök szelet
Jack 'O Lantern (punch to turn on and off)=Töklámpás (ütéssel kapcsold ki és be)
Scarecrow Bottom=Madárijesztő alja
Pumpkin Bread=Tökkenyér
Pumpkin Dough=Töktészta
Pumpkin=Tök
Raspberry=Málna
Raspberries=Málnák
Raspberry Smoothie=Málnaturmix
Rhubarb=Rebarbara
Rhubarb Pie=Rebarbaratorta
Rice Seed=Rizsmag
Rice=Rizs
Rice Bread=Rizskenyér
Rice Flour=Rizsliszt
Rye seed=Rozsmag
Rye=Rozs
Oat seed=Zabmag
Oats=Zab
Multigrain Flour=Vegyesliszt
Multigrain Bread=Vegyesliszt-kenyér
Savanna Soil=Szavannatalaj
Wet Savanna Soil=Nedves szavannatalaj
Soil=Talaj
Wet Soil=Nedves talaj
Soy=Szója
Soy Pod=Hüvelyes szója
Soy Sauce=Szójaszósz
Soy Milk=Szójatej
Tofu=Tofu
Cooked Tofu=Főtt tofu
Spinach=Spenót
Strawberry=Eper
Sunflower=Napraforgó
Sunflower Seeds=Napraforgómag
Toasted Sunflower Seeds=Pirított napraforgómag
Bottle of Sunflower Oil=Üveg napraforgó-olaj
Sunflower Seed Bread=Napraforgómagos kenyér
Tomato=Paradicsom
Tomato Soup=Paradicsomleves
Wooden Bowl=Fatál
Saucepan=Szószostál
Cooking Pot=Főzőedény
Baking Tray=Sütőtál
Skillet=Serpenyő
Mortar and Pestle=Mozsár és zúzó
Cutting Board=Vágódeszka
Juicer=Facsaró
Glass Mixing Bowl=Üver keverőedény
Vanilla=Vanília
Vanilla Extract=Vaníliakivonat
Wheat Seed=Búzamag
Wheat=Búza
Straw=Szalma
Flour=Liszt
Bread=Kenyér
Sliced Bread=Szeletelt kenyér
Toast=Pirítós
Toast Sandwich=Pirítósszendvics

View File

@ -1,32 +1,28 @@
# textdomain: farming
Crop=.
Artichoke=Артишок
Asparagus=Спаржа
Artichoke=
Asparagus=
Barley Seed=Семена ячменя
Barley=Ячмень
Green Beans=Зеленая фасоль
Bean Pole (place on soil before planting beans)=Жердь для бобовых (установите на почву перед посадкой бобовых)
Beetroot=Свекла
Beetroot Soup=Борщ
Blackberry=Ежевика
Blackberries=Ежевика
Blackberries=
Wild Blueberries=Голубика
Blueberry=Голубика
Blueberry Muffin=Кекс с голубикой
Blueberry Pie=Пирог с голубикой
Cabbage=Капуста
Cabbage=
Carrot=Морковь
Carrot Juice=Морковный сок
Golden Carrot=Золотая морковь
Chili Pepper=Перец чили
Bowl of Chili=Миска чили
Chili Powder=Порошок чили
Raw Cocoa Beans=Сырые какао-бобы
Chili Powder=
Raw Cocoa Beans=
Cocoa Beans=Какао-бобы
Cookie=Печенье
Bar of Dark Chocolate=Плитка темного шоколада
Chocolate Block=Шоколадный блок
Coffee=Кофе
Coffee Beans=Кофейные зерна
Cup of Coffee=Чашка кофе
Banana=Банан
@ -34,7 +30,7 @@ Banana Leaves=Листья банана
Orange=Апельсин
Corn=Кукуруза
Corn on the Cob=Початок кукурузы
Popcorn=Попкорн
Popcorn=
Cornstarch=Кукурузный крахмал
Bottle of Ethanol=Бутылка спирта
Wild Cotton=Дикорастущий хлопок
@ -42,13 +38,13 @@ Cotton Seed=Семена хлопка
Cotton=Хлопок
String=Нить
Cucumber=Огурец
Eggplant=Баклажан
Glass of Water=Стакан воды
Eggplant=
Glass of Water=
Sugar=Сахар
Sugar Cube=Кусочек сахара
Caramel=Карамель
Sugar Cube=
Caramel=
Salt=Соль
Mayonnaise=Майонез
Mayonnaise=
Rose Water=Розовая вода
Turkish Delight=Рахат-лукум
Garlic Bread=Чесночный хлеб
@ -59,29 +55,28 @@ Porridge=Каша
Jaffa Cake=Яффский пирог
Apple Pie=Яблочный пирог
Cactus Juice=Кактусовый сок
Pasta=Паста
Mac & Cheese=Макароны с сыром
Spaghetti=Спагетти
Bibimbap=Бибимпап
Burger=Бургер
Salad=Салат
Triple Berry Smoothie=Тройной ягодный смузи
Spanish Potatoes=Испанский картофель
Potato omelet=Картофельный омлет
Paella=Паэлья
Vanilla Flan=Ванильный флан
Vegan Cheese=Веганский сыр
Onigiri=Онигири
Gyoza=Гёдза
Mochi=Моти
Gingerbread Man=Пряничный человечек
Pasta=
Mac & Cheese=
Spaghetti=
Bibimbap=
Burger=
Salad=
Triple Berry Smoothie=
Spanish Potatoes=
Potato omelet=
Paella=
Vanilla Flan=
Vegan Cheese=
Onigiri=
Gyoza=
Mochi=
Gingerbread Man=
Garlic clove=Зубчик чеснока
Garlic=Чеснок
Garlic Braid=Связка чеснока
Ginger=Имбирь
Ginger=
Grapes=Виноград
Trellis (place on soil before planting grapes)=Решетка (поставьте на почву перед посадкой винограда)
Hemp=Конопля
Hemp Seed=Семена конопли
Hemp Leaf=Лист конопли
Bottle of Hemp Oil=Бутылка конопляного масла
@ -95,28 +90,25 @@ Steel Hoe=Стальная мотыга
Bronze Hoe=Бронзовая мотыга
Mese Hoe=Магическая мотыга
Diamond Hoe=Алмазная мотыга
Wood Hoe=Деревянная мотыга
Wood Hoe=
Hoe Bomb (use or throw on grassy areas to hoe land)=Мотыгобомба (используйте или бросьте на траву для ее обработки)
Mithril Scythe (Use to harvest and replant crops)=Мифриловая коса (используется для сбора и пересадки урожая)
Mithril Scythe (Use to harvest and replant crops)=
Seed=Семена
Lettuce=Латук
Lettuce=
Melon Slice=Долька арбуза
Melon=Арбуз
Mint=Мята
Mint Seeds=Семена мяты
Mint Leaf=Лист мяты
Mint Tea=Чай с мятой
Onion=Лук
Onion Soup=Луковый суп
Parsley=Петрушка
Pea=Горох
Parsley=
Pea Pod=Стручок гороха
Pea Soup=Гороховый суп
Pepper=Перец
Peppercorn=Перчинка
Green Pepper=Зеленый перец
Yellow Pepper=Желтый перец
Red Pepper=Красный перец
Green Pepper=
Yellow Pepper=
Red Pepper=
Ground Pepper=Молотый перец
Pineapple Top=Верхушка ананаса
Pineapple=Ананас
@ -131,40 +123,38 @@ Scarecrow Bottom=Основание пугала
Pumpkin Bread=Тыквенный хлеб
Pumpkin Dough=Тыквенное тесто
Pumpkin=Тыква
Raspberry=Малина
Raspberries=Малина
Raspberry Smoothie=Малиновый смузи
Rhubarb=Ревень
Rhubarb Pie=Пирог с ревенем
Rice Seed=Семена риса
Rice Seed=
Rice=Рис
Rice Bread=Рисовый хлеб
Rice Flour=Рисовая мука
Rye seed=Зёрна ржи
Rye=Рожь
Oat seed=Семена овса
Oats=Овес
Oats=
Multigrain Flour=Мультизерновая мука
Multigrain Bread=Мультизерновой хлеб
Savanna Soil=Земля саванны
Wet Savanna Soil=Увлажненная земля саванны
Soil=Земля
Wet Soil=Увлажненная земля
Soy=Соя
Soy Pod=Соевый стручок
Soy Sauce=Соевый соус
Soy Milk=Соевое молоко
Tofu=Тофу
Cooked Tofu=Вареный тофу
Spinach=Шпинат
Soy Pod=
Soy Sauce=
Soy Milk=
Tofu=
Cooked Tofu=
Spinach=
Strawberry=Земляника
Sunflower=Подсолнечник
Sunflower Seeds=Семена подсолнечника
Toasted Sunflower Seeds=Жаренные семена подсолнечника
Bottle of Sunflower Oil=Бутылка подсолнечного масла
Sunflower Seed Bread=Хлеб из семян подсолнечника
Sunflower=
Sunflower Seeds=
Toasted Sunflower Seeds=
Bottle of Sunflower Oil=
Sunflower Seed Bread=
Tomato=Помидор
Tomato Soup=Томатный суп
Tomato Soup=
Wooden Bowl=Деревянная миска
Saucepan=Кастрюля
Cooking Pot=Котел
@ -174,8 +164,8 @@ Mortar and Pestle=Ступка и пестик
Cutting Board=Разделочная доска
Juicer=Соковыжималка
Glass Mixing Bowl=Стеклянная чаша
Vanilla=Ваниль
Vanilla Extract=Экстракт ванили
Vanilla=
Vanilla Extract=
Wheat Seed=Зёрна пшеницы
Wheat=Пшеница
Straw=Солома

View File

@ -1,55 +1,51 @@
# textdomain: farming
Crop=植株
Artichoke=洋蓟
Asparagus=芦笋
Artichoke=
Asparagus=
Barley Seed=大麦种子
Barley=大麦
Green Beans=青豆
Bean Pole (place on soil before planting beans)=豆杆(种豆前先放在土上)
Beetroot=甜菜根
Beetroot Soup=甜菜根汤
Blackberry=黑莓
Blackberries=黑莓
Blueberry=蓝莓
Blackberries=
Wild Blueberries=蓝莓
Blueberry Muffin=蓝莓松糕
Blueberry Pie=蓝莓派
Cabbage=包菜
Cabbage=
Carrot=胡萝卜
Carrot Juice=胡萝卜汁
Golden Carrot=金萝卜
Golden Carrot=金萝卜
Chili Pepper=辣椒
Bowl of Chili=辣椒炒饭
Chili Powder=辣椒面
Raw Cocoa Beans=生可可豆
Bowl of Chili=一碗辣椒
Chili Powder=
Raw Cocoa Beans=
Cocoa Beans=可可豆
Cookie=曲奇
Bar of Dark Chocolate=黑巧克力条
Chocolate Block=巧克力块
Coffee=咖啡
Coffee Beans=咖啡豆
Cup of Coffee=一杯咖啡
Banana=香蕉
Banana Leaves=香蕉叶
Orange=橙
Orange=橙
Corn=玉米
Corn on the Cob=玉米棒
Popcorn=爆米花
Popcorn=
Cornstarch=玉米淀粉
Bottle of Ethanol=一瓶乙醇
Wild Cotton=野生棉花
Wild Cotton=
Cotton Seed=棉籽
Cotton=棉花
String=线
Cucumber=黄瓜
Eggplant=茄子
Glass of Water=一杯水
Eggplant=
Glass of Water=
Sugar=糖
Sugar Cube=方糖
Caramel=焦糖
Sugar Cube=
Caramel=
Salt=盐
Mayonnaise=蛋黄酱
Rose Water=玫瑰
Mayonnaise=
Rose Water=玫瑰
Turkish Delight=土耳其软糖
Garlic Bread=蒜香面包
Donut=甜甜圈
@ -57,32 +53,30 @@ Chocolate Donut=巧克力甜甜圈
Apple Donut=苹果甜甜圈
Porridge=粥
Jaffa Cake=佳发饼
Apple Pie=苹果派
Cactus Juice=仙人掌汁
Pasta=意大利面
Mac & Cheese=芝士通心粉
Spaghetti=意大利面条
Bibimbap=石锅拌饭
Burger=汉堡
Salad=沙拉
Triple Berry Smoothie=三莓冰沙
Spanish Potatoes=西班牙土豆
Potato omelet=土豆煎蛋饼
Potato omelette=土豆煎蛋饼
Paella=西班牙什锦饭
Vanilla Flan=香草布丁
Vegan Cheese=植物奶酪
Onigiri=饭团
Gyoza=煎饺
Mochi=麻薯
Gingerbread Man=姜饼人
Apple Pie=
Cactus Juice=
Pasta=
Mac & Cheese=
Spaghetti=
Bibimbap=
Burger=
Salad=
Triple Berry Smoothie=
Spanish Potatoes=
Potato omelet=
Paella=
Vanilla Flan=
Vegan Cheese=
Onigiri=
Gyoza=
Mochi=
Gingerbread Man=
Garlic clove=蒜瓣
Garlic=大蒜
Garlic Braid=蒜辫
Ginger=
Ginger=
Grapes=葡萄
Trellis (place on soil before planting grapes)=棚架(种植葡萄前先放在土壤上)
Hemp=大麻
Hemp Seed=大麻籽
Hemp Leaf=大麻叶
Bottle of Hemp Oil=一瓶大麻油
@ -92,34 +86,31 @@ Hemp Rope=麻绳
Hoe=锄头
Wooden Hoe=木锄
Stone Hoe=石锄
Steel Hoe=钢锄
Bronze Hoe=青铜锄
Mese Hoe=黄石锄
Steel Hoe=钢锄
Bronze Hoe=青铜锄
Mese Hoe=黄石锄
Diamond Hoe=钻石锄
Wood Hoe=木锄
Hoe Bomb (use or throw on grassy areas to hoe land)=锄弹(使用或投掷在草地上松土
Mithril Scythe (Use to harvest and replant crops)=秘银镰刀(用于收获和重新种植作物)
Wood Hoe=
Hoe Bomb (use or throw on grassy areas to hoe land)=锄弹(在草地上使用或扔在锄地上
Mithril Scythe (Use to harvest and replant crops)=
Seed=种子
Lettuce=生菜
Lettuce=
Melon Slice=西瓜片
Melon=西
Mint=薄荷
Mint Seeds=薄荷种子
Mint Leaf=薄荷叶
Mint Tea=薄荷茶
Melon=
Mint Seeds=
Mint Leaf=
Mint Tea=
Onion=洋葱
Onion Soup=洋葱汤
Parsley=欧芹
Pea=豌豆
Onion Soup=
Parsley=
Pea Pod=豌豆荚
Pea Soup=豌豆汤
Pepper=胡椒
Peppercorn=胡椒粒
Green Pepper=青椒
Yellow Pepper=黄椒
Red Pepper=红椒
Peppercorn=胡椒
Green Pepper=
Yellow Pepper=
Red Pepper=
Ground Pepper=胡椒粉
Pineapple Top=菠萝
Pineapple Top=菠萝上衣
Pineapple=菠萝
Pineapple Ring=菠萝圈
Pineapple Juice=菠萝汁
@ -132,51 +123,49 @@ Scarecrow Bottom=稻草人屁股
Pumpkin Bread=南瓜面包
Pumpkin Dough=南瓜面团
Pumpkin=南瓜
Raspberry=覆盆子
Raspberries=覆盆子
Raspberry Smoothie=覆盆子冰沙
Rhubarb=大黄
Rhubarb Pie=大黄派
Rice Seed=水稻种子
Rice Seed=
Rice=大米
Rice Bread=米饭面包
Rice Flour=米粉
Rye seed=黑麦种子
Rye=黑麦
Oat seed=燕麦种子
Oats=燕麦
Multigrain Flour=多面粉
Oat seed=燕麦
Oats=
Multigrain Flour=多面粉
Multigrain Bread=杂粮面包
Savanna Soil=热带草原土
Wet Savanna Soil=湿润热带草原土
Savanna Soil=
Wet Savanna Soil=
Soil=土壤
Wet Soil=湿土
Soy=大豆
Soy Pod=大豆
Soy Sauce=酱油
Soy Milk=豆浆
Tofu=豆腐
Cooked Tofu=熟豆腐
Spinach=菠菜
Soy Pod=
Soy Sauce=
Soy Milk=
Tofu=
Cooked Tofu=
Spinach=
Strawberry=草莓
Sunflower=向日葵
Sunflower Seeds=葵花籽
Toasted Sunflower Seeds=炒瓜子
Bottle of Sunflower Oil=一瓶葵花籽油
Sunflower Seed Bread=瓜子面包
Sunflower=
Sunflower Seeds=
Toasted Sunflower Seeds=
Bottle of Sunflower Oil=
Sunflower Seed Bread=
Tomato=番茄
Tomato Soup=番茄汤
Tomato Soup=
Wooden Bowl=木碗
Saucepan=
Saucepan=平底
Cooking Pot=锅
Baking Tray=烤盘
Skillet=
Skillet=平底
Mortar and Pestle=研钵
Cutting Board=砧板
Juicer=榨汁机
Glass Mixing Bowl=搅拌杯
Vanilla=香草
Vanilla Extract=香草精
Vanilla=
Vanilla Extract=
Wheat Seed=小麦种子
Wheat=小麦
Straw=稻草
@ -185,9 +174,3 @@ Bread=面包
Sliced Bread=切片面包
Toast=烤面包片
Toast Sandwich=三明治面包
Salt crystal=盐晶
Vegan Butter=植物黄油
# Jerusalem Artichoke(洋姜) is an ingredient, but in the game it refers to a dish.
Jerusalem Artichokes=
Weed=杂草
Weed Bale=杂草捆

177
locale/template.txt Normal file
View File

@ -0,0 +1,177 @@
# textdomain: farming
Banana=
Banana Leaves=
Orange=
Artichoke=
Asparagus=
Barley Seed=
Barley=
Green Beans=
Bean Pole (place on soil before planting beans)=
Beetroot=
Beetroot Soup=
Blackberries=
Wild Blueberries=
Blueberry Muffin=
Blueberry Pie=
Cabbage=
Carrot=
Carrot Juice=
Golden Carrot=
Chili Pepper=
Bowl of Chili=
Chili Powder=
Raw Cocoa Beans=
Cocoa Beans=
Cookie=
Bar of Dark Chocolate=
Chocolate Block=
Coffee Beans=
Cup of Coffee=
Corn=
Corn on the Cob=
Popcorn=
Cornstarch=
Bottle of Ethanol=
Wild Cotton=
Cotton Seed=
Cotton=
String=
Cucumber=
Eggplant=
Garlic clove=
Garlic=
Garlic Braid=
Ginger=
Grapes=
Trellis (place on soil before planting grapes)=
Hemp Seed=
Hemp Leaf=
Bottle of Hemp Oil=
Hemp Fibre=
Hemp Block=
Hemp Rope=
Lettuce=
Melon Slice=
Melon=
Mint Seeds=
Mint Leaf=
Mint Tea=
Onion=
Onion Soup=
Parsley=
Pea Pod=
Pea Soup=
Peppercorn=
Green Pepper=
Yellow Pepper=
Red Pepper=
Ground Pepper=
Pineapple Top=
Pineapple=
Pineapple Ring=
Pineapple Juice=
Potato=
Baked Potato=
Cucumber and Potato Salad=
Pumpkin Slice=
Jack 'O Lantern (punch to turn on and off)=
Scarecrow Bottom=
Pumpkin Bread=
Pumpkin Dough=
Pumpkin=
Raspberries=
Raspberry Smoothie=
Rhubarb=
Rhubarb Pie=
Rice Seed=
Rice=
Rice Bread=
Rice Flour=
Rye seed=
Rye=
Oat seed=
Oats=
Multigrain Flour=
Multigrain Bread=
Soy Pod=
Soy Sauce=
Soy Milk=
Tofu=
Cooked Tofu=
Spinach=
Strawberry=
Sunflower=
Sunflower Seeds=
Toasted Sunflower Seeds=
Bottle of Sunflower Oil=
Sunflower Seed Bread=
Tomato=
Tomato Soup=
Vanilla=
Vanilla Extract=
Wheat Seed=
Wheat=
Straw=
Flour=
Bread=
Sliced Bread=
Toast=
Toast Sandwich=
Glass of Water=
Sugar=
Sugar Cube=
Caramel=
Salt=
Salt crystal=
Mayonnaise=
Rose Water=
Turkish Delight=
Garlic Bread=
Donut=
Chocolate Donut=
Apple Donut=
Porridge=
Jaffa Cake=
Apple Pie=
Cactus Juice=
Pasta=
Mac & Cheese=
Spaghetti=
Bibimbap=
Burger=
Salad=
Triple Berry Smoothie=
Spanish Potatoes=
Potato omelet=
Paella=
Vanilla Flan=
Vegan Cheese=
Onigiri=
Gyoza=
Mochi=
Gingerbread Man=
Hoe=
Wooden Hoe=
Stone Hoe=
Steel Hoe=
Bronze Hoe=
Mese Hoe=
Diamond Hoe=
Wood Hoe=
Hoe Bomb (use or throw on grassy areas to hoe land)=
Mithril Scythe (Use to harvest and replant crops)=
Seed=
Savanna Soil=
Wet Savanna Soil=
Soil=
Wet Soil=
Wooden Bowl=
Saucepan=
Cooking Pot=
Baking Tray=
Skillet=
Mortar and Pestle=
Cutting Board=
Juicer=
Glass Mixing Bowl=

View File

@ -1,25 +1,19 @@
local mcl = farming.mcl
-- add lucky blocks
lucky_block:add_blocks({
{"dro", {"farming:corn"}, 5},
{"dro", {"farming:coffee_cup_hot"}, 1},
{"dro", {(mcl and "mcl_farming:bread" or "farming:bread")}, 5},
{"nod", (mcl and "mcl_farming:pumpkin_face_light" or "farming:jackolantern"), 0},
{"tro", (mcl and "mcl_farming:pumpkin_face_light" or "farming:jackolantern_on")},
{"nod", (mcl and "mcl_core:water_source" or "default:river_water_source"), 1},
{"dro", {"farming:bread"}, 5},
{"nod", "farming:jackolantern", 0},
{"tro", "farming:jackolantern_on"},
{"nod", "default:river_water_source", 1},
{"tel"},
{"dro", {"farming:trellis", "farming:grapes"}, 5},
{"dro", {"farming:bottle_ethanol"}, 1},
{"nod", (mcl and "mcl_farming:melon" or "farming:melon"), 0},
{"nod", "farming:melon", 0},
{"dro", {"farming:donut", "farming:donut_chocolate", "farming:donut_apple"}, 5},
{"dro", {"farming:hemp_leaf", "farming:hemp_fibre", "farming:seed_hemp"}, 10},
{"nod", (mcl and "mcl_fire:fire" or "fire:permanent_flame"), 1},
{"nod", "fire:permanent_flame", 1},
{"dro", {"farming:chili_pepper", "farming:chili_bowl"}, 5},
{"dro", {(mcl and "mcl_core:bowl" or "farming:bowl")}, 3},
{"dro", {"farming:bowl"}, 3},
{"dro", {"farming:saucepan"}, 1},
{"dro", {"farming:pot"}, 1},
{"dro", {"farming:baking_tray"}, 1},
@ -29,72 +23,48 @@ lucky_block:add_blocks({
{"dro", {"farming:cutting_board"}, 1},
{"dro", {"farming:juicer"}, 1},
{"dro", {"farming:mixing_bowl"}, 1},
{"dro", {"farming:sunflower_oil"}, 5},
{"dro", {(mcl and "mcl_farming:hoe_stone" or "farming:hoe_bronze")}, 1},
{"dro", {(mcl and "mcl_farming:hoe_gold" or "farming:hoe_mese")}, 1},
{"dro", {(mcl and "mcl_farming:hoe_diamond" or "farming:hoe_diamond")}, 1},
{"dro", {"farming:hoe_bronze"}, 1},
{"dro", {"farming:hoe_mese"}, 1},
{"dro", {"farming:hoe_diamond"}, 1},
{"dro", {"farming:hoe_bomb"}, 10},
{"dro", {"farming:turkish_delight"}, 5},
{"lig"},
{"dro", {(mcl and "mcl_farming:hoe_netherite" or "farming:scythe_mithril")}, 1},
{"dro", {"farming:scythe_mithril"}, 1},
{"sch", "instafarm", 0, true, {
{"farming:wheat_8", "farming:carrot_8"},
{"farming:cotton_8", "farming:rhubarb_3"},
{"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")},
{"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")},
{"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")},
}},
{"sch", "instafarm", 0, true, {
{"farming:wheat_8", "farming:pepper_5"},
{"farming:cotton_8", "farming:onion_5"},
{"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")},
{"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")},
{"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")},
}},
{"sch", "instafarm", 0, true, {
{"farming:wheat_8", (mcl and "mcl_farming:beetroot" or "farming:beetroot_5")},
{"farming:wheat_8", "farming:beetroot_5"},
{"farming:cotton_8", "farming:barley_7"},
{"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")},
{"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")},
{"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")},
}},
{"sch", "instafarm", 0, true, {
{"farming:wheat_8", "farming:corn_8"},
{"farming:cotton_8", "farming:grapes_8"},
{"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")},
{"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")},
{"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")},
}},
{"sch", "instafarm", 0, true, {
{"farming:wheat_8", "farming:pea_5"},
{"farming:cotton_8", "farming:coffee_5"},
{"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")},
{"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")},
{"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")},
}},
{"sch", "instafarm", 0, true, {
{"farming:wheat_8", "farming:raspberry_4"},
{"farming:cotton_8", "farming:tomato_8"},
{"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")},
{"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")},
{"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")},
}},
{"sch", "instafarm", 0, true, {
{"farming:wheat_8", "farming:chili_8"},
{"farming:cotton_8", "farming:cucumber_4"},
{"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")},
{"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")},
{"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")},
}},
{"sch", "instafarm", 0, true, {
{"farming:wheat_8", "farming:spinach_4"},
{"farming:cotton_8", "farming:eggplant_4"},
{"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")},
{"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")},
{"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")},
}},
{"nod", "default:chest", 0, {
{name = (mcl and "mcl_farming:wheat_seeds" or "farming:seed_wheat"), max = 15},
{name = "farming:seed_wheat", max = 15},
{name = "farming:seed_barley", max = 15},
{name = "farming:seed_barley", max = 15},
{name = "farming:seed_hemp", max = 15},
{name = "farming:seed_rye", max = 15},
@ -105,6 +75,5 @@ lucky_block:add_blocks({
{name = "farming:grapebush", max = 5},
{name = "farming:asparagus", max = 7}
}},
{"dro", {"farming:chili_powder"}, 5},
{"dro", {"farming:weed"}, 9},
{"dro", {"farming:chili_powder"}, 5}
})

View File

@ -1,4 +1,4 @@
name = farming
description = Adds many new plants and food into Minetest.
optional_depends = default, flowers, mcl_core, mcl_sounds, mcl_farming, mcl_stairs, mcl_flowers, stairs, lucky_block, toolranks
optional_depends = default, mcl_core, mcl_sounds, mcl_farming, mcl_stairs, stairs, lucky_block, toolranks
min_minetest_version = 5.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 KiB

BIN
screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -2,5 +2,3 @@
farming_stage_length (Farming Stage Length) float 160.0
farming_use_utensils (Use utensil recipes) bool true
farming_disable_weeds (Disable Weed growth) bool false

177
soil.lua
View File

@ -1,99 +1,103 @@
local S = core.get_translator("farming")
local S = farming.translate
-- default dry soil node
local dry_soil = "farming:soil"
-- add soil types to existing dirt blocks
core.override_item("default:dirt", {
minetest.override_item("default:dirt", {
soil = {
base = "default:dirt", dry = "farming:soil", wet = "farming:soil_wet"
base = "default:dirt",
dry = "farming:soil",
wet = "farming:soil_wet"
}
})
core.override_item("default:dirt_with_grass", {
minetest.override_item("default:dirt_with_grass", {
soil = {
base = "default:dirt_with_grass", dry = "farming:soil", wet = "farming:soil_wet"
base = "default:dirt_with_grass",
dry = "farming:soil",
wet = "farming:soil_wet"
}
})
if core.registered_nodes["default:dirt_with_dry_grass"] then
core.override_item("default:dirt_with_dry_grass", {
minetest.override_item("default:dirt_with_dry_grass", {
soil = {
base = "default:dirt_with_dry_grass", dry = "farming:soil",
base = "default:dirt_with_dry_grass",
dry = "farming:soil",
wet = "farming:soil_wet"
}
})
minetest.override_item("default:dirt_with_rainforest_litter", {
soil = {
base = "default:dirt_with_rainforest_litter",
dry = "farming:soil",
wet = "farming:soil_wet"
}
})
if minetest.registered_nodes["default:dirt_with_coniferous_litter"] then
minetest.override_item("default:dirt_with_coniferous_litter", {
soil = {
base = "default:dirt_with_coniferous_litter",
dry = "farming:soil",
wet = "farming:soil_wet"
}
})
end
core.override_item("default:dirt_with_rainforest_litter", {
soil = {
base = "default:dirt_with_rainforest_litter", dry = "farming:soil",
wet = "farming:soil_wet"
}
})
if core.registered_nodes["default:dirt_with_coniferous_litter"] then
core.override_item("default:dirt_with_coniferous_litter", {
soil = {
base = "default:dirt_with_coniferous_litter", dry = "farming:soil",
wet = "farming:soil_wet"
}
})
end
-- savanna soil
if minetest.registered_nodes["default:dry_dirt"] then
if core.registered_nodes["default:dry_dirt"] then
core.override_item("default:dry_dirt", {
minetest.override_item("default:dry_dirt", {
soil = {
base = "default:dry_dirt", dry = "farming:dry_soil",
base = "default:dry_dirt",
dry = "farming:dry_soil",
wet = "farming:dry_soil_wet"
}
})
core.override_item("default:dry_dirt_with_dry_grass", {
minetest.override_item("default:dry_dirt_with_dry_grass", {
soil = {
base = "default:dry_dirt_with_dry_grass", dry = "farming:dry_soil",
base = "default:dry_dirt_with_dry_grass",
dry = "farming:dry_soil",
wet = "farming:dry_soil_wet"
}
})
core.register_node("farming:dry_soil", {
minetest.register_node("farming:dry_soil", {
description = S("Savanna Soil"),
tiles = {
"default_dry_dirt.png^farming_soil.png",
"default_dry_dirt.png"
},
drop = "default:dry_dirt",
groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 2, grassland = 1,
field = 1},
is_ground_content = false,
groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 2, field = 1},
sounds = default.node_sound_dirt_defaults(),
soil = {
base = "default:dry_dirt", dry = "farming:dry_soil",
base = "default:dry_dirt",
dry = "farming:dry_soil",
wet = "farming:dry_soil_wet"
}
})
core.register_node("farming:dry_soil_wet", {
minetest.register_node("farming:dry_soil_wet", {
description = S("Wet Savanna Soil"),
tiles = {
"default_dry_dirt.png^farming_soil_wet.png",
"default_dry_dirt.png^farming_soil_wet_side.png"
},
drop = "default:dry_dirt",
groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 3, grassland = 1,
field = 1},
is_ground_content = false,
groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 3, field = 1},
sounds = default.node_sound_dirt_defaults(),
soil = {
base = "default:dry_dirt", dry = "farming:dry_soil",
base = "default:dry_dirt",
dry = "farming:dry_soil",
wet = "farming:dry_soil_wet"
}
})
@ -102,46 +106,44 @@ if core.registered_nodes["default:dry_dirt"] then
end
-- normal soil
core.register_node("farming:soil", {
minetest.register_node("farming:soil", {
description = S("Soil"),
tiles = {"default_dirt.png^farming_soil.png", "default_dirt.png"},
drop = "default:dirt",
groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 2, grassland = 1,
field = 1},
is_ground_content = false,
groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 2, field = 1},
sounds = default.node_sound_dirt_defaults(),
soil = {
base = "default:dirt", dry = "farming:soil", wet = "farming:soil_wet"
base = "default:dirt",
dry = "farming:soil",
wet = "farming:soil_wet"
}
})
-- wet soil
core.register_node("farming:soil_wet", {
minetest.register_node("farming:soil_wet", {
description = S("Wet Soil"),
tiles = {
"default_dirt.png^farming_soil_wet.png",
"default_dirt.png^farming_soil_wet_side.png"
},
drop = "default:dirt",
groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 3, grassland = 1,
field = 1},
is_ground_content = false,
groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 3, field = 1},
sounds = default.node_sound_dirt_defaults(),
soil = {
base = "default:dirt", dry = "farming:soil", wet = "farming:soil_wet"
base = "default:dirt",
dry = "farming:soil",
wet = "farming:soil_wet"
}
})
-- sand is not soil, change existing sand-soil to use dry soil
core.register_alias("farming:desert_sand_soil", dry_soil)
core.register_alias("farming:desert_sand_soil_wet", dry_soil .. "_wet")
-- sand is not soil, change existing sand-soil to use dry soil
minetest.register_alias("farming:desert_sand_soil", dry_soil)
minetest.register_alias("farming:desert_sand_soil_wet", dry_soil .. "_wet")
-- if water near soil then change to wet soil
core.register_abm({
minetest.register_abm({
label = "Soil changes",
nodenames = {"group:field"},
interval = 15,
@ -150,74 +152,47 @@ core.register_abm({
action = function(pos, node)
local ndef = core.registered_nodes[node.name]
local ndef = minetest.registered_nodes[node.name]
if not ndef or not ndef.soil or not ndef.soil.wet
or not ndef.soil.base or not ndef.soil.dry then return end
pos.y = pos.y + 1
local nn = core.get_node_or_nil(pos)
local nn = minetest.get_node_or_nil(pos)
pos.y = pos.y - 1
if nn then nn = nn.name else return end
-- what's on top of soil, if solid/not plant change soil to dirt
if core.registered_nodes[nn]
and core.registered_nodes[nn].walkable
and core.get_item_group(nn, "plant") == 0
and core.get_item_group(nn, "growing") == 0 then
if minetest.registered_nodes[nn]
and minetest.registered_nodes[nn].walkable
and minetest.get_item_group(nn, "plant") == 0
and minetest.get_item_group(nn, "growing") == 0 then
core.set_node(pos, {name = ndef.soil.base})
minetest.set_node(pos, {name = ndef.soil.base})
return
end
-- check if water is within 3 nodes
if core.find_node_near(pos, 3, {"group:water"}) then
if minetest.find_node_near(pos, 3, {"group:water"}) then
-- only change if it's not already wet soil
if node.name ~= ndef.soil.wet then
core.set_node(pos, {name = ndef.soil.wet})
minetest.set_node(pos, {name = ndef.soil.wet})
end
-- only dry out soil if no unloaded blocks nearby, just incase
elseif not core.find_node_near(pos, 3, {"ignore"}) then
elseif not minetest.find_node_near(pos, 3, {"ignore"}) then
if node.name == ndef.soil.wet then
core.set_node(pos, {name = ndef.soil.dry})
minetest.set_node(pos, {name = ndef.soil.dry})
-- if crop or seed found don't turn to dry soil
elseif node.name == ndef.soil.dry
and core.get_item_group(nn, "plant") == 0
and core.get_item_group(nn, "growing") == 0 then
core.set_node(pos, {name = ndef.soil.base})
and minetest.get_item_group(nn, "plant") == 0
and minetest.get_item_group(nn, "growing") == 0 then
minetest.set_node(pos, {name = ndef.soil.base})
end
end
end
})
-- those darn weeds
if core.settings:get_bool("farming_disable_weeds") ~= true then
core.register_abm({
nodenames = {"group:field"},
neighbors = {"air"},
interval = 50,
chance = 35,
catch_up = false,
action = function(pos, node)
if core.find_node_near(pos, 8, {"farming:scarecrow_bottom"}) then
return
end
pos.y = pos.y + 1
if core.get_node(pos).name == "air" then
core.set_node(pos, {name = "farming:weed", param2 = 2})
end
end
})
end

View File

@ -1,38 +1,39 @@
local statistics = {}
local ROOT_2 = math.sqrt(2.0)
-- Approximations for erf(x) and erfInv(x) from
-- https://en.wikipedia.org/wiki/Error_function
local statistics = {}
local random, floor, ceil = math.random, math.floor, math.ceil
local exp, log, sqrt = math.exp, math.log, math.sqrt
local ROOT_2 = sqrt(2.0)
local erf
local erf_inv
local A = 8 * (math.pi - 3.0) / (3.0 * math.pi * (4.0 - math.pi))
local B = 4.0 / math.pi
local C = 2.0 / (math.pi * A)
local D = 1.0 / A
local function erf(x)
erf = function(x)
if x == 0 then return 0 end
if x == 0 then return 0; end
local xSq = x * x
local aXSq = A * xSq
local v = sqrt(1.0 - exp(-xSq * (B + aXSq) / (1.0 + aXSq)))
local v = math.sqrt(1.0 - math.exp(-xSq * (B + aXSq) / (1.0 + aXSq)))
return (x > 0 and v) or -v
end
local function erf_inv(x)
erf_inv = function(x)
if x == 0 then return 0 end
if x == 0 then return 0; end
if x <= -1 or x >= 1 then return nil end
if x <= -1 or x >= 1 then return nil; end
local y = log(1 - x * x)
local y = math.log(1 - x * x)
local u = C + 0.5 * y
local v = sqrt(sqrt(u * u - D * y) - u)
local v = math.sqrt(math.sqrt(u * u - D * y) - u)
return (x > 0 and v) or -v
end
@ -43,10 +44,14 @@ local function std_normal(u)
end
local poisson
local cdf_table = {}
local function generate_cdf(lambda_index, lambda)
local max = ceil(4 * lambda)
local pdf = exp(-lambda)
local max = math.ceil(4 * lambda)
local pdf = math.exp(-lambda)
local cdf = pdf
local t = { [0] = pdf }
@ -60,32 +65,30 @@ local function generate_cdf(lambda_index, lambda)
end
local cdf_table = {}
for li = 1, 100 do
cdf_table[li] = generate_cdf(li, 0.25 * li)
end
local function poisson(lambda, max)
poisson = function(lambda, max)
if max < 2 then
return (random() < exp(-lambda) and 0) or 1
return (math.random() < math.exp(-lambda) and 0) or 1
elseif lambda >= 2 * max then
return max
end
local u = random()
local lambda_index = floor(4 * lambda + 0.5)
local u = math.random()
local lambda_index = math.floor(4 * lambda + 0.5)
local cdfs = cdf_table[lambda_index]
if cdfs then
lambda = 0.25 * lambda_index
if u < cdfs[0] then return 0 end
if max > #cdfs then max = #cdfs + 1 else max = floor(max) end
if u >= cdfs[max - 1] then return max end
if u < cdfs[0] then return 0; end
if max > #cdfs then max = #cdfs + 1 else max = math.floor(max); end
if u >= cdfs[max - 1] then return max; end
if max > 4 then -- Binary search
@ -93,49 +96,62 @@ local function poisson(lambda, max)
while s + 1 < max do
local m = floor(0.5 * (s + max))
local m = math.floor(0.5 * (s + max))
if u < cdfs[m] then max = m else s = m end
if u < cdfs[m] then max = m; else s = m; end
end
else
for i = 1, max - 1 do
if u < cdfs[i] then return i end
if u < cdfs[i] then return i; end
end
end
return max
else
local x = lambda + sqrt(lambda) * std_normal(u)
local x = lambda + math.sqrt(lambda) * std_normal(u)
return (x < 0.5 and 0) or (x >= max - 0.5 and max) or floor(x + 0.5)
return (x < 0.5 and 0) or (x >= max - 0.5 and max) or math.floor(x + 0.5)
end
end
-- Error and Inverse error functions
-- Error function.
statistics.erf = erf
-- Inverse error function.
statistics.erf_inv = erf_inv
--- Standard normal distribution function (mean 0, standard deviation 1).
-- @return - Any real number (actually between -3.0 and 3.0).
--
-- @return
-- Any real number (actually between -3.0 and 3.0).
statistics.std_normal = function()
local u = random()
local u = math.random()
if u < 0.001 then return -3.0 elseif u > 0.999 then return 3.0 end
if u < 0.001 then
return -3.0
elseif u > 0.999 then
return 3.0
end
return std_normal(u)
end
--- Standard normal distribution function (mean 0, standard deviation 1).
-- @param mu - The distribution mean.
-- @param sigma - The distribution standard deviation.
-- @return - Any real number (actually between -3*sigma and 3*sigma).
--
-- @param mu
-- The distribution mean.
-- @param sigma
-- The distribution standard deviation.
-- @return
-- Any real number (actually between -3*sigma and 3*sigma).
statistics.normal = function(mu, sigma)
local u = random()
local u = math.random()
if u < 0.001 then
return mu - 3.0 * sigma
@ -146,18 +162,24 @@ statistics.normal = function(mu, sigma)
return mu + sigma * std_normal(u)
end
--- Poisson distribution function.
-- @param lambda - The distribution mean and variance.
-- @param max - The distribution maximum.
-- @return - An integer between 0 and max (both inclusive).
--
-- @param lambda
-- The distribution mean and variance.
-- @param max
-- The distribution maximum.
-- @return
-- An integer between 0 and max (both inclusive).
statistics.poisson = function(lambda, max)
lambda, max = tonumber(lambda), tonumber(max)
if not lambda or not max or lambda <= 0 or max < 1 then return 0 end
if not lambda or not max or lambda <= 0 or max < 1 then return 0; end
return poisson(lambda, max)
end
return statistics

Binary file not shown.

Before

Width:  |  Height:  |  Size: 335 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 B

After

Width:  |  Height:  |  Size: 382 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 B

After

Width:  |  Height:  |  Size: 116 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 B

After

Width:  |  Height:  |  Size: 137 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 B

After

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 B

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 B

After

Width:  |  Height:  |  Size: 234 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 B

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 209 B

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 215 B

After

Width:  |  Height:  |  Size: 258 B

View File

Before

Width:  |  Height:  |  Size: 421 B

After

Width:  |  Height:  |  Size: 421 B

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