Compare commits

..

No commits in common. "master" and "nalc-1.2.0" have entirely different histories.

308 changed files with 4598 additions and 9682 deletions

226
README.md
View File

@ -1,227 +1,19 @@
Farming Redo mod for Minetest # Farming Redo Mod
============================= ### by TenPlus1
Information
-----------
This mod replaces the default `farming` mod with a fully compatible API that allows
players to grow crops even when they are not nearby. It also includes many new foods
and crops which can be planted directly onto tilled soil without seeds. Crops that do
require seeds like wheat and cotton are found when digging in long grasses, and will
require player to stay nearby until they germinate before growing normally.
![screenshot.png](screenshot.png)
Tech information
----------------
Crops grow by adding your new plant to the {growing = 1} group and numbering the stages from _1 to as many stages as you like, but the underscore MUST be used only once in the node name to separate plant from stage number e.g.
* "farming:cotton_1" through to "farming:cotton_8"
* "farming:wheat_1" through to "farming:wheat_8"
* "farming:cucumber_1" through to "farming:cucumber_4"
https://forum.minetest.net/viewtopic.php?id=9019 https://forum.minetest.net/viewtopic.php?id=9019
Farming Redo also works with Bonemeal mod for quick growing crops and saplings which can Farming Redo is a simplified version of the built-in farming mod in minetest and comes with wheat, cotton, carrot, cucumber, potato and tomato to start out with which spawn throughout the map... new foods need only be planted on tilled soil so no seeds are required, original wheat and cotton will require seeds which are found inside normal and jungle grass...
be found at https://notabug.org/TenPlus1/bonemeal
#### Optional dependences: This mod works by adding your new plant to the {growing=1} group and numbering the stages from _1 to as many stages as you like, but the underscore MUST be used only once in the node name to separate plant from stage number e.g.
* default "farming:cotton_1" through to "farming:cotton_8"
* mcl_core, mcl_sounds, mcl_farming, mcl_stairs "farming:wheat_1" through to "farming:wheat_8"
* stairs "farming:cucumber_4" through to "farming:cucumber_4"
* lucky_block (adds 47 lucky blocks)
* toolranks
#### Configuration
`farming.conf` is used to load custom settings for each crop and can be found in either the
farming mod folder or the world folder. Also `minetest.conf` contains a setting for crop growth speed.
| Configuration | type | default | file | Notes |
| -------------------- | ----- | ------- | ------------ | ----------------------------------------- |
| farming_stage_length | float | 160.0 | minetest.conf | Contains a value used for speed of crop growth in seconds |
| farming.min_light | int | 12 | farming.conf | default minimum light levels crops need to grow |
| farming.max_light | int | 15 | farming.conf | default maximum light levels crops need to grow |
| farming_use_utensils | bool | True | farming.conf | When True uses utensils in craft recipes |
| farming.carrot | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.potato | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.tomato | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.cucumber | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.corn | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.coffee | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.melon | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.pumpkin | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.cocoa | bool | true | farming.conf | true to enable crop/food or false to disable |
| farming.raspberry | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.blueberry | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.rhubarb | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.beans | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.grapes | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.barley | bool | true | farming.conf | true to enable crop/food, false to disable |
| farming.chili | float | 0.003 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.hemp | float | 0.003 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.garlic | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.onion | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.pepper | float | 0.002 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.pineapple | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.peas | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.beetroot | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.mint | float | 0.005 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.cabbage | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.blackberry | float | 0.002 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.lettuce | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.soy | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.vanilla | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.artichoke | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.parsley | float | 0.002 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.sunflower | float | 0.001 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.grains | bool | true | farming.conf | true to enable crop/food or false to disable |
| farming.rice | bool | true | farming.conf | true to enable crop/food or false to disable |
| farming.asparagus | float | 0.002 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.eggplant | float | 0.002 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.spinach | float | 0.002 | farming.conf | rarety value to enable crop/food in-game, false to disable |
| farming.strawberry | float | 0.002 | farming.conf | rarety value to enable crop/food in-game, false to disable |
#### Nodes and food
This farming mod provides a large selection of craftable food and items:
| Node name | Description name |
| ----------------------- | --------------------- |
| farming:salt | Salt |
| farming:salt_crystal | Salt Crystal |
| farming:chili_powder | Chili Powder |
| farming:rose_water | Rose Water |
| farming:glass_water | Glass of Water |
| farming:sugar | Sugar |
| farming:sugar_cube | Sugar Cube |
| farming:caramel | Caramel |
| farming:turkish_delight | Turkish Delight |
| farming:garlic_bread | Garlic Bread |
| farming:donut | Donut |
| farming:donut_chocolate | Chocolate Donut |
| farming:donut_apple | Apple Donut |
| farming:porridge | Porridge |
| farming:jaffa_cake | Jaffa Cake |
| farming:apple_pie | Apple Pie |
| farming:cactus_juice | Cactus Juice |
| farming:pasta | Pasta |
| farming:mac_and_cheese | Mac & Cheese |
| farming:spaghetti | Spaghetti |
| farming:bibimbap | Bibimbap |
| farming:burger | Burger |
| farming:salad | Salad |
| farming:smoothie_berry | Triple Berry Smoothie |
| farming:spanish_potatoes | Spanish Potatoes |
| farming:potato_omelet | Potato omelet |
| farming:paella | Paella |
| farming:flan | Vanilla Flan |
| farming:cheese_vegan | Vegan Cheese |
| farming:onigiri | Onigiri |
| farming:gyoza | Gyoza |
| farming:mochi | Mochi |
| farming:beetroot_soup | Beetroot Soup |
| farming:muffin_blueberry | Blueberry Muffin |
| farming:blueberry_pie | Blueberry Pie |
| farming:carrot_juice | Carrot Juice |
| farming:carrot_gold | Golden Carrot (revives) |
| farming:chili_bowl | Bowl or Chili |
| farming:cocoa_beans | Cocoa Beans |
| farming:cookie | Chocolate Cookie |
| farming:chocolate_dark | Bar of Dark Chocolate |
| farming:chocolate_block | Chocolate Block |
| farming:coffee_cup | Cup of Coffee |
| farming:corn_cob | Corn on the Cob |
| farming:popcorn | Popcorn |
| farming:cornstarch | Cornstarch |
| farming:ethanol | Bottle of Ethanol (fuel) |
| farming:string | String |
| farming:garlic_braid | Garlic Braid |
| farming:garlic_clove | Garlic Clove |
| farming:hemp_oil | Hemp Oil |
| farming:hemp_fibre | Hemp Fibre |
| farming:hemp_block | Hemp Block |
| farming:hemp_rope | Hemp Rope |
| farming:mint_tea | Mint Tea |
| farming:onion_soup | Onion Soup |
| farming:pea_soup | Pea Soup |
| farming:pepper_ground | Ground Pepper |
| farming:pineapple_ring | Pineapple Ring |
| farming:pineapple_juice | Pineapple Juice |
| farming:baked_potato | Baked Potato |
| farming:potato_salad | Cucumber & Potato Salad |
| farming:jackolantern | Jack 'O Lantern |
| farming:scarecrow_bottom | Scarecrow Bottom |
| farming:pumpkin_dough | Pumpkin Dough |
| farming:pumpkin_bread | Pumpkin Bread |
| farming:smoothie_raspberry | Raspberry Smoothie |
| farming:rhubarb_pie | Rhybarb Pie |
| farming:rice_flour | Rice Flour |
| farming:rice_bread | Rice Bread |
| farming:flour_multigrain | Multigrain Rice |
| farming:bread_multigrain | Multigrain Bread |
| farming:soy_sauce | Soy Sauce |
| farming:soy_milk | Soy Milk |
| farming:tofu | Tofu |
| farming:tofu_cooked | Cooked Tofu |
| farming:sunflower_seeds_toasted | Toasted Sunflower Seeds |
| farming:sunflower_oil | Sunflower Oil |
| farming:sunflower_bread | Sunflower Bread |
| farming:tomato_soup | Tomato Soup |
| farming:vanilla_extract | Vanilla Extract |
| farming:flour | Flour |
| farming:bread | Bread |
| farming:straw | Straw Block |
| farming:bread_slice | Bread Slice |
| farming:toast | Toast |
| farming:toast_sandwich | Toast Sandwich |
#### Item and Tools
| node name | Description |
| ----------------------- | --------------------- |
| farming:trellis | Trellis (for growing grapes) |
| farming:beanpole | Bean Pole (for growing beans) |
| farming:scythe_mithril | Mithril Scythe (Use to harvest and replant crops) |
| farming:hoe_bomb | Hoe Bomb (use or throw on grassy areas to hoe land) |
| farming:hoe_wood | Wooden Hoe |
| farming:hoe_stone | Stone Hoe |
| farming:hoe_steel | Steel Hoe |
| farming:hoe_bronze | Bronze Hoe |
| farming:hoe_mese | Mese Hoe |
| farming:hoe_diamond | Diamond Hoe |
| farming:bowl | Wooden Bowl |
| farming:saucepan | Saucepan |
| farming:pot | Cooking Pot |
| farming:baking_tray | Baking Tray |
| farming:skillet | Skillet |
| farming:mortar_pestle | Mortar and Pestle |
| farming:cutting_board | Cutting Board |
| farming:juicer | Juicer |
| farming:mixing_bowl | Glass Mixing Bowl |
| moreores:hoe_silver | Silver Hoe |
| moreores:hoe_mithril | Mitril Hoe |
#### Nodes and Aliasing
This mod is also a direct replacement for the older Farming Plus mod and will replace all
of it's nodes and items with one's found within Farming Redo.
#### ABM
The ABM checks every 5 minutes to make sure crops in `group:growing` that were planted
on an older map are enabled and growing properly.
### Changelog: ### 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.45 - Dirt and Hoes are more in line with default by using dry/wet/base
- 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)
- 1.45 - Dirt and Hoes are more in line with default by using dry/wet/base, added cactus juice, added pasta, spaghetti, cabbage, korean bibimbap, code tidy
options, onion soup added (thanks edcrypt), Added apple pie, added wild cotton to savanna options, onion soup added (thanks edcrypt), Added apple pie, added wild cotton to savanna
- 1.44 - Added 'farming_stage_length' in mod settings for speed of crop growth, also thanks to TheDarkTiger for translation updates - 1.44 - Added 'farming_stage_length' in mod settings for speed of crop growth, also thanks to TheDarkTiger for translation updates
- 1.43 - Scythe works on use instead of right-click, added seed=1 groups to actual seeds and seed=2 group for plantable food items. - 1.43 - Scythe works on use instead of right-click, added seed=1 groups to actual seeds and seed=2 group for plantable food items.
@ -274,3 +66,5 @@ options, onion soup added (thanks edcrypt), Added apple pie, added wild cotton t
- 0.2 - Fixed check for wet soil - 0.2 - Fixed check for wet soil
- 0.1 - Fixed growing bug - 0.1 - Fixed growing bug
- 0.0 - Initial release - 0.0 - Initial release
### Lucky Blocks: 39

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

39
api.txt
View File

@ -16,10 +16,10 @@ The farming API allows you to easily register plants and hoes.
'minlight' min light level needed to grow 'minlight' min light level needed to grow
'maxlight' max light level needed to grow 'maxlight' max light level needed to grow
'steps' number of steps crop has in growth cycle 'steps' number of steps crop has in growth cycle
'trellis' name of trellis node (e.g. "farming:trellis"), default: nil
### Hoe Definition ### Hoe Definition
{ {
description = "My Hoe", -- Description for tooltip description = "My Hoe", -- Description for tooltip
inventory_image = "unknown_item.png", -- Image to be used as wield- and inventory image inventory_image = "unknown_item.png", -- Image to be used as wield- and inventory image
@ -40,8 +40,7 @@ The farming API allows you to easily register plants and hoes.
steps = 8, -- How many steps the plant has to grow, until it can be harvested steps = 8, -- How many steps the plant has to grow, until it can be harvested
-- ^ Always provide a plant texture for each step, format: modname_plantname_i.png (i = stepnumber) -- ^ Always provide a plant texture for each step, format: modname_plantname_i.png (i = stepnumber)
minlight = 13, -- Minimum light to grow minlight = 13, -- Minimum light to grow
maxlight = minetest.LIGHT_MAX -- Maximum light to grow maxlight = default.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. 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,12 +49,12 @@ 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'. 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 -- check surrounding for jungle tree
if minetest.find_node_near(pos, 1, {"default:jungletree"}) then if minetest.find_node_near(pos, 1, {"default:jungletree"}) then
return true -- place next growth stage return false -- place next growth stage
end end
return false -- condition not met, skip next growth stage until next check return true -- condition not met, skip next growth stage until next check
end, end,
### Scythe items that will not drop ### Scythe items that will not drop
@ -63,31 +62,3 @@ end,
This is a function to add items to a list that scythes will not drop, e.g. farming:trellis or farming:beanpole. This is a function to add items to a list that scythes will not drop, e.g. farming:trellis or farming:beanpole.
farming.add_to_scythe_not_drops(item_name) farming.add_to_scythe_not_drops(item_name)
### Start timer function
A handy function that starts a crops timer with a randomly selected time set by using
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,5 +1,5 @@
local S = minetest.get_translator("farming") local S = farming.intllib
--= Helpers --= Helpers
@ -8,17 +8,23 @@ local alias = function(orig, new)
minetest.register_alias(orig, new) minetest.register_alias(orig, new)
end end
--= Add {eatable} group to default food items if found --= Overrides (add food_* group to apple and brown mushroom)
farming.add_eatable("default:apple", 2) minetest.override_item("default:apple", {
farming.add_eatable("default:blueberries", 1) groups = {food_apple = 1, fleshy = 3, dig_immediate = 3, flammable = 2,
farming.add_eatable("flowers:mushroom_brown", 1) leafdecay = 3, leafdecay_drop = 1},
farming.add_eatable("flowers:mushroom_red", -5) })
if minetest.registered_nodes["flowers:mushroom_brown"] then
minetest.override_item("flowers:mushroom_brown", {
light_source = 1,
groups = {food_mushroom = 1, snappy = 3, attached_node = 1, flammable = 2},
})
end
--= Aliases --= Aliases
-- Banana -- Banana
if eth then if eth then
alias("farming_plus:banana_sapling", "ethereal:banana_tree_sapling") alias("farming_plus:banana_sapling", "ethereal:banana_tree_sapling")
alias("farming_plus:banana_leaves", "ethereal:bananaleaves") alias("farming_plus:banana_leaves", "ethereal:bananaleaves")
@ -27,33 +33,30 @@ else
minetest.register_node(":ethereal:banana", { minetest.register_node(":ethereal:banana", {
description = S("Banana"), description = S("Banana"),
drawtype = "torchlike", drawtype = "torchlike",
tiles = {"farming_banana_single.png"}, tiles = {"banana_single.png"},
inventory_image = "farming_banana_single.png", inventory_image = "banana_single.png",
wield_image = "farming_banana_single.png", wield_image = "banana_single.png",
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
walkable = false, walkable = false,
selection_box = { 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}, groups = {food_banana = 1, fleshy = 3, dig_immediate = 3, flammable = 2},
is_ground_content = false,
on_use = minetest.item_eat(2), on_use = minetest.item_eat(2),
sounds = farming.node_sound_leaves_defaults() sounds = default.node_sound_leaves_defaults(),
}) })
farming.add_eatable("ethereal:banana", 2)
minetest.register_node(":ethereal:bananaleaves", { minetest.register_node(":ethereal:bananaleaves", {
description = S("Banana Leaves"), description = S("Banana Leaves"),
tiles = {"ethereal_banana_leaf.png"}, tiles = {"banana_leaf.png"},
inventory_image = "ethereal_banana_leaf.png", inventory_image = "banana_leaf.png",
wield_image = "ethereal_banana_leaf.png", wield_image = "banana_leaf.png",
paramtype = "light", paramtype = "light",
waving = 1, waving = 1,
groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2}, groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2},
is_ground_content = false, sounds = default.node_sound_leaves_defaults(),
sounds = farming.node_sound_leaves_defaults()
}) })
alias("farming_plus:banana_sapling", "default:sapling") alias("farming_plus:banana_sapling", "default:sapling")
@ -62,7 +65,6 @@ else
end end
-- Carrot -- Carrot
alias("farming_plus:carrot_seed", "farming:carrot") alias("farming_plus:carrot_seed", "farming:carrot")
alias("farming_plus:carrot_1", "farming:carrot_1") alias("farming_plus:carrot_1", "farming:carrot_1")
alias("farming_plus:carrot_2", "farming:carrot_4") alias("farming_plus:carrot_2", "farming:carrot_4")
@ -71,14 +73,12 @@ alias("farming_plus:carrot", "farming:carrot_8")
alias("farming_plus:carrot_item", "farming:carrot") alias("farming_plus:carrot_item", "farming:carrot")
-- Cocoa -- Cocoa
alias("farming_plus:cocoa_sapling", "farming:cocoa_beans") alias("farming_plus:cocoa_sapling", "farming:cocoa_beans")
alias("farming_plus:cocoa_leaves", "default:leaves") alias("farming_plus:cocoa_leaves", "default:leaves")
alias("farming_plus:cocoa", "default:apple") alias("farming_plus:cocoa", "default:apple")
alias("farming_plus:cocoa_bean", "farming:cocoa_beans") alias("farming_plus:cocoa_bean", "farming:cocoa_beans")
-- Orange -- Orange
alias("farming_plus:orange_1", "farming:tomato_1") alias("farming_plus:orange_1", "farming:tomato_1")
alias("farming_plus:orange_2", "farming:tomato_4") alias("farming_plus:orange_2", "farming:tomato_4")
alias("farming_plus:orange_3", "farming:tomato_6") alias("farming_plus:orange_3", "farming:tomato_6")
@ -98,23 +98,20 @@ else
sunlight_propagates = true, sunlight_propagates = true,
walkable = false, walkable = false,
selection_box = { 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}, groups = {food_orange = 1, fleshy = 3, dig_immediate = 3, flammable = 2},
is_ground_content = false,
on_use = minetest.item_eat(4), on_use = minetest.item_eat(4),
sounds = farming.node_sound_leaves_defaults() sounds = default.node_sound_leaves_defaults(),
}) })
farming.add_eatable("ethereal:orange", 4)
alias("farming_plus:orange_item", "ethereal:orange") alias("farming_plus:orange_item", "ethereal:orange")
alias("farming_plus:orange", "ethereal:orange") alias("farming_plus:orange", "ethereal:orange")
alias("farming_plus:orange_seed", "default:sapling") alias("farming_plus:orange_seed", "default:sapling")
end end
-- Potato -- Potato
alias("farming_plus:potato_item", "farming:potato") alias("farming_plus:potato_item", "farming:potato")
alias("farming_plus:potato_1", "farming:potato_1") alias("farming_plus:potato_1", "farming:potato_1")
alias("farming_plus:potato_2", "farming:potato_2") alias("farming_plus:potato_2", "farming:potato_2")
@ -122,7 +119,6 @@ alias("farming_plus:potato", "farming:potato_3")
alias("farming_plus:potato_seed", "farming:potato") alias("farming_plus:potato_seed", "farming:potato")
-- Pumpkin -- Pumpkin
alias("farming:pumpkin_seed", "farming:pumpkin_slice") alias("farming:pumpkin_seed", "farming:pumpkin_slice")
alias("farming:pumpkin_face", "farming:jackolantern") alias("farming:pumpkin_face", "farming:jackolantern")
alias("farming:pumpkin_face_light", "farming:jackolantern_on") alias("farming:pumpkin_face_light", "farming:jackolantern_on")
@ -135,7 +131,6 @@ alias("farming:scarecrow_light", "farming:jackolantern_on")
alias("farming:pumpkin_flour", "farming:pumpkin_dough") alias("farming:pumpkin_flour", "farming:pumpkin_dough")
-- Rhubarb -- Rhubarb
alias("farming_plus:rhubarb_seed", "farming:rhubarb") alias("farming_plus:rhubarb_seed", "farming:rhubarb")
alias("farming_plus:rhubarb_1", "farming:rhubarb_1") alias("farming_plus:rhubarb_1", "farming:rhubarb_1")
alias("farming_plus:rhubarb_2", "farming:rhubarb_2") alias("farming_plus:rhubarb_2", "farming:rhubarb_2")
@ -143,19 +138,37 @@ alias("farming_plus:rhubarb", "farming:rhubarb_3")
alias("farming_plus:rhubarb_item", "farming:rhubarb") alias("farming_plus:rhubarb_item", "farming:rhubarb")
-- Strawberry -- Strawberry
if eth then
alias("farming_plus:strawberry_item", "ethereal:strawberry")
alias("farming_plus:strawberry_seed", "ethereal:strawberry")
alias("farming_plus:strawberry_1", "ethereal:strawberry_1")
alias("farming_plus:strawberry_2", "ethereal:strawberry_3")
alias("farming_plus:strawberry_3", "ethereal:strawberry_5")
alias("farming_plus:strawberry", "ethereal:strawberry_7")
else
minetest.register_craftitem(":ethereal:strawberry", {
description = S("Strawberry"),
inventory_image = "strawberry.png",
wield_image = "strawberry.png",
groups = {food_strawberry = 1, flammable = 2},
on_use = minetest.item_eat(1),
})
alias("farming_plus:strawberry_item", "ethereal:strawberry") alias("farming_plus:strawberry_item", "ethereal:strawberry")
alias("farming_plus:strawberry_seed", "ethereal:strawberry") alias("farming_plus:strawberry_seed", "ethereal:strawberry")
alias("farming_plus:strawberry_1", "ethereal:strawberry_1") alias("farming_plus:strawberry_1", "farming:raspberry_1")
alias("farming_plus:strawberry_2", "ethereal:strawberry_3") alias("farming_plus:strawberry_2", "farming:raspberry_2")
alias("farming_plus:strawberry_3", "ethereal:strawberry_5") alias("farming_plus:strawberry_3", "farming:raspberry_3")
alias("farming_plus:strawberry", "ethereal:strawberry_7") alias("farming_plus:strawberry", "farming:raspberry_4")
end
-- Tomato -- Tomato
alias("farming_plus:tomato_seed", "farming:tomato") alias("farming_plus:tomato_seed", "farming:tomato")
alias("farming_plus:tomato_item", "farming:tomato") alias("farming_plus:tomato_item", "farming:tomato")
alias("farming_plus:tomato_1", "farming:tomato_2") alias("farming_plus:tomato_1", "farming:tomato_2")
alias("farming_plus:tomato_2", "farming:tomato_4") alias("farming_plus:tomato_2", "farming:tomato_4")
alias("farming_plus:tomato_3", "farming:tomato_6") alias("farming_plus:tomato_3", "farming:tomato_6")
alias("farming_plus:tomato", "farming:tomato_8") alias("farming_plus:tomato", "farming:tomato_8")
-- Weed
alias("farming:weed", "default:grass_2")

View File

@ -1,102 +0,0 @@
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:artichoke", {
description = S("Artichoke"),
inventory_image = "farming_artichoke.png",
groups = {compostability = 48, seed = 2, food_artichoke = 1},
on_use = minetest.item_eat(4),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:artichoke_1")
end
})
farming.add_eatable("farming:artichoke", 4)
-- crop definition
local def = {
description = S("Artichoke") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_artichoke_1.png"},
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
drop = "",
waving = 1,
selection_box = farming.select,
groups = {
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()
}
-- stage 1
minetest.register_node("farming:artichoke_1", table.copy(def))
-- stage 2
def.tiles = {"farming_artichoke_2.png"}
minetest.register_node("farming:artichoke_2", table.copy(def))
-- stage 3
def.tiles = {"farming_artichoke_3.png"}
minetest.register_node("farming:artichoke_3", table.copy(def))
-- stage 4
def.tiles = {"farming_artichoke_4.png"}
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
def.drop = {
items = {
{items = {"farming:artichoke 2"}, rarity = 1},
{items = {"farming:artichoke"}, rarity = 2}
}
}
minetest.register_node("farming:artichoke_5", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:artichoke"] = {
crop = "farming:artichoke",
seed = "farming:artichoke",
minlight = 13,
maxlight = 15,
steps = 5
}
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:grove_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.artichoke,
spread = {x = 100, y = 100, z = 100},
seed = 123,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 13,
decoration = "farming:artichoke_5",
spawn_by = "group:tree", num_spawn_by = 1
})

View File

@ -1,108 +0,0 @@
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:asparagus", {
description = S("Asparagus"),
inventory_image = "farming_asparagus.png",
groups = {compostability = 48, seed = 2, food_asparagus = 1},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:asparagus_1")
end
})
farming.add_eatable("farming:asparagus", 1)
-- crop definition
local def = {
description = S("Asparagus") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_asparagus_1.png"},
paramtype = "light",
paramtype2 = "meshoptions",
place_param2 = 3,
sunlight_propagates = true,
walkable = false,
buildable_to = true,
drop = "",
waving = 1,
selection_box = farming.select,
groups = {
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()
}
-- stage 1
minetest.register_node("farming:asparagus_1", table.copy(def))
-- stage 2
def.tiles = {"farming_asparagus_2.png"}
minetest.register_node("farming:asparagus_2", table.copy(def))
-- stage 3
def.tiles = {"farming_asparagus_3.png"}
minetest.register_node("farming:asparagus_3", table.copy(def))
-- stage 4
def.tiles = {"farming_asparagus_4.png"}
def.drop = {
items = {
{items = {"farming:asparagus"}, rarity = 2}
}
}
minetest.register_node("farming:asparagus_4", table.copy(def))
-- stage 5 (final)
def.tiles = {"farming_asparagus_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:asparagus"}, rarity = 1},
{items = {"farming:asparagus 2"}, rarity = 2}
}
}
minetest.register_node("farming:asparagus_5", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:asparagus"] = {
crop = "farming:asparagus",
seed = "farming:asparagus",
minlight = 7,
maxlight = farming.max_light,
steps = 5
}
-- mapgen
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,
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_5",
param2 = 3
})

View File

@ -1,48 +1,44 @@
local S = minetest.get_translator("farming") local S = farming.intllib
-- seed
-- barley seeds
minetest.register_node("farming:seed_barley", { minetest.register_node("farming:seed_barley", {
description = S("Barley Seed"), description = S("Barley Seed"),
tiles = {"farming_barley_seed.png"}, tiles = {"farming_barley_seed.png"},
inventory_image = "farming_barley_seed.png", inventory_image = "farming_barley_seed.png",
wield_image = "farming_barley_seed.png", wield_image = "farming_barley_seed.png",
drawtype = "signlike", drawtype = "signlike",
groups = { groups = {seed = 1, snappy = 3, attached_node = 1},
handy = 1, compostability = 48, seed = 1, snappy = 3, attached_node = 1,
growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
paramtype = "light", paramtype = "light",
paramtype2 = "wallmounted", paramtype2 = "wallmounted",
walkable = false, walkable = false,
sunlight_propagates = true, sunlight_propagates = true,
next_plant = "farming:barley_1",
selection_box = farming.select, selection_box = farming.select,
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_barley") return farming.place_seed(itemstack, placer, pointed_thing, "farming:barley_1")
end, end,
on_timer = function(pos, elapsed)
minetest.set_node(pos, {name = "farming:barley_1", param2 = 3})
end
}) })
-- item -- harvested barley
minetest.register_craftitem("farming:barley", { minetest.register_craftitem("farming:barley", {
description = S("Barley"), description = S("Barley"),
inventory_image = "farming_barley.png", inventory_image = "farming_barley.png",
groups = {food_barley = 1, flammable = 2, compostability = 65} groups = {food_barley = 1, flammable = 2},
}) })
-- crop definition -- flour
minetest.register_craft({
type = "shapeless",
output = "farming:flour",
recipe = {
"farming:barley", "farming:barley", "farming:barley",
"farming:barley", "farming:mortar_pestle"
},
replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}},
})
local def = { -- barley definition
description = S("Barley") .. S(" Crop"), local crop_def = {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_barley_1.png"}, tiles = {"farming_barley_1.png"},
paramtype = "light", paramtype = "light",
@ -52,84 +48,75 @@ local def = {
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
drop = "", drop = "",
waving = 1,
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:barley_1", table.copy(crop_def))
minetest.register_node("farming:barley_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"farming_barley_2.png"}
def.tiles = {"farming_barley_2.png"} minetest.register_node("farming:barley_2", table.copy(crop_def))
minetest.register_node("farming:barley_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_barley_3.png"}
def.tiles = {"farming_barley_3.png"} minetest.register_node("farming:barley_3", table.copy(crop_def))
minetest.register_node("farming:barley_3", table.copy(def))
-- stage 4 -- stage 4
crop_def.tiles = {"farming_barley_4.png"}
def.tiles = {"farming_barley_4.png"} minetest.register_node("farming:barley_4", table.copy(crop_def))
minetest.register_node("farming:barley_4", table.copy(def))
-- stage 5 -- stage 5
crop_def.tiles = {"farming_barley_5.png"}
def.tiles = {"farming_barley_5.png"} crop_def.drop = {
minetest.register_node("farming:barley_5", table.copy(def)) items = {
{items = {"farming:barley"}, rarity = 2},
{items = {"farming:seed_barley"}, rarity = 2},
}
}
minetest.register_node("farming:barley_5", table.copy(crop_def))
-- stage 6 -- stage 6
crop_def.tiles = {"farming_barley_6.png"}
def.tiles = {"farming_barley_6.png"} crop_def.drop = {
def.drop = {
items = { items = {
{items = {"farming:barley"}, rarity = 2}, {items = {"farming:barley"}, rarity = 2},
{items = {"farming:seed_barley"}, rarity = 2} {items = {"farming:seed_barley"}, rarity = 1},
} }
} }
minetest.register_node("farming:barley_6", table.copy(def)) minetest.register_node("farming:barley_6", table.copy(crop_def))
-- stage 7 -- stage 7 (final)
crop_def.tiles = {"farming_barley_7.png"}
def.tiles = {"farming_barley_7.png"} crop_def.groups.growing = 0
def.drop = { crop_def.drop = {
items = {
{items = {"farming:barley"}, rarity = 2},
{items = {"farming:seed_barley"}, rarity = 1}
}
}
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 = {
{items = {"farming:barley"}, rarity = 1}, {items = {"farming:barley"}, rarity = 1},
{items = {"farming:barley"}, rarity = 3}, {items = {"farming:barley"}, rarity = 3},
{items = {"farming:seed_barley"}, rarity = 1}, {items = {"farming:seed_barley"}, rarity = 1},
{items = {"farming:seed_barley"}, rarity = 3} {items = {"farming:seed_barley"}, rarity = 3},
} }
} }
minetest.register_node("farming:barley_8", table.copy(def)) minetest.register_node("farming:barley_7", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:barley"] = { farming.registered_plants["farming:barley"] = {
crop = "farming:barley", crop = "farming:barley",
seed = "farming:seed_barley", seed = "farming:seed_barley",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 8 steps = 7
} }
-- Fuel
minetest.register_craft({
type = "fuel",
recipe = "farming:barley",
burntime = 1,
})

View File

@ -1,44 +1,53 @@
--[[
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 = farming.intllib
local S = minetest.get_translator("farming")
local a = farming.recipe_items
-- place beans helper
-- place beans
local function place_beans(itemstack, placer, pointed_thing, plantname) local function place_beans(itemstack, placer, pointed_thing, plantname)
local pt = pointed_thing local pt = pointed_thing
-- check if pointing at a node -- 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 = minetest.get_node(pt.under) local under = minetest.get_node(pt.under)
-- return if any of the nodes are not registered -- return if any of the nodes are not registered
if not minetest.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? -- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :) -- thanks to Krock for helping with this issue :)
local def = minetest.registered_nodes[under.name] local def = minetest.registered_nodes[under.name]
if placer and itemstack and def and def.on_rightclick then if placer and itemstack and def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt) return def.on_rightclick(pt.under, under, placer, itemstack)
end end
-- is player planting crop? -- is player planting crop?
local name = placer and placer:get_player_name() or "" local name = placer and placer:get_player_name() or ""
-- check for protection -- check for protection
if minetest.is_protected(pt.under, name) then return end if minetest.is_protected(pt.under, name) then
return
end
-- check if pointing at bean pole -- 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 -- add the node and remove 1 item from the itemstack
minetest.set_node(pt.under, {name = plantname}) minetest.set_node(pt.under, {name = plantname})
minetest.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 if placer or not farming.is_creative(placer:get_player_name()) then
@ -48,64 +57,74 @@ local function place_beans(itemstack, placer, pointed_thing, plantname)
if itemstack:get_count() == 0 then if itemstack:get_count() == 0 then
minetest.after(0.20, minetest.after(0.20,
farming.refill_plant, placer, "farming:beans", placer:get_wield_index()) farming.refill_plant,
placer,
"farming:beans",
placer:get_wield_index()
)
end end
end end
return itemstack return itemstack
end end
-- item/seed -- beans
minetest.register_craftitem("farming:beans", { minetest.register_craftitem("farming:beans", {
description = S("Green Beans"), description = S("Green Beans"),
inventory_image = "farming_beans.png", inventory_image = "farming_beans.png",
groups = {compostability = 48, seed = 2, food_beans = 1}, groups = {seed = 2, food_beans = 1, flammable = 2},
on_use = minetest.item_eat(1), on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return place_beans(itemstack, placer, pointed_thing, "farming:beanpole_1") return place_beans(itemstack, placer, pointed_thing, "farming:beanpole_1")
end end,
}) })
farming.add_eatable("farming:beans", 1) -- beans can be used for green dye
minetest.register_craft({
output = "dye:green",
recipe = {
{"farming:beans"},
}
})
-- beanpole -- beanpole
minetest.register_node("farming:beanpole", { minetest.register_node("farming:beanpole", {
description = S("Bean Pole (place on soil before planting beans)"), description = S("Bean Pole (place on soil before planting beans)"),
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_beanpole.png"}, tiles = {"farming_beanpole.png"},
inventory_image = "farming_beanpole.png", inventory_image = "farming_beanpole.png",
visual_scale = 1.90, visual_scale = 1.90, -- 1.45,
paramtype = "light", paramtype = "light",
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
sunlight_propagates = true, sunlight_propagates = true,
drop = "farming:beanpole", drop = "farming:beanpole",
selection_box = farming.select, selection_box = farming.select,
groups = {handy = 1, snappy = 3, flammable = 2, attached_node = 1}, groups = {snappy = 3, flammable = 2, attached_node = 1},
is_ground_content = false, sounds = default.node_sound_leaves_defaults(),
sounds = farming.node_sound_leaves_defaults(),
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
local pt = pointed_thing local pt = pointed_thing
-- check if pointing at a node -- 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 = minetest.get_node(pt.under) local under = minetest.get_node(pt.under)
-- return if any of the nodes are not registered -- return if any of the nodes are not registered
if not minetest.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? -- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :) -- thanks to Krock for helping with this issue :)
local def = minetest.registered_nodes[under.name] local def = minetest.registered_nodes[under.name]
if def and def.on_rightclick then if def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt) return def.on_rightclick(pt.under, under, placer, itemstack)
end end
if minetest.is_protected(pt.above, placer:get_player_name()) then if minetest.is_protected(pt.above, placer:get_player_name()) then
@ -114,7 +133,9 @@ minetest.register_node("farming:beanpole", {
local nodename = under.name local nodename = under.name
if minetest.get_item_group(nodename, "soil") < 2 then return end if minetest.get_item_group(nodename, "soil") < 2 then
return
end
local top = { local top = {
x = pointed_thing.above.x, x = pointed_thing.above.x,
@ -124,7 +145,9 @@ minetest.register_node("farming:beanpole", {
nodename = minetest.get_node(top).name nodename = minetest.get_node(top).name
if nodename ~= "air" then return end if nodename ~= "air" then
return
end
minetest.set_node(pointed_thing.above, {name = "farming:beanpole"}) minetest.set_node(pointed_thing.above, {name = "farming:beanpole"})
@ -136,79 +159,81 @@ minetest.register_node("farming:beanpole", {
end end
}) })
-- crop definition minetest.register_craft({
output = "farming:beanpole",
recipe = {
{"", "", ""},
{"default:stick", "", "default:stick"},
{"default:stick", "", "default:stick"},
}
})
local def = { minetest.register_craft({
description = S("Green Beans") .. S(" Crop"), type = "fuel",
recipe = "farming:beanpole",
burntime = 10,
})
-- green bean definition
local crop_def = {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_beanpole_1.png"}, tiles = {"farming_beanpole_1.png"},
visual_scale = 1.90, visual_scale = 1.90, -- 1.45,
paramtype = "light", paramtype = "light",
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
sunlight_propagates = true, sunlight_propagates = true,
drop = { drop = {
items = { items = {
{items = {"farming:beanpole"}, rarity = 1} {items = {"farming:beanpole"}, rarity = 1},
} }
}, },
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 3, not_in_creative_inventory = 1, snappy = 3, flammable = 3, not_in_creative_inventory = 1,
attached_node = 1, growing = 1, plant = 1 attached_node = 1, growing = 1, plant = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:beanpole_1", table.copy(crop_def))
minetest.register_node("farming:beanpole_1", table.copy(def))
-- stage2 -- stage2
crop_def.tiles = {"farming_beanpole_2.png"}
def.tiles = {"farming_beanpole_2.png"} minetest.register_node("farming:beanpole_2", table.copy(crop_def))
minetest.register_node("farming:beanpole_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_beanpole_3.png"}
def.tiles = {"farming_beanpole_3.png"} minetest.register_node("farming:beanpole_3", table.copy(crop_def))
minetest.register_node("farming:beanpole_3", table.copy(def))
-- stage 4 -- stage 4
crop_def.tiles = {"farming_beanpole_4.png"}
def.tiles = {"farming_beanpole_4.png"} minetest.register_node("farming:beanpole_4", table.copy(crop_def))
minetest.register_node("farming:beanpole_4", table.copy(def))
-- stage 5 (final) -- stage 5 (final)
crop_def.tiles = {"farming_beanpole_5.png"}
def.tiles = {"farming_beanpole_5.png"} crop_def.groups.growing = 0
def.groups.growing = nil crop_def.drop = {
def.selection_box = farming.select_final
def.drop = {
items = { items = {
{items = {"farming:beanpole"}, rarity = 1}, {items = {"farming:beanpole"}, rarity = 1},
{items = {"farming:beans 3"}, rarity = 1}, {items = {"farming:beans 3"}, rarity = 1},
{items = {"farming:beans 2"}, rarity = 2}, {items = {"farming:beans 2"}, rarity = 2},
{items = {"farming:beans 2"}, rarity = 3} {items = {"farming:beans 2"}, rarity = 3},
} }
} }
minetest.register_node("farming:beanpole_5", table.copy(def)) minetest.register_node("farming:beanpole_5", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:beans"] = { farming.registered_plants["farming:beans"] = {
trellis = "farming:beanpole",
crop = "farming:beanpole", crop = "farming:beanpole",
seed = "farming:beans", seed = "farming:beans",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 5 steps = 5
} }
-- wild green bean bush (this is what you find on the map) -- wild green bean bush (this is what you find on the map)
minetest.register_node("farming:beanbush", { minetest.register_node("farming:beanbush", {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_beanbush.png"}, tiles = {"farming_beanbush.png"},
@ -221,32 +246,13 @@ minetest.register_node("farming:beanbush", {
items = { items = {
{items = {"farming:beans 1"}, rarity = 1}, {items = {"farming:beans 1"}, rarity = 1},
{items = {"farming:beans 1"}, rarity = 2}, {items = {"farming:beans 1"}, rarity = 2},
{items = {"farming:beans 1"}, rarity = 3} {items = {"farming:beans 1"}, rarity = 3},
} }
}, },
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
compostability = 35, not_in_creative_inventory = 1 not_in_creative_inventory=1
}, },
is_ground_content = false, sounds = default.node_sound_leaves_defaults(),
sounds = farming.node_sound_leaves_defaults()
})
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.beans,
spread = {x = 100, y = 100, z = 100},
seed = 345,
octaves = 3,
persist = 0.6
},
y_min = 18, y_max = 38,
decoration = "farming:beanbush"
}) })

View File

@ -1,29 +1,48 @@
local S = minetest.get_translator("farming") local S = farming.intllib
local a = farming.recipe_items
-- item/seed
-- beetroot
minetest.register_craftitem("farming:beetroot", { minetest.register_craftitem("farming:beetroot", {
description = S("Beetroot"), description = S("Beetroot"),
inventory_image = "farming_beetroot.png", inventory_image = "farming_beetroot.png",
groups = {compostability = 48, seed = 2, food_beetroot = 1}, groups = {seed = 2, food_beetroot = 1, flammable = 2},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:beetroot_1") 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({
type = "shapeless",
output = "farming:beetroot_soup",
recipe = {
"group:food_beetroot", "group:food_beetroot",
"group:food_beetroot", "group:food_beetroot",
"group:food_beetroot", "group:food_beetroot","group:food_bowl"
}
})
local def = { -- red dye
description = S("Beetroot") .. S(" Crop"), minetest.register_craft({
type = "shapeless",
output = "dye:red",
recipe = {"group:food_beetroot"},
})
local crop_def = {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_beetroot_1.png"}, tiles = {"farming_beetroot_1.png"},
paramtype = "light", paramtype = "light",
-- paramtype2 = "meshoptions",
-- place_param2 = 3,
sunlight_propagates = true, sunlight_propagates = true,
waving = 1, waving = 1,
walkable = false, walkable = false,
@ -31,78 +50,45 @@ local def = {
drop = "", drop = "",
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:beetroot_1", table.copy(crop_def))
minetest.register_node("farming:beetroot_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"farming_beetroot_2.png"}
def.tiles = {"farming_beetroot_2.png"} minetest.register_node("farming:beetroot_2", table.copy(crop_def))
minetest.register_node("farming:beetroot_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_beetroot_3.png"}
def.tiles = {"farming_beetroot_3.png"} minetest.register_node("farming:beetroot_3", table.copy(crop_def))
minetest.register_node("farming:beetroot_3", table.copy(def))
-- stage 4 -- stage 4
crop_def.tiles = {"farming_beetroot_4.png"}
minetest.register_node("farming:beetroot_4", table.copy(crop_def))
def.tiles = {"farming_beetroot_4.png"} -- stage 5
minetest.register_node("farming:beetroot_4", table.copy(def)) crop_def.tiles = {"farming_beetroot_5.png"}
crop_def.groups.growing = 0
-- stage 5 (final) crop_def.drop = {
def.tiles = {"farming_beetroot_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
max_items = 4, items = { max_items = 4, items = {
{items = {"farming:beetroot"}, rarity = 1}, {items = {"farming:beetroot"}, rarity = 1},
{items = {"farming:beetroot"}, rarity = 2}, {items = {"farming:beetroot"}, rarity = 2},
{items = {"farming:beetroot"}, rarity = 3}, {items = {"farming:beetroot"}, rarity = 3},
{items = {"farming:beetroot"}, rarity = 4} {items = {"farming:beetroot"}, rarity = 4},
} }
} }
minetest.register_node("farming:beetroot_5", table.copy(def)) minetest.register_node("farming:beetroot_5", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:beetroot"] = { farming.registered_plants["farming:beetroot"] = {
crop = "farming:beetroot", crop = "farming:beetroot",
seed = "farming:beetroot", seed = "farming:beetroot",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 5 steps = 5
} }
-- mapgen
local spawn_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}
if farming.eth then
spawn_on = {"ethereal:prairie_dirt"}
end
minetest.register_decoration({
deco_type = "simple",
place_on = spawn_on,
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.beetroot,
spread = {x = 100, y = 100, z = 100},
seed = 456,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 20,
decoration = "farming:beetroot_5"
})

View File

@ -1,99 +0,0 @@
local S = minetest.get_translator("farming")
-- item/seed
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
},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:blackberry_1")
end
})
farming.add_eatable("farming:blackberry", 1)
-- crop definition
local def = {
description = S("Blackberry") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_blackberry_1.png"},
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
drop = "",
selection_box = farming.select,
groups = {
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()
}
-- stage 1
minetest.register_node("farming:blackberry_1", table.copy(def))
-- stage 2
def.tiles = {"farming_blackberry_2.png"}
minetest.register_node("farming:blackberry_2", table.copy(def))
-- stage 3
def.tiles = {"farming_blackberry_3.png"}
minetest.register_node("farming:blackberry_3", table.copy(def))
-- stage 4 (final)
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},
}
}
minetest.register_node("farming:blackberry_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:blackberry"] = {
crop = "farming:blackberry",
seed = "farming:blackberry",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 4
}
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.blackberry,
spread = {x = 100, y = 100, z = 100},
seed = 567,
octaves = 3,
persist = 0.6
},
y_min = 3, y_max = 20,
decoration = "farming:blackberry_4"
})

View File

@ -1,27 +1,53 @@
local S = minetest.get_translator("farming") local S = farming.intllib
-- item/seed
-- blueberries
minetest.register_craftitem("farming:blueberries", { minetest.register_craftitem("farming:blueberries", {
description = S("Wild Blueberries"), description = S("Blueberries"),
inventory_image = "farming_blueberries.png", inventory_image = "farming_blueberries.png",
groups = { groups = {seed = 2, food_blueberries = 1, food_blueberry = 1,
compostability = 48,seed = 2, food_blueberries = 1, food_blueberry = 1, food_berry = 1, flammable = 2},
food_berry = 1
},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:blueberry_1") 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)
-- ctop definition minetest.register_craftitem("farming:muffin_blueberry", {
local def = { description = S("Blueberry Muffin"),
description = S("Blueberry") .. S(" Crop"), inventory_image = "farming_blueberry_muffin.png",
on_use = minetest.item_eat(2),
})
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),
})
minetest.register_craft({
output = "farming:blueberry_pie",
type = "shapeless",
recipe = {
"group:food_flour", "group:food_sugar",
"group:food_blueberries", "group:food_baking_tray"
},
replacements = {{"group:food_baking_tray", "farming:baking_tray"}}
})
-- blueberry definition
local crop_def = {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_blueberry_1.png"}, tiles = {"farming_blueberry_1.png"},
paramtype = "light", paramtype = "light",
@ -31,68 +57,40 @@ local def = {
drop = "", drop = "",
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:blueberry_1", table.copy(crop_def))
minetest.register_node("farming:blueberry_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"farming_blueberry_2.png"}
def.tiles = {"farming_blueberry_2.png"} minetest.register_node("farming:blueberry_2", table.copy(crop_def))
minetest.register_node("farming:blueberry_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_blueberry_3.png"}
def.tiles = {"farming_blueberry_3.png"} minetest.register_node("farming:blueberry_3", table.copy(crop_def))
minetest.register_node("farming:blueberry_3", table.copy(def))
-- stage 4 (final) -- stage 4 (final)
crop_def.tiles = {"farming_blueberry_4.png"}
def.tiles = {"farming_blueberry_4.png"} crop_def.groups.growing = 0
def.groups.growing = nil crop_def.drop = {
def.selection_box = farming.select_final
def.drop = {
items = { items = {
{items = {"farming:blueberries 2"}, rarity = 1}, {items = {"farming:blueberries 2"}, rarity = 1},
{items = {"farming:blueberries"}, rarity = 2}, {items = {"farming:blueberries"}, rarity = 2},
{items = {"farming:blueberries"}, rarity = 3} {items = {"farming:blueberries"}, rarity = 3},
} }
} }
minetest.register_node("farming:blueberry_4", table.copy(def)) minetest.register_node("farming:blueberry_4", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:blueberries"] = { farming.registered_plants["farming:blueberries"] = {
crop = "farming:blueberry", crop = "farming:blueberry",
seed = "farming:blueberries", seed = "farming:blueberries",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 4 steps = 4
} }
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.blueberry,
spread = {x = 100, y = 100, z = 100},
seed = 678,
octaves = 3,
persist = 0.6
},
y_min = 3, y_max = 15,
decoration = "farming:blueberry_4"
})

View File

@ -1,104 +0,0 @@
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:cabbage", {
description = S("Cabbage"),
inventory_image = "farming_cabbage.png",
groups = {compostability = 48, seed = 2, food_cabbage = 1},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:cabbage_1")
end
})
farming.add_eatable("farming:cabbage", 1)
-- crop definition
local def = {
description = S("Cabbage") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_cabbage_1.png"},
paramtype = "light",
sunlight_propagates = true,
waving = 1,
walkable = false,
buildable_to = true,
drop = "",
selection_box = farming.select,
groups = {
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()
}
-- stage 1
minetest.register_node("farming:cabbage_1", table.copy(def))
-- stage 2
def.tiles = {"farming_cabbage_2.png"}
minetest.register_node("farming:cabbage_2", table.copy(def))
-- stage 3
def.tiles = {"farming_cabbage_3.png"}
minetest.register_node("farming:cabbage_3", table.copy(def))
-- stage 4
def.tiles = {"farming_cabbage_4.png"}
minetest.register_node("farming:cabbage_4", table.copy(def))
-- stage 5
def.tiles = {"farming_cabbage_5.png"}
minetest.register_node("farming:cabbage_5", table.copy(def))
-- stage 6 (final)
def.tiles = {"farming_cabbage_6.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
max_items = 2, items = {
{items = {"farming:cabbage 2"}, rarity = 1},
{items = {"farming:cabbage 1"}, rarity = 2}
}
}
minetest.register_node("farming:cabbage_6", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:cabbage"] = {
crop = "farming:cabbage",
seed = "farming:cabbage",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 6
}
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.cabbage,
spread = {x = 100, y = 100, z = 100},
seed = 789,
octaves = 3,
persist = 0.6
},
y_min = 2, y_max = 15,
decoration = "farming:cabbage_6"
})

View File

@ -1,29 +1,59 @@
-- Original textures from PixelBox texture pack --[[
-- https://forum.minetest.net/viewtopic.php?id=4990 Original textures from PixelBox texture pack
https://forum.minetest.net/viewtopic.php?id=4990
]]
local S = minetest.get_translator("farming") local S = farming.intllib
local a = farming.recipe_items
-- item/seed
-- carrot
minetest.register_craftitem("farming:carrot", { minetest.register_craftitem("farming:carrot", {
description = S("Carrot"), description = S("Carrot"),
inventory_image = "farming_carrot.png", inventory_image = "farming_carrot.png",
groups = {compostability = 48, seed = 2, food_carrot = 1}, groups = {seed = 2, food_carrot = 1, flammable = 2},
on_use = minetest.item_eat(4),
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:carrot_1") 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},
})
-- crop definition minetest.register_craft({
output = "farming:carrot_juice",
type = "shapeless",
recipe = {
"vessels:drinking_glass", "group:food_carrot", "farming:juicer"
},
replacements = {
{"group:food_juicer", "farming:juicer"},
},
})
local def = { -- golden carrot
description = S("Carrot") .. S(" Crop"), minetest.register_craftitem("farming:carrot_gold", {
description = S("Golden Carrot"),
inventory_image = "farming_carrot_gold.png",
on_use = minetest.item_eat(6),
})
minetest.register_craft({
output = "farming:carrot_gold",
recipe = {
{"", "default:gold_lump", ""},
{"default:gold_lump", "group:food_carrot", "default:gold_lump"},
{"", "default:gold_lump", ""},
}
})
-- carrot definition
local crop_def = {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_carrot_1.png"}, tiles = {"farming_carrot_1.png"},
paramtype = "light", paramtype = "light",
@ -31,96 +61,64 @@ local def = {
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
drop = "", drop = "",
waving = 1,
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:carrot_1", table.copy(crop_def))
minetest.register_node("farming:carrot_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"farming_carrot_2.png"}
def.tiles = {"farming_carrot_2.png"} minetest.register_node("farming:carrot_2", table.copy(crop_def))
minetest.register_node("farming:carrot_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_carrot_3.png"}
def.tiles = {"farming_carrot_3.png"} minetest.register_node("farming:carrot_3", table.copy(crop_def))
minetest.register_node("farming:carrot_3", table.copy(def))
-- stage 4 -- stage 4
crop_def.tiles = {"farming_carrot_4.png"}
def.tiles = {"farming_carrot_4.png"} minetest.register_node("farming:carrot_4", table.copy(crop_def))
minetest.register_node("farming:carrot_4", table.copy(def))
-- stage 5 -- stage 5
crop_def.tiles = {"farming_carrot_5.png"}
def.tiles = {"farming_carrot_5.png"} minetest.register_node("farming:carrot_5", table.copy(crop_def))
minetest.register_node("farming:carrot_5", table.copy(def))
-- stage 6 -- stage 6
crop_def.tiles = {"farming_carrot_6.png"}
def.tiles = {"farming_carrot_6.png"} minetest.register_node("farming:carrot_6", table.copy(crop_def))
minetest.register_node("farming:carrot_6", table.copy(def))
-- stage 7 -- stage 7
crop_def.tiles = {"farming_carrot_7.png"}
def.tiles = {"farming_carrot_7.png"} crop_def.drop = {
def.drop = {
items = { items = {
{items = {"farming:carrot"}, rarity = 1}, {items = {"farming:carrot"}, rarity = 1},
{items = {"farming:carrot 2"}, rarity = 3} {items = {"farming:carrot 2"}, rarity = 3},
} }
} }
minetest.register_node("farming:carrot_7", table.copy(def)) minetest.register_node("farming:carrot_7", table.copy(crop_def))
-- stage 8 (final) -- stage 8 (final)
crop_def.tiles = {"farming_carrot_8.png"}
def.tiles = {"farming_carrot_8.png"} crop_def.groups.growing = 0
def.groups.growing = nil crop_def.drop = {
def.selection_box = farming.select_final
def.drop = {
items = { items = {
{items = {"farming:carrot 2"}, rarity = 1}, {items = {"farming:carrot 2"}, rarity = 1},
{items = {"farming:carrot 3"}, rarity = 2} {items = {"farming:carrot 3"}, rarity = 2},
} }
} }
minetest.register_node("farming:carrot_8", table.copy(def)) minetest.register_node("farming:carrot_8", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:carrot"] = { farming.registered_plants["farming:carrot"] = {
crop = "farming:carrot", crop = "farming:carrot",
seed = "farming:carrot", seed = "farming:carrot",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 8 steps = 8
} }
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.carrot,
spread = {x = 100, y = 100, z = 100},
seed = 890,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 30,
decoration = "farming:carrot_7"
})

View File

@ -1,26 +1,43 @@
local S = minetest.get_translator("farming") local S = farming.intllib
local a = farming.recipe_items
-- item/seed
-- chili pepper
minetest.register_craftitem("farming:chili_pepper", { minetest.register_craftitem("farming:chili_pepper", {
description = S("Chili Pepper"), description = S("Chili Pepper"),
inventory_image = "farming_chili_pepper.png", inventory_image = "farming_chili_pepper.png",
groups = {compostability = 48, seed = 2, food_chili_pepper = 1}, groups = {seed = 2, food_chili_pepper = 1, flammable = 4},
on_use = minetest.item_eat(2),
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:chili_1") 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, "farming:bowl"),
})
-- crop definition minetest.register_craft({
type = "shapeless",
output = "farming:chili_bowl",
recipe = {
"group:food_chili_pepper", "group:food_barley",
"group:food_tomato", "group:food_beans", "group:food_bowl"
},
})
local def = { -- chili can be used for red dye
description = S("Chili Pepper") .. S(" Crop"), minetest.register_craft({
output = "dye:red",
recipe = {
{"farming:chili_pepper"},
}
})
-- chili definition
local crop_def = {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_chili_1.png"}, tiles = {"farming_chili_1.png"},
paramtype = "light", paramtype = "light",
@ -28,92 +45,57 @@ local def = {
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
drop = "", drop = "",
waving = 1,
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 4, plant = 1, attached_node = 1, snappy = 3, flammable = 4, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:chili_1", table.copy(crop_def))
minetest.register_node("farming:chili_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"farming_chili_2.png"}
def.tiles = {"farming_chili_2.png"} minetest.register_node("farming:chili_2", table.copy(crop_def))
minetest.register_node("farming:chili_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_chili_3.png"}
def.tiles = {"farming_chili_3.png"} minetest.register_node("farming:chili_3", table.copy(crop_def))
minetest.register_node("farming:chili_3", table.copy(def))
-- stage 4 -- stage 4
crop_def.tiles = {"farming_chili_4.png"}
def.tiles = {"farming_chili_4.png"} minetest.register_node("farming:chili_4", table.copy(crop_def))
minetest.register_node("farming:chili_4", table.copy(def))
-- stage 5 -- stage 5
crop_def.tiles = {"farming_chili_5.png"}
def.tiles = {"farming_chili_5.png"} minetest.register_node("farming:chili_5", table.copy(crop_def))
minetest.register_node("farming:chili_5", table.copy(def))
-- stage 6 -- stage 6
crop_def.tiles = {"farming_chili_6.png"}
def.tiles = {"farming_chili_6.png"} minetest.register_node("farming:chili_6", table.copy(crop_def))
minetest.register_node("farming:chili_6", table.copy(def))
-- stage 7 -- stage 7
crop_def.tiles = {"farming_chili_7.png"}
def.tiles = {"farming_chili_7.png"} minetest.register_node("farming:chili_7", table.copy(crop_def))
minetest.register_node("farming:chili_7", table.copy(def))
-- stage 8 (final) -- stage 8 (final)
crop_def.tiles = {"farming_chili_8.png"}
def.tiles = {"farming_chili_8.png"} crop_def.groups.growing = 0
def.groups.growing = nil crop_def.drop = {
def.selection_box = farming.select_final
def.drop = {
items = { items = {
{items = {"farming:chili_pepper 3"}, rarity = 1}, {items = {"farming:chili_pepper 3"}, rarity = 1},
{items = {"farming:chili_pepper 2"}, rarity = 2} {items = {"farming:chili_pepper 2"}, rarity = 2},
} }
} }
minetest.register_node("farming:chili_8", table.copy(def)) minetest.register_node("farming:chili_8", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:chili_pepper"] = { farming.registered_plants["farming:chili_pepper"] = {
crop = "farming:chili", crop = "farming:chili",
seed = "farming:chili_pepper", seed = "farming:chili_pepper",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 8 steps = 8
} }
-- mapgen
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"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.chili,
spread = {x = 100, y = 100, z = 100},
seed = 901,
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 45,
decoration = "farming:chili_8",
spawn_by = "group:tree", num_spawn_by = 1
})

View File

@ -1,5 +1,5 @@
local S = minetest.get_translator("farming") local S = farming.intllib
-- place cocoa -- place cocoa
local function place_cocoa(itemstack, placer, pointed_thing, plantname) local function place_cocoa(itemstack, placer, pointed_thing, plantname)
@ -7,23 +7,26 @@ local function place_cocoa(itemstack, placer, pointed_thing, plantname)
local pt = pointed_thing local pt = pointed_thing
-- check if pointing at a node -- 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 = minetest.get_node(pt.under) local under = minetest.get_node(pt.under)
-- return if any of the nodes are not registered -- return if any of the nodes are not registered
if not minetest.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? -- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :) -- thanks to Krock for helping with this issue :)
local def = minetest.registered_nodes[under.name] local def = minetest.registered_nodes[under.name]
if placer and itemstack and def and def.on_rightclick then if placer and itemstack and def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt) return def.on_rightclick(pt.under, under, placer, itemstack)
end end
-- check if pointing at jungletree -- check if pointing at jungletree
if (under.name ~= "default:jungletree" and under.name ~= "mcl_core:jungletree") if under.name ~= "default:jungletree"
or minetest.get_node(pt.above).name ~= "air" then or minetest.get_node(pt.above).name ~= "air" then
return return
end end
@ -32,12 +35,14 @@ local function place_cocoa(itemstack, placer, pointed_thing, plantname)
local name = placer and placer:get_player_name() or "" local name = placer and placer:get_player_name() or ""
-- check for protection -- check for protection
if minetest.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 -- add the node and remove 1 item from the itemstack
minetest.set_node(pt.above, {name = plantname}) minetest.set_node(pt.above, {name = plantname})
minetest.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 if placer and not farming.is_creative(placer:get_player_name()) then
@ -46,141 +51,194 @@ local function place_cocoa(itemstack, placer, pointed_thing, plantname)
-- check for refill -- check for refill
if itemstack:get_count() == 0 then if itemstack:get_count() == 0 then
minetest.after(0.20, farming.refill_plant, placer, minetest.after(0.20,
"farming:cocoa_beans_raw", placer:get_wield_index()) farming.refill_plant,
placer,
"farming:cocoa_beans",
placer:get_wield_index()
)
end end
end end
return itemstack return itemstack
end end
-- item/seed -- cocoa beans
minetest.register_craftitem("farming:cocoa_beans", {
minetest.register_craftitem("farming:cocoa_beans_raw", { description = S("Cocoa Beans"),
description = S("Raw Cocoa Beans"), inventory_image = "farming_cocoa_beans.png",
inventory_image = "farming_cocoa_beans.png^[brighten", groups = {seed = 2, food_cocoa = 1, flammable = 2},
groups = {compostability = 48, seed = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return place_cocoa(itemstack, placer, pointed_thing, "farming:cocoa_1") return place_cocoa(itemstack, placer, pointed_thing, "farming:cocoa_1")
end end,
}) })
-- crop definition minetest.register_craft( {
output = "dye:brown 2",
recipe = {
{ "farming:cocoa_beans" },
}
})
local def = { -- chocolate cookie
description = S("Cocoa Beans") .. S(" Crop"), 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 = default.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 crop_def = {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_cocoa_1.png"}, tiles = {"farming_cocoa_1.png"},
paramtype = "light", paramtype = "light",
walkable = false, walkable = false,
drop = {
items = {
{items = {"farming:cocoa_beans 1"}, rarity = 2},
}
},
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
}, },
drop = {},
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, growing = 1, snappy = 3, flammable = 2, plant = 1, growing = 1,
not_in_creative_inventory = 1, leafdecay = 1, leafdecay_drop = 1 not_in_creative_inventory=1, leafdecay = 1, leafdecay_drop = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults(),
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults(),
-- custom function that returns True when conditions are met
growth_check = function(pos, node_name) growth_check = function(pos, node_name)
if minetest.find_node_near(pos, 1, {"default:jungletree"}) then
if minetest.find_node_near(pos, 1, return false
{"default:jungletree", "mcl_core:jungletree"}) then
return true -- place next growth stage
end end
return true
return false -- condition not met, skip growth stage until next check end,
end
} }
-- stage 1 -- stage 1
minetest.register_node("farming:cocoa_1", table.copy(crop_def))
minetest.register_node("farming:cocoa_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"farming_cocoa_2.png"}
def.tiles = {"farming_cocoa_2.png"} minetest.register_node("farming:cocoa_2", table.copy(crop_def))
minetest.register_node("farming:cocoa_2", table.copy(def))
-- stage3 -- stage3
crop_def.tiles = {"farming_cocoa_3.png"}
def.tiles = {"farming_cocoa_3.png"} crop_def.drop = {
def.drop = {
items = { items = {
{items = {"farming:cocoa_beans_raw 1"}, rarity = 1} {items = {"farming:cocoa_beans 1"}, rarity = 1},
} }
} }
minetest.register_node("farming:cocoa_3", table.copy(def)) minetest.register_node("farming:cocoa_3", table.copy(crop_def))
-- stage 4 (final) -- stage 4 (final)
crop_def.tiles = {"farming_cocoa_4.png"}
def.tiles = {"farming_cocoa_4.png"} crop_def.groups.growing = 0
def.groups.growing = nil crop_def.growth_check = nil
def.growth_check = nil crop_def.drop = {
def.drop = {
items = { items = {
{items = {"farming:cocoa_beans_raw 2"}, rarity = 1}, {items = {"farming:cocoa_beans 2"}, rarity = 1},
{items = {"farming:cocoa_beans_raw 1"}, rarity = 2}, {items = {"farming:cocoa_beans 1"}, rarity = 2},
{items = {"farming:cocoa_beans_raw 1"}, rarity = 4} {items = {"farming:cocoa_beans 1"}, rarity = 4},
} }
} }
minetest.register_node("farming:cocoa_4", table.copy(def)) minetest.register_node("farming:cocoa_4", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:cocoa_beans"] = { farming.registered_plants["farming:cocoa_beans"] = {
trellis = "default:jungletree",
crop = "farming:cocoa", crop = "farming:cocoa",
seed = "farming:cocoa_beans_raw", seed = "farming:cocoa_beans",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 4 steps = 4
} }
-- add random cocoa pods to jungle tree's -- add random cocoa pods to jungle tree's
local random = math.random -- localise for speed
minetest.register_on_generated(function(minp, maxp) minetest.register_on_generated(function(minp, maxp)
if maxp.y < 0 then return end if maxp.y < 0 then
return
end
local pos, dir local pos, dir
local cocoa = minetest.find_nodes_in_area(minp, maxp, local cocoa = minetest.find_nodes_in_area(minp, maxp, "default:jungletree")
{"default:jungletree", "mcl_core:jungletree"})
for n = 1, #cocoa do for n = 1, #cocoa do
pos = cocoa[n] pos = cocoa[n]
if minetest.find_node_near(pos, 1, if minetest.find_node_near(pos, 1,
{"default:jungleleaves", "moretrees:jungletree_leaves_green", {"default:jungleleaves", "moretrees:jungletree_leaves_green"}) then
"mcl_core:jungleleaves"}) then
dir = random(80) dir = math.random(1, 80)
if dir == 1 then pos.x = pos.x + 1 if dir == 1 then
elseif dir == 2 then pos.x = pos.x - 1 pos.x = pos.x + 1
elseif dir == 3 then pos.z = pos.z + 1 elseif dir == 2 then
elseif dir == 4 then pos.z = pos.z - 1 pos.x = pos.x - 1
elseif dir == 3 then
pos.z = pos.z + 1
elseif dir == 4 then
pos.z = pos.z -1
end end
if dir < 5 if dir < 5
and minetest.get_node(pos).name == "air" and minetest.get_node(pos).name == "air"
and minetest.get_node_light(pos) > 12 then and minetest.get_node_light(pos) > 12 then
--print ("Cocoa Pod added at " .. minetest.pos_to_string(pos)) --print ("Cocoa Pod added at " .. minetest.pos_to_string(pos))
minetest.set_node(pos, { minetest.swap_node(pos, {
name = "farming:cocoa_" .. tostring(random(4)) name = "farming:cocoa_" .. tostring(math.random(1, 4))
}) })
end end
end end
end end
end) end)

View File

@ -1,22 +1,50 @@
local S = minetest.get_translator("farming") local S = farming.intllib
-- item/seed
-- coffee
minetest.register_craftitem("farming:coffee_beans", { minetest.register_craftitem("farming:coffee_beans", {
description = S("Coffee Beans"), description = S("Coffee Beans"),
inventory_image = "farming_coffee_beans.png", inventory_image = "farming_coffee_beans.png",
groups = {compostability = 48, seed = 2, food_coffee = 1, flammable = 2}, groups = {seed = 2, food_coffee = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:coffee_1") return farming.place_seed(itemstack, placer, pointed_thing, "farming:coffee_1")
end end,
}) })
-- crop definition -- cold cup of coffee
minetest.register_node("farming:coffee_cup", {
description = S("Cup of Coffee"),
drawtype = "torchlike", --"plantlike",
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},
on_use = minetest.item_eat(2, "vessels:drinking_glass"),
sounds = default.node_sound_glass_defaults(),
})
local def = { minetest.register_alias("farming:coffee_cup_hot", "farming:coffee_cup")
description = S("Coffee") .. S(" Crop"), minetest.register_alias("farming:drinking_cup", "vessels:drinking_glass")
minetest.register_craft( {
output = "farming:coffee_cup",
type = "shapeless",
recipe = {"vessels:drinking_glass", "group:food_coffee",
"bucket:bucket_water", "group:food_saucepan"},
replacements = {
{"bucket:bucket_water", "bucket:bucket_empty"},
{"group:food_saucepan", "farming:saucepan"},
}
})
-- coffee definition
local crop_def = {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_coffee_1.png"}, tiles = {"farming_coffee_1.png"},
paramtype = "light", paramtype = "light",
@ -24,84 +52,46 @@ local def = {
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
drop = "", drop = "",
waving = 1,
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:coffee_1", table.copy(crop_def))
minetest.register_node("farming:coffee_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"farming_coffee_2.png"}
def.tiles = {"farming_coffee_2.png"} minetest.register_node("farming:coffee_2", table.copy(crop_def))
minetest.register_node("farming:coffee_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_coffee_3.png"}
def.tiles = {"farming_coffee_3.png"} minetest.register_node("farming:coffee_3", table.copy(crop_def))
minetest.register_node("farming:coffee_3", table.copy(def))
-- stage 4 -- stage 4
crop_def.tiles = {"farming_coffee_4.png"}
def.tiles = {"farming_coffee_4.png"} minetest.register_node("farming:coffee_4", table.copy(crop_def))
minetest.register_node("farming:coffee_4", table.copy(def))
-- stage 5 (final) -- stage 5 (final)
crop_def.tiles = {"farming_coffee_5.png"}
def.tiles = {"farming_coffee_5.png"} crop_def.groups.growing = 0
def.groups.growing = nil crop_def.drop = {
def.selection_box = farming.select_final
def.drop = {
items = { items = {
{items = {"farming:coffee_beans 2"}, rarity = 1}, {items = {"farming:coffee_beans 2"}, rarity = 1},
{items = {"farming:coffee_beans 2"}, rarity = 2}, {items = {"farming:coffee_beans 2"}, rarity = 2},
{items = {"farming:coffee_beans 2"}, rarity = 3} {items = {"farming:coffee_beans 2"}, rarity = 3},
} }
} }
minetest.register_node("farming:coffee_5", table.copy(def)) minetest.register_node("farming:coffee_5", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:coffee"] = { farming.registered_plants["farming:coffee"] = {
crop = "farming:coffee", crop = "farming:coffee",
seed = "farming:coffee_beans", seed = "farming:coffee_beans",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 5 steps = 5
} }
-- mapgen
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"
}
if farming.mapgen == "v6" then
spawn_on = {"default:dirt_with_grass"}
end
minetest.register_decoration({
deco_type = "simple",
place_on = spawn_on,
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.coffee,
spread = {x = 100, y = 100, z = 100},
seed = 12,
octaves = 3,
persist = 0.6
},
y_min = 20, y_max = 55,
decoration = "farming:coffee_5"
})

View File

@ -4,27 +4,89 @@
http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/wip-mods/1440575-1-2-5-generation-minecraft-beta-1-2-farming-and 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 = minetest.get_translator("farming") local S = farming.intllib
-- item/seed
-- corn
minetest.register_craftitem("farming:corn", { minetest.register_craftitem("farming:corn", {
description = S("Corn"), description = S("Corn"),
inventory_image = "farming_corn.png", inventory_image = "farming_corn.png",
groups = {compostability = 45, seed = 2, food_corn = 1}, groups = {seed = 2, food_corn = 1, flammable = 2},
on_use = minetest.item_eat(3),
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:corn_1") 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 = {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"
})
local def = { -- cornstarch
description = S("Corn") .. S(" Crop"), minetest.register_craftitem("farming:cornstarch", {
description = S("Cornstarch"),
inventory_image = "farming_cornstarch.png",
groups = {food_cornstarch = 1, flammable = 2},
})
minetest.register_craft({
output = "farming:cornstarch",
recipe = {
{"group:food_mortar_pestle", "group:food_corn_cooked", "group:food_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 = default.node_sound_glass_defaults(),
})
minetest.register_craft( {
output = "farming:bottle_ethanol",
recipe = {
{ "vessels:glass_bottle", "group:food_corn", "group:food_corn"},
{ "group:food_corn", "group:food_corn", "group:food_corn"},
{ "group:food_corn", "group:food_corn", "group:food_corn"},
}
})
minetest.register_craft({
type = "fuel",
recipe = "farming:bottle_ethanol",
burntime = 80, --240,
replacements = {{ "farming:bottle_ethanol", "vessels:glass_bottle"}}
})
-- corn definition
local crop_def = {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_corn_1.png"}, tiles = {"farming_corn_1.png"},
paramtype = "light", paramtype = "light",
@ -32,99 +94,66 @@ local def = {
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
drop = "", drop = "",
waving = 1,
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:corn_1", table.copy(crop_def))
minetest.register_node("farming:corn_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"farming_corn_2.png"}
def.tiles = {"farming_corn_2.png"} minetest.register_node("farming:corn_2", table.copy(crop_def))
minetest.register_node("farming:corn_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_corn_3.png"}
def.tiles = {"farming_corn_3.png"} minetest.register_node("farming:corn_3", table.copy(crop_def))
minetest.register_node("farming:corn_3", table.copy(def))
-- stage 4 -- stage 4
crop_def.tiles = {"farming_corn_4.png"}
def.tiles = {"farming_corn_4.png"} minetest.register_node("farming:corn_4", table.copy(crop_def))
minetest.register_node("farming:corn_4", table.copy(def))
-- stage 5 -- stage 5
crop_def.tiles = {"farming_corn_5.png"}
def.tiles = {"farming_corn_5.png"} minetest.register_node("farming:corn_5", table.copy(crop_def))
minetest.register_node("farming:corn_5", table.copy(def))
-- stage 6 -- stage 6
crop_def.tiles = {"farming_corn_6.png"}
def.tiles = {"farming_corn_6.png"} crop_def.visual_scale = 1.9 -- 1.45
def.visual_scale = 1.9 minetest.register_node("farming:corn_6", table.copy(crop_def))
minetest.register_node("farming:corn_6", table.copy(def))
-- stage 7 -- stage 7
crop_def.tiles = {"farming_corn_7.png"}
def.tiles = {"farming_corn_7.png"} crop_def.drop = {
def.drop = {
items = { items = {
{items = {"farming:corn"}, rarity = 1}, {items = {"farming:corn"}, rarity = 1},
{items = {"farming:corn"}, rarity = 2}, {items = {"farming:corn"}, rarity = 2},
{items = {"farming:corn"}, rarity = 3} {items = {"farming:corn"}, rarity = 3},
} }
} }
minetest.register_node("farming:corn_7", table.copy(def)) minetest.register_node("farming:corn_7", table.copy(crop_def))
-- stage 8 (final) -- stage 8 (final)
crop_def.tiles = {"farming_corn_8.png"}
def.tiles = {"farming_corn_8.png"} crop_def.groups.growing = 0
def.groups.growing = nil crop_def.drop = {
def.selection_box = farming.select_final
def.drop = {
items = { items = {
{items = {"farming:corn 2"}, rarity = 1}, {items = {"farming:corn 2"}, rarity = 1},
{items = {"farming:corn 2"}, rarity = 2}, {items = {"farming:corn 2"}, rarity = 2},
{items = {"farming:corn 2"}, rarity = 2} {items = {"farming:corn 2"}, rarity = 2},
} }
} }
minetest.register_node("farming:corn_8", table.copy(def)) minetest.register_node("farming:corn_8", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:corn"] = { farming.registered_plants["farming:corn"] = {
crop = "farming:corn", crop = "farming:corn",
seed = "farming:corn", seed = "farming:corn",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 8 steps = 8
} }
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.corn,
spread = {x = 100, y = 100, z = 100},
seed = 134,
octaves = 3,
persist = 0.6
},
y_min = 12, y_max = 27,
decoration = "farming:corn_7"
})

View File

@ -1,148 +1,7 @@
local S = minetest.get_translator("farming") local S = farming.intllib
-- seed
minetest.register_node("farming:seed_cotton", {
description = S("Cotton Seed"),
tiles = {"farming_cotton_seed.png"},
inventory_image = "farming_cotton_seed.png",
wield_image = "farming_cotton_seed.png",
drawtype = "signlike",
groups = {
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)
minetest.set_node(pos, {name = "farming:cotton_1", param2 = 1})
end
})
-- item
minetest.register_craftitem("farming:cotton", {
description = S("Cotton"),
inventory_image = "farming_cotton.png",
groups = {flammable = 4, compostability = 50}
})
-- crop definition
local def = {
description = S("Cotton") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_cotton_1.png"},
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
drop = "",
waving = 1,
selection_box = farming.select,
groups = {
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()
}
-- stage 1
minetest.register_node("farming:cotton_1", table.copy(def))
-- stage 2
def.tiles = {"farming_cotton_2.png"}
minetest.register_node("farming:cotton_2", table.copy(def))
-- stage 3
def.tiles = {"farming_cotton_3.png"}
minetest.register_node("farming:cotton_3", table.copy(def))
-- stage 4
def.tiles = {"farming_cotton_4.png"}
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}
}
}
minetest.register_node("farming:cotton_5", table.copy(def))
-- stage 6
def.tiles = {"farming_cotton_6.png"}
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 = 2}
}
}
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
def.drop = {
items = {
{items = {"farming:cotton"}, rarity = 1},
{items = {"farming:cotton"}, rarity = 2},
{items = {"farming:cotton"}, rarity = 3},
{items = {"farming:seed_cotton"}, rarity = 1},
{items = {"farming:seed_cotton"}, rarity = 2},
{items = {"farming:seed_cotton"}, rarity = 3}
}
}
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",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 8
}
-- wild cotton (this is what you find on the map)
-- wild cotton as a source of cotton seed
minetest.register_node("farming:cotton_wild", { minetest.register_node("farming:cotton_wild", {
description = S("Wild Cotton"), description = S("Wild Cotton"),
drawtype = "plantlike", drawtype = "plantlike",
@ -154,51 +13,166 @@ minetest.register_node("farming:cotton_wild", {
sunlight_propagates = true, sunlight_propagates = true,
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
groups = {handy = 1, snappy = 3, attached_node = 1, flammable = 4, compostability = 60}, groups = {snappy = 3, attached_node = 1, flammable = 4},
_mcl_hardness = farming.mcl_hardness, drop = "farming:seed_cotton",
is_ground_content = false, sounds = default.node_sound_leaves_defaults(),
drop = {
items = {
{items = {"farming:cotton"}, rarity = 2},
{items = {"farming:seed_cotton"}, rarity = 1}
}
},
sounds = farming.node_sound_leaves_defaults(),
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = {-6 / 16, -8 / 16, -6 / 16, 6 / 16, 5 / 16, 6 / 16} fixed = {-6 / 16, -8 / 16, -6 / 16, 6 / 16, 5 / 16, 6 / 16},
},
})
-- cotton seeds
minetest.register_node("farming:seed_cotton", {
description = S("Cotton Seed"),
tiles = {"farming_cotton_seed.png"},
inventory_image = "farming_cotton_seed.png",
wield_image = "farming_cotton_seed.png",
drawtype = "signlike",
groups = {seed = 1, snappy = 3, attached_node = 1, flammable = 4},
paramtype = "light",
paramtype2 = "wallmounted",
walkable = false,
sunlight_propagates = true,
selection_box = farming.select,
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:cotton_1")
end,
})
-- cotton / string
minetest.register_craftitem("farming:cotton", {
description = S("Cotton"),
inventory_image = "farming_cotton.png",
groups = {flammable = 4},
})
minetest.register_craftitem("farming:string", {
description = S("String"),
inventory_image = "farming_string.png",
groups = {flammable = 2},
})
-- cotton to wool
minetest.register_craft({
output = "wool:white",
recipe = {
{"farming:cotton", "farming:cotton"},
{"farming:cotton", "farming:cotton"},
} }
}) })
-- mapgen -- cotton to string
minetest.register_craft({
local spawn_on = { output = "farming:string 2",
"default:dry_dirt_with_dry_grass", "default:dirt_with_dry_grass", recipe = {
"mcl_core:dirt_with_grass" {"farming:cotton"},
} {"farming:cotton"},
}
if farming.mapgen == "v6" then
spawn_on = {"default:dirt_with_grass"}
end
minetest.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 -- 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 crop_def = {
drawtype = "plantlike",
tiles = {"farming_cotton_1.png"},
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
drop = "",
selection_box = farming.select,
groups = {
snappy = 3, flammable = 4, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
sounds = default.node_sound_leaves_defaults()
}
-- stage 1
minetest.register_node("farming:cotton_1", table.copy(crop_def))
-- stage 2
crop_def.tiles = {"farming_cotton_2.png"}
minetest.register_node("farming:cotton_2", table.copy(crop_def))
-- stage 3
crop_def.tiles = {"farming_cotton_3.png"}
minetest.register_node("farming:cotton_3", table.copy(crop_def))
-- stage 4
crop_def.tiles = {"farming_cotton_4.png"}
minetest.register_node("farming:cotton_4", table.copy(crop_def))
-- stage 5
crop_def.tiles = {"farming_cotton_5.png"}
crop_def.drop = {
items = {
{items = {"farming:seed_cotton"}, rarity = 1},
}
}
minetest.register_node("farming:cotton_5", table.copy(crop_def))
-- stage 6
crop_def.tiles = {"farming_cotton_6.png"}
crop_def.drop = {
items = {
{items = {"farming:cotton"}, rarity = 1},
{items = {"farming:cotton"}, rarity = 2},
}
}
minetest.register_node("farming:cotton_6", table.copy(crop_def))
-- stage 7
crop_def.tiles = {"farming_cotton_7.png"}
crop_def.drop = {
items = {
{items = {"farming:cotton"}, rarity = 1},
{items = {"farming:cotton"}, rarity = 2},
{items = {"farming:seed_cotton"}, rarity = 1},
{items = {"farming:seed_cotton"}, rarity = 2},
}
}
minetest.register_node("farming:cotton_7", table.copy(crop_def))
-- stage 8 (final)
crop_def.tiles = {"farming_cotton_8.png"}
crop_def.groups.growing = 0
crop_def.drop = {
items = {
{items = {"farming:cotton"}, rarity = 1},
{items = {"farming:cotton"}, rarity = 2},
{items = {"farming:cotton"}, rarity = 3},
{items = {"farming:seed_cotton"}, rarity = 1},
{items = {"farming:seed_cotton"}, rarity = 2},
{items = {"farming:seed_cotton"}, rarity = 3},
}
}
minetest.register_node("farming:cotton_8", table.copy(crop_def))
-- add to registered_plants
farming.registered_plants["farming:cotton"] = {
crop = "farming:cotton",
seed = "farming:seed_cotton",
minlight = 13,
maxlight = 15,
steps = 8
}
--[[ Cotton (example, is already registered in cotton.lua)
farming.register_plant("farming:cotton", { farming.register_plant("farming:cotton", {
description = "Cotton seed", description = "Cotton seed",
inventory_image = "farming_cotton_seed.png", inventory_image = "farming_cotton_seed.png",

View File

@ -4,27 +4,21 @@
https://forum.minetest.net/viewtopic.php?id=3948 https://forum.minetest.net/viewtopic.php?id=3948
]] ]]
local S = minetest.get_translator("farming") local S = farming.intllib
-- item/seed
-- cucumber
minetest.register_craftitem("farming:cucumber", { minetest.register_craftitem("farming:cucumber", {
description = S("Cucumber"), description = S("Cucumber"),
inventory_image = "farming_cucumber.png", inventory_image = "farming_cucumber.png",
groups = {compostability = 48, seed = 2, food_cucumber = 1}, groups = {seed = 2, food_cucumber = 1, flammable = 2},
on_use = minetest.item_eat(4),
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:cucumber_1") 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) -- cucumber definition
local crop_def = {
-- crop definition
local def = {
description = S("Cucumber") .. S(" Crop"),
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_cucumber_1.png"}, tiles = {"farming_cucumber_1.png"},
paramtype = "light", paramtype = "light",
@ -33,68 +27,39 @@ local def = {
drop = "", drop = "",
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:cucumber_1", table.copy(crop_def))
minetest.register_node("farming:cucumber_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"farming_cucumber_2.png"}
def.tiles = {"farming_cucumber_2.png"} minetest.register_node("farming:cucumber_2", table.copy(crop_def))
minetest.register_node("farming:cucumber_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_cucumber_3.png"}
def.tiles = {"farming_cucumber_3.png"} minetest.register_node("farming:cucumber_3", table.copy(crop_def))
minetest.register_node("farming:cucumber_3", table.copy(def))
-- stage 4 (final) -- stage 4 (final)
crop_def.tiles = {"farming_cucumber_4.png"}
def.tiles = {"farming_cucumber_4.png"} crop_def.groups.growing = 0
def.groups.growing = nil crop_def.drop = {
def.selection_box = farming.select_final
def.drop = {
items = { items = {
{items = {"farming:cucumber 2"}, rarity = 1}, {items = {"farming:cucumber 2"}, rarity = 1},
{items = {"farming:cucumber 2"}, rarity = 2} {items = {"farming:cucumber 2"}, rarity = 2},
} }
} }
minetest.register_node("farming:cucumber_4", table.copy(def)) minetest.register_node("farming:cucumber_4", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:cucumber"] = { farming.registered_plants["farming:cucumber"] = {
crop = "farming:cucumber", crop = "farming:cucumber",
seed = "farming:cucumber", seed = "farming:cucumber",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 4 steps = 4
} }
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.cucumber,
spread = {x = 100, y = 100, z = 100},
seed = 245,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 20,
decoration = "farming:cucumber_4",
spawn_by = {"group:water", "group:sand"}, num_spawn_by = 1
})

View File

@ -1,102 +0,0 @@
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:eggplant", {
description = S("Eggplant"),
inventory_image = "farming_eggplant.png",
groups = {compostability = 48, seed = 2, food_eggplant = 1},
on_use = minetest.item_eat(3),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:eggplant_1")
end
})
farming.add_eatable("farming:eggplant", 3)
-- crop definition
local def = {
description = S("Eggplant") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_eggplant_1.png"},
paramtype = "light",
sunlight_propagates = true,
waving = 1,
walkable = false,
buildable_to = true,
drop = "",
waving = 1,
selection_box = farming.select,
groups = {
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()
}
-- stage 1
minetest.register_node("farming:eggplant_1", table.copy(def))
-- stage 2
def.tiles = {"farming_eggplant_2.png"}
minetest.register_node("farming:eggplant_2", table.copy(def))
-- stage 3
def.tiles = {"farming_eggplant_3.png"}
def.drop = {
items = {
{items = {"farming:eggplant"}, rarity = 1},
{items = {"farming:eggplant"}, rarity = 3}
}
}
minetest.register_node("farming:eggplant_3", table.copy(def))
-- stage 4 (final)
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 2"}, rarity = 2}
}
}
minetest.register_node("farming:eggplant_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:eggplant"] = {
crop = "farming:eggplant",
seed = "farming:eggplant",
minlight = 7,
maxlight = farming.max_light,
steps = 4
}
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
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",
param2 = 3
})

View File

@ -1,22 +1,85 @@
local S = minetest.get_translator("farming") --[[
Original textures from Crops Plus mod
Copyright (C) 2018 Grizzly Adam
https://forum.minetest.net/viewtopic.php?f=9&t=19488
]]
-- item/seed local S = farming.intllib
-- potato
minetest.register_craftitem("farming:garlic_clove", { minetest.register_craftitem("farming:garlic_clove", {
description = S("Garlic clove"), description = S("Garlic clove"),
inventory_image = "crops_garlic_clove.png", inventory_image = "crops_garlic_clove.png",
groups = {compostability = 35, seed = 2, food_garlic_clove = 1, flammable = 3}, groups = {seed = 2, food_garlic_clove = 1, flammable = 3},
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:garlic_1") return farming.place_seed(itemstack, placer, pointed_thing, "farming:garlic_1")
end end,
})
-- 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},
})
minetest.register_craft({
type = "shapeless",
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",
paramtype = "light",
paramtype2 = "facedir",
tiles = {
"crops_garlic_braid_side.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},
sounds = default.node_sound_leaves_defaults(),
node_box = {
type = "fixed",
fixed = {
{-0.13, -0.45, 0.5, 0.13, 0.45, 0.24},
},
}
})
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 -- crop definition
local crop_def = {
local def = {
description = S("Garlic") .. S(" Crop"),
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"crops_garlic_plant_1.png"}, tiles = {"crops_garlic_plant_1.png"},
paramtype = "light", paramtype = "light",
@ -29,75 +92,46 @@ local def = {
drop = "", drop = "",
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 3, plant = 1, attached_node = 1, snappy = 3, flammable = 3, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:garlic_1", table.copy(crop_def))
minetest.register_node("farming:garlic_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"crops_garlic_plant_2.png"}
def.tiles = {"crops_garlic_plant_2.png"} minetest.register_node("farming:garlic_2", table.copy(crop_def))
minetest.register_node("farming:garlic_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"crops_garlic_plant_3.png"}
def.tiles = {"crops_garlic_plant_3.png"} minetest.register_node("farming:garlic_3", table.copy(crop_def))
minetest.register_node("farming:garlic_3", table.copy(def))
-- stage 4 -- stage 4
crop_def.tiles = {"crops_garlic_plant_4.png"}
def.tiles = {"crops_garlic_plant_4.png"} minetest.register_node("farming:garlic_4", table.copy(crop_def))
minetest.register_node("farming:garlic_4", table.copy(def))
-- stage 5 -- stage 5
crop_def.tiles = {"crops_garlic_plant_5.png"}
def.tiles = {"crops_garlic_plant_5.png"} crop_def.groups.growing = 0
def.groups.growing = nil crop_def.drop = {
def.selection_box = farming.select_final max_items = 5, items = {
def.drop = { {items = {"farming:garlic"}, rarity = 1},
items = { {items = {"farming:garlic"}, rarity = 1},
{items = {"farming:garlic 3"}, rarity = 1}, {items = {"farming:garlic"}, rarity = 1},
{items = {"farming:garlic"}, rarity = 2}, {items = {"farming:garlic"}, rarity = 2},
{items = {"farming:garlic"}, rarity = 5} {items = {"farming:garlic"}, rarity = 5},
} }
} }
minetest.register_node("farming:garlic_5", table.copy(def)) minetest.register_node("farming:garlic_5", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:garlic"] = { farming.registered_plants["farming:garlic"] = {
crop = "farming:garlic", crop = "farming:garlic",
seed = "farming:garlic_clove", seed = "farming:garlic_clove",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 5 steps = 5
} }
-- mapgen
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"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.garlic,
spread = {x = 100, y = 100, z = 100},
seed = 467,
octaves = 3,
persist = 0.6
},
y_min = 3, y_max = 45,
decoration = "farming:garlic_5",
spawn_by = "group:tree", num_spawn_by = 1
})

View File

@ -1,105 +0,0 @@
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:ginger", {
description = S("Ginger"),
inventory_image = "farming_ginger.png",
groups = {compostability = 48, seed = 2, food_ginger = 1},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:ginger_1")
end
})
farming.add_eatable("farming:ginger", 1)
-- crop definition
local def = {
description = S("Ginger") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_ginger_1.png"},
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
drop = "",
waving = 1,
selection_box = farming.select,
groups = {
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()
}
-- stage 1
minetest.register_node("farming:ginger_1", table.copy(def))
-- stage 2
def.tiles = {"farming_ginger_2.png"}
minetest.register_node("farming:ginger_2", table.copy(def))
-- stage 3
def.tiles = {"farming_ginger_3.png"}
def.drop = {
items = {
{items = {"farming:ginger"}, rarity = 1},
{items = {"farming:ginger"}, rarity = 3}
}
}
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 2"}, rarity = 2}
}
}
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 = minetest.LIGHT_MAX,
steps = 4
}
-- mapgen
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"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.ginger,
spread = {x = 100, y = 100, z = 100},
seed = 999,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 80,
decoration = "farming:ginger_3",
param2 = 3
})

View File

@ -1,41 +1,48 @@
local S = minetest.get_translator("farming") local S = farming.intllib
-- place trellis helper
-- place trellis
local function place_grapes(itemstack, placer, pointed_thing, plantname) local function place_grapes(itemstack, placer, pointed_thing, plantname)
local pt = pointed_thing local pt = pointed_thing
-- check if pointing at a node -- 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 = minetest.get_node(pt.under) local under = minetest.get_node(pt.under)
-- return if any of the nodes are not registered -- return if any of the nodes are not registered
if not minetest.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? -- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :) -- thanks to Krock for helping with this issue :)
local def = minetest.registered_nodes[under.name] local def = minetest.registered_nodes[under.name]
if placer and itemstack and def and def.on_rightclick then if placer and itemstack and def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt) return def.on_rightclick(pt.under, under, placer, itemstack)
end end
-- is player planting seed? -- is player planting seed?
local name = placer and placer:get_player_name() or "" local name = placer and placer:get_player_name() or ""
-- check for protection -- check for protection
if minetest.is_protected(pt.under, name) then return end if minetest.is_protected(pt.under, name) then
return
end
-- check if pointing at trellis -- 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 -- add the node and remove 1 item from the itemstack
minetest.set_node(pt.under, {name = plantname}) minetest.set_node(pt.under, {name = plantname})
minetest.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 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 -- check for refill
if itemstack:get_count() == 0 then if itemstack:get_count() == 0 then
minetest.after(0.20, farming.refill_plant, placer, minetest.after(0.20,
"farming:grapes", placer:get_wield_index() farming.refill_plant,
placer,
"farming:grapes",
placer:get_wield_index()
) )
end end
end end
@ -53,57 +63,63 @@ local function place_grapes(itemstack, placer, pointed_thing, plantname)
return itemstack return itemstack
end end
-- item/seed -- grapes
minetest.register_craftitem("farming:grapes", { minetest.register_craftitem("farming:grapes", {
description = S("Grapes"), description = S("Grapes"),
inventory_image = "farming_grapes.png", inventory_image = "farming_grapes.png",
groups = {compostability = 48, seed = 2, food_grapes = 1},
on_use = minetest.item_eat(2), on_use = minetest.item_eat(2),
groups = {seed = 2, food_grapes = 1, flammable = 3},
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return place_grapes(itemstack, placer, pointed_thing, "farming:grapes_1") return place_grapes(itemstack, placer, pointed_thing, "farming:grapes_1")
end end,
}) })
farming.add_eatable("farming:grapes", 2) -- grapes can be used for violet dye
minetest.register_craft({
output = "dye:violet",
recipe = {
{"farming:grapes"},
}
})
-- trellis -- trellis
minetest.register_node("farming:trellis", { minetest.register_node("farming:trellis", {
description = S("Trellis (place on soil before planting grapes)"), description = S("Trellis (place on soil before planting grapes)"),
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_trellis.png"}, tiles = {"farming_trellis.png"},
inventory_image = "farming_trellis.png", inventory_image = "farming_trellis.png",
visual_scale = 1.9, visual_scale = 1.9, -- 1.45,
paramtype = "light", paramtype = "light",
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
sunlight_propagates = true, sunlight_propagates = true,
drop = "farming:trellis", drop = "farming:trellis",
selection_box = farming.select, selection_box = farming.select,
groups = {handy = 1, snappy = 3, flammable = 2, attached_node = 1}, groups = {snappy = 3, flammable = 2, attached_node = 1},
is_ground_content = false, sounds = default.node_sound_leaves_defaults(),
sounds = farming.node_sound_leaves_defaults(),
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
local pt = pointed_thing local pt = pointed_thing
-- check if pointing at a node -- 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 = minetest.get_node(pt.under) local under = minetest.get_node(pt.under)
-- return if any of the nodes are not registered -- return if any of the nodes are not registered
if not minetest.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? -- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :) -- thanks to Krock for helping with this issue :)
local def = minetest.registered_nodes[under.name] local def = minetest.registered_nodes[under.name]
if def and def.on_rightclick then if def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt) return def.on_rightclick(pt.under, under, placer, itemstack)
end end
if minetest.is_protected(pt.above, placer:get_player_name()) then if minetest.is_protected(pt.above, placer:get_player_name()) then
@ -112,7 +128,9 @@ minetest.register_node("farming:trellis", {
local nodename = under.name local nodename = under.name
if minetest.get_item_group(nodename, "soil") < 2 then return end if minetest.get_item_group(nodename, "soil") < 2 then
return
end
local top = { local top = {
x = pointed_thing.above.x, x = pointed_thing.above.x,
@ -122,7 +140,9 @@ minetest.register_node("farming:trellis", {
nodename = minetest.get_node(top).name nodename = minetest.get_node(top).name
if nodename ~= "air" then return end if nodename ~= "air" then
return
end
minetest.set_node(pointed_thing.above, {name = "farming:trellis"}) minetest.set_node(pointed_thing.above, {name = "farming:trellis"})
@ -134,13 +154,26 @@ minetest.register_node("farming:trellis", {
end end
}) })
-- crop definition minetest.register_craft({
output = "farming:trellis",
recipe = {
{"default:stick", "default:stick", "default:stick"},
{"default:stick", "default:stick", "default:stick"},
{"default:stick", "default:stick", "default:stick"},
}
})
local def = { minetest.register_craft({
description = S("Grapes") .. S(" Crop"), type = "fuel",
recipe = "farming:trellis",
burntime = 15,
})
-- grapes definition
local crop_def = {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_grapes_1.png"}, tiles = {"farming_grapes_1.png"},
visual_scale = 1.9, visual_scale = 1.9, -- 1.45,
paramtype = "light", paramtype = "light",
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
@ -152,76 +185,62 @@ local def = {
}, },
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 3, not_in_creative_inventory = 1, snappy = 3, flammable = 3, not_in_creative_inventory = 1,
attached_node = 1, growing = 1, plant = 1 attached_node = 1, growing = 1, plant = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:grapes_1", table.copy(crop_def))
minetest.register_node("farming:grapes_1", table.copy(def))
-- stage2 -- stage2
crop_def.tiles = {"farming_grapes_2.png"}
def.tiles = {"farming_grapes_2.png"} minetest.register_node("farming:grapes_2", table.copy(crop_def))
minetest.register_node("farming:grapes_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_grapes_3.png"}
def.tiles = {"farming_grapes_3.png"} minetest.register_node("farming:grapes_3", table.copy(crop_def))
minetest.register_node("farming:grapes_3", table.copy(def))
-- stage 4 -- stage 4
crop_def.tiles = {"farming_grapes_4.png"}
def.tiles = {"farming_grapes_4.png"} minetest.register_node("farming:grapes_4", table.copy(crop_def))
minetest.register_node("farming:grapes_4", table.copy(def))
-- stage 5 -- stage 5
crop_def.tiles = {"farming_grapes_5.png"}
def.tiles = {"farming_grapes_5.png"} minetest.register_node("farming:grapes_5", table.copy(crop_def))
minetest.register_node("farming:grapes_5", table.copy(def))
-- stage 6 -- stage 6
crop_def.tiles = {"farming_grapes_6.png"}
def.tiles = {"farming_grapes_6.png"} minetest.register_node("farming:grapes_6", table.copy(crop_def))
minetest.register_node("farming:grapes_6", table.copy(def))
-- stage 7 -- stage 7
crop_def.tiles = {"farming_grapes_7.png"}
def.tiles = {"farming_grapes_7.png"} minetest.register_node("farming:grapes_7", table.copy(crop_def))
minetest.register_node("farming:grapes_7", table.copy(def))
-- stage 8 (final) -- stage 8 (final)
crop_def.tiles = {"farming_grapes_8.png"}
def.tiles = {"farming_grapes_8.png"} crop_def.groups.growing = 0
def.groups.growing = nil crop_def.drop = {
def.selection_box = farming.select_final
def.drop = {
items = { items = {
{items = {"farming:trellis"}, rarity = 1}, {items = {"farming:trellis"}, rarity = 1},
{items = {"farming:grapes 3"}, rarity = 1}, {items = {"farming:grapes 3"}, rarity = 1},
{items = {"farming:grapes 1"}, rarity = 2}, {items = {"farming:grapes 1"}, rarity = 2},
{items = {"farming:grapes 1"}, rarity = 3} {items = {"farming:grapes 1"}, rarity = 3},
} }
} }
minetest.register_node("farming:grapes_8", table.copy(def)) minetest.register_node("farming:grapes_8", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:grapes"] = { farming.registered_plants["farming:grapes"] = {
trellis = "farming:trellis",
crop = "farming:grapes", crop = "farming:grapes",
seed = "farming:grapes", seed = "farming:grapes",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 8 steps = 8
} }
-- wild grape vine (this is what you find on the map) -- wild grape vine (this is what you find on the map)
minetest.register_node("farming:grapebush", { minetest.register_node("farming:grapebush", {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_grapebush.png"}, tiles = {"farming_grapebush.png"},
@ -234,34 +253,13 @@ minetest.register_node("farming:grapebush", {
items = { items = {
{items = {"farming:grapes 1"}, rarity = 1}, {items = {"farming:grapes 1"}, rarity = 1},
{items = {"farming:grapes 1"}, rarity = 2}, {items = {"farming:grapes 1"}, rarity = 2},
{items = {"farming:grapes 1"}, rarity = 3} {items = {"farming:grapes 1"}, rarity = 3},
} }
}, },
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, compostability = 35 not_in_creative_inventory=1
}, },
is_ground_content = false, sounds = default.node_sound_leaves_defaults(),
sounds = farming.node_sound_leaves_defaults()
})
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.grapes,
spread = {x = 100, y = 100, z = 100},
seed = 578,
octaves = 3,
persist = 0.6
},
y_min = 25, y_max = 50,
decoration = "farming:grapebush"
}) })

View File

@ -1,48 +1,186 @@
local S = minetest.get_translator("farming") local S = farming.intllib
-- seed
-- hemp seeds
minetest.register_node("farming:seed_hemp", { minetest.register_node("farming:seed_hemp", {
description = S("Hemp Seed"), description = S("Hemp Seed"),
tiles = {"farming_hemp_seed.png"}, tiles = {"farming_hemp_seed.png"},
inventory_image = "farming_hemp_seed.png", inventory_image = "farming_hemp_seed.png",
wield_image = "farming_hemp_seed.png", wield_image = "farming_hemp_seed.png",
drawtype = "signlike", drawtype = "signlike",
groups = { groups = {seed = 1, snappy = 3, attached_node = 1},
handy = 1, compostability = 38, seed = 1, snappy = 3, attached_node = 1,
growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
paramtype = "light", paramtype = "light",
paramtype2 = "wallmounted", paramtype2 = "wallmounted",
walkable = false, walkable = false,
sunlight_propagates = true, sunlight_propagates = true,
selection_box = farming.select, selection_box = farming.select,
next_plant = "farming:hemp_1",
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_hemp") return farming.place_seed(itemstack, placer, pointed_thing, "farming:hemp_1")
end, end,
on_timer = function(pos, elapsed)
minetest.set_node(pos, {name = "farming:hemp_1", param2 = 1})
end
}) })
-- item -- harvested hemp
minetest.register_craftitem("farming:hemp_leaf", { minetest.register_craftitem("farming:hemp_leaf", {
description = S("Hemp Leaf"), description = S("Hemp Leaf"),
inventory_image = "farming_hemp_leaf.png", 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},
sounds = default.node_sound_glass_defaults(),
})
local def = { minetest.register_craft( {
description = S("Hemp") .. S(" Crop"), output = "farming:hemp_oil",
recipe = {
{"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"},
{"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"},
{"", "vessels: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", "vessels:glass_bottle", "farming:seed_hemp"}
}
})
minetest.register_craft({
type = "fuel",
recipe = "farming:hemp_oil",
burntime = 20,
replacements = {{ "farming:hemp_oil", "vessels:glass_bottle"}}
})
-- hemp fibre
minetest.register_craftitem("farming:hemp_fibre", {
description = S("Hemp Fibre"),
inventory_image = "farming_hemp_fibre.png",
})
minetest.register_craft( {
output = "farming:hemp_fibre 8",
recipe = {
{"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"},
{"farming:hemp_leaf", "bucket:bucket_water", "farming:hemp_leaf"},
{"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}
},
replacements = {{ "bucket:bucket_water", "bucket:bucket_empty"}}
})
minetest.register_craft( {
output = "farming:hemp_fibre 8",
recipe = {
{"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"},
{"farming:hemp_leaf", "bucket:bucket_river_water", "farming:hemp_leaf"},
{"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}
},
replacements = {{ "bucket:bucket_river_water", "bucket:bucket_empty"}}
})
-- hemp block
minetest.register_node("farming:hemp_block", {
description = S("Hemp Block"),
tiles = {"farming_hemp_block.png"},
paramtype = "light",
groups = {snappy = 1, oddly_breakable_by_hand = 1, flammable = 2}
})
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 = 1, flammable = 2},
{"farming_hemp_block.png"},
"Hemp Block",
default.node_sound_leaves_defaults())
else
stairs.register_stair_and_slab("hemp_block", "farming:hemp_block",
{snappy = 1, flammable = 2},
{"farming_hemp_block.png"},
"Hemp Block Stair",
"Hemp Block Slab",
default.node_sound_leaves_defaults())
end
end
-- paper
minetest.register_craft( {
output = "default: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},
sounds = default.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 crop_def = {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_hemp_1.png"}, tiles = {"farming_hemp_1.png"},
paramtype = "light", paramtype = "light",
@ -50,108 +188,73 @@ local def = {
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
drop = "", drop = "",
waving = 1,
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:hemp_1", table.copy(crop_def))
minetest.register_node("farming:hemp_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"farming_hemp_2.png"}
def.tiles = {"farming_hemp_2.png"} minetest.register_node("farming:hemp_2", table.copy(crop_def))
minetest.register_node("farming:hemp_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_hemp_3.png"}
def.tiles = {"farming_hemp_3.png"} minetest.register_node("farming:hemp_3", table.copy(crop_def))
minetest.register_node("farming:hemp_3", table.copy(def))
-- stage 4 -- stage 4
crop_def.tiles = {"farming_hemp_4.png"}
def.tiles = {"farming_hemp_4.png"} minetest.register_node("farming:hemp_4", table.copy(crop_def))
minetest.register_node("farming:hemp_4", table.copy(def))
-- stage 5 -- stage 5
crop_def.tiles = {"farming_hemp_5.png"}
def.tiles = {"farming_hemp_5.png"} minetest.register_node("farming:hemp_5", table.copy(crop_def))
minetest.register_node("farming:hemp_5", table.copy(def))
-- stage 6 -- stage 6
crop_def.tiles = {"farming_hemp_6.png"}
def.tiles = {"farming_hemp_6.png"} crop_def.drop = {
def.drop = {
items = { items = {
{items = {"farming:hemp_leaf"}, rarity = 2}, {items = {"farming:hemp_leaf"}, rarity = 2},
{items = {"farming:seed_hemp"}, rarity = 1} {items = {"farming:seed_hemp"}, rarity = 1},
} }
} }
minetest.register_node("farming:hemp_6", table.copy(def)) minetest.register_node("farming:hemp_6", table.copy(crop_def))
-- stage 7 -- stage 7
crop_def.tiles = {"farming_hemp_7.png"}
def.tiles = {"farming_hemp_7.png"} crop_def.drop = {
def.drop = {
items = { items = {
{items = {"farming:hemp_leaf"}, rarity = 1}, {items = {"farming:hemp_leaf"}, rarity = 1},
{items = {"farming:hemp_leaf"}, rarity = 3}, {items = {"farming:hemp_leaf"}, rarity = 3},
{items = {"farming:seed_hemp"}, rarity = 1}, {items = {"farming:seed_hemp"}, rarity = 1},
{items = {"farming:seed_hemp"}, rarity = 3} {items = {"farming:seed_hemp"}, rarity = 3},
} }
} }
minetest.register_node("farming:hemp_7", table.copy(def)) minetest.register_node("farming:hemp_7", table.copy(crop_def))
-- stage 8 (final) -- stage 8 (final)
crop_def.tiles = {"farming_hemp_8.png"}
def.tiles = {"farming_hemp_8.png"} crop_def.groups.growing = 0
def.groups.growing = nil crop_def.drop = {
def.selection_box = farming.select_final
def.drop = {
items = { items = {
{items = {"farming:hemp_leaf 2"}, rarity = 1}, {items = {"farming:hemp_leaf 2"}, rarity = 1},
{items = {"farming:hemp_leaf"}, rarity = 2}, {items = {"farming:hemp_leaf"}, rarity = 2},
{items = {"farming:seed_hemp"}, rarity = 1}, {items = {"farming:seed_hemp"}, rarity = 1},
{items = {"farming:seed_hemp"}, rarity = 2} {items = {"farming:seed_hemp"}, rarity = 2},
} }
} }
minetest.register_node("farming:hemp_8", table.copy(def)) minetest.register_node("farming:hemp_8", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:hemp"] = { farming.registered_plants["farming:hemp"] = {
crop = "farming:hemp", crop = "farming:hemp",
seed = "farming:seed_hemp", seed = "farming:seed_hemp",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 8 steps = 8
} }
-- mapgen
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"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.hemp,
spread = {x = 100, y = 100, z = 100},
seed = 420,
octaves = 3,
persist = 0.6
},
y_min = 3, y_max = 45,
decoration = "farming:hemp_7",
spawn_by = "group:tree", num_spawn_by = 1
})

View File

@ -1,100 +0,0 @@
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:lettuce", {
description = S("Lettuce"),
inventory_image = "farming_lettuce.png",
groups = {compostability = 48, seed = 2, food_lettuce = 1},
on_use = minetest.item_eat(2),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:lettuce_1")
end
})
farming.add_eatable("farming:lettuce", 2)
-- crop definition
local def = {
description = S("Lettuce") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_lettuce_1.png"},
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
drop = "",
selection_box = farming.select,
groups = {
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()
}
-- stage 1
minetest.register_node("farming:lettuce_1", table.copy(def))
-- stage 2
def.tiles = {"farming_lettuce_2.png"}
minetest.register_node("farming:lettuce_2", table.copy(def))
-- stage 3
def.tiles = {"farming_lettuce_3.png"}
minetest.register_node("farming:lettuce_3", table.copy(def))
-- stage 4
def.tiles = {"farming_lettuce_4.png"}
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 1"}, rarity = 2}
}
}
minetest.register_node("farming:lettuce_5", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:lettuce"] = {
crop = "farming:lettuce",
seed = "farming:lettuce",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 5
}
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.lettuce,
spread = {x = 100, y = 100, z = 100},
seed = 689,
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 35,
decoration = "farming:lettuce_5"
})

View File

@ -1,25 +1,34 @@
local S = minetest.get_translator("farming") local S = farming.intllib
-- item/seed
-- melon
minetest.register_craftitem("farming:melon_slice", { minetest.register_craftitem("farming:melon_slice", {
description = S("Melon Slice"), description = S("Melon Slice"),
inventory_image = "farming_melon_slice.png", inventory_image = "farming_melon_slice.png",
groups = {compostability = 48, seed = 2, food_melon_slice = 1}, groups = {seed = 2, food_melon_slice = 1, flammable = 3},
on_use = minetest.item_eat(2),
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:melon_1") 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({
type = "shapeless",
output = "farming:melon_slice 4",
recipe = {"farming:melon_8", "farming:cutting_board"},
replacements = {{"farming:cutting_board", "farming:cutting_board"}},
})
local def = { -- melon definition
description = S("Melon") .. S(" Crop"), local crop_def = {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_melon_1.png"}, tiles = {"farming_melon_1.png"},
paramtype = "light", paramtype = "light",
@ -29,98 +38,58 @@ local def = {
drop = "", drop = "",
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:melon_1", table.copy(crop_def))
minetest.register_node("farming:melon_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"farming_melon_2.png"}
def.tiles = {"farming_melon_2.png"} minetest.register_node("farming:melon_2", table.copy(crop_def))
minetest.register_node("farming:melon_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_melon_3.png"}
def.tiles = {"farming_melon_3.png"} minetest.register_node("farming:melon_3", table.copy(crop_def))
minetest.register_node("farming:melon_3", table.copy(def))
-- stage 4 -- stage 4
crop_def.tiles = {"farming_melon_4.png"}
def.tiles = {"farming_melon_4.png"} minetest.register_node("farming:melon_4", table.copy(crop_def))
minetest.register_node("farming:melon_4", table.copy(def))
-- stage 5 -- stage 5
crop_def.tiles = {"farming_melon_5.png"}
def.tiles = {"farming_melon_5.png"} minetest.register_node("farming:melon_5", table.copy(crop_def))
minetest.register_node("farming:melon_5", table.copy(def))
-- stage 6 -- stage 6
crop_def.tiles = {"farming_melon_6.png"}
def.tiles = {"farming_melon_6.png"} minetest.register_node("farming:melon_6", table.copy(crop_def))
minetest.register_node("farming:melon_6", table.copy(def))
-- stage 7 -- stage 7
crop_def.tiles = {"farming_melon_7.png"}
def.tiles = {"farming_melon_7.png"} minetest.register_node("farming:melon_7", table.copy(crop_def))
minetest.register_node("farming:melon_7", table.copy(def))
-- stage 8 (final) -- stage 8 (final)
crop_def.drawtype = "nodebox"
minetest.register_node("farming:melon_8", { crop_def.description = S("Melon")
description = S("Melon"), crop_def.tiles = {"farming_melon_top.png", "farming_melon_top.png", "farming_melon_side.png"}
tiles = { crop_def.selection_box = {-.5, -.5, -.5, .5, .5, .5}
"farming_melon_top.png", crop_def.walkable = true
"farming_melon_bottom.png", crop_def.groups = {
"farming_melon_side.png" food_melon = 1, snappy = 2, oddly_breakable_by_hand = 1,
}, flammable = 2, plant = 1
groups = { }
food_melon = 1, handy = 1, snappy = 3, choppy = 3, oddly_breakable_by_hand = 2, --crop_def.drop = "farming:melon_slice 9"
flammable = 2, plant = 1, compostability = 65 crop_def.drop = "farming:melon_8"
}, minetest.register_node("farming:melon_8", table.copy(crop_def))
is_ground_content = false,
drop = "farming:melon_8",
sounds = farming.node_sound_wood_defaults(),
paramtype2 = "facedir",
on_place = minetest.rotate_node,
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:melon"] = { farming.registered_plants["farming:melon"] = {
crop = "farming:melon", crop = "farming:melon",
seed = "farming:melon_slice", seed = "farming:melon_slice",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 8 steps = 8
} }
-- mapgen
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"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.melon,
spread = {x = 100, y = 100, z = 100},
seed = 790,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 3,
decoration = "farming:melon_8",
spawn_by = {"group:water", "group:sand"}, num_spawn_by = 1
})

View File

@ -1,122 +1,91 @@
local S = minetest.get_translator("farming") local S = farming.intllib
-- seed -- mint seed
minetest.register_craftitem("farming:seed_mint", {
minetest.register_node("farming:seed_mint", {
description = S("Mint Seeds"), description = S("Mint Seeds"),
tiles = {"farming_mint_seeds.png"},
inventory_image = "farming_mint_seeds.png", inventory_image = "farming_mint_seeds.png",
wield_image = "farming_mint_seeds.png", groups = {seed = 2, flammable = 2},
drawtype = "signlike",
groups = {
compostability = 48, seed = 1, snappy = 3, attached_node = 1, growing = 1,
handy = 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:mint_1",
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_mint") return farming.place_seed(
end, itemstack, placer, pointed_thing, "farming:mint_1")
on_timer = function(pos, elapsed)
minetest.set_node(pos, {name = "farming:mint_1", param2 = 1})
end end
}) })
-- item -- mint leaf
minetest.register_craftitem("farming:mint_leaf", { minetest.register_craftitem("farming:mint_leaf", {
description = S("Mint Leaf"), description = S("Mint Leaf"),
inventory_image = "farming_mint_leaf.png", inventory_image = "farming_mint_leaf.png",
groups = {food_mint = 1, flammable = 4, compostability = 48} groups = {food_mint = 1, flammable = 4},
}) })
-- 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, "vessels:drinking_glass"),
groups = {flammable = 4},
})
local def = { minetest.register_craft({
description = S("Mint") .. S(" Crop"), output = "farming:mint_tea",
type = "shapeless",
recipe = {
"vessels:drinking_glass", "group:food_mint",
"group:food_mint", "group:food_mint",
"farming:juicer", "bucket:bucket_water"
},
replacements = {
{"group:food_juicer", "farming:juicer"},
{"bucket:bucket_water", "bucket:bucket_empty"},
},
})
-- mint definition
local crop_def = {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_mint_1.png"}, tiles = {"farming_mint_1.png"},
paramtype = "light", paramtype = "light",
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
drop = "", drop = "",
waving = 1,
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:mint_1", table.copy(crop_def))
minetest.register_node("farming:mint_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"farming_mint_2.png"}
def.tiles = {"farming_mint_2.png"} minetest.register_node("farming:mint_2", table.copy(crop_def))
minetest.register_node("farming:mint_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_mint_3.png"}
def.tiles = {"farming_mint_3.png"} minetest.register_node("farming:mint_3", table.copy(crop_def))
minetest.register_node("farming:mint_3", table.copy(def))
-- stage 4 (final) -- stage 4 (final)
crop_def.tiles = {"farming_mint_4.png"}
def.tiles = {"farming_mint_4.png"} crop_def.groups.growing = 0
def.groups.growing = nil crop_def.drop = {
def.selection_box = farming.select_final
def.drop = {
items = { items = {
{items = {"farming:mint_leaf 2"}, rarity = 1}, {items = {"farming:mint_leaf 2"}, rarity = 1},
{items = {"farming:mint_leaf 2"}, rarity = 2}, {items = {"farming:mint_leaf 2"}, rarity = 2},
{items = {"farming:seed_mint 1"}, rarity = 1}, {items = {"farming:seed_mint 1"}, rarity = 1},
{items = {"farming:seed_mint 2"}, rarity = 2} {items = {"farming:seed_mint 2"}, rarity = 2},
} }
} }
minetest.register_node("farming:mint_4", table.copy(def)) minetest.register_node("farming:mint_4", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:mint"] = { farming.registered_plants["farming:mint"] = {
crop = "farming:mint", crop = "farming:mint",
seed = "farming:seed_mint", seed = "farming:seed_mint",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 4 steps = 4
} }
-- mapgen
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"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.mint,
spread = {x = 100, y = 100, z = 100},
seed = 801,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 75,
decoration = "farming:mint_4",
spawn_by = {"group:water", "group:sand"}, num_spawn_by = 1
})

View File

@ -5,27 +5,40 @@
https://forum.minetest.net/viewtopic.php?f=9&t=19488 https://forum.minetest.net/viewtopic.php?f=9&t=19488
]] ]]
local S = minetest.get_translator("farming") local S = farming.intllib
-- item/seed
-- onion
minetest.register_craftitem("farming:onion", { minetest.register_craftitem("farming:onion", {
description = S("Onion"), description = S("Onion"),
inventory_image = "crops_onion.png", inventory_image = "crops_onion.png",
groups = {compostability = 48, seed = 2, food_onion = 1}, groups = {seed = 2, food_onion = 1, flammable = 3},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:onion_1") 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},
on_use = minetest.item_eat(6, "farming:bowl"),
})
minetest.register_craft({
type = "shapeless",
output = "farming:onion_soup",
recipe = {
"group:food_onion", "group:food_onion", "group:food_pot",
"group:food_onion", "group:food_onion",
"group:food_onion", "group:food_onion", "group:food_bowl"
},
replacements = {{"farming:pot", "farming:pot"}}
})
-- crop definition -- crop definition
local crop_def = {
local def = {
description = S("Onion") .. S(" Crop"),
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"crops_onion_plant_1.png"}, tiles = {"crops_onion_plant_1.png"},
paramtype = "light", paramtype = "light",
@ -36,78 +49,48 @@ local def = {
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
drop = "", drop = "",
waving = 1,
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 3, plant = 1, attached_node = 1, snappy = 3, flammable = 3, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:onion_1", table.copy(crop_def))
minetest.register_node("farming:onion_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"crops_onion_plant_2.png"}
def.tiles = {"crops_onion_plant_2.png"} minetest.register_node("farming:onion_2", table.copy(crop_def))
minetest.register_node("farming:onion_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"crops_onion_plant_3.png"}
def.tiles = {"crops_onion_plant_3.png"} minetest.register_node("farming:onion_3", table.copy(crop_def))
minetest.register_node("farming:onion_3", table.copy(def))
-- stage 4 -- stage 4
crop_def.tiles = {"crops_onion_plant_4.png"}
def.tiles = {"crops_onion_plant_4.png"} minetest.register_node("farming:onion_4", table.copy(crop_def))
minetest.register_node("farming:onion_4", table.copy(def))
-- stage 5 -- stage 5
crop_def.tiles = {"crops_onion_plant_5.png"}
def.tiles = {"crops_onion_plant_5.png"} crop_def.groups.growing = 0
def.groups.growing = nil crop_def.drop = {
def.selection_box = farming.select_final
def.drop = {
max_items = 5, items = { max_items = 5, items = {
{items = {"farming:onion"}, rarity = 1}, {items = {"farming:onion"}, rarity = 1},
{items = {"farming:onion"}, rarity = 1}, {items = {"farming:onion"}, rarity = 1},
{items = {"farming:onion"}, rarity = 2}, {items = {"farming:onion"}, rarity = 2},
{items = {"farming:onion"}, rarity = 2}, {items = {"farming:onion"}, rarity = 2},
{items = {"farming:onion"}, rarity = 5} {items = {"farming:onion"}, rarity = 5},
} }
} }
minetest.register_node("farming:onion_5", table.copy(def)) minetest.register_node("farming:onion_5", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:onion"] = { farming.registered_plants["farming:onion"] = {
crop = "farming:onion", crop = "farming:onion",
seed = "farming:onion", seed = "farming:onion",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 5 steps = 5
} }
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.onion,
spread = {x = 100, y = 100, z = 100},
seed = 912,
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 28,
decoration = "farming:onion_5"
})

View File

@ -1,93 +0,0 @@
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:parsley", {
description = S("Parsley"),
inventory_image = "farming_parsley.png",
groups = {compostability = 48, seed = 2, food_parsley = 1},
on_use = minetest.item_eat(1),
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",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
drop = "",
waving = 1,
selection_box = farming.select,
groups = {
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()
}
-- stage 1
minetest.register_node("farming:parsley_1", table.copy(def))
-- stage 2
def.tiles = {"farming_parsley_2.png"}
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
def.drop = {
items = {
{items = {"farming:parsley 2"}, rarity = 1},
{items = {"farming:parsley"}, rarity = 2},
{items = {"farming:parsley"}, rarity = 3}
}
}
minetest.register_node("farming:parsley_3", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:parsley"] = {
crop = "farming:parsley",
seed = "farming:parsley",
minlight = 13,
maxlight = 15,
steps = 3
}
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt",
"ethereal:grove_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.parsley,
spread = {x = 100, y = 100, z = 100},
seed = 23,
octaves = 3,
persist = 0.6
},
y_min = 10, y_max = 40,
decoration = "farming:parsley_3"
})

View File

@ -1,31 +1,46 @@
-- Textures for peas and their crop were done by Andrey01 local S = farming.intllib
local S = minetest.get_translator("farming") -- Textures for Pea crop and Peas were done by Andrey01
-- item/seed
-- pea pod
minetest.register_craftitem("farming:pea_pod", { minetest.register_craftitem("farming:pea_pod", {
description = S("Pea Pod"), description = S("Pea Pod"),
inventory_image = "farming_pea_pod.png", inventory_image = "farming_pea_pod.png",
groups = {compostability = 48, seed = 2, food_peas = 1, food_pea_pod = 1}, groups = {seed = 2, food_pea_pod = 1, flammable = 2},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:pea_1") return farming.place_seed(itemstack, placer, pointed_thing, "farming:pea_1")
end end
}) })
farming.add_eatable("farming:pea_pod", 1) minetest.register_craftitem("farming:peas", {
description = S("Peas"),
inventory_image = "farming_pea_peas.png",
groups = {food_peas = 1, flammable = 2},
on_use = minetest.item_eat(1)
})
-- replacement for separate peas item that was removed minetest.register_craft({
type = "shapeless",
output = "farming:peas",
recipe = {"farming:pea_pod"}
})
minetest.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},
on_use = minetest.item_eat(4, "farming:bowl"),
})
-- crop definition minetest.register_craft({
type = "shapeless",
output = "farming:pea_soup",
recipe = {"group:food_peas", "group:food_peas", "group:food_bowl"}
})
local def = { local crop_def = {
description = S("Pea") .. S(" Crop"),
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_pea_1.png"}, tiles = {"farming_pea_1.png"},
paramtype = "light", paramtype = "light",
@ -38,74 +53,45 @@ local def = {
drop = "", drop = "",
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:pea_1", table.copy(crop_def))
minetest.register_node("farming:pea_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"farming_pea_2.png"}
def.tiles = {"farming_pea_2.png"} minetest.register_node("farming:pea_2", table.copy(crop_def))
minetest.register_node("farming:pea_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_pea_3.png"}
def.tiles = {"farming_pea_3.png"} minetest.register_node("farming:pea_3", table.copy(crop_def))
minetest.register_node("farming:pea_3", table.copy(def))
-- stage 4 -- stage 4
crop_def.tiles = {"farming_pea_4.png"}
minetest.register_node("farming:pea_4", table.copy(crop_def))
def.tiles = {"farming_pea_4.png"} -- stage 5
minetest.register_node("farming:pea_4", table.copy(def)) crop_def.tiles = {"farming_pea_5.png"}
crop_def.groups.growing = 0
-- stage 5 (final) crop_def.drop = {
def.tiles = {"farming_pea_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
max_items = 5, items = { max_items = 5, items = {
{items = {"farming:pea_pod"}, rarity = 1}, {items = {"farming:pea_pod"}, rarity = 1},
{items = {"farming:pea_pod"}, rarity = 2}, {items = {"farming:pea_pod"}, rarity = 2},
{items = {"farming:pea_pod"}, rarity = 3}, {items = {"farming:pea_pod"}, rarity = 3},
{items = {"farming:pea_pod"}, rarity = 5} {items = {"farming:pea_pod"}, rarity = 5},
} }
} }
minetest.register_node("farming:pea_5", table.copy(def)) minetest.register_node("farming:pea_5", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:pea_pod"] = { farming.registered_plants["farming:pea_pod"] = {
crop = "farming:pea", crop = "farming:pea",
seed = "farming:pea_pod", seed = "farming:pea_pod",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 5 steps = 5
} }
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.peas,
spread = {x = 100, y = 100, z = 100},
seed = 132,
octaves = 3,
persist = 0.6
},
y_min = 25, y_max = 55,
decoration = "farming:pea_5"
})

View File

@ -5,64 +5,61 @@
https://forum.minetest.net/viewtopic.php?f=9&t=19488 https://forum.minetest.net/viewtopic.php?f=9&t=19488
]] ]]
local S = minetest.get_translator("farming") local S = farming.intllib
-- seed
-- peppercorn (seed)
minetest.register_craftitem("farming:peppercorn", { minetest.register_craftitem("farming:peppercorn", {
description = S("Peppercorn"), description = S("Peppercorn"),
inventory_image = "crops_peppercorn.png", inventory_image = "crops_peppercorn.png",
groups = {compostability = 48, seed = 1, food_peppercorn = 1, flammable = 3}, groups = {seed = 1, food_peppercorn = 1, flammable = 3},
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:pepper_1") return farming.place_seed(itemstack, placer, pointed_thing, "farming:pepper_1")
end end,
}) })
-- green pepper -- green pepper
minetest.register_craftitem("farming:pepper", { minetest.register_craftitem("farming:pepper", {
description = S("Green Pepper"), description = S("Pepper"),
inventory_image = "crops_pepper.png", inventory_image = "crops_pepper.png",
on_use = minetest.item_eat(2), on_use = minetest.item_eat(2),
groups = {food_pepper = 1, compostability = 55} groups = {food_pepper = 1, flammable = 3},
}) })
farming.add_eatable("farming:pepper", 2)
-- yellow pepper
minetest.register_craftitem("farming:pepper_yellow", {
description = S("Yellow Pepper"),
inventory_image = "crops_pepper_yellow.png",
on_use = minetest.item_eat(3),
groups = {food_pepper = 1, compostability = 55}
})
farming.add_eatable("farming:pepper_yellow", 3)
-- red pepper
minetest.register_craftitem("farming:pepper_red", {
description = S("Red Pepper"),
inventory_image = "crops_pepper_red.png",
on_use = minetest.item_eat(4),
groups = {food_pepper = 1, compostability = 55}
})
farming.add_eatable("farming:pepper_red", 4)
-- pepper to peppercorn recipe
minetest.register_craft({ minetest.register_craft({
type = "shapeless",
output = "farming:peppercorn", output = "farming:peppercorn",
recipe = {{"group:food_pepper"}} recipe = {"farming:pepper"}
})
-- 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
},
sounds = default.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",
type = "shapeless",
recipe = {"group:food_peppercorn", "vessels:glass_bottle", "farming:mortar_pestle"},
replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}},
}) })
-- crop definition -- crop definition
local crop_def = {
local def = {
description = S("Pepper") .. S(" Crop"),
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"crops_pepper_plant_1.png"}, tiles = {"crops_pepper_plant_1.png"},
paramtype = "light", paramtype = "light",
@ -75,99 +72,44 @@ local def = {
drop = "", drop = "",
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 3, plant = 1, attached_node = 1, snappy = 3, flammable = 3, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:pepper_1", table.copy(crop_def))
minetest.register_node("farming:pepper_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"crops_pepper_plant_2.png"}
def.tiles = {"crops_pepper_plant_2.png"} minetest.register_node("farming:pepper_2", table.copy(crop_def))
minetest.register_node("farming:pepper_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"crops_pepper_plant_3.png"}
def.tiles = {"crops_pepper_plant_3.png"} minetest.register_node("farming:pepper_3", table.copy(crop_def))
minetest.register_node("farming:pepper_3", table.copy(def))
-- stage 4 -- stage 4
crop_def.tiles = {"crops_pepper_plant_4.png"}
minetest.register_node("farming:pepper_4", table.copy(crop_def))
def.tiles = {"crops_pepper_plant_4.png"} -- stage 5
minetest.register_node("farming:pepper_4", table.copy(def)) crop_def.tiles = {"crops_pepper_plant_5.png"}
crop_def.groups.growing = 0
-- stage 5 (green pepper) crop_def.drop = {
def.tiles = {"crops_pepper_plant_5.png"}
def.selection_box = farming.select_final
def.drop = {
max_items = 2, items = { max_items = 2, items = {
{items = {"farming:pepper 2"}, rarity = 1}, {items = {"farming:pepper 2"}, rarity = 1},
{items = {"farming:pepper"}, rarity = 2}, {items = {"farming:pepper"}, rarity = 2},
{items = {"farming:pepper"}, rarity = 3} {items = {"farming:pepper"}, rarity = 3},
} }
} }
minetest.register_node("farming:pepper_5", table.copy(def)) minetest.register_node("farming:pepper_5", table.copy(crop_def))
-- stage 6 (yellow pepper)
def.tiles = {"crops_pepper_plant_6.png"}
def.drop = {
max_items = 2, items = {
{items = {"farming:pepper_yellow 2"}, rarity = 1},
{items = {"farming:pepper_yellow"}, rarity = 2},
{items = {"farming:pepper_yellow"}, rarity = 3}
}
}
minetest.register_node("farming:pepper_6", table.copy(def))
-- stage 7 (red pepper - final)
def.tiles = {"crops_pepper_plant_7.png"}
def.groups.growing = nil
def.drop = {
max_items = 2, items = {
{items = {"farming:pepper_red 2"}, rarity = 1},
{items = {"farming:pepper_red"}, rarity = 2},
{items = {"farming:pepper_red"}, rarity = 3}
}
}
minetest.register_node("farming:pepper_7", table.copy(def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:pepper"] = { farming.registered_plants["farming:pepper"] = {
crop = "farming:pepper", crop = "farming:pepper",
seed = "farming:peppercorn", seed = "farming:peppercorn",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 5 steps = 5
} }
-- mapgen
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"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.pepper,
spread = {x = 100, y = 100, z = 100},
seed = 243,
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 35,
decoration = {"farming:pepper_5", "farming:pepper_6", "farming:pepper_7"},
spawn_by = "group:tree", num_spawn_by = 1
})

View File

@ -1,20 +1,17 @@
local S = minetest.get_translator("farming") local S = farming.intllib
-- seed
-- pineapple top
minetest.register_craftitem("farming:pineapple_top", { minetest.register_craftitem("farming:pineapple_top", {
description = S("Pineapple Top"), description = S("Pineapple Top"),
inventory_image = "farming_pineapple_top.png", inventory_image = "farming_pineapple_top.png",
groups = {compostability = 48, seed = 2, flammable = 2}, groups = {seed = 2, flammable = 2},
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:pineapple_1") return farming.place_seed(itemstack, placer, pointed_thing, "farming:pineapple_1")
end end,
}) })
-- item -- pineapple
minetest.register_node("farming:pineapple", { minetest.register_node("farming:pineapple", {
description = S("Pineapple"), description = S("Pineapple"),
drawtype = "plantlike", drawtype = "plantlike",
@ -25,20 +22,60 @@ minetest.register_node("farming:pineapple", {
sunlight_propagates = true, sunlight_propagates = true,
walkable = false, walkable = false,
selection_box = { 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 = { groups = {food_pineapple = 1, fleshy = 3, dig_immediate = 3, flammable = 2},
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},
on_use = minetest.item_eat(1),
})
minetest.register_craft( {
output = "farming:pineapple_ring 5",
type = "shapeless",
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},
})
minetest.register_craft({
output = "farming:pineapple_juice",
type = "shapeless",
recipe = {"vessels:drinking_glass", "group:food_pineapple_ring",
"group:food_pineapple_ring", "group:food_pineapple_ring",
"farming:juicer"},
replacements = {
{"group:food_juicer", "farming:juicer"},
},
})
minetest.register_craft({
output = "farming:pineapple_juice 2",
type = "shapeless",
recipe = {
"vessels:drinking_glass", "vessels:drinking_glass",
"group:food_pineapple", "farming:juicer"
},
replacements = {
{"group:food_juicer", "farming:juicer"},
}, },
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false
}) })
-- crop definition -- crop definition
local crop_def = {
local def = {
description = S("Pineapple") .. S(" Crop"),
drawtype = "plantlike", drawtype = "plantlike",
visual_scale = 1.5, visual_scale = 1.5,
tiles = {"farming_pineapple_1.png"}, tiles = {"farming_pineapple_1.png"},
@ -47,97 +84,57 @@ local def = {
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
drop = "", drop = "",
waving = 1,
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:pineapple_1", table.copy(crop_def))
minetest.register_node("farming:pineapple_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"farming_pineapple_2.png"}
def.tiles = {"farming_pineapple_2.png"} minetest.register_node("farming:pineapple_2", table.copy(crop_def))
minetest.register_node("farming:pineapple_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_pineapple_3.png"}
def.tiles = {"farming_pineapple_3.png"} minetest.register_node("farming:pineapple_3", table.copy(crop_def))
minetest.register_node("farming:pineapple_3", table.copy(def))
-- stage 4 -- stage 4
crop_def.tiles = {"farming_pineapple_4.png"}
def.tiles = {"farming_pineapple_4.png"} minetest.register_node("farming:pineapple_4", table.copy(crop_def))
minetest.register_node("farming:pineapple_4", table.copy(def))
-- stage 5 -- stage 5
crop_def.tiles = {"farming_pineapple_5.png"}
def.tiles = {"farming_pineapple_5.png"} minetest.register_node("farming:pineapple_5", table.copy(crop_def))
minetest.register_node("farming:pineapple_5", table.copy(def))
-- stage 6 -- stage 6
crop_def.tiles = {"farming_pineapple_6.png"}
def.tiles = {"farming_pineapple_6.png"} minetest.register_node("farming:pineapple_6", table.copy(crop_def))
minetest.register_node("farming:pineapple_6", table.copy(def))
-- stage 7 -- stage 7
crop_def.tiles = {"farming_pineapple_7.png"}
def.tiles = {"farming_pineapple_7.png"} minetest.register_node("farming:pineapple_7", table.copy(crop_def))
minetest.register_node("farming:pineapple_7", table.copy(def))
-- stage 8 (final) -- stage 8 (final)
crop_def.tiles = {"farming_pineapple_8.png"}
def.tiles = {"farming_pineapple_8.png"} crop_def.groups.growing = 0
def.groups.growing = nil crop_def.drop = {
def.selection_box = farming.select_final
def.drop = {
items = { items = {
{items = {"farming:pineapple"}, rarity = 1}, {items = {"farming:pineapple"}, rarity = 1},
{items = {"farming:pineapple"}, rarity = 2} {items = {"farming:pineapple"}, rarity = 15},
} }
} }
minetest.register_node("farming:pineapple_8", table.copy(def)) minetest.register_node("farming:pineapple_8", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:pineapple"] = { farming.registered_plants["farming:pineapple"] = {
crop = "farming:pineapple", crop = "farming:pineapple",
seed = "farming:pineapple_top", seed = "farming:pineapple_top",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 8 steps = 8
} }
-- mapgen
local spawn_on = {
"default:dirt_with_dry_grass", "default:dry_dirt_with_dry_grass",
"mcl_core:dirt_with_grass"
}
if farming.mapgen == "v6" then
spawn_on = {"default:dirt_with_grass"}
end
minetest.register_decoration({
deco_type = "simple",
place_on = spawn_on,
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.pineapple,
spread = {x = 100, y = 100, z = 100},
seed = 354,
octaves = 3,
persist = 0.6
},
y_min = 11, y_max = 30,
decoration = "farming:pineapple_8"
})

View File

@ -4,39 +4,60 @@
https://forum.minetest.net/viewtopic.php?id=3948 https://forum.minetest.net/viewtopic.php?id=3948
]] ]]
local S = minetest.get_translator("farming") local S = farming.intllib
-- item/seed
-- potato
minetest.register_craftitem("farming:potato", { minetest.register_craftitem("farming:potato", {
description = S("Potato"), description = S("Potato"),
inventory_image = "farming_potato.png", inventory_image = "farming_potato.png",
groups = {compostability = 48, seed = 2, food_potato = 1}, groups = {seed = 2, food_potato = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:potato_1") return farming.place_seed(itemstack, placer, pointed_thing, "farming:potato_1")
end, end,
-- on_use = minetest.item_eat(1),
-- 1 in 3 chance of being poisoned
on_use = function(itemstack, user, pointed_thing) on_use = function(itemstack, user, pointed_thing)
if user then if user then
if math.random(1, 3) == 1 then
if math.random(3) == 1 then
return minetest.do_item_eat(-1, nil, itemstack, user, pointed_thing) return minetest.do_item_eat(-1, nil, itemstack, user, pointed_thing)
else else
return minetest.do_item_eat(1, nil, itemstack, user, pointed_thing) return minetest.do_item_eat(1, nil, itemstack, user, pointed_thing)
end end
end 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"
})
local def = { -- Potato and cucumber Salad
description = S("Potato") .. S(" Crop"), 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 crop_def = {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_potato_1.png"}, tiles = {"farming_potato_1.png"},
paramtype = "light", paramtype = "light",
@ -47,74 +68,45 @@ local def = {
drop = "", drop = "",
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:potato_1", table.copy(crop_def))
minetest.register_node("farming:potato_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"farming_potato_2.png"}
def.tiles = {"farming_potato_2.png"} minetest.register_node("farming:potato_2", table.copy(crop_def))
minetest.register_node("farming:potato_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_potato_3.png"}
def.tiles = {"farming_potato_3.png"} crop_def.drop = {
def.drop = {
items = { items = {
{items = {"farming:potato"}, rarity = 1}, {items = {"farming:potato"}, rarity = 1},
{items = {"farming:potato"}, rarity = 3} {items = {"farming:potato"}, rarity = 3},
} }
} }
minetest.register_node("farming:potato_3", table.copy(def)) minetest.register_node("farming:potato_3", table.copy(crop_def))
-- stage 4 (final) -- stage 4
crop_def.tiles = {"farming_potato_4.png"}
def.tiles = {"farming_potato_4.png"} crop_def.groups.growing = 0
def.groups.growing = nil crop_def.drop = {
def.selection_box = farming.select_final
def.drop = {
items = { items = {
{items = {"farming:potato 2"}, rarity = 1}, {items = {"farming:potato 2"}, rarity = 1},
{items = {"farming:potato 3"}, rarity = 2} {items = {"farming:potato 3"}, rarity = 2},
} }
} }
minetest.register_node("farming:potato_4", table.copy(def)) minetest.register_node("farming:potato_4", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:potato"] = { farming.registered_plants["farming:potato"] = {
crop = "farming:potato", crop = "farming:potato",
seed = "farming:potato", seed = "farming:potato",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 4 steps = 4
} }
-- mapgen
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"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.potato,
spread = {x = 100, y = 100, z = 100},
seed = 465,
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 40,
decoration = "farming:potato_3"
})

View File

@ -1,25 +1,146 @@
local S = minetest.get_translator("farming") --[[
Big thanks to PainterlyPack.net for allowing me to use these textures
]]
-- seed local S = farming.intllib
-- pumpkin slice
minetest.register_craftitem("farming:pumpkin_slice", { minetest.register_craftitem("farming:pumpkin_slice", {
description = S("Pumpkin Slice"), description = S("Pumpkin Slice"),
inventory_image = "farming_pumpkin_slice.png", inventory_image = "farming_pumpkin_slice.png",
groups = {compostability = 48, seed = 2, food_pumpkin_slice = 1}, groups = {seed = 2, food_pumpkin_slice = 1, flammable = 2},
on_use = minetest.item_eat(2),
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:pumpkin_1") return farming.place_seed(itemstack, placer, pointed_thing, "farming:pumpkin_1")
end end,
on_use = minetest.item_eat(2),
}) })
farming.add_eatable("farming:pumpkin_slice", 2) minetest.register_craft({
output = "farming:pumpkin",
recipe = {
{"farming:pumpkin_slice", "farming:pumpkin_slice"},
{"farming:pumpkin_slice", "farming:pumpkin_slice"},
}
})
-- crop definition minetest.register_craft({
type = "shapeless",
output = "farming:pumpkin_slice 4",
recipe = {"farming:pumpkin", "farming:cutting_board"},
replacements = {{"farming:cutting_board", "farming:cutting_board"}},
})
local def = { -- jack 'o lantern
description = S("Pumpkin") .. S(" Crop"), minetest.register_node("farming:jackolantern", {
description = S("Jack 'O Lantern (punch to turn on and off)"),
tiles = {
"farming_pumpkin_top.png",
"farming_pumpkin_top.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png",
"farming_pumpkin_face_off.png"
},
paramtype2 = "facedir",
groups = {choppy = 1, oddly_breakable_by_hand = 1, flammable = 2},
sounds = default.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,
})
minetest.register_node("farming:jackolantern_on", {
tiles = {
"farming_pumpkin_top.png",
"farming_pumpkin_top.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png",
"farming_pumpkin_face_on.png"
},
light_source = default.LIGHT_MAX - 1,
paramtype2 = "facedir",
groups = {
choppy = 1, oddly_breakable_by_hand = 1, flammable = 2,
not_in_creative_inventory = 1
},
sounds = default.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,
})
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 = {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",
type = "shapeless",
recipe = {"group:food_flour", "group:food_pumpkin_slice", "group:food_pumpkin_slice"}
})
minetest.register_craft({
type = "cooking",
output = "farming:pumpkin_bread",
recipe = "farming:pumpkin_dough",
cooktime = 10
})
-- pumpkin definition
local crop_def = {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_pumpkin_1.png"}, tiles = {"farming_pumpkin_1.png"},
paramtype = "light", paramtype = "light",
@ -30,100 +151,73 @@ local def = {
drop = "", drop = "",
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:pumpkin_1", table.copy(crop_def))
minetest.register_node("farming:pumpkin_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"farming_pumpkin_2.png"}
def.tiles = {"farming_pumpkin_2.png"} minetest.register_node("farming:pumpkin_2", table.copy(crop_def))
minetest.register_node("farming:pumpkin_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_pumpkin_3.png"}
def.tiles = {"farming_pumpkin_3.png"} minetest.register_node("farming:pumpkin_3", table.copy(crop_def))
minetest.register_node("farming:pumpkin_3", table.copy(def))
-- stage 4 -- stage 4
crop_def.tiles = {"farming_pumpkin_4.png"}
def.tiles = {"farming_pumpkin_4.png"} minetest.register_node("farming:pumpkin_4", table.copy(crop_def))
minetest.register_node("farming:pumpkin_4", table.copy(def))
-- stage 5 -- stage 5
crop_def.tiles = {"farming_pumpkin_5.png"}
def.tiles = {"farming_pumpkin_5.png"} minetest.register_node("farming:pumpkin_5", table.copy(crop_def))
minetest.register_node("farming:pumpkin_5", table.copy(def))
-- stage 6 -- stage 6
crop_def.tiles = {"farming_pumpkin_6.png"}
def.tiles = {"farming_pumpkin_6.png"} minetest.register_node("farming:pumpkin_6", table.copy(crop_def))
minetest.register_node("farming:pumpkin_6", table.copy(def))
-- stage 7 -- stage 7
crop_def.tiles = {"farming_pumpkin_7.png"}
def.tiles = {"farming_pumpkin_7.png"} minetest.register_node("farming:pumpkin_7", table.copy(crop_def))
minetest.register_node("farming:pumpkin_7", table.copy(def))
-- stage 8 (final) -- stage 8 (final)
--[[
crop_def.tiles = {"farming_pumpkin_8.png"}
crop_def.groups.growing = 0
crop_def.drop = {
items = {
{items = {"farming:pumpkin_slice 9"}, rarity = 1},
}
}
minetest.register_node("farming:pumpkin_8", table.copy(crop_def))
]]
minetest.register_node("farming:pumpkin_8", { minetest.register_node("farming:pumpkin_8", {
description = S("Pumpkin"), description = S("Pumpkin"),
tiles = { tiles = {
"farming_pumpkin_bottom.png^farming_pumpkin_top.png", "farming_pumpkin_top.png",
"farming_pumpkin_bottom.png", "farming_pumpkin_top.png",
"farming_pumpkin_side.png" "farming_pumpkin_side.png"
}, },
groups = { groups = {
food_pumpkin = 1, snappy = 3, choppy = 3, oddly_breakable_by_hand = 2, food_pumpkin = 1, choppy = 2, oddly_breakable_by_hand = 1,
flammable = 2, plant = 1, handy = 1 flammable = 2, plant = 1
}, },
is_ground_content = false,
drop = "farming:pumpkin_8", drop = "farming:pumpkin_8",
sounds = farming.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
paramtype2 = "facedir",
on_place = minetest.rotate_node,
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
}) })
minetest.register_alias("farming:pumpkin", "farming:pumpkin_8") minetest.register_alias("farming:pumpkin", "farming:pumpkin_8")
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:pumpkin"] = { farming.registered_plants["farming:pumpkin"] = {
crop = "farming:pumpkin", crop = "farming:pumpkin",
seed = "farming:pumpkin_slice", seed = "farming:pumpkin_slice",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 8 steps = 8
} }
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "default:dirt_with_rainforest_litter",
"mcl_core:dirt_with_grass"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.pumpkin,
spread = {x = 100, y = 100, z = 100},
seed = 576,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 3,
decoration = "farming:pumpkin_8",
spawn_by = {"group:water", "group:sand"}, num_spawn_by = 1
})

View File

@ -1,28 +1,37 @@
local S = minetest.get_translator("farming") local S = farming.intllib
-- item/seed
-- raspberries
minetest.register_craftitem("farming:raspberries", { minetest.register_craftitem("farming:raspberries", {
description = S("Raspberries"), description = S("Raspberries"),
inventory_image = "farming_raspberries.png", inventory_image = "farming_raspberries.png",
groups = { groups = {seed = 2, food_raspberries = 1, food_raspberry = 1,
compostability = 48, seed = 2, food_raspberries = 1, food_raspberry = 1, food_berry = 1, flammable = 2},
food_berry = 1
},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:raspberry_1") 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},
})
-- crop definition minetest.register_craft({
output = "farming:smoothie_raspberry",
recipe = {
{"default:snow"},
{"group:food_raspberries"},
{"vessels:drinking_glass"},
}
})
local def = { -- raspberries definition
description = S("Raspberry") .. S(" Crop"), local crop_def = {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_raspberry_1.png"}, tiles = {"farming_raspberry_1.png"},
paramtype = "light", paramtype = "light",
@ -32,68 +41,40 @@ local def = {
drop = "", drop = "",
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:raspberry_1", table.copy(crop_def))
minetest.register_node("farming:raspberry_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"farming_raspberry_2.png"}
def.tiles = {"farming_raspberry_2.png"} minetest.register_node("farming:raspberry_2", table.copy(crop_def))
minetest.register_node("farming:raspberry_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_raspberry_3.png"}
def.tiles = {"farming_raspberry_3.png"} minetest.register_node("farming:raspberry_3", table.copy(crop_def))
minetest.register_node("farming:raspberry_3", table.copy(def))
-- stage 4 (final) -- stage 4 (final)
crop_def.tiles = {"farming_raspberry_4.png"}
def.tiles = {"farming_raspberry_4.png"} crop_def.groups.growing = 0
def.groups.growing = nil crop_def.drop = {
def.selection_box = farming.select_final
def.drop = {
items = { items = {
{items = {"farming:raspberries 2"}, rarity = 1}, {items = {"farming:raspberries 2"}, rarity = 1},
{items = {"farming:raspberries"}, rarity = 2}, {items = {"farming:raspberries"}, rarity = 2},
{items = {"farming:raspberries"}, rarity = 3} {items = {"farming:raspberries"}, rarity = 3},
} }
} }
minetest.register_node("farming:raspberry_4", table.copy(def)) minetest.register_node("farming:raspberry_4", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:raspberries"] = { farming.registered_plants["farming:raspberries"] = {
crop = "farming:raspberry", crop = "farming:raspberry",
seed = "farming:raspberries", seed = "farming:raspberries",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 4 steps = 4
} }
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.raspberry,
spread = {x = 100, y = 100, z = 100},
seed = 687,
octaves = 3,
persist = 0.6
},
y_min = 3, y_max = 15,
decoration = "farming:raspberry_4"
})

View File

@ -1,25 +1,36 @@
local S = minetest.get_translator("farming") local S = farming.intllib
-- item/seed
-- rhubarb
minetest.register_craftitem("farming:rhubarb", { minetest.register_craftitem("farming:rhubarb", {
description = S("Rhubarb"), description = S("Rhubarb"),
inventory_image = "farming_rhubarb.png", inventory_image = "farming_rhubarb.png",
groups = {compostability = 48, seed = 2, food_rhubarb = 1}, groups = {seed = 2, food_rhubarb = 1, flammable = 2},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:rhubarb_1") 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),
})
-- crop definition minetest.register_craft({
output = "farming:rhubarb_pie",
recipe = {
{"farming: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"}}
})
local def = { -- rhubarb definition
description = S("Rhubarb") .. S(" Crop"), local crop_def = {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_rhubarb_1.png"}, tiles = {"farming_rhubarb_1.png"},
paramtype = "light", paramtype = "light",
@ -27,78 +38,38 @@ local def = {
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
drop = "", drop = "",
waving = 1,
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults(),
minlight = 10,
maxlight = 12
} }
-- stage 1 -- stage 1
minetest.register_node("farming:rhubarb_1", table.copy(crop_def))
minetest.register_node("farming:rhubarb_1", table.copy(def))
-- stage2 -- stage2
crop_def.tiles = {"farming_rhubarb_2.png"}
minetest.register_node("farming:rhubarb_2", table.copy(crop_def))
def.tiles = {"farming_rhubarb_2.png"} -- stage 3 (final)
minetest.register_node("farming:rhubarb_2", table.copy(def)) crop_def.tiles = {"farming_rhubarb_3.png"}
crop_def.groups.growing = 0
-- stage3 crop_def.drop = {
def.tiles = {"farming_rhubarb_3.png"}
def.drop = {
items = { items = {
{items = {"farming:rhubarb"}, rarity = 1}, {items = {"farming:rhubarb 2"}, rarity = 1},
}
}
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
def.drop = {
items = {
{items = {"farming:rhubarb 2"}, rarity = 1},
{items = {"farming:rhubarb"}, rarity = 2}, {items = {"farming:rhubarb"}, rarity = 2},
{items = {"farming:rhubarb"}, rarity = 3} {items = {"farming:rhubarb"}, rarity = 3},
} }
} }
minetest.register_node("farming:rhubarb_4", table.copy(def)) minetest.register_node("farming:rhubarb_3", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:rhubarb"] = { farming.registered_plants["farming:rhubarb"] = {
crop = "farming:rhubarb", crop = "farming:rhubarb",
seed = "farming:rhubarb", seed = "farming:rhubarb",
minlight = 10, minlight = 13,
maxlight = 12, maxlight = 15,
steps = 4 steps = 3
} }
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.rhubarb,
spread = {x = 100, y = 100, z = 100},
seed = 798,
octaves = 3,
persist = 0.6
},
y_min = 3, y_max = 20,
decoration = "farming:rhubarb_3"
})

View File

@ -1,148 +0,0 @@
local S = minetest.get_translator("farming")
-- rice seed
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,
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)
minetest.set_node(pos, {name = "farming:rice_1", param2 = 3})
end
})
-- rice item
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
minetest.register_craft({
type = "cooking",
cooktime = 1,
output = "farming:rice",
recipe = "farming:seed_rice"
})
-- crop definition
local def = {
description = S("Rice") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_rice_1.png"},
paramtype = "light",
paramtype2 = "meshoptions",
place_param2 = 3,
sunlight_propagates = true,
walkable = false,
buildable_to = true,
drop = "",
waving = 1,
selection_box = farming.select,
groups = {
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()
}
-- stage 1
minetest.register_node("farming:rice_1", table.copy(def))
-- stage 2
def.tiles = {"farming_rice_2.png"}
minetest.register_node("farming:rice_2", table.copy(def))
-- stage 3
def.tiles = {"farming_rice_3.png"}
minetest.register_node("farming:rice_3", table.copy(def))
-- stage 4
def.tiles = {"farming_rice_4.png"}
minetest.register_node("farming:rice_4", table.copy(def))
-- stage 5
def.tiles = {"farming_rice_5.png"}
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:rice"}, rarity = 2}
}
}
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}
}
}
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 2"}, rarity = 2},
{items = {"farming:seed_rice"}, rarity = 3}
}
}
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",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 8
}

View File

@ -1,50 +0,0 @@
local S = minetest.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
minetest.override_item("farming:rye", {
description = S("Rye"),
groups = {food_rye = 1, flammable = 4, compostability = 65}
})
-- override rye crop
minetest.override_item("farming:rye_1", {drop = {}})
minetest.override_item("farming:rye_2", {drop = {}})
minetest.override_item("farming:rye_3", {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
minetest.override_item("farming:oat", {
description = S("Oats"),
groups = {food_oats = 1, flammable = 4, compostability = 65}
})
-- override oat crop
minetest.override_item("farming:oat_1", {drop = {}})
minetest.override_item("farming:oat_2", {drop = {}})
minetest.override_item("farming:oat_3", {drop = {}})

165
crops/ryeoatrice.lua Normal file
View File

@ -0,0 +1,165 @@
local S = farming.intllib
--= 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}
})
minetest.register_craft({
type = "shapeless",
output = "farming:flour",
recipe = {
"farming:rye", "farming:rye", "farming:rye", "farming:rye",
"farming: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}
})
minetest.register_craft({
type = "shapeless",
output = "farming:flour",
recipe = {
"farming:oat", "farming:oat", "farming:oat", "farming:oat",
"farming:mortar_pestle"
},
replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}},
})
-- Rice
farming.register_plant("farming:rice", {
description = S("Rice grains"),
paramtype2 = "meshoptions",
inventory_image = "farming_rice_seed.png",
steps = 8,
place_param2 = 3,
})
minetest.override_item("farming:rice", {
description = S("Rice"),
groups = {food_rice = 1, flammable = 4}
})
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},
})
minetest.register_craftitem("farming:rice_flour", {
description = S("Rice Flour"),
inventory_image = "farming_rice_flour.png",
groups = {food_rice_flour = 1, flammable = 1},
})
minetest.register_craft({
type = "shapeless",
output = "farming:rice_flour",
recipe = {
"farming:rice", "farming:rice", "farming:rice", "farming:rice",
"farming: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"
})
-- 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 = {
"farming:wheat", "farming:barley", "farming:oat",
"farming:rye", "farming: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},
})
minetest.register_craft({
type = "cooking",
cooktime = 15,
output = "farming:bread_multigrain",
recipe = "farming:flour_multigrain"
})
-- Fuels
minetest.register_craft({
type = "fuel",
recipe = "farming:rice_bread",
burntime = 1,
})
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,
})
minetest.register_craft({
type = "fuel",
recipe = "farming:rice",
burntime = 1,
})

View File

@ -1,131 +0,0 @@
local S = minetest.get_translator("farming")
-- item/seed
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")
-- crop definition
local def = {
description = S("Soy") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_soy_1.png"},
paramtype = "light",
paramtype2 = "meshoptions",
place_param2 = 3,
sunlight_propagates = true,
waving = 1,
walkable = false,
buildable_to = true,
drop = "",
selection_box = farming.select,
groups = {
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()
}
-- stage 1
minetest.register_node("farming:soy_1", table.copy(def))
-- stage 2
def.tiles = {"farming_soy_2.png"}
minetest.register_node("farming:soy_2", table.copy(def))
-- stage 3
def.tiles = {"farming_soy_3.png"}
minetest.register_node("farming:soy_3", table.copy(def))
-- stage 4
def.tiles = {"farming_soy_4.png"}
minetest.register_node("farming:soy_4", table.copy(def))
-- stage 5
def.tiles = {"farming_soy_5.png"}
def.drop = {
max_items = 1, items = {
{items = {"farming:soy_pod"}, rarity = 1},
}
}
minetest.register_node("farming:soy_5", table.copy(def))
-- stage 6
def.tiles = {"farming_soy_6.png"}
def.drop = {
max_items = 3, items = {
{items = {"farming:soy_pod"}, rarity = 1},
{items = {"farming:soy_pod"}, rarity = 2},
{items = {"farming:soy_pod"}, rarity = 3}
}
}
minetest.register_node("farming:soy_6", table.copy(def))
-- stage 7 (final)
def.tiles = {"farming_soy_7.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
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 = 5}
}
}
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",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 7
}
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "default:dirt_with_dry_grass",
"default:dirt_with_rainforest_litter", "default:dry_dirt_with_dry_grass",
"mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.soy,
spread = {x = 100, y = 100, z = 100},
seed = 809,
octaves = 3,
persist = 0.6
},
y_min = 20, y_max = 50,
decoration = "farming:soy_5"
})

View File

@ -1,102 +0,0 @@
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:spinach", {
description = S("Spinach"),
inventory_image = "farming_spinach.png",
groups = {compostability = 48, seed = 2, food_spinach = 1},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:spinach_1")
end
})
farming.add_eatable("farming:spinach", 1)
-- crop definition
local def = {
description = S("Spinach") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_spinach_1.png"},
paramtype = "light",
sunlight_propagates = true,
waving = 1,
walkable = false,
buildable_to = true,
drop = "",
selection_box = farming.select,
groups = {
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()
}
-- stage 1
minetest.register_node("farming:spinach_1", table.copy(def))
-- stage 2
def.tiles = {"farming_spinach_2.png"}
minetest.register_node("farming:spinach_2", table.copy(def))
-- stage 3
def.tiles = {"farming_spinach_3.png"}
def.drop = {
items = {
{items = {"farming:spinach"}, rarity = 1},
{items = {"farming:spinach"}, rarity = 3}
}
}
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 2"}, rarity = 2},
{items = {"farming:spinach 2"}, rarity = 3}
}
}
minetest.register_node("farming:spinach_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:spinach"] = {
crop = "farming:spinach",
seed = "farming:spinach",
minlight = 7,
maxlight = farming.max_light,
steps = 4
}
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
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_4",
param2 = 3
})

View File

@ -1,131 +0,0 @@
local S = minetest.get_translator("farming")
-- item/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 = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "ethereal:strawberry_1")
end,
})
farming.add_eatable("ethereal:strawberry", 1)
-- crop definition
local def = {
description = S("Strawberry") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"ethereal_strawberry_1.png"},
paramtype = "light",
sunlight_propagates = true,
waving = 1,
walkable = false,
buildable_to = true,
drop = "",
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}
},
groups = {
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()
}
--stage 1
minetest.register_node(":ethereal:strawberry_1", table.copy(def))
-- stage 2
def.tiles = {"ethereal_strawberry_2.png"}
minetest.register_node(":ethereal:strawberry_2", table.copy(def))
-- stage 3
def.tiles = {"ethereal_strawberry_3.png"}
minetest.register_node(":ethereal:strawberry_3", table.copy(def))
-- stage 4
def.tiles = {"ethereal_strawberry_4.png"}
minetest.register_node(":ethereal:strawberry_4", table.copy(def))
-- stage 5
def.tiles = {"ethereal_strawberry_5.png"}
minetest.register_node(":ethereal:strawberry_5", table.copy(def))
-- stage 6
def.tiles = {"ethereal_strawberry_6.png"}
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 1"}, rarity = 1},
{items = {"ethereal:strawberry 2"}, rarity = 3}
}
}
minetest.register_node(":ethereal:strawberry_7", table.copy(def))
-- stage 8 (final)
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 3"}, rarity = 3}
}
}
minetest.register_node(":ethereal:strawberry_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["ethereal:strawberry"] = {
crop = "ethereal:strawberry",
seed = "ethereal:strawberry",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 8
}
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.strawberry,
spread = {x = 100, y = 100, z = 100},
seed = 143,
octaves = 3,
persist = 0.6
},
y_min = 15, y_max = 55,
decoration = "ethereal:strawberry_7"
})

View File

@ -1,149 +0,0 @@
local S = minetest.get_translator("farming")
-- seed
minetest.register_node("farming:seed_sunflower", {
description = S("Sunflower Seeds"),
tiles = {"farming_sunflower_seeds.png"},
inventory_image = "farming_sunflower_seeds.png",
wield_image = "farming_sunflower_seeds.png",
drawtype = "signlike",
groups = {
compostability = 48, seed = 1, snappy = 3, attached_node = 1, growing = 1,
handy = 1, 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)
minetest.set_node(pos, {name = "farming:sunflower_1", param2 = 1})
end
})
minetest.register_alias("farming:sunflower_seeds", "farming:seed_sunflower")
-- item
minetest.register_craftitem("farming:sunflower", {
description = S("Sunflower"),
inventory_image = "farming_sunflower.png",
groups = {flammable = 2}
})
-- turn item into seeds
minetest.register_craft({
output = "farming:seed_sunflower 5",
recipe = {{"farming:sunflower"}}
})
-- crop definition
local def = {
description = S("Sunflower") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_sunflower_1.png"},
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
drop = "",
waving = 1,
selection_box = farming.select,
groups = {
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()
}
-- stage 1
minetest.register_node("farming:sunflower_1", table.copy(def))
-- stage 2
def.tiles = {"farming_sunflower_2.png"}
minetest.register_node("farming:sunflower_2", table.copy(def))
-- stage 3
def.tiles = {"farming_sunflower_3.png"}
minetest.register_node("farming:sunflower_3", table.copy(def))
-- stage 4
def.tiles = {"farming_sunflower_4.png"}
minetest.register_node("farming:sunflower_4", table.copy(def))
-- stage 5
def.tiles = {"farming_sunflower_5.png"}
minetest.register_node("farming:sunflower_5", table.copy(def))
-- stage 6
def.tiles = {"farming_sunflower_6.png"}
def.visual_scale = 1.9
minetest.register_node("farming:sunflower_6", table.copy(def))
-- stage 7
def.tiles = {"farming_sunflower_7.png"}
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
def.drop = {
items = {
{items = {"farming:sunflower"}, rarity = 1},
{items = {"farming:sunflower"}, rarity = 6}
}
}
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",
minlight = 14,
maxlight = farming.max_light,
steps = 8
}
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.sunflower,
spread = {x = 100, y = 100, z = 100},
seed = 254,
octaves = 3,
persist = 0.6
},
y_min = 10, y_max = 40,
decoration = "farming:sunflower_8"
})

View File

@ -4,27 +4,21 @@
http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1288375-food-plus-mod-more-food-than-you-can-imagine-v2-9) http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1288375-food-plus-mod-more-food-than-you-can-imagine-v2-9)
]] ]]
local S = minetest.get_translator("farming") local S = farming.intllib
-- item/seed
-- tomato
minetest.register_craftitem("farming:tomato", { minetest.register_craftitem("farming:tomato", {
description = S("Tomato"), description = S("Tomato"),
inventory_image = "farming_tomato.png", inventory_image = "farming_tomato.png",
groups = {compostability = 45, seed = 2, food_tomato = 1}, groups = {seed = 2, food_tomato = 1, flammable = 2},
on_use = minetest.item_eat(4),
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:tomato_1") 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 definition
local crop_def = {
-- crop definition
local def = {
description = S("Tomato") .. S(" Crop"),
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_tomato_1.png"}, tiles = {"farming_tomato_1.png"},
paramtype = "light", paramtype = "light",
@ -32,97 +26,63 @@ local def = {
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
drop = "", drop = "",
waving = 1,
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:tomato_1", table.copy(crop_def))
minetest.register_node("farming:tomato_1", table.copy(def))
-- stage2 -- stage2
crop_def.tiles = {"farming_tomato_2.png"}
def.tiles = {"farming_tomato_2.png"} minetest.register_node("farming:tomato_2", table.copy(crop_def))
minetest.register_node("farming:tomato_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_tomato_3.png"}
def.tiles = {"farming_tomato_3.png"} minetest.register_node("farming:tomato_3", table.copy(crop_def))
minetest.register_node("farming:tomato_3", table.copy(def))
-- stage 4 -- stage 4
crop_def.tiles = {"farming_tomato_4.png"}
def.tiles = {"farming_tomato_4.png"} minetest.register_node("farming:tomato_4", table.copy(crop_def))
minetest.register_node("farming:tomato_4", table.copy(def))
-- stage 5 -- stage 5
crop_def.tiles = {"farming_tomato_5.png"}
def.tiles = {"farming_tomato_5.png"} minetest.register_node("farming:tomato_5", table.copy(crop_def))
minetest.register_node("farming:tomato_5", table.copy(def))
-- stage 6 -- stage 6
crop_def.tiles = {"farming_tomato_6.png"}
def.tiles = {"farming_tomato_6.png"} minetest.register_node("farming:tomato_6", table.copy(crop_def))
minetest.register_node("farming:tomato_6", table.copy(def))
-- stage 7 -- stage 7
crop_def.tiles = {"farming_tomato_7.png"}
def.tiles = {"farming_tomato_7.png"} crop_def.drop = {
def.drop = {
items = { items = {
{items = {"farming:tomato"}, rarity = 1}, {items = {"farming:tomato"}, rarity = 1},
{items = {"farming:tomato"}, rarity = 3} {items = {"farming:tomato"}, rarity = 3},
} }
} }
minetest.register_node("farming:tomato_7", table.copy(def)) minetest.register_node("farming:tomato_7", table.copy(crop_def))
-- stage 8 (final) -- stage 8 (final)
crop_def.tiles = {"farming_tomato_8.png"}
def.tiles = {"farming_tomato_8.png"} crop_def.groups.growing = 0
def.groups.growing = nil crop_def.drop = {
def.selection_box = farming.select_final
def.drop = {
items = { items = {
{items = {"farming:tomato 3"}, rarity = 1}, {items = {"farming:tomato 3"}, rarity = 1},
{items = {"farming:tomato 2"}, rarity = 2}, {items = {"farming:tomato 3"}, rarity = 2},
{items = {"farming:tomato 1"}, rarity = 3}
} }
} }
minetest.register_node("farming:tomato_8", table.copy(def)) minetest.register_node("farming:tomato_8", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:tomato"] = { farming.registered_plants["farming:tomato"] = {
crop = "farming:tomato", crop = "farming:tomato",
seed = "farming:tomato", seed = "farming:tomato",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 8 steps = 8
} }
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.tomato,
spread = {x = 100, y = 100, z = 100},
seed = 365,
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 25,
decoration = "farming:tomato_7"
})

View File

@ -1,126 +0,0 @@
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:vanilla", {
description = S("Vanilla"),
inventory_image = "farming_vanilla.png",
groups = {compostability = 48, seed = 2, food_vanilla = 1},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:vanilla_1")
end
})
farming.add_eatable("farming:vanilla", 1)
-- crop definition
local def = {
description = S("Vanilla") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_vanilla_1.png"},
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
drop = "",
waving = 1,
selection_box = farming.select,
groups = {
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()
}
-- stage 1
minetest.register_node("farming:vanilla_1", table.copy(def))
-- stage 2
def.tiles = {"farming_vanilla_2.png"}
minetest.register_node("farming:vanilla_2", table.copy(def))
-- stage 3
def.tiles = {"farming_vanilla_3.png"}
minetest.register_node("farming:vanilla_3", table.copy(def))
-- stage 4
def.tiles = {"farming_vanilla_4.png"}
minetest.register_node("farming:vanilla_4", table.copy(def))
-- stage 5
def.tiles = {"farming_vanilla_5.png"}
minetest.register_node("farming:vanilla_5", table.copy(def))
-- stage 6
def.tiles = {"farming_vanilla_6.png"}
def.visual_scale = 1.9
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}
}
}
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 2"}, rarity = 2},
{items = {"farming:vanilla 2"}, rarity = 2},
{items = {"farming:vanilla 2"}, rarity = 3}
}
}
minetest.register_node("farming:vanilla_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:vanilla"] = {
crop = "farming:vanilla",
seed = "farming:vanilla",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 8
}
-- mapgen
minetest.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:grove_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.vanilla,
spread = {x = 100, y = 100, z = 100},
seed = 476,
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 35,
decoration = "farming:vanilla_7"
})

View File

@ -1,47 +1,158 @@
local S = minetest.get_translator("farming") local S = farming.intllib
-- seed
-- wheat seeds
minetest.register_node("farming:seed_wheat", { minetest.register_node("farming:seed_wheat", {
description = S("Wheat Seed"), description = S("Wheat Seed"),
tiles = {"farming_wheat_seed.png"}, tiles = {"farming_wheat_seed.png"},
inventory_image = "farming_wheat_seed.png", inventory_image = "farming_wheat_seed.png",
wield_image = "farming_wheat_seed.png", wield_image = "farming_wheat_seed.png",
drawtype = "signlike", drawtype = "signlike",
groups = { groups = {seed = 1, snappy = 3, attached_node = 1, flammable = 4},
handy = 1, seed = 1, snappy = 3, attached_node = 1, flammable = 4, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
paramtype = "light", paramtype = "light",
paramtype2 = "wallmounted", paramtype2 = "wallmounted",
walkable = false, walkable = false,
sunlight_propagates = true, sunlight_propagates = true,
selection_box = farming.select, selection_box = farming.select,
next_plant = "farming:wheat_1",
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_wheat") return farming.place_seed(itemstack, placer, pointed_thing, "farming:wheat_1")
end, end,
on_timer = function(pos, elapsed)
minetest.set_node(pos, {name = "farming:wheat_1", param2 = 3})
end
}) })
-- item -- harvested wheat
minetest.register_craftitem("farming:wheat", { minetest.register_craftitem("farming:wheat", {
description = S("Wheat"), description = S("Wheat"),
inventory_image = "farming_wheat.png", inventory_image = "farming_wheat.png",
groups = {food_wheat = 1, flammable = 4} 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 = default.node_sound_leaves_defaults(),
})
local def = { minetest.register_craft({
description = S("Wheat") .. S(" Crop"), 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",
default.node_sound_leaves_defaults())
else
stairs.register_stair_and_slab("straw", "farming:straw",
{snappy = 3, flammable = 4},
{"farming_straw.png"},
"Straw Stair",
"Straw Slab",
default.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({
type = "shapeless",
output = "farming:flour",
recipe = {
"farming:wheat", "farming:wheat", "farming:wheat",
"farming:wheat", "farming: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"
})
-- 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},
})
minetest.register_craft({
type = "shapeless",
output = "farming:bread_slice 5",
recipe = {"farming:bread", "group:food_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},
})
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},
})
minetest.register_craft({
output = "farming:toast_sandwich",
recipe = {
{"farming:bread_slice"},
{"farming:toast"},
{"farming:bread_slice"},
}
})
-- wheat definition
local crop_def = {
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"farming_wheat_1.png"}, tiles = {"farming_wheat_1.png"},
paramtype = "light", paramtype = "light",
@ -51,92 +162,92 @@ local def = {
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
drop = "", drop = "",
waving = 1,
selection_box = farming.select, selection_box = farming.select,
groups = { groups = {
snappy = 3, flammable = 4, plant = 1, attached_node = 1, snappy = 3, flammable = 4, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1 not_in_creative_inventory = 1, growing = 1
}, },
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults()
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
} }
-- stage 1 -- stage 1
minetest.register_node("farming:wheat_1", table.copy(crop_def))
minetest.register_node("farming:wheat_1", table.copy(def))
-- stage 2 -- stage 2
crop_def.tiles = {"farming_wheat_2.png"}
def.tiles = {"farming_wheat_2.png"} minetest.register_node("farming:wheat_2", table.copy(crop_def))
minetest.register_node("farming:wheat_2", table.copy(def))
-- stage 3 -- stage 3
crop_def.tiles = {"farming_wheat_3.png"}
def.tiles = {"farming_wheat_3.png"} minetest.register_node("farming:wheat_3", table.copy(crop_def))
minetest.register_node("farming:wheat_3", table.copy(def))
-- stage 4 -- stage 4
crop_def.tiles = {"farming_wheat_4.png"}
def.tiles = {"farming_wheat_4.png"} minetest.register_node("farming:wheat_4", table.copy(crop_def))
minetest.register_node("farming:wheat_4", table.copy(def))
-- stage 5 -- stage 5
crop_def.tiles = {"farming_wheat_5.png"}
def.tiles = {"farming_wheat_5.png"} crop_def.drop = {
def.drop = {
items = { items = {
{items = {"farming:wheat"}, rarity = 2}, {items = {"farming:wheat"}, rarity = 2},
{items = {"farming:seed_wheat"}, rarity = 2} {items = {"farming:seed_wheat"}, rarity = 2},
} }
} }
minetest.register_node("farming:wheat_5", table.copy(def)) minetest.register_node("farming:wheat_5", table.copy(crop_def))
-- stage 6 -- stage 6
crop_def.tiles = {"farming_wheat_6.png"}
def.tiles = {"farming_wheat_6.png"} crop_def.drop = {
def.drop = {
items = { items = {
{items = {"farming:wheat"}, rarity = 2}, {items = {"farming:wheat"}, rarity = 2},
{items = {"farming:seed_wheat"}, rarity = 1} {items = {"farming:seed_wheat"}, rarity = 1},
} }
} }
minetest.register_node("farming:wheat_6", table.copy(def)) minetest.register_node("farming:wheat_6", table.copy(crop_def))
-- stage 7 -- stage 7
crop_def.tiles = {"farming_wheat_7.png"}
def.tiles = {"farming_wheat_7.png"} crop_def.drop = {
def.drop = {
items = { items = {
{items = {"farming:wheat"}, rarity = 1}, {items = {"farming:wheat"}, rarity = 1},
{items = {"farming:wheat"}, rarity = 3}, {items = {"farming:wheat"}, rarity = 3},
{items = {"farming:seed_wheat"}, rarity = 1}, {items = {"farming:seed_wheat"}, rarity = 1},
{items = {"farming:seed_wheat"}, rarity = 3} {items = {"farming:seed_wheat"}, rarity = 3},
} }
} }
minetest.register_node("farming:wheat_7", table.copy(def)) minetest.register_node("farming:wheat_7", table.copy(crop_def))
-- stage 8 (final) -- stage 8 (final)
crop_def.tiles = {"farming_wheat_8.png"}
def.tiles = {"farming_wheat_8.png"} crop_def.groups.growing = 0
def.groups.growing = nil crop_def.drop = {
def.selection_box = farming.select_final
def.drop = {
items = { items = {
{items = {"farming:wheat"}, rarity = 1}, {items = {"farming:wheat"}, rarity = 1},
{items = {"farming:wheat"}, rarity = 3}, {items = {"farming:wheat"}, rarity = 3},
{items = {"farming:seed_wheat"}, rarity = 1}, {items = {"farming:seed_wheat"}, rarity = 1},
{items = {"farming:seed_wheat"}, rarity = 3} {items = {"farming:seed_wheat"}, rarity = 3},
} }
} }
minetest.register_node("farming:wheat_8", table.copy(def)) minetest.register_node("farming:wheat_8", table.copy(crop_def))
-- add to registered_plants -- add to registered_plants
farming.registered_plants["farming:wheat"] = { farming.registered_plants["farming:wheat"] = {
crop = "farming:wheat", crop = "farming:wheat",
seed = "farming:seed_wheat", seed = "farming:seed_wheat",
minlight = farming.min_light, minlight = 13,
maxlight = farming.max_light, maxlight = 15,
steps = 8 steps = 8
} }
-- fuels
minetest.register_craft({
type = "fuel",
recipe = "farming:straw",
burntime = 3,
})
minetest.register_craft({
type = "fuel",
recipe = "farming:wheat",
burntime = 1,
})

5
depends.txt Normal file
View File

@ -0,0 +1,5 @@
default
stairs?
intllib?
lucky_block?
toolranks?

1
description.txt Normal file
View File

@ -0,0 +1 @@
Adds many plants and food to Minetest

View File

@ -6,47 +6,31 @@
--]] --]]
-- true to enable crop/food in-game and on mapgen set spawn rarety -- true to enable crop/food in-game and on mapgen set spawn rarety
farming.asparagus = 0.002 farming.carrot = 0.001
farming.eggplant = 0.002 farming.potato = 0.001
farming.spinach = 0.002 farming.tomato = 0.001
farming.carrot = 0.002 farming.cucumber = 0.001
farming.potato = 0.002 farming.corn = 0.001
farming.tomato = 0.002 farming.coffee = 0.001
farming.cucumber = 0.002 farming.melon = 0.001
farming.corn = 0.002 farming.pumpkin = 0.001
farming.coffee = 0.002
farming.melon = 0.009
farming.pumpkin = 0.009
farming.cocoa = true -- true or false only farming.cocoa = true -- true or false only
farming.raspberry = 0.002 farming.raspberry = 0.001
farming.blueberry = 0.002 farming.blueberry = 0.001
farming.rhubarb = 0.002 farming.rhubarb = 0.001
farming.beans = 0.002 farming.beans = 0.001
farming.grapes = 0.002 farming.grapes = 0.001
farming.barley = true -- true or false only farming.barley = true -- true or false only
farming.chili = 0.003 farming.chili = 0.003
farming.hemp = 0.003 farming.hemp = 0.003
farming.garlic = 0.002 farming.garlic = 0.001
farming.onion = 0.002 farming.onion = 0.001
farming.pepper = 0.002 farming.pepper = 0.002
farming.pineapple = 0.003 farming.pineapple = 0.001
farming.peas = 0.002 farming.peas = 0.001
farming.beetroot = 0.002 farming.beetroot = 0.001
farming.mint = 0.005 farming.mint = 0.005
farming.cabbage = 0.002
farming.blackberry = 0.002
farming.lettuce = 0.002
farming.soy = 0.002
farming.vanilla = 0.002
farming.artichoke = 0.002
farming.parsley = 0.002
farming.sunflower = 0.002
farming.ginger = 0.002
farming.cotton = 0.003
farming.strawberry = 0.002
farming.grains = true -- true or false only farming.grains = true -- true or false only
farming.rice = true
-- default minimum and maximum light levels crops need to grow -- default rarety of crops on map (higher number = more crops)
farming.min_light = 12 farming.rarety = 0.002
farming.max_light = 15

238
food.lua Normal file
View File

@ -0,0 +1,238 @@
local S = farming.intllib
--= Sugar
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",
})
--= 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 = default.node_sound_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
},
})
minetest.register_craft({
type = "cooking",
cooktime = 15,
output = "farming:salt",
recipe = "bucket:bucket_water",
replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}}
})
--= 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 = default.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 = {
{"flowers:rose", "flowers:rose", "flowers:rose"},
{"flowers:rose", "flowers:rose", "flowers:rose"},
{"bucket:bucket_water", "group:food_pot", "vessels:glass_bottle"},
},
replacements = {
{"bucket:bucket_water", "bucket:bucket_empty"},
{"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},
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_cornstarch", "group:food_sugar", "dye:pink"},
},
replacements = {
{"group:food_cornstarch", "farming:bowl"},
{"group:food_rose_water", "vessels:glass_bottle"},
},
})
--= Garlic Bread
minetest.register_craftitem("farming:garlic_bread", {
description = S("Garlic Bread"),
inventory_image = "farming_garlic_bread.png",
groups = {flammable = 3},
on_use = minetest.item_eat(2),
})
minetest.register_craft({
type = "shapeless",
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),
})
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),
})
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),
})
minetest.register_craft({
output = "farming:donut_apple",
recipe = {
{"default:apple"},
{"farming:donut"},
}
})
--= Porridge Oats
minetest.register_craftitem("farming:porridge", {
description = S("Porridge"),
inventory_image = "farming_porridge.png",
on_use = minetest.item_eat(6, "farming:bowl"),
})
minetest.after(0, function()
local fluid = "bucket:bucket_water"
local fluid_return = "bucket:bucket_water"
if minetest.get_modpath("mobs") and mobs and mobs.mod == "redo" then
fluid = "group:food_milk"
fluid_return = "mobs:bucket_milk"
end
minetest.register_craft({
type = "shapeless",
output = "farming:porridge",
recipe = {
"group:food_barley", "group:food_barley", "group:food_wheat",
"group:food_wheat", "group:food_bowl", fluid
},
replacements = {{fluid_return, "bucket:bucket_empty"}}
})
minetest.register_craft({
type = "shapeless",
output = "farming:porridge",
recipe = {
"group:food_oats", "group:food_oats", "group:food_oats",
"group:food_oats", "group:food_bowl", fluid
},
replacements = {{fluid_return, "bucket:bucket_empty"}}
})
end)
--= Jaffa Cake
minetest.register_craftitem("farming:jaffa_cake", {
description = S("Jaffa Cake"),
inventory_image = "farming_jaffa_cake.png",
on_use = minetest.item_eat(6),
})
minetest.register_craft({
type = "shapeless",
output = "farming:jaffa_cake",
recipe = {
"farming:baking_tray", "group:food_egg", "group:food_sugar",
"group:food_flour", "group:food_cocoa", "group:food_orange",
"group:food_milk"
},
replacements = {
{"farming:baking_tray", "farming:baking_tray"},
{"mobs:bucket_milk", "bucket:bucket_empty"}
}
})
-- Apple Pie
minetest.register_craftitem("farming:apple_pie", {
description = S("Apple Pie"),
inventory_image = "farming_apple_pie.png",
on_use = minetest.item_eat(6),
})
minetest.register_craft({
output = "farming:apple_pie",
type = "shapeless",
recipe = {
"group:food_flour", "group:food_sugar",
"group:food_apple", "group:food_baking_tray"
},
replacements = {{"group:food_baking_tray", "farming:baking_tray"}}
})

View File

@ -1,76 +1,46 @@
-- Override grass to drop wheat and oat seeds for i = 4, 5 do
local rarity_lookup = {[1] = 50, [2] = 50, [3] = 50, [4] = 5, [5] = 5} -- Override default grass and have it drop Wheat Seeds
if minetest.registered_nodes["default:grass_1"] then minetest.override_item("default:grass_" .. i, {
drop = {
for i = 1, 5 do max_items = 1,
items = {
minetest.override_item("default:grass_" .. i, { {items = {"farming:seed_wheat"}, rarity = 5},
drop = { {items = {"farming:seed_oat"},rarity = 5},
max_items = 1, {items = {"default:grass_1"}},
items = {
{items = {"farming:seed_wheat"}, rarity = rarity_lookup[i]},
{items = {"farming:seed_oat"},rarity = rarity_lookup[i]},
{items = {"default:grass_1"}}
}
} }
}) },
end })
end
-- override dry grass to drop barley and rye seeds -- Override default dry grass and have it drop Barley Seeds
if minetest.registered_nodes["default:dry_grass_1"] then if minetest.registered_nodes["default:dry_grass_1"] then
for i = 1, 5 do
minetest.override_item("default:dry_grass_" .. i, { minetest.override_item("default:dry_grass_" .. i, {
drop = { drop = {
max_items = 1, max_items = 1,
items = { items = {
{items = {"farming:seed_barley"}, rarity = rarity_lookup[i]}, {items = {"farming:seed_barley"}, rarity = 5},
{items = {"farming:seed_rye"}, rarity = rarity_lookup[i]}, {items = {"farming:seed_rye"},rarity = 5},
{items = {"default:dry_grass_1"}} {items = {"default:dry_grass_1"}},
} }
} },
}) })
end end
end end
-- override jungle grass to drop cotton and rice seeds -- Override default Jungle Grass and have it drop Cotton Seeds
if minetest.registered_nodes["default:junglegrass"] then minetest.override_item("default:junglegrass", {
drop = {
minetest.override_item("default:junglegrass", { max_items = 1,
drop = { items = {
max_items = 1, {items = {"farming:seed_cotton"}, rarity = 8},
items = { {items = {"farming:seed_rice"},rarity = 8},
{items = {"farming:seed_cotton"}, rarity = 8}, {items = {"default:junglegrass"}},
{items = {"farming:seed_rice"}, rarity = 8},
{items = {"default:junglegrass"}}
}
} }
}) },
end })
-- override mineclone tallgrass to drop all sof the above seeds
if farming.mcl then
minetest.override_item("mcl_flowers:tallgrass", {
drop = {
max_items = 1,
items = {
{items = {"mcl_farming:wheat_seeds"}, rarity = 5},
{items = {"farming:seed_oat"},rarity = 5},
{items = {"farming:seed_barley"}, rarity = 5},
{items = {"farming:seed_rye"},rarity = 5},
{items = {"farming:seed_cotton"}, rarity = 8},
{items = {"farming:seed_rice"},rarity = 8}
}
}
})
end

372
hoes.lua
View File

@ -1,22 +1,28 @@
-- translation and mod check local S = farming.intllib
local tr = minetest.get_modpath("toolranks")
local S = minetest.get_translator("farming")
local mod_tr = minetest.get_modpath("toolranks")
-- Hoe registration function -- Hoe registration function
farming.register_hoe = function(name, def) farming.register_hoe = function(name, def)
-- Check for : prefix (register new hoes in your mod's namespace) -- 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 -- 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 -- add hoe group
def.groups = def.groups or {} def.groups = def.groups or {}
@ -26,24 +32,20 @@ farming.register_hoe = function(name, def)
minetest.register_tool(name, { minetest.register_tool(name, {
description = def.description, description = def.description,
inventory_image = def.inventory_image, 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) on_use = function(itemstack, user, pointed_thing)
return farming.hoe_on_use(itemstack, user, pointed_thing, def.max_uses) 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 -- Register its recipe
if def.recipe then if def.recipe then
minetest.register_craft({ minetest.register_craft({
output = name:sub(2), output = name:sub(2),
recipe = def.recipe recipe = def.recipe
}) })
elseif def.material then elseif def.material then
minetest.register_craft({ minetest.register_craft({
output = name:sub(2), output = name:sub(2),
recipe = { recipe = {
@ -59,87 +61,77 @@ end
function farming.hoe_on_use(itemstack, user, pointed_thing, uses) function farming.hoe_on_use(itemstack, user, pointed_thing, uses)
local pt = pointed_thing or {} local pt = pointed_thing
local is_used = false
-- am I going to hoe the top of a dirt node? -- 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
local under = minetest.get_node(pt.under) return
local upos = pointed_thing.under
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 = minetest.get_node(p)
-- return if any of the nodes is not registered
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
-- check if pointing at dirt
if minetest.get_item_group(under.name, "soil") ~= 1 then return end
-- check if (wet) soil defined
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 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
minetest.set_node(pt.under, {name = ndef.soil.dry}) ; is_used = true
minetest.sound_play("default_dig_crumbly", {pos = pt.under, gain = 0.5}, true)
end end
local under = minetest.get_node(pt.under)
local upos = pointed_thing.under
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 = minetest.get_node(p)
-- return if any of the nodes is not registered
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
-- check if pointing at dirt
if minetest.get_item_group(under.name, "soil") ~= 1 then
return
end
-- check if (wet) soil defined
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 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
minetest.set_node(pt.under, {name = ndef.soil.dry})
minetest.sound_play("default_dig_crumbly", {pos = pt.under, gain = 0.5})
local wdef = itemstack:get_definition() local wdef = itemstack:get_definition()
local wear = 65535 / (uses - 1) local wear = 65535 / (uses - 1)
-- using hoe as weapon if farming.is_creative(user:get_player_name()) then
if pt.type == "object" then if tr then
wear = 1
local ent = pt.ref and pt.ref:get_luaentity() else
local dir = user:get_look_dir() wear = 0
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
end end
-- only when used on soil top or external entity if tr then
if is_used then itemstack = toolranks.new_afteruse(itemstack, user, under, {wear = wear})
else
itemstack:add_wear(wear)
end
-- cretive doesnt wear tools but toolranks registers uses with wear so set to 1 if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then
if farming.is_creative(user:get_player_name()) then minetest.sound_play(wdef.sound.breaks, {pos = pt.above,
if mod_tr then wear = 1 else wear = 0 end gain = 0.5}, true)
end
if mod_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
minetest.sound_play(wdef.sound.breaks, {pos = pt.above, gain = 0.5}, true)
end
end end
return itemstack return itemstack
@ -157,7 +149,7 @@ farming.register_hoe(":farming:hoe_wood", {
minetest.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",
recipe = "farming:hoe_wood", recipe = "farming:hoe_wood",
burntime = 5 burntime = 5,
}) })
farming.register_hoe(":farming:hoe_stone", { farming.register_hoe(":farming:hoe_stone", {
@ -171,17 +163,14 @@ farming.register_hoe(":farming:hoe_steel", {
description = S("Steel Hoe"), description = S("Steel Hoe"),
inventory_image = "farming_tool_steelhoe.png", inventory_image = "farming_tool_steelhoe.png",
max_uses = 200, max_uses = 200,
material = "default:steel_ingot", material = "default:steel_ingot"
damage_groups = {fleshy = 2}
}) })
farming.register_hoe(":farming:hoe_bronze", { farming.register_hoe(":farming:hoe_bronze", {
description = S("Bronze Hoe"), description = S("Bronze Hoe"),
inventory_image = "farming_tool_bronzehoe.png", inventory_image = "farming_tool_bronzehoe.png",
max_uses = 250, max_uses = 500,
groups = {not_in_creative_inventory = 1}, groups = {not_in_creative_inventory = 1},
material = "default:bronze_ingot",
damage_groups = {fleshy = 2}
}) })
farming.register_hoe(":farming:hoe_mese", { farming.register_hoe(":farming:hoe_mese", {
@ -189,7 +178,6 @@ farming.register_hoe(":farming:hoe_mese", {
inventory_image = "farming_tool_mesehoe.png", inventory_image = "farming_tool_mesehoe.png",
max_uses = 350, max_uses = 350,
groups = {not_in_creative_inventory = 1}, groups = {not_in_creative_inventory = 1},
damage_groups = {fleshy = 3}
}) })
farming.register_hoe(":farming:hoe_diamond", { farming.register_hoe(":farming:hoe_diamond", {
@ -197,40 +185,38 @@ farming.register_hoe(":farming:hoe_diamond", {
inventory_image = "farming_tool_diamondhoe.png", inventory_image = "farming_tool_diamondhoe.png",
max_uses = 500, max_uses = 500,
groups = {not_in_creative_inventory = 1}, groups = {not_in_creative_inventory = 1},
damage_groups = {fleshy = 3}
}) })
-- Toolranks support -- Toolranks support
if tr then
if mod_tr then minetest.override_item("farming:hoe_wood", {
original_description = "Wood Hoe",
description = toolranks.create_description("Wood Hoe")})
minetest.override_item("farming:hoe_wood", { minetest.override_item("farming:hoe_stone", {
original_description = S("Wood Hoe"), original_description = "Stone Hoe",
description = toolranks.create_description(S("Wood Hoe"))}) description = toolranks.create_description("Stone Hoe")})
minetest.override_item("farming:hoe_stone", { minetest.override_item("farming:hoe_steel", {
original_description = S("Stone Hoe"), original_description = "Steel Hoe",
description = toolranks.create_description(S("Stone Hoe"))}) description = toolranks.create_description("Steel Hoe")})
minetest.override_item("farming:hoe_steel", { minetest.override_item("farming:hoe_bronze", {
original_description = S("Steel Hoe"), original_description = "Bronze Hoe",
description = toolranks.create_description(S("Steel Hoe"))}) description = toolranks.create_description("Bronze Hoe")})
minetest.override_item("farming:hoe_bronze", { minetest.override_item("farming:hoe_mese", {
original_description = S("Bronze Hoe"), original_description = "Mese Hoe",
description = toolranks.create_description(S("Bronze Hoe"))}) description = toolranks.create_description("Mese Hoe")})
minetest.override_item("farming:hoe_mese", { minetest.override_item("farming:hoe_diamond", {
original_description = S("Mese Hoe"), original_description = "Diamond Hoe",
description = toolranks.create_description(S("Mese Hoe"))}) description = toolranks.create_description("Diamond Hoe")})
minetest.override_item("farming:hoe_diamond", {
original_description = S("Diamond Hoe"),
description = toolranks.create_description(S("Diamond Hoe"))})
end end
-- hoe bomb function
-- hoe bomb function
local function hoe_area(pos, player) local function hoe_area(pos, player)
-- check for protection -- check for protection
@ -243,37 +229,34 @@ local function hoe_area(pos, player)
-- remove flora (grass, flowers etc.) -- remove flora (grass, flowers etc.)
local res = minetest.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},
{x = pos.x + r, y = pos.y + 2, z = pos.z + r}, {x = pos.x + r, y = pos.y + 2, z = pos.z + r},
{"group:flora", "default:dry_shrub"}) {"group:flora"})
for n = 1, #res do for n = 1, #res do
minetest.swap_node(res[n], {name = "air"}) minetest.swap_node(res[n], {name = "air"})
end end
-- replace dirt with tilled soil -- replace dirt with tilled soil
res = nil
res = minetest.find_nodes_in_area_under_air( 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 - 1, z = pos.z - r},
{x = pos.x + r, y = pos.y + 2, 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 for n = 1, #res do
minetest.swap_node(res[n], {name = "farming:soil"}) minetest.swap_node(res[n], {name = "farming:soil"})
end end
end end
-- throwable hoe bomb entity
-- throwable hoe bomb
minetest.register_entity("farming:hoebomb_entity", { minetest.register_entity("farming:hoebomb_entity", {
physical = true,
initial_properties = { visual = "sprite",
physical = true, visual_size = {x = 1.0, y = 1.0},
visual = "sprite", textures = {"farming_hoe_bomb.png"},
visual_size = {x = 1.0, y = 1.0}, collisionbox = {-0.1,-0.1,-0.1,0.1,0.1,0.1},
textures = {"farming_hoe_bomb.png"},
collisionbox = {-0.1,-0.1,-0.1,0.1,0.1,0.1}
},
lastpos = {}, lastpos = {},
player = "", player = "",
@ -290,10 +273,12 @@ minetest.register_entity("farming:hoebomb_entity", {
if self.lastpos.x ~= nil then if self.lastpos.x ~= nil then
local vel = self.object:get_velocity() local vel = self.object:getvelocity()
-- only when potion hits something physical -- only when potion hits something physical
if vel.x == 0 or vel.y == 0 or vel.z == 0 then if vel.x == 0
or vel.y == 0
or vel.z == 0 then
if self.player ~= "" then if self.player ~= "" then
@ -314,34 +299,42 @@ minetest.register_entity("farming:hoebomb_entity", {
end end
}) })
-- actual throwing function
-- actual throwing function
local function throw_potion(itemstack, player) local function throw_potion(itemstack, player)
local pos = player:get_pos() local playerpos = player:get_pos()
local obj = minetest.add_entity({ local obj = minetest.add_entity({
x = pos.x, y = pos.y + 1.5, z = pos.z}, "farming:hoebomb_entity") x = playerpos.x,
y = playerpos.y + 1.5,
if not obj then return end z = playerpos.z
}, "farming:hoebomb_entity")
local dir = player:get_look_dir() local dir = player:get_look_dir()
local velocity = 20 local velocity = 20
obj:set_velocity({x = dir.x * velocity, y = dir.y * velocity, z = dir.z * velocity}) obj:setvelocity({
x = dir.x * velocity,
y = dir.y * velocity,
z = dir.z * velocity
})
obj:set_acceleration({x = dir.x * -3, y = -9.5, z = dir.z * -3}) obj:setacceleration({
x = dir.x * -3,
y = -9.5,
z = dir.z * -3
})
obj:get_luaentity().player = player obj:get_luaentity().player = player
end end
-- hoe bomb item
-- hoe bomb item
minetest.register_craftitem("farming:hoe_bomb", { minetest.register_craftitem("farming:hoe_bomb", {
description = S("Hoe Bomb (use or throw on grassy areas to hoe land)"), description = S("Hoe Bomb (use or throw on grassy areas to hoe land)"),
inventory_image = "farming_hoe_bomb.png", inventory_image = "farming_hoe_bomb.png",
groups = {flammable = 2, not_in_creative_inventory = 1}, groups = {flammable = 2, not_in_creative_inventory = 1},
on_use = function(itemstack, user, pointed_thing) on_use = function(itemstack, user, pointed_thing)
if pointed_thing.type == "node" then if pointed_thing.type == "node" then
@ -359,21 +352,7 @@ minetest.register_craftitem("farming:hoe_bomb", {
end, end,
}) })
-- helper function -- Mithril Scythe (special item)
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
farming.scythe_not_drops = {"farming:trellis", "farming:beanpole"} farming.scythe_not_drops = {"farming:trellis", "farming:beanpole"}
@ -381,43 +360,62 @@ farming.add_to_scythe_not_drops = function(item)
table.insert(farming.scythe_not_drops, item) table.insert(farming.scythe_not_drops, item)
end end
-- Mithril Scythe (special item)
minetest.register_tool("farming:scythe_mithril", { minetest.register_tool("farming:scythe_mithril", {
description = S("Mithril Scythe (Use to harvest and replant crops)"), description = S("Mithril Scythe (Right-click to harvest and replant crops)"),
inventory_image = "farming_scythe_mithril.png", inventory_image = "farming_scythe_mithril.png",
sound = {breaks = "default_tool_breaks"}, sound = {breaks = "default_tool_breaks"},
on_use = function(itemstack, placer, pointed_thing) 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 pos = pointed_thing.under
local name = placer:get_player_name() local name = placer:get_player_name()
if minetest.is_protected(pos, name) then return end if minetest.is_protected(pos, name) then
return
end
local node = minetest.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 = minetest.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 if not def then
return
end
if not def.drop then
return
end
if not def.groups
or not def.groups.plant then
return return
end end
local drops = minetest.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 if not drops
or #drops == 0
or (#drops == 1 and drops[1] == "") then
return return
end end
-- get crop name -- get crop name
local mname = node.name:split(":")[1] 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])
pname = pname:split("_")[1]
if not pname then return end if not sname then
return
end
-- add dropped items -- add dropped items
for _, dropped_item in pairs(drops) do for _, dropped_item in pairs(drops) do
@ -437,7 +435,10 @@ minetest.register_tool("farming:scythe_mithril", {
if obj then if obj then
obj:set_velocity({ 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 end
end end
@ -448,10 +449,9 @@ minetest.register_tool("farming:scythe_mithril", {
end end
-- play sound -- play sound
minetest.sound_play("default_grass_footstep", {pos = pos, gain = 1.0}, true) minetest.sound_play("default_grass_footstep", {pos = pos, gain = 1.0})
-- replace with seed or crop_1 local replace = mname .. ":" .. pname .. "_1"
local replace = mname .. ":" .. pname .. "1"
if minetest.registered_nodes[replace] then if minetest.registered_nodes[replace] then
@ -464,15 +464,13 @@ minetest.register_tool("farming:scythe_mithril", {
if not farming.is_creative(name) then if not farming.is_creative(name) then
itemstack:add_wear(65535 / 350) -- 350 uses itemstack:add_wear(65535 / 150) -- 150 uses
return itemstack return itemstack
end end
end end,
}) })
-- if moreores found add mithril scythe recipe
if minetest.get_modpath("moreores") then if minetest.get_modpath("moreores") then
minetest.register_craft({ minetest.register_craft({
@ -483,4 +481,30 @@ if minetest.get_modpath("moreores") then
{"", "", "group:stick"} {"", "", "group:stick"}
} }
}) })
farming.register_hoe(":moreores:hoe_silver", {
description = S("%s Hoe"):format(S("Silver")),
inventory_image = "moreores_tool_silverhoe.png",
max_uses = 300,
material = "moreores:silver_ingot",
})
farming.register_hoe(":moreores:hoe_mithril", {
description = S("%s Hoe"):format(S("Mithril")),
inventory_image = "moreores_tool_mithrilhoe.png",
max_uses = 1000,
material = "moreores:mithril_ingot",
})
-- Toolranks support
if tr then
minetest.override_item("moreores:hoe_silver", {
original_description = S("%s Hoe"):format(S("Silver")),
description = toolranks.create_description("Silver Hoe")})
minetest.override_item("moreores:hoe_mithril", {
original_description = S("%s Hoe"):format(S("Mithril")),
description = toolranks.create_description("Mithril Hoe")})
end
end end

546
init.lua
View File

@ -1,54 +1,21 @@
--[[ --[[
Farming Redo Mod by TenPlus1 Farming Redo Mod
by TenPlus1
NEW growing routine by prestidigitator NEW growing routine by prestidigitator
auto-refill by crabman77 auto-refill by crabman77
]] ]]
-- Translation support
local S = minetest.get_translator("farming")
-- global
farming = { farming = {
mod = "redo", mod = "redo",
version = "20240924", version = "20200527",
path = minetest.get_modpath("farming"), path = minetest.get_modpath("farming"),
select = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}}, select = {
select_final = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -2.5/16, 0.5}}, type = "fixed",
registered_plants = {}, fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}
min_light = 12, max_light = 15, },
mapgen = minetest.get_mapgen_setting("mg_name"), registered_plants = {}
use_utensils = minetest.settings:get_bool("farming_use_utensils") ~= false,
mtg = minetest.get_modpath("default"),
eth = minetest.get_modpath("ethereal"),
mcl = minetest.get_modpath("mcl_core"),
mcl_hardness = 0.01,
translate = S
} }
-- determine which sounds to use, default or mcl_sounds
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")
-- check for creative mode or priv
local creative_mode_cache = minetest.settings:get_bool("creative_mode") local creative_mode_cache = minetest.settings:get_bool("creative_mode")
@ -56,17 +23,24 @@ function farming.is_creative(name)
return creative_mode_cache or minetest.check_player_privs(name, {creative = true}) return creative_mode_cache or minetest.check_player_privs(name, {creative = true})
end end
-- stats, locals, settings, function helper
local statistics = dofile(farming.path .. "/statistics.lua") local statistics = dofile(farming.path .. "/statistics.lua")
local random, floor = math.random, math.floor
-- Intllib
local S = dofile(farming.path .. "/intllib.lua")
farming.intllib = S
-- Utility Function
local time_speed = tonumber(minetest.settings:get("time_speed")) or 72 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 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 -- return amount of day or night that has elapsed
-- dt is time elapsed, count_day if true counts day, otherwise night -- dt is time elapsed, count_day if true counts day, otherwise night
local function day_or_night_time(dt, count_day) local function day_or_night_time(dt, count_day)
local t_day = minetest.get_timeofday() local t_day = minetest.get_timeofday()
@ -95,9 +69,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 local dt_c = clamp(t2_c, 0, 0.5) - clamp(t1_c, 0, 0.5) -- this cycle
if t1_c < -0.5 then if t1_c < -0.5 then
local nc = math.floor(-t1_c)
local nc = floor(-t1_c)
t1_c = t1_c + nc t1_c = t1_c + nc
dt_c = dt_c + 0.5 * nc + clamp(-t1_c - 0.5, 0, 0.5) dt_c = dt_c + 0.5 * nc + clamp(-t1_c - 0.5, 0, 0.5)
end end
@ -105,30 +77,22 @@ local function day_or_night_time(dt, count_day)
return dt_c * SECS_PER_CYCLE return dt_c * SECS_PER_CYCLE
end end
-- Growth Logic
local STAGE_LENGTH_AVG = tonumber(minetest.settings:get("farming_stage_length")) or 200 -- Growth Logic
local STAGE_LENGTH_AVG = tonumber(
minetest.settings:get("farming_stage_length")) or 160
local STAGE_LENGTH_DEV = STAGE_LENGTH_AVG / 6 local STAGE_LENGTH_DEV = STAGE_LENGTH_AVG / 6
-- quick start seed timer
farming.start_seed_timer = function(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 function plant_name_stage(node)
local name local name
if type(node) == "table" then 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 elseif node.x and node.y and node.z then
node = minetest.get_node_or_nil(node) node = minetest.get_node_or_nil(node)
name = node and node.name name = node and node.name
@ -137,7 +101,9 @@ local function plant_name_stage(node)
name = tostring(node) name = tostring(node)
end 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("_[^_]+$") local sep_pos = name:find("_[^_]+$")
@ -153,6 +119,7 @@ local function plant_name_stage(node)
return name, 0 return name, 0
end end
-- Map from node name to -- Map from node name to
-- { plant_name = ..., name = ..., stage = n, stages_left = { node_name, ... } } -- { plant_name = ..., name = ..., stage = n, stages_left = { node_name, ... } }
@ -161,22 +128,30 @@ local plant_stages = {}
farming.plant_stages = plant_stages farming.plant_stages = plant_stages
--- Registers the stages of growth of a (possible plant) node. --- 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
-- before being fully grown, or nil if not a plant. -- 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.
local register_plant_node
-- Recursive helper -- Recursive helper
local function reg_plant_stages(plant_name, stage, force_last) local function reg_plant_stages(plant_name, stage, force_last)
local node_name = plant_name and plant_name .. "_" .. stage local node_name = plant_name and plant_name .. "_" .. stage
local node_def = node_name and minetest.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] local stages = plant_stages[node_name]
if stages then return stages end if stages then
return stages
end
if minetest.get_item_group(node_name, "growing") > 0 then if minetest.get_item_group(node_name, "growing") > 0 then
@ -195,26 +170,30 @@ local function reg_plant_stages(plant_name, stage, force_last)
local old_constr = node_def.on_construct local old_constr = node_def.on_construct
local old_destr = node_def.on_destruct local old_destr = node_def.on_destruct
minetest.override_item(node_name, { minetest.override_item(node_name,
{
on_construct = function(pos)
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,
farming.handle_growth(pos) on_destruct = function(pos)
end,
on_destruct = function(pos) minetest.get_node_timer(pos):stop()
minetest.get_node_timer(pos):stop() if old_destr then
old_destr(pos)
end
end,
if old_destr then old_destr(pos) end on_timer = function(pos, elapsed)
end, return farming.plant_growth_timer(pos, elapsed, node_name)
end,
on_timer = function(pos, elapsed) })
return farming.plant_growth_timer(pos, elapsed, node_name)
end,
})
end end
elseif force_last then elseif force_last then
@ -234,25 +213,26 @@ local function reg_plant_stages(plant_name, stage, force_last)
return stages return stages
end 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) local plant_name, stage = plant_name_stage(node)
if plant_name then if plant_name then
local stages = reg_plant_stages(plant_name, stage, false) local stages = reg_plant_stages(plant_name, stage, false)
return stages and #stages.stages_left return stages and #stages.stages_left
else
return nil
end end
end end
-- check for further growth and set or stop timer
local function set_growing(pos, stages_left) local function set_growing(pos, stages_left)
if not stages_left then return end if not stages_left then
return
end
local timer = minetest.get_node_timer(pos) local timer = minetest.get_node_timer(pos)
@ -264,7 +244,7 @@ local function set_growing(pos, stages_left)
stage_length = clamp(stage_length, 0.5 * STAGE_LENGTH_AVG, 3.0 * STAGE_LENGTH_AVG) stage_length = clamp(stage_length, 0.5 * STAGE_LENGTH_AVG, 3.0 * STAGE_LENGTH_AVG)
timer:set(stage_length, -0.5 * random() * STAGE_LENGTH_AVG) timer:set(stage_length, -0.5 * math.random() * STAGE_LENGTH_AVG)
end end
elseif timer:is_started() then elseif timer:is_started() then
@ -272,18 +252,21 @@ local function set_growing(pos, stages_left)
end end
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) 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) 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 end
-- register crops nodes and add timer functions
minetest.after(0, function() minetest.after(0, function()
@ -292,109 +275,86 @@ minetest.after(0, function()
end end
end) end)
-- Just in case a growing type or added node is missed (also catches existing -- Just in case a growing type or added node is missed (also catches existing
-- nodes added to map before timers were incorporated). -- nodes added to map before timers were incorporated).
minetest.register_abm({ minetest.register_abm({
label = "Start crop timer",
nodenames = {"group:growing"}, nodenames = {"group:growing"},
interval = 300, interval = 300,
chance = 1, chance = 1,
catch_up = false, catch_up = false,
action = function(pos, node) action = function(pos, node)
farming.handle_growth(pos, node)
-- skip if node timer already active
if minetest.get_node_timer(pos):is_started() then return end
-- check if group:growing node is a seed
local def = minetest.registered_nodes[node.name]
if def and def.groups and def.groups.seed then
if def.on_timer then -- start node timer if found
farming.start_seed_timer(pos)
return
end
local next_stage = def.next_plant
def = minetest.registered_nodes[next_stage]
if def then -- switch seed without timer to stage_1 of crop
local p2 = def.place_param2 or 1
minetest.set_node(pos, {name = next_stage, param2 = p2})
end
else
farming.handle_growth(pos, node) -- start normal crop timer
end
end end
}) })
-- default check crop is on wet soil
farming.can_grow = function(pos)
local below = minetest.get_node({x = pos.x, y = pos.y -1, z = pos.z})
return minetest.get_item_group(below.name, "soil") >= 3
end
-- Plant timer function that grows plants under the right conditions. -- Plant timer function that grows plants under the right conditions.
function farming.plant_growth_timer(pos, elapsed, node_name) function farming.plant_growth_timer(pos, elapsed, node_name)
local stages = plant_stages[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 local max_growth = #stages.stages_left
if max_growth <= 0 then return false end if max_growth <= 0 then
return false
end
local chk1 = minetest.registered_nodes[node_name].growth_check -- old -- custom growth check
local chk2 = minetest.registered_nodes[node_name].can_grow -- new 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 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 if minetest.get_item_group(under.name, "soil") < 3 then
return true
-- default mt 5.9x farming.can_grow function end
elseif not farming.can_grow(pos) then return true end end
local growth local growth
local light_pos = {x = pos.x, y = pos.y, z = pos.z} local light_pos = {x = pos.x, y = pos.y, z = pos.z}
local lambda = elapsed / STAGE_LENGTH_AVG 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 = minetest.registered_nodes[node_name].minlight or farming.min_light local MIN_LIGHT = minetest.registered_nodes[node_name].minlight or 12
local MAX_LIGHT = minetest.registered_nodes[node_name].maxlight or farming.max_light local MAX_LIGHT = minetest.registered_nodes[node_name].maxlight or 15
--print ("---", MIN_LIGHT, MAX_LIGHT)
if max_growth == 1 or lambda < 2.0 then if max_growth == 1 or lambda < 2.0 then
local light = (minetest.get_node_light(light_pos) or 0) local light = (minetest.get_node_light(light_pos) or 0)
--print ("light level:", light)
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 growth = 1
else else
local night_light = (minetest.get_node_light(light_pos, 0) 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 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 night_growth = night_light >= MIN_LIGHT and night_light <= MAX_LIGHT
local day_growth = day_light >= MIN_LIGHT and day_light <= MAX_LIGHT local day_growth = day_light >= MIN_LIGHT and day_light <= MAX_LIGHT
if not night_growth then 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 lambda = day_or_night_time(elapsed, true) / STAGE_LENGTH_AVG
@ -405,14 +365,16 @@ function farming.plant_growth_timer(pos, elapsed, node_name)
growth = statistics.poisson(lambda, max_growth) growth = statistics.poisson(lambda, max_growth)
if growth < 1 then return true end if growth < 1 then
return true
end
end end
if minetest.registered_nodes[stages.stages_left[growth]] then if minetest.registered_nodes[stages.stages_left[growth]] then
local p2 = minetest.registered_nodes[stages.stages_left[growth] ].place_param2 or 1 local p2 = minetest.registered_nodes[stages.stages_left[growth] ].place_param2 or 1
minetest.set_node(pos, {name = stages.stages_left[growth], param2 = p2}) minetest.swap_node(pos, {name = stages.stages_left[growth], param2 = p2})
else else
return true return true
end end
@ -420,15 +382,16 @@ function farming.plant_growth_timer(pos, elapsed, node_name)
return growth ~= max_growth return growth ~= max_growth
end 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) function farming.refill_plant(player, plantname, index)
local inv = player and player:get_inventory() ; if not inv then return end local inv = player:get_inventory()
local old_stack = inv:get_stack("main", index) 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 for i, stack in ipairs(inv:get_list("main")) do
@ -443,38 +406,46 @@ function farming.refill_plant(player, plantname, index)
end end
end end
-- Place Seeds on Soil
-- Place Seeds on Soil
function farming.place_seed(itemstack, placer, pointed_thing, plantname) function farming.place_seed(itemstack, placer, pointed_thing, plantname)
local pt = pointed_thing local pt = pointed_thing
-- check if pointing at a node -- 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 = minetest.get_node(pt.under) local under = minetest.get_node(pt.under)
-- am I right-clicking on something that has a custom on_place set? -- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :) -- thanks to Krock for helping with this issue :)
local def = minetest.registered_nodes[under.name] local def = minetest.registered_nodes[under.name]
if placer and itemstack and def and def.on_rightclick then if placer and itemstack and def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt) return def.on_rightclick(pt.under, under, placer, itemstack)
end end
local above = minetest.get_node(pt.above) local above = minetest.get_node(pt.above)
-- check if pointing at the top of the node -- 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 -- return if any of the nodes is not registered
if not minetest.registered_nodes[under.name] if not minetest.registered_nodes[under.name]
or not minetest.registered_nodes[above.name] then return end or not minetest.registered_nodes[above.name] then
return
end
-- can I replace above node, and am I pointing directly at soil -- can I replace above node, and am I pointing at soil
if not minetest.registered_nodes[above.name].buildable_to if not minetest.registered_nodes[above.name].buildable_to
or minetest.get_item_group(under.name, "soil") < 2 or minetest.get_item_group(under.name, "soil") < 2
or minetest.get_item_group(above.name, "plant") ~= 0 then return end -- avoid multiple seed placement bug
or minetest.get_item_group(above.name, "plant") ~= 0 then
return
end
-- is player planting seed? -- is player planting seed?
local name = placer and placer:get_player_name() or "" local name = placer and placer:get_player_name() or ""
@ -486,15 +457,11 @@ function farming.place_seed(itemstack, placer, pointed_thing, plantname)
minetest.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)
minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0}) minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0})
minetest.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(), minetest.pos_to_string(pt.above)
))
if placer and itemstack if placer and itemstack
and not farming.is_creative(placer:get_player_name()) then and not farming.is_creative(placer:get_player_name()) then
@ -505,8 +472,12 @@ function farming.place_seed(itemstack, placer, pointed_thing, plantname)
-- check for refill -- check for refill
if itemstack:get_count() == 0 then if itemstack:get_count() == 0 then
minetest.after(0.2, farming.refill_plant, minetest.after(0.10,
placer, name, placer:get_wield_index()) farming.refill_plant,
placer,
name,
placer:get_wield_index()
)
end end
end end
@ -514,11 +485,13 @@ function farming.place_seed(itemstack, placer, pointed_thing, plantname)
end end
end end
-- Function to register plants (default farming compatibility)
-- Function to register plants (default farming compatibility)
farming.register_plant = function(name, def) farming.register_plant = function(name, def)
if not def.steps then return nil end if not def.steps then
return nil
end
local mname = name:split(":")[1] local mname = name:split(":")[1]
local pname = name:split(":")[2] local pname = name:split(":")[2]
@ -537,34 +510,19 @@ farming.register_plant = function(name, def)
inventory_image = def.inventory_image, inventory_image = def.inventory_image,
wield_image = def.inventory_image, wield_image = def.inventory_image,
drawtype = "signlike", drawtype = "signlike",
groups = { groups = {seed = 1, snappy = 3, attached_node = 1, flammable = 2},
seed = 1, snappy = 3, attached_node = 1, flammable = 2, growing = 1,
compostability = 65, handy = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
paramtype = "light", paramtype = "light",
paramtype2 = "wallmounted", paramtype2 = "wallmounted",
walkable = false, walkable = false,
sunlight_propagates = true, sunlight_propagates = true,
selection_box = farming.select, selection_box = farming.select,
place_param2 = 1, -- place seed flat place_param2 = def.place_param2 or nil,
next_plant = mname .. ":" .. pname .. "_1", next_plant = mname .. ":" .. pname .. "_1",
on_timer = function(pos, elapsed)
local def = minetest.registered_nodes[mname .. ":" .. pname .. "_1"]
if def then
minetest.swap_node(pos, {name = def.next_plant, param2 = def.place_param2})
end
end,
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer,
return farming.place_seed(itemstack, placer, pointed_thing, pointed_thing, mname .. ":" .. pname .. "_1")
mname .. ":seed_" .. pname) end,
end
}) })
-- Register harvest -- Register harvest
@ -578,11 +536,9 @@ farming.register_plant = function(name, def)
for i = 1, def.steps do for i = 1, def.steps do
local base_rarity = 1 local base_rarity = 1
if def.steps ~= 1 then if def.steps ~= 1 then
base_rarity = 8 - (i - 1) * 7 / (def.steps - 1) base_rarity = 8 - (i - 1) * 7 / (def.steps - 1)
end end
local drop = { local drop = {
items = { items = {
{items = {mname .. ":" .. pname}, rarity = base_rarity}, {items = {mname .. ":" .. pname}, rarity = base_rarity},
@ -592,16 +548,13 @@ farming.register_plant = function(name, def)
} }
} }
local sel = farming.select
local g = { local g = {
handy = 1, snappy = 3, flammable = 2, plant = 1, growing = 1, snappy = 3, flammable = 2, plant = 1, growing = 1,
attached_node = 1, not_in_creative_inventory = 1, attached_node = 1, not_in_creative_inventory = 1,
} }
-- Last step doesn't need growing=1 so Abm never has to check these -- Last step doesn't need growing=1 so Abm never has to check these
-- also increase selection box for visual indication plant has matured
if i == def.steps then if i == def.steps then
sel = farming.select_final
g.growing = 0 g.growing = 0
end end
@ -613,10 +566,7 @@ farming.register_plant = function(name, def)
next_plant = mname .. ":" .. pname .. "_" .. (i + 1) next_plant = mname .. ":" .. pname .. "_" .. (i + 1)
end end
local desc = pname:gsub("^%l", string.upper)
minetest.register_node(node_name, { minetest.register_node(node_name, {
description = S(desc) .. S(" Crop"),
drawtype = "plantlike", drawtype = "plantlike",
waving = 1, waving = 1,
tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"}, tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"},
@ -627,137 +577,91 @@ farming.register_plant = function(name, def)
buildable_to = true, buildable_to = true,
sunlight_propagates = true, sunlight_propagates = true,
drop = drop, drop = drop,
selection_box = sel, selection_box = farming.select,
groups = g, groups = g,
_mcl_hardness = farming.mcl_hardness, sounds = default.node_sound_leaves_defaults(),
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults(),
minlight = def.minlight, minlight = def.minlight,
maxlight = def.maxlight, maxlight = def.maxlight,
next_plant = next_plant next_plant = next_plant,
}) })
end end
-- add to farming.registered_plants -- add to farming.registered_plants
farming.registered_plants[mname .. ":" .. pname] = { farming.registered_plants[mname .. ":" .. pname] = {
crop = mname .. ":" .. pname, crop = mname .. ":" .. pname,
seed = mname .. ":seed_" .. pname, seed = mname .. ":seed_" .. pname,
steps = def.steps, steps = def.steps,
minlight = def.minlight, minlight = def.minlight,
maxlight = def.maxlight maxlight = def.maxlight
} }
-- print(dump(farming.registered_plants[mname .. ":" .. pname])) --print(dump(farming.registered_plants[mname .. ":" .. pname]))
-- Return info
return {seed = mname .. ":seed_" .. pname, harvest = mname .. ":" .. pname} return {seed = mname .. ":seed_" .. pname, harvest = mname .. ":" .. pname}
end end
-- default settings
farming.asparagus = 0.002 -- default settings
farming.eggplant = 0.002 farming.carrot = 0.001
farming.spinach = 0.002 farming.potato = 0.001
farming.carrot = 0.002 farming.tomato = 0.001
farming.potato = 0.002 farming.cucumber = 0.001
farming.tomato = 0.002 farming.corn = 0.001
farming.cucumber = 0.002 farming.coffee = 0.001
farming.corn = 0.002 farming.melon = 0.001
farming.coffee = 0.002 farming.pumpkin = 0.001
farming.melon = 0.009
farming.pumpkin = 0.009
farming.cocoa = true farming.cocoa = true
farming.raspberry = 0.002 farming.raspberry = 0.001
farming.blueberry = 0.002 farming.blueberry = 0.001
farming.rhubarb = 0.002 farming.rhubarb = 0.001
farming.beans = 0.002 farming.beans = 0.001
farming.grapes = 0.002 farming.grapes = 0.001
farming.barley = true farming.barley = true
farming.chili = 0.003 farming.chili = 0.003
farming.hemp = 0.003 farming.hemp = 0.003
farming.garlic = 0.002 farming.garlic = 0.001
farming.onion = 0.002 farming.onion = 0.001
farming.pepper = 0.002 farming.pepper = 0.002
farming.pineapple = 0.003 farming.pineapple = 0.001
farming.peas = 0.002 farming.peas = 0.001
farming.beetroot = 0.002 farming.beetroot = 0.001
farming.mint = 0.005 farming.mint = 0.005
farming.cabbage = 0.002
farming.blackberry = 0.002
farming.soy = 0.002
farming.vanilla = 0.002
farming.lettuce = 0.002
farming.artichoke = 0.002
farming.parsley = 0.002
farming.sunflower = 0.002
farming.ginger = 0.002
farming.strawberry = 0.002
farming.cotton = 0.003
farming.grains = true farming.grains = true
farming.rice = true farming.rarety = 0.002
-- Load new global settings if found inside mod folder -- Load new global settings if found inside mod folder
local input = io.open(farming.path.."/farming.conf", "r")
local input = io.open(farming.path .. "/farming.conf", "r") if input then
dofile(farming.path .. "/farming.conf")
if input then dofile(farming.path .. "/farming.conf") ; input:close() end input:close()
end
-- load new world-specific settings if found inside world folder -- load new world-specific settings if found inside world folder
local worldpath = minetest.get_worldpath() local worldpath = minetest.get_worldpath()
input = io.open(worldpath.."/farming.conf", "r")
input = io.open(worldpath .. "/farming.conf", "r") if input then
dofile(worldpath .. "/farming.conf")
if input then dofile(worldpath .. "/farming.conf") ; input:close() end input:close()
-- helper function to add {eatable} group to food items, also {flammable}
function farming.add_eatable(item, hp)
local def = minetest.registered_items[item]
if def then
local groups = table.copy(def.groups) or {}
groups.eatable = hp ; groups.flammable = 2
minetest.override_item(item, {groups = groups})
end
end end
-- recipe item list and alternatives
dofile(farming.path .. "/item_list.lua")
-- setup soil, register hoes, override grass
if minetest.get_modpath("default") then
dofile(farming.path .. "/soil.lua")
dofile(farming.path .. "/hoes.lua")
end
-- important items
dofile(farming.path.."/soil.lua")
dofile(farming.path.."/hoes.lua")
dofile(farming.path.."/grass.lua") dofile(farming.path.."/grass.lua")
dofile(farming.path.."/utensils.lua")
-- disable crops Mineclone already has -- default crops
dofile(farming.path.."/crops/wheat.lua")
dofile(farming.path.."/crops/cotton.lua")
if farming.mcl then
farming.carrot = nil
farming.potato = nil
farming.melon = nil
farming.cocoa = nil
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 -- helper function
local function ddoo(file, check) local function ddoo(file, check)
if check then dofile(farming.path .. "/crops/" .. file) end if check then
dofile(farming.path .. "/crops/" .. file)
end
end end
-- add additional crops and food (if enabled) -- add additional crops and food (if enabled)
@ -784,36 +688,12 @@ ddoo("pineapple.lua", farming.pineapple)
ddoo("peas.lua", farming.peas) ddoo("peas.lua", farming.peas)
ddoo("beetroot.lua", farming.beetroot) ddoo("beetroot.lua", farming.beetroot)
ddoo("chili.lua", farming.chili) 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("mint.lua", farming.mint)
ddoo("cabbage.lua", farming.cabbage)
ddoo("blackberry.lua", farming.blackberry)
ddoo("soy.lua", farming.soy)
ddoo("vanilla.lua", farming.vanilla)
ddoo("lettuce.lua", farming.lettuce)
ddoo("artichoke.lua", farming.artichoke)
ddoo("parsley.lua", farming.parsley)
ddoo("sunflower.lua", farming.sunflower)
ddoo("strawberry.lua", farming.strawberry)
ddoo("asparagus.lua", farming.asparagus)
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.."/food.lua")
dofile(farming.path.."/mapgen.lua")
dofile(farming.path.."/compatibility.lua") -- Farming Plus compatibility
dofile(farming.path.."/lucky_block.lua")
dofile(farming.path .. "/item_non_food.lua") minetest.log("action", "[farming] loaded.")
dofile(farming.path .. "/item_food.lua")
dofile(farming.path .. "/item_recipes.lua")
dofile(farming.path .. "/item_stairs.lua")
if not farming.mcl then
dofile(farming.path .. "/compatibility.lua") -- Farming Plus compatibility
end
if minetest.get_modpath("lucky_block") then
dofile(farming.path .. "/lucky_block.lua")
end
print("[MOD] Farming Redo loaded")

45
intllib.lua Normal file
View File

@ -0,0 +1,45 @@
-- Fallback functions for when `intllib` is not installed.
-- Code released under Unlicense <http://unlicense.org>.
-- Get the latest version of this file at:
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
local function format(str, ...)
local args = { ... }
local function repl(escape, open, num, close)
if escape == "" then
local replacement = tostring(args[tonumber(num)])
if open == "" then
replacement = replacement..close
end
return replacement
else
return "@"..open..num..close
end
end
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
end
local gettext, ngettext
if minetest.get_modpath("intllib") then
if intllib.make_gettext_pair then
-- New method using gettext.
gettext, ngettext = intllib.make_gettext_pair()
else
-- Old method using text files.
gettext = intllib.Getter()
end
end
-- Fill in missing functions.
gettext = gettext or function(msgid, ...)
return format(msgid, ...)
end
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
return format(n==1 and msgid or msgid_plural, ...)
end
return gettext, ngettext

File diff suppressed because it is too large Load Diff

View File

@ -1,126 +0,0 @@
-- add group helper
local function add_groups(item, groups)
local def = minetest.registered_items[item]
if def then
local grps = table.copy(def.groups) or {}
for k, v in pairs(groups) do
grps[k] = v
end
minetest.override_item(item, {groups = grps})
end
end
-- default recipe items
farming.recipe_items = {
-- if utensils are disabled then use blank item
saucepan = farming.use_utensils and "farming:saucepan" or "",
pot = farming.use_utensils and "farming:pot" or "",
baking_tray = farming.use_utensils and "farming:baking_tray" or "",
skillet = farming.use_utensils and "farming:skillet" or "",
mortar_pestle = farming.use_utensils and "farming:mortar_pestle" or "",
cutting_board = farming.use_utensils and "farming:cutting_board" or "",
juicer = farming.use_utensils and "farming:juicer" or "",
mixing_bowl = farming.use_utensils and "farming:mixing_bowl" or "",
water_source = "default:water_source",
river_water_source = "default:river_water_source",
bucket_empty = "bucket:bucket_empty",
bucket_water = "bucket:bucket_water",
bucket_river_water = "bucket:bucket_river_water",
drinking_glass = "vessels:drinking_glass",
glass_bottle = "vessels:glass_bottle",
sugar = "farming:sugar",
rose = "flowers:rose",
dye_red = "dye:red",
dye_pink = "dye:pink",
dye_orange = "dye:orange",
dye_green = "dye:green",
dye_brown = "dye:brown",
dye_blue = "dye:blue",
dye_violet = "dye:violet",
dye_yellow = "dye:yellow",
bowl = "farming:bowl",
flour = "group:food_flour",
bread = "farming:bread",
cactus = "default:cactus",
paper = "default:paper",
snow = "default:snow",
string = "farming:string",
wool = "wool:white",
steel_ingot = "default:steel_ingot",
clay_brick = "default:clay_brick",
stone = "default:stone",
glass = "default:glass",
}
add_groups("default:apple", {food_apple = 1})
-- if mineclone found then change recipe items
if farming.mcl then
local a = farming.recipe_items
a.water_source = "mcl_core:water_source"
a.river_water_source = "mclx_core:river_water_source"
a.bucket_empty = "mcl_buckets:bucket_empty"
a.bucket_water = "mcl_buckets:bucket_water"
a.bucket_river_water = "mcl_buckets:bucket_river_water"
a.drinking_glass = "mcl_potions:glass_bottle"
a.glass_bottle = "mcl_potions:glass_bottle"
a.sugar = "mcl_core:sugar"
a.rose = "mcl_flowers:rose_bush"
a.dye_red = "mcl_dye:red"
a.dye_pink = "mcl_dye:pink"
a.dye_orange = "mcl_dye:orange"
a.dye_green = "mcl_dye:green"
a.dye_brown = "mcl_dye:brown"
a.dye_blue = "mcl_dye:blue"
a.dye_violet = "mcl_dye:violet"
a.dye_yellow = "mcl_dye:yellow"
a.bowl = "mcl_core:bowl"
-- a.flour = "mcl_farming:bread"
a.bread = "mcl_farming:bread"
a.cactus = "mcl_core:cactus"
a.paper = "mcl_core:paper"
a.snow = "mcl_throwing:snowball"
a.string = "mcl_mobitems:string"
a.wool = "mcl_wool:white"
a.steel_ingot = "mcl_core:iron_ingot"
a.clay_brick = "mcl_core:clay_lump"
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})
add_groups("mcl_cocoas:cocoa_beans", {food_cocoa = 1})
add_groups("mcl_core:apple", {food_apple = 1})
add_groups("mcl_core:bowl", {food_bowl = 1})
add_groups("mcl_mobitems:chicken", {food_chicken_raw = 1})
add_groups("mcl_mobitems:cooked_chicken", {food_chicken = 1})
add_groups("mcl_mushrooms:mushroom_brown", {food_mushroom = 1})
add_groups("mcl_farming:carrot_item", {food_carrot = 1})
add_groups("mcl_mobitems:cooked_beef", {food_meat = 1})
add_groups("mcl_mobitems:beef", {food_meat_raw = 1})
add_groups("mcl_farming:potato_item", {food_potato = 1})
add_groups("mcl_farming:bread", {food_bread = 1})
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_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})
end

View File

@ -1,304 +0,0 @@
local S = minetest.get_translator("farming")
-- saucepan
minetest.register_craftitem("farming:saucepan", {
description = S("Saucepan"),
inventory_image = "farming_saucepan.png",
groups = {food_saucepan = 1, flammable = 2}
})
-- cooking pot
minetest.register_craftitem("farming:pot", {
description = S("Cooking Pot"),
inventory_image = "farming_pot.png",
groups = {food_pot = 1, flammable = 2}
})
-- baking tray
minetest.register_craftitem("farming:baking_tray", {
description = S("Baking Tray"),
inventory_image = "farming_baking_tray.png",
groups = {food_baking_tray = 1, flammable = 2}
})
-- skillet
minetest.register_craftitem("farming:skillet", {
description = S("Skillet"),
inventory_image = "farming_skillet.png",
groups = {food_skillet = 1, flammable = 2}
})
-- mortar & pestle
minetest.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
minetest.register_craftitem("farming:cutting_board", {
description = S("Cutting Board"),
inventory_image = "farming_cutting_board.png",
groups = {food_cutting_board = 1, flammable = 2}
})
-- juicer
minetest.register_craftitem("farming:juicer", {
description = S("Juicer"),
inventory_image = "farming_juicer.png",
groups = {food_juicer = 1, flammable = 2}
})
-- glass mixing bowl
minetest.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)
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, handy = 1},
sounds = farming.node_sound_glass_defaults()
})
-- straw
minetest.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
minetest.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
minetest.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
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, handy = 1
},
sounds = farming.node_sound_glass_defaults()
})
-- hemp fibre
minetest.register_craftitem("farming:hemp_fibre", {
description = S("Hemp Fibre"),
inventory_image = "farming_hemp_fibre.png",
groups = {compostability = 55}
})
-- hemp block
minetest.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
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 = {
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
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 = {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
minetest.register_craftitem("farming:bowl", {
description = S("Wooden Bowl"),
inventory_image = "farming_bowl.png",
groups = {food_bowl = 1, flammable = 2}
})
-- String
minetest.register_craftitem("farming:string", {
description = S("String"),
inventory_image = "farming_string.png",
groups = {flammable = 2}
})
-- 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
},
is_ground_content = false,
sounds = farming.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,
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
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
},
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 minetest.is_protected(pos, name) then return end
node.name = "farming:jackolantern"
minetest.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 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.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

@ -23,28 +23,6 @@ THE SOFTWARE.
License of media (textures): 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
farming_cookie.png
farming_grapes.png
farming_vanilla.png
Created by Shadall (CC0):
farming_burger.png
Created by PilzAdam (License: CC BY 3.0): Created by PilzAdam (License: CC BY 3.0):
farming_bread.png farming_bread.png
farming_soil.png farming_soil.png
@ -85,16 +63,6 @@ Created by VanessaE (License: CC BY 3.0):
farming_cotton_7.png farming_cotton_7.png
farming_cotton_8.png farming_cotton_8.png
Created by alerikaisattera (License: CC-BY-SA 4.0)
farming_melon_top.png
farming_melon_side.png
farming_melon_bottom.png
farming_pumpkin_bottom.png
farming_pumpkin_top.png
farming_pumpkin_side.png
farming_pumpkin_face_on.png
farming_pumpkin_face_off.png
Created by Doc (License: CC BY 3.0): Created by Doc (License: CC BY 3.0):
farming_cucumber.png farming_cucumber.png
farming_cucumber_1.png farming_cucumber_1.png
@ -152,14 +120,14 @@ Created by TenPlus1 (CC BY 3.0)
farming_cocoa_2.png farming_cocoa_2.png
farming_cocoa_3.png farming_cocoa_3.png
farming_cocoa_beans.png farming_cocoa_beans.png
farming_cookie.png
farming_raspberry_smoothie.png farming_raspberry_smoothie.png
farming_rhubarb_1.png farming_rhubarb_1.png
farming_rhubarb_2.png farming_rhubarb_2.png
farming_rhubarb_3.png farming_rhubarb_3.png
farming_rhubarb.png farming_rhubarb.png
farming_rhubarb_pie.png
farming_hemp*.png farming_hemp*.png
farming_tofu*.png
farming_gingerbread_man.png
Created by ademant (CC-BY-3.0) Created by ademant (CC-BY-3.0)
farming_rye*.png farming_rye*.png
@ -174,68 +142,3 @@ Created by VanessaE and edited by SpaghettiToastBook (CC0):
Created by mDiyo (Natura), modified by TenPlus1 (License: CC BY-SA 3.0): Created by mDiyo (Natura), modified by TenPlus1 (License: CC BY-SA 3.0):
farming_barley.png farming_barley.png
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
farming_soy*.png
farming_vanilla_*.png
farming_artichoke*.png
farming_parsley*.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
Created by gorlock (CC0)
farming_salt_crystal.png
Created by sirrobzeroone (CC0)
farming_gyoza.png
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]
Created by DMBuce (MIT - https://github.com/DMBuce/hatchling-snacks)
farming_mac_and_cheese.png
Created by XSSheep (CC BY-SA 4.0 - https://minecraft.curseforge.com/projects/pixel-perfection-freshly-updated)
farming_coffee_1.png
farming_coffee_2.png
farming_coffee_3.png
farming_coffee_4.png
farming_coffee_5.png
farming_coffee_beans.png
farming_apple_pie.png (edited by TenPlus1)
farming_blueberry_pie.png (edited by TenPlus1)
farming_rhubarb_pie.png (edited by TenPlus1)
Copyright (C) 2021-2022: Atlante - AFL-1.1
License for code: AFL-1.1
Attribution — You must give appropriate credit, provide a link to the license, and
indicate if changes were made. You may do so in any reasonable manner, but not in any way
that suggests the licensor endorses you or your use.
ShareAlike — If you remix, transform, or build upon the material, you must distribute
your contributions under the same license as the original.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
farming_asparagus*
farming_eggplant*
farming_spinach*
farming_ginger*

195
locale/de.txt Normal file
View File

@ -0,0 +1,195 @@
# German translation of the farming mod by TenPlus1
# textdomain: farming
# author: Xanthin
# author: TheDarkTiger
# last update: 2020/Apr/26
###### folder . ######
### init.lua ###
Seed=Saatgut
### compatibility.lua ###
Banana=
Banana Leaves=
Orange=
Strawberry=
### food.lua ###
Sugar=Zucker
Salt=
Rose Water=
Turkish Delight=
Garlic Bread=
Donut=Donut
Chocolate Donut=Schokodonut
Apple Donut=Apfeldonut
Porridge=
Jaffa Cake=
### hoes.lua ###
Hoe=Hacke
Wooden Hoe=Holzhacke
Stone Hoe=Steinhacke
Steel Hoe=Stahlhacke
Bronze Hoe=Bronzehacke
Mese Hoe=Mesehacke
Diamond Hoe=Diamanthacke
# Surcharge du mod [Toolranks] à faire #
Hoe Bomb (use or throw on grassy areas to hoe land)=
Mithril Scythe (Right-click to harvest and replant crops)=
# Surcharge du mod [Toolranks] à faire #
### soil.lua ###
Soil=Ackerboden
Wet Soil=Bewässerter Ackerboden
### utensils.lua ###
Wooden Bowl=
Saucepan=
Cooking Pot=
Baking Tray=
Skillet=
Mortar and Pestle=
Cutting Board=
Juicer=
Glass Mixing Bowl=
###### folder ./crops ######
### barley.lua ###
Barley Seed=Gerstenkörner
Barley=Gerste
### beans.lua ###
Green Beans=Grüne Bohnen
Bean Pole (place on soil before planting beans)=Bohnenstange (vor dem Pflanzen der Bohnen auf den\nAckerboden stellen)
### beetroot.lua ###
Beetroot=
Beetroot Soup=
### blueberry.lua ###
Blueberries=Blaubeeren
Blueberry Muffin=Blaubeermuffin
Blueberry Pie=
### carrot.lua ##
Carrot=Möhre
Carrot Juice=
Golden Carrot=Goldene Möhre
### chili.lua ###
Chili Pepper=
Bowl of Chili=
### cocoa.lua ###
Cocoa Beans=Kakaobohne
Cookie=Keks
Bar of Dark Chocolate=Tafel Zartbitterschokolade
Chocolate Block=
### coffee.lua ###
Coffee Beans=Kaffeebohnen
Cup of Coffee=Tasse Kaffee
### corn.lua ###
Corn=Mais
Corn on the Cob=Maiskolben
Cornstarch=
Bottle of Ethanol=Flasche Ethanol
### cotton.lua ###
Cotton Seed=Baumwollsamen
Cotton=Baumwolle
String=
### cucumber.lua ###
Cucumber=Gurke
### garlic.lua ###
Garlic clove=
Garlic=
Garlic Braid=
### grapes.lua ###
Grapes=Weintrauben
Trellis (place on soil before planting grapes)=Spalier (vor dem Pflanzen der Weintrauben auf den\nAckerboden stellen)
### hemp.lua ###
Hemp Seed=Hanfsamen
Hemp Leaf=Hanfblatt
Bottle of Hemp Oil=Flasche mit Hanföl
Hemp Fibre=Hanffaser
Hemp Block=
Hemp Rope=Hanfseil
### melon.lua ###
Melon Slice=Melonenscheibe
Melon=Melone
### onion.lua ###
Onion=
### peas.lua ###
Pea Pod=
Peas=
Pea Soup=
### pepper.lua ###
Peppercorn=
Pepper=
Ground Pepper=
### pinapple.lua ###
Pineapple Top=
Pineapple=
Pineapple Ring=
Pineapple Juice=
### potato.lua ###
Potato=Kartoffel
Baked Potato=Ofenkartoffel
Cucumber and Potato Salad=
### pumpkin.lua ###
Pumpkin Slice=Kürbisscheibe
Jack 'O Lantern (punch to turn on and off)=Kürbislaterne (Punch zum Ein- und Ausschalten)
Scarecrow Bottom=
Pumpkin Bread=Kürbisbrot
Pumpkin Dough=Kürbisteig
Pumpkin=Kürbis
### raspberry.lua ###
Raspberries=Himbeeren
Raspberry Smoothie=Himbeersmoothie
### rhubarb.lua ###
Rhubarb=Rhabarber
Rhubarb Pie=Rhabarberkuchen
### ryeoatrice.lua ###
Rye=
Rye seed=
Oat=
Oat seed=
Rice=
Rice grains=
Rice Bread=
Rice Flour=
Multigrain Flour=
Multigrain Bread=
### tomato.lua ###
Tomato=Tomate
### wheat.lua ###
Wheat Seed=Weizenkörner
Wheat=Weizen
Straw=Stroh
Flour=Mehl
Bread=Brot
Sliced Bread=
Toast=
Toast Sandwich=

View File

@ -1,189 +0,0 @@
# textdomain: farming
Banana=Banane
Banana Leaves=Bananenblätter
Orange=Orange
Artichoke=Artischocke
Crop=-Pflanze
Asparagus=Spargel
Barley Seed=Gerstensamen
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)
Beetroot=Rote Beete
Blackberries=Brombeeren
Blackberry=Brombeere
Wild Blueberries=Wilde Blaubeeren
Blueberry=Blaubeere
Cabbage=Kohl
Carrot=Möhre
Chili Pepper=Chili
Raw Cocoa Beans=Rohe Kakaobohnen
Cocoa Beans=Kakaobohnen
Coffee Beans=Kaffeebohnen
Coffee=Kaffee
Corn=Mais
Cotton Seed=Baumwollsamen
Cotton=Baumwolle
Wild Cotton=Wilde Baumwolle
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
Salt=Salz
Salt crystal=Salzkristall
Mayonnaise=Mayonnaise
Rose Water=Rosenwasser
Turkish Delight=Lokum
Garlic Bread=Knoblauchbrot
Donut=Donut
Chocolate Donut=Schokodonut
Apple Donut=Apfeldonut
Porridge=Haferbrei
Jaffa Cake=Jaffa
Apple Pie=Apfelkuchen
Cactus Juice=Kaktussaft
Pasta=Pasta
Mac & Cheese=Makkaroni mit Käse
Spaghetti=Spaghetti
Bibimbap=Bibimbap
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
Mint Tea=Minztee
Onion Soup=Zwiebelsuppe
Pea Soup=Erbsensuppe
Ground Pepper=Gemahlener Pfeffer
Pineapple Ring=Ananasscheibe
Pineapple Juice=Ananassaft
Cucumber and Potato Salad=Gurken-Kartoffelsalat
Pumpkin Dough=Kürbisteig
Pumpkin Bread=Kürbisbrot
Raspberry Smoothie=Himbeersmoothie
Rhubarb Pie=Rhabarberkuchen
Rice Flour=Reismehl
Rice Bread=Reiswaffel
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
Saucepan=Kasserolle
Cooking Pot=Kochtopf
Baking Tray=Kuchenblech
Skillet=Bratpfanne
Mortar and Pestle=Mörser und Stößel
Cutting Board=Schneidebrett
Juicer=Entsafter
Glass Mixing Bowl=Glasschüssel
Bottle of Ethanol=Flasche Ethanol
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

View File

@ -1,176 +0,0 @@
# textdomain: farming
Artichoke=
Asparagus=
Barley Seed=Hordea Semo
Barley=Hordeo
Green Beans=Verdaj Fazeoloj
Bean Pole (place on soil before planting beans)=Fazeola Poluso (metu sur grundo antaŭ planti fabojn)
Beetroot=Betoto
Beetroot Soup=Betota Supo
Blackberries=
Wild Blueberries=
Blueberry Muffin=Mirtila Mufino
Blueberry Pie=Mirtila Torto
Cabbage=
Carrot=Karoto
Carrot Juice=Karota Suko
Golden Carrot=Ora Karoto
Chili Pepper=Kapsiketo
Bowl of Chili=Bovlo da Kapsiketo
Chili Powder=
Raw Cocoa Beans=
Cocoa Beans=Kakaa Faboj
Cookie=Kuketo
Bar of Dark Chocolate=Stango de Malhela Ĉokolado
Chocolate Block=Bloko de Ĉokolado
Coffee Beans=Kafaj Seboj
Cup of Coffee=Taso da Kafo
Banana=Banano
Banana Leaves=Bananaj Folioj
Orange=Oranĝo
Corn=Maizo
Corn on the Cob=Maiza sur la Spadiko
Popcorn=
Cornstarch=Maizamelo
Bottle of Ethanol=Botelo da Etanolo
Wild Cotton=
Cotton Seed=Kotona Semo
Cotton=Kotono
String=Ŝnuro
Cucumber=Kukumo
Eggplant=
Glass of Water=
Sugar=Sukero
Sugar Cube=
Caramel=
Salt=Salo
Mayonnaise=
Rose Water=Roza Akvo
Turkish Delight=Turka Delico
Garlic Bread=Ajla Pano
Donut=Benjeto
Chocolate Donut=Ĉokolada Benjeto
Apple Donut=Poma Benjeto
Porridge=Kaĉo
Jaffa Cake=Jafa Kuko
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=Ajlokloko
Garlic=Ajlo
Garlic Braid=Ajla Plektaĵo
Ginger=
Grapes=Vinberoj
Trellis (place on soil before planting grapes)=Trellis (meti sur grundo antaŭ planti vinberojn)
Hemp Seed=Kanaba Semo
Hemp Leaf=Kanaba Folio
Bottle of Hemp Oil=Botelo da Kanaba Oleo
Hemp Fibre=Kanaba Fibro
Hemp Block=Kanaba Bloko
Hemp Rope=Kanaba Ŝnuro
Hoe=Sarkilo
Wooden Hoe=Ligna Sarkilo
Stone Hoe=Ŝtona Sarkilo
Steel Hoe=Ŝtala Sarkilo
Bronze Hoe=Bronza Sarkilo
Mese Hoe=Mesea Sarkilo
Diamond Hoe=Diamanta Sarkilo
Wood Hoe=
Hoe Bomb (use or throw on grassy areas to hoe land)=
Mithril Scythe (Use to harvest and replant crops)=
Seed=Semo
Lettuce=
Melon Slice=Tranĉaĵo de Melono
Melon=Melono
Mint Seeds=
Mint Leaf=
Mint Tea=
Onion=Cepo
Onion Soup=
Parsley=
Pea Pod=Pizujo
Pea Soup=Piza Supo
Peppercorn=Piprograjno
Green Pepper=
Yellow Pepper=
Red Pepper=
Ground Pepper=Muelita Pipro
Pineapple Top=Pinto de Ananaso
Pineapple=Ananaso
Pineapple Ring=Ananasa Ringo
Pineapple Juice=Ananasa Suko
Potato=Terpomo
Baked Potato=Bakita Terpomo
Cucumber and Potato Salad=Salato de Kukumo kaj Terpomo
Pumpkin Slice=Tranĉaĵo de Kukurbo
Jack 'O Lantern (punch to turn on and off)=Kukurba Lanterno (punu por ŝalti kaj malŝalti)
Scarecrow Bottom=Birdotimigilo Fundo
Pumpkin Bread=Kukurba Pano
Pumpkin Dough=Kukurba Pasto
Pumpkin=Kukurbo
Raspberries=Framboj
Raspberry Smoothie=Fraba Glataĵo
Rhubarb=Rabarbo
Rhubarb Pie=Rabarba Torto
Rice Seed=
Rice=Rizo
Rice Bread=Riza Pano
Rice Flour=Riza Faruno
Rye seed=Sekala Semo
Rye=Sekalo
Oat seed=Avena Semo
Oats=
Multigrain Flour=Multgrajna Faruno
Multigrain Bread=Multgrajna Pano
Savanna Soil=
Wet Savanna Soil=
Soil=Tero
Wet Soil=Malseka Tero
Soy Pod=
Soy Sauce=
Soy Milk=
Tofu=
Cooked Tofu=
Spinach=
Strawberry=Frago
Sunflower=
Sunflower Seeds=
Toasted Sunflower Seeds=
Bottle of Sunflower Oil=
Sunflower Seed Bread=
Tomato=Tomato
Tomato Soup=
Wooden Bowl=Ligna Bovlo
Saucepan=Kaserolo
Cooking Pot=Kuirpoto
Baking Tray=Baka Pleto
Skillet=Pato
Mortar and Pestle=Pistujo
Cutting Board=Tranĉa Tabulo
Juicer=Spremilo
Glass Mixing Bowl=Vitra Miksa Bovlo
Vanilla=
Vanilla Extract=
Wheat Seed=Tritika Semo
Wheat=Tritiko
Straw=Pajlo
Flour=Faruno
Bread=Pano
Sliced Bread=Tranĉita Pano
Toast=Toasto
Toast Sandwich=Toasta Sandviĉo

View File

@ -1,177 +0,0 @@
# textdomain: farming
Banana=Banana
Banana Leaves=Hojas de Banana
Orange=Naranja
Artichoke=Alcachofa
Asparagus=Esparragos
Barley Seed=Semillas de Cebada
Barley=Cebada
Green Beans=Frijoles
Bean Pole (place on soil before planting beans)=Varas para frijoles (colocar antes de plantar frijoles)
Beetroot=Remolacha
Beetroot Soup=Sopa de Remolacha
Blackberries=Zarzamoras
Wild Blueberries=Arándanos
Blueberry Muffin=Bizcocho de Arándanos
Blueberry Pie=Pastel de Arándanos
Cabbage=Coliflor
Carrot=Zanahoria
Carrot Juice=Zumo de Zanahoria
Golden Carrot=Zanahoria Dorada
Chili Pepper=Guindilla
Bowl of Chili=Tazón de chile
Chili Powder=Chile en polvo
Raw Cocoa Beans=Granos de Cacao Verde
Cocoa Beans=Granos de Cacao
Cookie=Galleta
Bar of Dark Chocolate=Barra de Chocolate amargo
Chocolate Block=Bloque de Chocolate
Coffee Beans=Granos de Café
Cup of Coffee=Taza de Café
Corn=Mazorca de Maiz
Corn on the Cob=Mazorca Frita
Popcorn=Palomitas
Cornstarch=Maicena
Bottle of Ethanol=Botella de Etanol
Wild Cotton=Algodón silvestre
Cotton Seed=Semillas de Algodón
Cotton=Algodón
String=Cuerda
Cucumber=Pepino
Eggplant=Berenjena
Garlic clove=Diente de Ajo
Garlic=Ajo
Garlic Braid=Ristra de Ajos
Ginger=Jengibre
Grapes=Uvas
Trellis (place on soil before planting grapes)=Emparrado (colocar antes de sembrar uvas)
Hemp Seed=Semillas de Cáñamo
Hemp Leaf=Hoja de Cáñamo
Bottle of Hemp Oil=Aceite de Cáñamo
Hemp Fibre=Fibra de Cáñamo
Hemp Block=Bloque de Cáñamo
Hemp Rope=Cuerda de Cáñamo
Lettuce=Lechuga
Melon Slice=Rodaja de Sandia
Melon=Sandia
Mint Seeds=Semillas de Menta
Mint Leaf=Hoja de Menta
Mint Tea=Té de Menta
Onion=Cebolla
Onion Soup=Sopa de Cebolla
Parsley=Perejil
Pea Pod=Vaina de Guisantes
Pea Soup=Sopa de Guisantes
Peppercorn=Pimienta en Grano
Green Pepper=Pimiento Verde
Yellow Pepper=Pimiento Amarillo
Red Pepper=Pimiento Rojo
Ground Pepper=Pimienta Molida
Pineapple Top=Semilla de Piña
Pineapple=Piña
Pineapple Ring=Rodaja de Piña
Pineapple Juice=Zumito de Piña
Potato=Patata
Baked Potato=Papa Asada
Cucumber and Potato Salad=Ensalada de Pepino y Patatas
Pumpkin Slice=Trozo de Calabaza
Jack 'O Lantern (punch to turn on and off)=Linterna Calabaza (golpear para encender o apagar)
Scarecrow Bottom=Cuerpo de Espantapájaros
Pumpkin Bread=Pan de Calabaza
Pumpkin Dough=Pasta de Calabaza
Pumpkin=Calabaza
Raspberries=Frambuesas
Raspberry Smoothie=Crema de Frambuesas
Rhubarb=Ruibarbo
Rhubarb Pie=Bizcocho de Ruibarbo
Rice Seed=Granos de Arroz
Rice=Arroz
Rice Bread=Pan de Arroz
Rice Flour=Harina de Arroz
Rye seed=Semillas de Centeno
Rye=Centeno
Oat seed=Semillas de Avena
Oats=Avena
Multigrain Flour=Harina Multigrano
Multigrain Bread=Pan Multigrano
Soy Pod=Vaina de Soja
Soy Sauce=Aceite de Soja
Soy Milk=Leche de Soja
Tofu=Tofu
Cooked Tofu=Tofu Cocinado
Spinach=Espinacas
Strawberry=Fresa
Sunflower=Girasol
Sunflower Seeds=Semillas de Girasol
Toasted Sunflower Seeds=Pipas de Girasol
Bottle of Sunflower Oil=Aceite de Girasol
Sunflower Seed Bread=Pan con Pipas
Tomato=Tomate
Tomato Soup=Sopa de Tomate
Vanilla=Vainilla
Vanilla Extract=Extracto de Vainilla
Wheat Seed=Semillas de Trigo
Wheat=Trigo
Straw=Heno
Flour=Harina
Bread=Pan
Sliced Bread=Rebanada de Pan
Toast=Tostada
Toast Sandwich=Bocadillo de Pan
Glass of Water=Vaso de Agua
Sugar=Azucar
Sugar Cube=Bloque de Azucar
Caramel=Caramelo
Salt=Sal
Salt crystal=Cristal de Sal
Mayonnaise=Mayonesa
Rose Water=Agua de Rosas
Turkish Delight=Delicias Turcas
Garlic Bread=Pan con Ajito
Donut=Rosquilla
Chocolate Donut=Rosquilla de Chocolate
Apple Donut=Rosquilla de Manzana
Porridge=Gachas
Jaffa Cake=Galleta Jaffa
Apple Pie=Pastel de Manzana
Cactus Juice=Zumo de Cactus
Pasta=Pasta
Mac & Cheese=Pasta con queso
Spaghetti=Espaguetis
Bibimbap=Bibimbap
Burger=Hamburguesa
Salad=Ensalada
Triple Berry Smoothie=Helado Multifrutas
Spanish Potatoes=Tortilla Española
Potato omelet=Tortilla de Patatas
Paella=Paella
Vanilla Flan=Flan de Vainilla
Vegan Cheese=Queso Vegano
Onigiri=Onigiri
Gyoza=Empanadilla Japonesa
Mochi=Mochi
Gingerbread Man=Moñequito de Jengibre
Hoe=Azada
Wooden Hoe=Azada de Madera
Stone Hoe=Azada de Piedra
Steel Hoe=Azada de Acero
Bronze Hoe=Azada de Bronce
Mese Hoe=Azada de Mese
Diamond Hoe=Azada de Diamante
Wood Hoe=Azada de Madera
Hoe Bomb (use or throw on grassy areas to hoe land)=Bomba Azada (usar o lanzar a tierra para ararla)
Mithril Scythe (Use to harvest and replant crops)=Guadaña de Mithril
Seed=Semilla
Savanna Soil=Tierra de Cultivo de Sabana
Wet Savanna Soil=Tierra de Cultivo de Sabana Humeda
Soil=Tierra de Cultivo
Wet Soil=Tierra de Cultivo Humeda
Wooden Bowl=Cuenco de Madera
Saucepan=Cazo
Cooking Pot=Olla
Baking Tray=Bandeja para Hornear
Skillet=Sartén
Mortar and Pestle=Mortero
Cutting Board=Tabla de cortar
Juicer=Exprimidor
Glass Mixing Bowl=Bol de Mezcla

View File

@ -1,177 +0,0 @@
# textdomain: farming
Banana=Banane
Banana Leaves=Feuilles de banane
Orange=Orange
Artichoke=Artichaut
Asparagus=Asperge
Barley Seed=Graine d'orge
Barley=Orge
Green Beans=Haricots verts
Bean Pole (place on soil before planting beans)=Tuteur pour haricots (placer sur le sol avant de planter des haricots)
Beetroot=Betterave
Beetroot Soup=Soupe de betterave
Blackberries=Mûres
Wild Blueberries=Myrtilles sauvages
Blueberry Muffin=Muffin aux myrtilles
Blueberry Pie=Tarte aux myrtilles
Cabbage=Chou
Carrot=Carotte
Carrot Juice=Jus de carotte
Golden Carrot=Carotte dorée
Chili Pepper=Piment fort
Bowl of Chili=Bol de chilli
Chili Powder=Poudre de piment
Raw Cocoa Beans=Fèves de cacao brutes
Cocoa Beans=Fèves de cacao
Cookie=Biscuit
Bar of Dark Chocolate=Tablette de chocolat noir
Chocolate Block=Bloc de chocolat
Coffee Beans=Grains de café
Cup of Coffee=Tasse de café
Corn=Maïs
Corn on the Cob=Cobette (maïs cuit)
Popcorn=Popcorn
Cornstarch=Fécule de maïs
Bottle of Ethanol=Bouteille d'éthanol
Wild Cotton=Coton sauvage
Cotton Seed=Graines de coton
Cotton=Coton
String=Ficelle
Cucumber=Concombre
Eggplant=Aubergine
Garlic clove=Gousse d'ail
Garlic=Tête d'ail
Garlic Braid=Ail tressé
Ginger=Gingembre
Grapes=Raisins
Trellis (place on soil before planting grapes)=Treillis (placer sur le sol avant de planter la vigne)
Hemp Seed=Graines de chanvre
Hemp Leaf=Feuille de chanvre
Bottle of Hemp Oil=Bouteille d'huile de chanvre
Hemp Fibre=Fibre de chanvre
Hemp Block=Bloc de chanvre
Hemp Rope=Corde de chanvre
Lettuce=Laitue
Melon Slice=Tranche de melon
Melon=Melon
Mint Seeds=Graine de menthe
Mint Leaf=Feuille de menthe
Mint Tea=Thé à la menthe
Onion=Oignon
Onion Soup=Soupe à l'oignon
Parsley=Persil
Pea Pod=Cosse de petit-pois
Pea Soup=Soupe de petit-pois
Peppercorn=Grain de poivre
Green Pepper=Poivron vert
Yellow Pepper=Poivron jaune
Red Pepper=Poivron rouge
Ground Pepper=Poivre moulu
Pineapple Top=Pousse d'ananas
Pineapple=Ananas
Pineapple Ring=Tranche d'ananas
Pineapple Juice=Jus d'ananas
Potato=Pomme de terre
Baked Potato=Pomme de terre cuite
Cucumber and Potato Salad=Salade de pomme de terre et concombre
Pumpkin Slice=Tranche de citrouille
Jack 'O Lantern (punch to turn on and off)=Citrouille d'halloween (Frapper pour allumer et éteindre)
Scarecrow Bottom=Base d'épouventail
Pumpkin Bread=Pain à la citrouille
Pumpkin Dough=Pâton de pain à la citrouille
Pumpkin=Citrouille
Raspberries=Framboises
Raspberry Smoothie=Smoothie aux framboises
Rhubarb=Rhubarbe
Rhubarb Pie=Tarte à la rhubarbe
Rice Seed=Riz
Rice=Riz
Rice Bread=Pain de riz
Rice Flour=Farine de riz
Rye seed=Grains de seigle
Rye=Seigle
Oat seed=Grains d'orge
Oats=Avoine
Multigrain Flour=Farine multi-céréales
Multigrain Bread=Pain aux céréales
Soy Pod=Cosse de soja
Soy Sauce=Sauce de soja
Soy Milk=Lait de soja
Tofu=Tofu
Cooked Tofu=Tofu cuit
Spinach=Épinard
Strawberry=Fraise
Sunflower=Tournesol
Sunflower Seeds=Graines de tournesol
Toasted Sunflower Seeds=Graines de tournesol grillées
Bottle of Sunflower Oil=Bouteille d'huile de tournesol
Sunflower Seed Bread=Pain de graines de tournesol
Tomato=Tomate
Tomato Soup=Soupe de tomate
Vanilla=Vanille
Vanilla Extract=Extrait de vanille
Wheat Seed=Grain de blé
Wheat=Blé
Straw=Paille
Flour=Farine
Bread=Pain
Sliced Bread=Tranche de pain
Toast=Pain grillé
Toast Sandwich=Sandwich au pain grillé
Glass of Water=Verre d'eau
Sugar=Sucre
Sugar Cube=Morceau de sucre
Caramel=Caramel
Salt=Sel
Salt crystal=Cristaux de sel
Mayonnaise=Mayonnaise
Rose Water=Eau de rose
Turkish Delight=Douceur turque
Garlic Bread=Pain à l'ail
Donut=Beignet
Chocolate Donut=Beignet au chocolat
Apple Donut=Beignet aux pommes
Porridge=Gruau de céréales
Jaffa Cake=Petit gâteau à l'orange "Jaffa"
Apple Pie=Tarte aux pommes
Cactus Juice=Jus de cactus
Pasta=Pâtes
Mac & Cheese=Grâtin de pâtes
Spaghetti=Spaghetti
Bibimbap=Bibimbap
Burger=Hamburger
Salad=Salade verte
Triple Berry Smoothie=Smoothie aux trois baies
Spanish Potatoes=Patates sautées à l'Espagnole
Potato omelet=Omelette aux pommes de terre
Paella=Paëlla
Vanilla Flan=Flan
Vegan Cheese=Faumage végan
Onigiri=Onigiri
Gyoza=Gyoza
Mochi=Mochi
Gingerbread Man=Bonhomme en pain d'épice
Hoe=Binette
Wooden Hoe=Binette en bois
Stone Hoe=Binette en pierre
Steel Hoe=Binette en acier
Bronze Hoe=Binette en bronze
Mese Hoe=Binette en mese
Diamond Hoe=Binette en diamant
Wood Hoe=Binette en bois
Hoe Bomb (use or throw on grassy areas to hoe land)=Bombe à binnage (Actionner ou lancer sur une zone herbeuse pour la binner)
Mithril Scythe (Use to harvest and replant crops)=Faux de mithril (Utiliser pour récolter et replanter les cultures)
Seed=Graine
Savanna Soil=Terre de la savane binnée
Wet Savanna Soil=Terre humide et binnée de la savane
Soil=Terre binnée
Wet Soil=Terre humide et binnée
Wooden Bowl=Bol en bois
Saucepan=Casserole
Cooking Pot=Marmitte
Baking Tray=Lèche-frite
Skillet=Poêle
Mortar and Pestle=Mortier et pilon
Cutting Board=Planche à découper
Juicer=Presse-agrumes
Glass Mixing Bowl=Terrine en verre

View File

@ -1,176 +0,0 @@
# textdomain: farming
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
Blackberries=Szeder
Wild Blueberries=Vadá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=Rúd étcsoki
Chocolate Block=Csokiblokk
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áspita
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 smoothie
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=Gerezd fokhagyma
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 babot)
Hemp Seed=Kendermag
Hemp Leaf=Kenderlevél
Bottle of Hemp Oil=Üveg kenderolaj
Hemp Fibre=Kenderrost
Hemp Block=Kenderblokk
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)
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=Szelet dinnye
Melon=Dinnye
Mint Seeds=Mentamag
Mint Leaf=Mentalevél
Mint Tea=Mentatea
Onion=Hagyma
Onion Soup=Hagymaleves
Parsley=Petrezselyem
Pea Pod=Hüvelyes borsó
Pea Soup=Borsóleves
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=Szelet ananász
Pineapple Juice=Ananászlé
Potato=Krumpli
Baked Potato=Sült krumpli
Cucumber and Potato Salad=Uborkás krumplisaláta
Pumpkin Slice=Szelet tök
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
Raspberries=Málna
Raspberry Smoothie=Málnasmoothie
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 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=Szotyi
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
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=Szívószál
Flour=Liszt
Bread=Kenyér
Sliced Bread=Szeletelt kenyér
Toast=Pirítós
Toast Sandwich=Pirítósszendvics

View File

@ -1,186 +0,0 @@
# textdomain: farming
Crop=.
Artichoke=Артишок
Asparagus=Спаржа
Barley Seed=Семена ячменя
Barley=Ячмень
Green Beans=Зеленая фасоль
Bean Pole (place on soil before planting beans)=Жердь для бобовых (установите на почву перед посадкой бобовых)
Beetroot=Свекла
Beetroot Soup=Борщ
Blackberry=Ежевика
Blackberries=Ежевика
Wild Blueberries=Голубика
Blueberry=Голубика
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=Кофе
Coffee Beans=Кофейные зерна
Cup of Coffee=Чашка кофе
Banana=Банан
Banana Leaves=Листья банана
Orange=Апельсин
Corn=Кукуруза
Corn on the Cob=Початок кукурузы
Popcorn=Попкорн
Cornstarch=Кукурузный крахмал
Bottle of Ethanol=Бутылка спирта
Wild Cotton=Дикорастущий хлопок
Cotton Seed=Семена хлопка
Cotton=Хлопок
String=Нить
Cucumber=Огурец
Eggplant=Баклажан
Glass of Water=Стакан воды
Sugar=Сахар
Sugar Cube=Кусочек сахара
Caramel=Карамель
Salt=Соль
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=Пряничный человечек
Garlic clove=Зубчик чеснока
Garlic=Чеснок
Garlic Braid=Связка чеснока
Ginger=Имбирь
Grapes=Виноград
Trellis (place on soil before planting grapes)=Решетка (поставьте на почву перед посадкой винограда)
Hemp=Конопля
Hemp Seed=Семена конопли
Hemp Leaf=Лист конопли
Bottle of Hemp Oil=Бутылка конопляного масла
Hemp Fibre=Конопляное волокно
Hemp Block=Блок конопли
Hemp Rope=Пеньковая веревка
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=Семена
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=Желтый перец
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=Тыква
Raspberry=Малина
Raspberries=Малина
Raspberry Smoothie=Малиновый смузи
Rhubarb=Ревень
Rhubarb Pie=Пирог с ревенем
Rice Seed=Семена риса
Rice=Рис
Rice Bread=Рисовый хлеб
Rice Flour=Рисовая мука
Rye seed=Зёрна ржи
Rye=Рожь
Oat seed=Семена овса
Oats=Овес
Multigrain Flour=Мультизерновая мука
Multigrain Bread=Мультизерновой хлеб
Savanna Soil=Земля саванны
Wet Savanna Soil=Увлажненная земля саванны
Soil=Земля
Wet Soil=Увлажненная земля
Soy=Соя
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=Томатный суп
Wooden Bowl=Деревянная миска
Saucepan=Кастрюля
Cooking Pot=Котел
Baking Tray=Противень
Skillet=Сковорода
Mortar and Pestle=Ступка и пестик
Cutting Board=Разделочная доска
Juicer=Соковыжималка
Glass Mixing Bowl=Стеклянная чаша
Vanilla=Ваниль
Vanilla Extract=Экстракт ванили
Wheat Seed=Зёрна пшеницы
Wheat=Пшеница
Straw=Солома
Flour=Мука
Bread=Хлеб
Sliced Bread=Нарезанный хлеб
Toast=Тост
Toast Sandwich=Сэндвич

View File

@ -1,176 +0,0 @@
# textdomain: farming
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=一杯咖啡
Banana=香蕉
Banana Leaves=香蕉叶
Orange=橙色
Corn=玉米
Corn on the Cob=玉米棒
Popcorn=
Cornstarch=玉米淀粉
Bottle of Ethanol=一瓶乙醇
Wild Cotton=
Cotton Seed=棉籽
Cotton=棉花
String=线
Cucumber=黄瓜
Eggplant=
Glass of Water=
Sugar=糖
Sugar Cube=
Caramel=
Salt=盐
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=
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=麻绳
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=种子
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=杂粮面包
Savanna Soil=
Wet Savanna Soil=
Soil=土壤
Wet Soil=湿土
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=
Wooden Bowl=木碗
Saucepan=平底锅
Cooking Pot=锅
Baking Tray=烤盘
Skillet=平底锅
Mortar and Pestle=研钵
Cutting Board=砧板
Juicer=榨汁机
Glass Mixing Bowl=搅拌杯
Vanilla=
Vanilla Extract=
Wheat Seed=小麦种子
Wheat=小麦
Straw=稻草
Flour=面粉
Bread=面包
Sliced Bread=切片面包
Toast=烤面包片
Toast Sandwich=三明治面包

View File

@ -1,176 +0,0 @@
# textdomain: farming
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=一杯咖啡
Banana=香蕉
Banana Leaves=香蕉葉
Orange=橙色
Corn=玉米
Corn on the Cob=玉米棒
Popcorn=
Cornstarch=玉米澱粉
Bottle of Ethanol=一瓶乙醇
Wild Cotton=
Cotton Seed=棉籽
Cotton=棉花
String=字符串
Cucumber=黃瓜
Eggplant=
Glass of Water=
Sugar=糖
Sugar Cube=
Caramel=
Salt=鹽
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=
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=麻繩
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=種子
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=雜糧麵包
Savanna Soil=
Wet Savanna Soil=
Soil=土壤
Wet Soil=溼土
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=
Wooden Bowl=木碗
Saucepan=平底鍋
Cooking Pot=鍋
Baking Tray=烤盤
Skillet=平底鍋
Mortar and Pestle=研缽
Cutting Board=砧板
Juicer=榨汁機
Glass Mixing Bowl=攪拌杯
Vanilla=
Vanilla Extract=
Wheat Seed=小麥種子
Wheat=小麥
Straw=稻草
Flour=麵粉
Bread=麵包
Sliced Bread=切片面包
Toast=烤麵包片
Toast Sandwich=三明治麵包

195
locale/fr.txt Normal file
View File

@ -0,0 +1,195 @@
# Traduction Française du mod farming par TenPlus1
# textdomain: farming
# author: Papaou30
# author: TheDarkTiger
# last update: 2020/Apr/26
###### folder . ######
### init.lua ###
Seed=Graine
### compatibility.lua ###
Banana=Banane
Banana Leaves=Feuilles de Banane
Orange=Orange
Strawberry=Fraise
### food.lua ###
Sugar=Sucre
Salt=Sel
Rose Water=Eau de Rose
Turkish Delight=Douceur Turque
Garlic Bread=Pain à l'Ail
Donut=Beignet
Chocolate Donut=Beignet au chocolat
Apple Donut=Beignet aux pommes
Porridge=Gruau de céréales
Jaffa Cake=Petit gâteau à l'orange "Jaffa"
### hoes.lua ###
Hoe=Binette
Wooden Hoe=Binette en Bois
Stone Hoe=Binette en Pierre
Steel Hoe=Binette en Acier
Bronze Hoe=Binette en Bronze
Mese Hoe=Binette en Mese
Diamond Hoe=Binette en Diamant
# Surcharge du mod [Toolranks] à faire #
Hoe Bomb (use or throw on grassy areas to hoe land)=Bombe à binnage (Actionner ou lancer sur une zone herbeuse pour la binner)
Mithril Scythe (Right-click to harvest and replant crops)=Faux en Mithril (Récolte et replante des graines)
# Surcharge du mod [Toolranks] à faire #
### soil.lua ###
Soil=Sol binné
Wet Soil=Sol binné humide
### utensils.lua ###
Wooden Bowl=Bol en Bois
Saucepan=Casserole
Cooking Pot=Fait-tout
Baking Tray=Lèche-frite
Skillet=Poêle
Mortar and Pestle=Mortier et Pilon
Cutting Board=Planche à découper
Juicer=Presse-agrumes
Glass Mixing Bowl=Terrine en Verre
###### folder ./crops ######
### barley.lua ###
Barley Seed=Graine d'Orge
Barley=Orge
### beans.lua ###
Green Beans=Haricots verts
Bean Pole (place on soil before planting beans)=Tuteur pour haricots (placer sur le sol avant de planter des haricots)
### beetroot.lua ###
Beetroot=Betrave
Beetroot Soup=Soupe de Betrave
### blueberry.lua ###
Blueberries=Myrtilles
Blueberry Muffin=Muffin aux Myrtilles
Blueberry Pie=Tarte aux Myrtilles
### carrot.lua ##
Carrot=Carotte
Carrot Juice=Jus de Carotte
Golden Carrot=Carotte dorée
### chili.lua ###
Chili Pepper=Piment Rouge
Bowl of Chili=Assiette de Chilli
### cocoa.lua ###
Cocoa Beans=Fèves de Cacao
Cookie=Cookie
Bar of Dark Chocolate=Tablette de Chocolat noir
Chocolate Block=Block de Chocolat
### coffee.lua ###
Coffee Beans=Grains de café
Cup of Coffee=Tasse de café
### corn.lua ###
Corn=Maïs
Corn on the Cob=Cobette (Maïs cuit)
Cornstarch=Fécule de Maïs
Bottle of Ethanol=Bouteille d'Éthanol
### cotton.lua ###
Cotton Seed=Graines de Coton
Cotton=Coton
String=Ficelle
### cucumber.lua ###
Cucumber=Concombre
### garlic.lua ###
Garlic clove=Gousse d'Ail
Garlic=Tête d'Ail
Garlic Braid=Ail tressé
### grapes.lua ###
Grapes=Raisins
Trellis (place on soil before planting grapes)=Treillis (placer sur le sol avant de planter la vigne)
### hemp.lua ###
Hemp Seed=Graines de Chanvre
Hemp Leaf=Feuille de Chanvre
Bottle of Hemp Oil=Bouteille d'huile de Chanvre
Hemp Fibre=Fibre de Chanvre
Hemp Block=Bloc de Chanvre
Hemp Rope=Corde de Chanvre
### melon.lua ###
Melon Slice=Tranche de Melon
Melon=Melon
### onion.lua ###
Onion=Oignon
### peas.lua ###
Pea Pod=Cosse de Petit-poids
Peas=Petit-poids
Pea Soup=Soupe de Petit-poids
### pepper.lua ###
Peppercorn=Grain de Poivre
Pepper=Poivron
Ground Pepper=Poivre moulu
### pinapple.lua ###
Pineapple Top=Pousse d'Ananas
Pineapple=Ananas
Pineapple Ring=Tranche d'Ananas
Pineapple Juice=Jus d'Ananas
### potato.lua ###
Potato=Pomme de terre
Baked Potato=Pomme de terre cuite
Cucumber and Potato Salad=Salade de Pomme de terre au Concombre
### pumpkin.lua ###
Pumpkin Slice=Tranche de Citrouille
Jack 'O Lantern (punch to turn on and off)=Jack 'O Lantern (Frapper pour allumer et éteindre)
Scarecrow Bottom=Base d'Epouventail
Pumpkin Bread=Pain à la Citrouille
Pumpkin Dough=Pâton de pain à la Citrouille
Pumpkin=Citrouille
### raspberry.lua ###
Raspberries=Framboises
Raspberry Smoothie=Smoothie aux Framboises
### rhubarb.lua ###
Rhubarb=Rhubarbe
Rhubarb Pie=Tarte à la rhubarbe
### ryeoatrice.lua ###
Rye=Seigle
Rye seed=Grains de Seigle
Oat=Orge
Oat seed=Grains d'Orge
Rice=Riz
Rice grains=Grain de Riz
Rice Bread=Pain de Riz
Rice Flour=Farine de Riz
Multigrain Flour=Farine Multi-céréales
Multigrain Bread=Pain aux Céréales
### tomato.lua ###
Tomato=Tomate
### wheat.lua ###
Wheat Seed=Grain de blé
Wheat=Blé
Straw=Paille
Flour=Farine
Bread=Pain
Sliced Bread=Tranche de Pain
Toast=Pain Grillé
Toast Sandwich=Sandwich au Pain

View File

@ -1,50 +1,22 @@
# Translation of the farming mod by TenPlus1
# textdomain: farming # textdomain: farming
Artichoke= # author: (Hamlet)
Asparagus= # last update: 2020/Jun/02
Barley Seed=Seme d'orzo
Barley=Orzo ###### folder . ######
Green Beans=Fagiolini
Bean Pole (place on soil before planting beans)=Palina per fagiolini (mettila sul terreno coltivabile prima di piantare i fagiolini) ### init.lua ###
Beetroot=Barbabietola Seed=Seme
Beetroot Soup=Zuppa di barbabietola
Blackberries= ### compatibility.lua ###
Wild Blueberries=Mirtilli Selvatici
Blueberry Muffin=Focaccina di mirtilli
Blueberry Pie=Tortino di mirtilli
Cabbage=
Carrot=Carota
Carrot Juice=Succo di carota
Golden Carrot=Carota d'oro
Chili Pepper=Peperoncino
Bowl of Chili=Ciotola di peperoncino
Chili Powder=
Raw Cocoa Beans=
Cocoa Beans=Chicchi di cacao
Cookie=Biscotto
Bar of Dark Chocolate=Barra di cioccolato fondente
Chocolate Block=Blocco di cioccolato
Coffee Beans=Chicchi di caffè
Cup of Coffee=Tazza di caffè
Banana=Banana Banana=Banana
Banana Leaves=Foglie di banano Banana Leaves=Foglie di banano
Orange=Arancia Orange=Arancia
Corn=Mais Strawberry=Fragola
Corn on the Cob=Pannocchia arrostita
Popcorn= ### food.lua ###
Cornstarch=Amido di mais
Bottle of Ethanol=Bottiglia di alcol etilico
Wild Cotton=
Cotton Seed=Seme di cotone
Cotton=Cotone
String=Filo
Cucumber=Cetriolo
Eggplant=
Glass of Water=
Sugar=Zucchero Sugar=Zucchero
Sugar Cube=
Caramel=
Salt=Sale Salt=Sale
Mayonnaise=
Rose Water=Acqua di rose Rose Water=Acqua di rose
Turkish Delight=Lokum Turkish Delight=Lokum
Garlic Bread=Pane all'aglio Garlic Bread=Pane all'aglio
@ -53,36 +25,8 @@ Chocolate Donut=Ciambella al cioccolato
Apple Donut=Ciambella alla mela Apple Donut=Ciambella alla mela
Porridge=Porridge Porridge=Porridge
Jaffa Cake=Torta di jaffa Jaffa Cake=Torta di jaffa
Apple Pie=
Cactus Juice= ### hoes.lua ###
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=Spicchio d'aglio
Garlic=Aglio
Garlic Braid=Treccia d'aglio
Ginger=
Grapes=Chicchi d'uva
Trellis (place on soil before planting grapes)=Graticcio (mettilo sul terreno coltivabile prima di piantare i chicchi d'uva)
Hemp Seed=Seme di canapa
Hemp Leaf=Foglia di canapa
Bottle of Hemp Oil=Bottiglia d'olio di canapa
Hemp Fibre=Fibra di canapa
Hemp Block=Blocco di canapa
Hemp Rope=Corda di canapa
Hoe=Zappa Hoe=Zappa
Wooden Hoe=Zappa di legno Wooden Hoe=Zappa di legno
Stone Hoe=Zappa di pietra Stone Hoe=Zappa di pietra
@ -90,71 +34,16 @@ Steel Hoe=Zappa d'acciaio
Bronze Hoe=Zappa di bronzo Bronze Hoe=Zappa di bronzo
Mese Hoe=Zappa di mese Mese Hoe=Zappa di mese
Diamond Hoe=Zappa di diamante Diamond Hoe=Zappa di diamante
Wood Hoe= # Surcharge du mod [Toolranks] à faire #
Hoe Bomb (use or throw on grassy areas to hoe land)=Bomba zappa (usala o lanciala sulle aree erbose per zappare il terreno) Hoe Bomb (use or throw on grassy areas to hoe land)=Bomba zappa (usala o lanciala sulle aree erbose per zappare il terreno)
Mithril Scythe (Use to harvest and replant crops)= Mithril Scythe (Right-click to harvest and replant crops)=Falce di mithril (clicca col destro per raccogliere e ripiantare le prose)
Seed=Seme # Surcharge du mod [Toolranks] à faire #
Lettuce=
Melon Slice=Fetta d'anguria ### soil.lua ###
Melon=Anguria
Mint Seeds=
Mint Leaf=
Mint Tea=
Onion=Cipolla
Onion Soup=
Parsley=
Pea Pod=Baccello di piselli
Pea Soup=Zuppa di piselli
Peppercorn=Grano di pepe
Green Pepper=
Yellow Pepper=
Red Pepper=
Ground Pepper=Pepe macinato
Pineapple Top=Cima d'ananas
Pineapple=Ananas
Pineapple Ring=Anello d'ananas
Pineapple Juice=Succo d'ananas
Potato=Patata
Baked Potato=Patata arrostita
Cucumber and Potato Salad=Insalata di patate e cetrioli
Pumpkin Slice=Fetta di zucca
Jack 'O Lantern (punch to turn on and off)=Jack Lanterna (colpirlo per accenderlo e spegnerlo)
Scarecrow Bottom=Fondo dello spaventapasseri
Pumpkin Bread=Pane alla zucca
Pumpkin Dough=Pasta di zucca
Pumpkin=Zucca
Raspberries=Lamponi
Raspberry Smoothie=Purea di lamponi
Rhubarb=Rabarbaro
Rhubarb Pie=Tortino al rabarbaro
Rice Seed=
Rice=Riso
Rice Bread=Pane di riso
Rice Flour=Farina di riso
Rye seed=Seme di segale
Rye=Segale
Oat seed=Seme d'avena
Oats=
Multigrain Flour=Farina multicereale
Multigrain Bread=Pane multicereale
Savanna Soil=
Wet Savanna Soil=
Soil=Terreno coltivabile Soil=Terreno coltivabile
Wet Soil=Terreno coltivabile bagnato Wet Soil=Terreno coltivabile bagnato
Soy Pod=
Soy Sauce= ### utensils.lua ###
Soy Milk=
Tofu=
Cooked Tofu=
Spinach=
Strawberry=Fragola
Sunflower=
Sunflower Seeds=
Toasted Sunflower Seeds=
Bottle of Sunflower Oil=
Sunflower Seed Bread=
Tomato=Pomodoro
Tomato Soup=
Wooden Bowl=Ciotola di legno Wooden Bowl=Ciotola di legno
Saucepan=Casseruola Saucepan=Casseruola
Cooking Pot=Pentola da cottura Cooking Pot=Pentola da cottura
@ -164,8 +53,137 @@ Mortar and Pestle=Mortaio e pestello
Cutting Board=Tagliere Cutting Board=Tagliere
Juicer=Spremiagrumi Juicer=Spremiagrumi
Glass Mixing Bowl=Terrina di vetro Glass Mixing Bowl=Terrina di vetro
Vanilla=
Vanilla Extract=
###### folder ./crops ######
### barley.lua ###
Barley Seed=Seme d'orzo
Barley=Orzo
### beans.lua ###
Green Beans=Fagiolini
Bean Pole (place on soil before planting beans)=Palina per fagiolini (mettila sul terreno coltivabile prima di piantare i fagiolini)
### beetroot.lua ###
Beetroot=Barbabietola
Beetroot Soup=Zuppa di barbabietola
### blueberry.lua ###
Blueberries=Mirtilli
Blueberry Muffin=Focaccina di mirtilli
Blueberry Pie=Tortino di mirtilli
### carrot.lua ##
Carrot=Carota
Carrot Juice=Succo di carota
Golden Carrot=Carota d'oro
### chili.lua ###
Chili Pepper=Peperoncino
Bowl of Chili=Ciotola di peperoncino
### cocoa.lua ###
Cocoa Beans=Chicchi di cacao
Cookie=Biscotto
Bar of Dark Chocolate=Barra di cioccolato fondente
Chocolate Block=Blocco di cioccolato
### coffee.lua ###
Coffee Beans=Chicchi di caffè
Cup of Coffee=Tazza di caffè
### corn.lua ###
Corn=Mais
Corn on the Cob=Pannocchia arrostita
Cornstarch=Amido di mais
Bottle of Ethanol=Bottiglia di alcol etilico
### cotton.lua ###
Cotton Seed=Seme di cotone
Cotton=Cotone
String=Filo
### cucumber.lua ###
Cucumber=Cetriolo
### garlic.lua ###
Garlic clove=Spicchio d'aglio
Garlic=Aglio
Garlic Braid=Treccia d'aglio
### grapes.lua ###
Grapes=Chicchi d'uva
Trellis (place on soil before planting grapes)=Graticcio (mettilo sul terreno coltivabile prima di piantare i chicchi d'uva)
### hemp.lua ###
Hemp Seed=Seme di canapa
Hemp Leaf=Foglia di canapa
Bottle of Hemp Oil=Bottiglia d'olio di canapa
Hemp Fibre=Fibra di canapa
Hemp Block=Blocco di canapa
Hemp Rope=Corda di canapa
### melon.lua ###
Melon Slice=Fetta d'anguria
Melon=Anguria
### onion.lua ###
Onion=Cipolla
### peas.lua ###
Pea Pod=Baccello di piselli
Peas=Piselli
Pea Soup=Zuppa di piselli
### pepper.lua ###
Peppercorn=Grano di pepe
Pepper=Pepe
Ground Pepper=Pepe macinato
### pinapple.lua ###
Pineapple Top=Cima d'ananas
Pineapple=Ananas
Pineapple Ring=Anello d'ananas
Pineapple Juice=Succo d'ananas
### potato.lua ###
Potato=Patata
Baked Potato=Patata arrostita
Cucumber and Potato Salad=Insalata di patate e cetrioli
### pumpkin.lua ###
Pumpkin Slice=Fetta di zucca
Jack 'O Lantern (punch to turn on and off)=Jack Lanterna (colpirlo per accenderlo e spegnerlo)
Scarecrow Bottom=Fondo dello spaventapasseri
Pumpkin Bread=Pane alla zucca
Pumpkin Dough=Pasta di zucca
Pumpkin=Zucca
### raspberry.lua ###
Raspberries=Lamponi
Raspberry Smoothie=Purea di lamponi
### rhubarb.lua ###
Rhubarb=Rabarbaro
Rhubarb Pie=Tortino al rabarbaro
### ryeoatrice.lua ###
Rye=Segale
Rye seed=Seme di segale
Oat=Avena
Oat seed=Seme d'avena
Rice=Riso
Rice grains=Chicchi di riso
Rice Bread=Pane di riso
Rice Flour=Farina di riso
Multigrain Flour=Farina multicereale
Multigrain Bread=Pane multicereale
### tomato.lua ###
Tomato=Pomodoro
### wheat.lua ###
Wheat Seed=Seme di grano Wheat Seed=Seme di grano
Wheat=Grano Wheat=Grano
Straw=Paglia Straw=Paglia

View File

@ -1,50 +1,23 @@
# Portuguese translation of the farming mod by TenPlus1
# textdomain: farming # textdomain: farming
Artichoke= # author: BrunoMine <borgesdossantosbruno@gmail.com>
Asparagus= # author: TheDarkTiger
Barley Seed=Sementes de Cevada # last update: 2020/Apr/26
Barley=Cevada
Green Beans=Feijoes Verdes ###### folder . ######
Bean Pole (place on soil before planting beans)=Apoio de feijao (coloque no solo antes de plantar feijao)
Beetroot= ### init.lua ###
Beetroot Soup= Seed=Sementes
Blackberries=
Wild Blueberries=Mirtilos Selvagens ### compatibility.lua ###
Blueberry Muffin=Muffin de Mirtilos
Blueberry Pie=
Cabbage=
Carrot=Cenoura
Carrot Juice=
Golden Carrot=Cenoura Dourada
Chili Pepper=
Bowl of Chili=
Chili Powder=
Raw Cocoa Beans=
Cocoa Beans=Amendoas de Cacau
Cookie=Cookie
Bar of Dark Chocolate=Barra de Chocolate Preto
Chocolate Block=
Coffee Beans=Grao de Cafe
Cup of Coffee=Xicara de Cafe
Banana= Banana=
Banana Leaves= Banana Leaves=
Orange= Orange=
Corn=Milho Strawberry=
Corn on the Cob=Espiga de Milho
Popcorn= ### food.lua ###
Cornstarch=
Bottle of Ethanol=Garrafa de Etanol
Wild Cotton=
Cotton Seed=Sementes de Algodao
Cotton=Algodao
String=
Cucumber=Pepino
Eggplant=
Glass of Water=
Sugar=Açucar Sugar=Açucar
Sugar Cube=
Caramel=
Salt= Salt=
Mayonnaise=
Rose Water= Rose Water=
Turkish Delight= Turkish Delight=
Garlic Bread= Garlic Bread=
@ -53,36 +26,8 @@ Chocolate Donut=Donut de Chocolate
Apple Donut=Donut de Maça Apple Donut=Donut de Maça
Porridge= Porridge=
Jaffa Cake= Jaffa Cake=
Apple Pie=
Cactus Juice= ### hoes.lua ###
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=
Grapes=Uvas
Trellis (place on soil before planting grapes)=Grade de Ripas (colocar no solo antes de plantar uvas)
Hemp Seed=Sementes de Canhamo
Hemp Leaf=Folha de Canhamo
Bottle of Hemp Oil=Garrafa de Oleo de Canhamo
Hemp Fibre=Fibra de Canhamo
Hemp Block=
Hemp Rope=Corda de Canhamo
Hoe=Enxada Hoe=Enxada
Wooden Hoe=Enxada de Madeira Wooden Hoe=Enxada de Madeira
Stone Hoe=Enxada de Pedra Stone Hoe=Enxada de Pedra
@ -90,71 +35,16 @@ Steel Hoe=Enxada de Aço
Bronze Hoe=Enxada de Bronze Bronze Hoe=Enxada de Bronze
Mese Hoe=Enxada de Mese Mese Hoe=Enxada de Mese
Diamond Hoe=Enxada de Diamante Diamond Hoe=Enxada de Diamante
Wood Hoe= # Surcharge du mod [Toolranks] à faire #
Hoe Bomb (use or throw on grassy areas to hoe land)= Hoe Bomb (use or throw on grassy areas to hoe land)=
Mithril Scythe (Use to harvest and replant crops)= Mithril Scythe (Right-click to harvest and replant crops)=
Seed=Sementes # Surcharge du mod [Toolranks] à faire #
Lettuce=
Melon Slice=Sementes de Melancia ### soil.lua ###
Melon=Melancia
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=Batata
Baked Potato=Batata Cozida
Cucumber and Potato Salad=
Pumpkin Slice=Pedaço de Abobora
Jack 'O Lantern (punch to turn on and off)=Jack 'O Lantern (Socos para ligar e desligar)
Scarecrow Bottom=
Pumpkin Bread=Pao de Abobora
Pumpkin Dough=Massa de Abobora
Pumpkin=Abobora
Raspberries=Framboesa
Raspberry Smoothie=Batida de Framboesa
Rhubarb=Ruibarbo
Rhubarb Pie=Torta de Ruibarbo
Rice Seed=
Rice=
Rice Bread=
Rice Flour=
Rye seed=
Rye=
Oat seed=
Oats=
Multigrain Flour=
Multigrain Bread=
Savanna Soil=
Wet Savanna Soil=
Soil=Solo Soil=Solo
Wet Soil=Solo Seco Wet Soil=Solo Seco
Soy Pod=
Soy Sauce= ### utensils.lua ###
Soy Milk=
Tofu=
Cooked Tofu=
Spinach=
Strawberry=
Sunflower=
Sunflower Seeds=
Toasted Sunflower Seeds=
Bottle of Sunflower Oil=
Sunflower Seed Bread=
Tomato=Tomate
Tomato Soup=
Wooden Bowl= Wooden Bowl=
Saucepan= Saucepan=
Cooking Pot= Cooking Pot=
@ -164,8 +54,137 @@ Mortar and Pestle=
Cutting Board= Cutting Board=
Juicer= Juicer=
Glass Mixing Bowl= Glass Mixing Bowl=
Vanilla=
Vanilla Extract=
###### folder ./crops ######
### barley.lua ###
Barley Seed=Sementes de Cevada
Barley=Cevada
### beans.lua ###
Green Beans=Feijoes Verdes
Bean Pole (place on soil before planting beans)=Apoio de feijao (coloque no solo antes de plantar feijao)
### beetroot.lua ###
Beetroot=
Beetroot Soup=
### blueberry.lua ###
Blueberries=Mirtilos
Blueberry Muffin=Muffin de Mirtilos
Blueberry Pie=
### carrot.lua ##
Carrot=Cenoura
Carrot Juice=
Golden Carrot=Cenoura Dourada
### chili.lua ###
Chili Pepper=
Bowl of Chili=
### cocoa.lua ###
Cocoa Beans=Amendoas de Cacau
Cookie=Cookie
Bar of Dark Chocolate=Barra de Chocolate Preto
Chocolate Block=
### coffee.lua ###
Coffee Beans=Grao de Cafe
Cup of Coffee=Xicara de Cafe
### corn.lua ###
Corn=Milho
Corn on the Cob=Espiga de Milho
Cornstarch=
Bottle of Ethanol=Garrafa de Etanol
### cotton.lua ###
Cotton Seed=Sementes de Algodao
Cotton=Algodao
String=
### cucumber.lua ###
Cucumber=Pepino
### garlic.lua ###
Garlic clove=
Garlic=
Garlic Braid=
### grapes.lua ###
Grapes=Uvas
Trellis (place on soil before planting grapes)=Grade de Ripas (colocar no solo antes de plantar uvas)
### hemp.lua ###
Hemp Seed=Sementes de Canhamo
Hemp Leaf=Folha de Canhamo
Bottle of Hemp Oil=Garrafa de Oleo de Canhamo
Hemp Fibre=Fibra de Canhamo
Hemp Block=
Hemp Rope=Corda de Canhamo
### melon.lua ###
Melon Slice=Sementes de Melancia
Melon=Melancia
### onion.lua ###
Onion=
### peas.lua ###
Pea Pod=
Peas=
Pea Soup=
### pepper.lua ###
Peppercorn=
Pepper=
Ground Pepper=
### pinapple.lua ###
Pineapple Top=
Pineapple=
Pineapple Ring=
Pineapple Juice=
### potato.lua ###
Potato=Batata
Baked Potato=Batata Cozida
Cucumber and Potato Salad=
### pumpkin.lua ###
Pumpkin Slice=Pedaço de Abobora
Jack 'O Lantern (punch to turn on and off)=Jack 'O Lantern (Socos para ligar e desligar)
Scarecrow Bottom=
Pumpkin Bread=Pao de Abobora
Pumpkin Dough=Massa de Abobora
Pumpkin=Abobora
### raspberry.lua ###
Raspberries=Framboesa
Raspberry Smoothie=Batida de Framboesa
### rhubarb.lua ###
Rhubarb=Ruibarbo
Rhubarb Pie=Torta de Ruibarbo
### ryeoatrice.lua ###
Rye=
Rye seed=
Oat=
Oat seed=
Rice=
Rice grains=
Rice Bread=
Rice Flour=
Multigrain Flour=
Multigrain Bread=
### tomato.lua ###
Tomato=Tomate
### wheat.lua ###
Wheat Seed=Sementes de Trigo Wheat Seed=Sementes de Trigo
Wheat=Trigo Wheat=Trigo
Straw=Palha Straw=Palha

195
locale/ru.txt Normal file
View File

@ -0,0 +1,195 @@
# Russian translation of the farming mod by TenPlus1
# textdomain: farming
# author: codexp <codexp@gmx.net>
# author: TheDarkTiger
# last update: 2020/Apr/26
###### folder . ######
### init.lua ###
Seed=семена
### compatibility.lua ###
Banana=
Banana Leaves=
Orange=
Strawberry=
### food.lua ###
Sugar=сахар
Salt=
Rose Water=
Turkish Delight=
Garlic Bread=
Donut=пончик
Chocolate Donut=шоколадный пончик
Apple Donut=яблочный пончик
Porridge=
Jaffa Cake=
### hoes.lua ###
Hoe=мотыга
Wooden Hoe=деревянная мотыга
Stone Hoe=каменная мотыга
Steel Hoe=стальная мотыга
Bronze Hoe=бронзовая мотыга
Mese Hoe=магическая мотыга
Diamond Hoe=алмазная мотыга
# Surcharge du mod [Toolranks] à faire #
Hoe Bomb (use or throw on grassy areas to hoe land)=
Mithril Scythe (Right-click to harvest and replant crops)=
# Surcharge du mod [Toolranks] à faire #
### soil.lua ###
Soil=земля
Wet Soil=мокрая земля
### utensils.lua ###
Wooden Bowl=
Saucepan=
Cooking Pot=
Baking Tray=
Skillet=
Mortar and Pestle=
Cutting Board=
Juicer=
Glass Mixing Bowl=
###### folder ./crops ######
### barley.lua ###
Barley Seed=семена ячменя
Barley=ячмень
### beans.lua ###
Green Beans=зеленая фасоль
Bean Pole (place on soil before planting beans)=жердь для бобовых (установите на почву перед посадкой бобовых)
### beetroot.lua ###
Beetroot=
Beetroot Soup=
### blueberry.lua ###
Blueberries=голубика
Blueberry Muffin=кекс из голубики
Blueberry Pie=
### carrot.lua ##
Carrot=морковь
Carrot Juice=
Golden Carrot=золотая морковь
### chili.lua ###
Chili Pepper=
Bowl of Chili=
### cocoa.lua ###
Cocoa Beans=бобы какао
Cookie=печенье
Bar of Dark Chocolate=плитка темного шоколада
Chocolate Block=
### coffee.lua ###
Coffee Beans=кофе в зернах
Cup of Coffee=чашка кофе
### corn.lua ###
Corn=кукуруза
Corn on the Cob=початок кукурузы
Cornstarch=
Bottle of Ethanol=бутылка этилового спирта
### cotton.lua ###
Cotton Seed=семена хлопка
Cotton=хлопок
String=
### cucumber.lua ###
Cucumber=огурец
### garlic.lua ###
Garlic clove=
Garlic=
Garlic Braid=
### grapes.lua ###
Grapes=виноград
Trellis (place on soil before planting grapes)=решетка (поставьте на почву для посадки винограда)
### hemp.lua ###
Hemp Seed=семена конопли
Hemp Leaf=листья конопли
Bottle of Hemp Oil=бутылка конопляного масла
Hemp Fibre=
Hemp Block=
Hemp Rope=Пенька
### melon.lua ###
Melon Slice=ломтик арбуза
Melon=арбуз
### onion.lua ###
Onion=
### peas.lua ###
Pea Pod=
Peas=
Pea Soup=
### pepper.lua ###
Peppercorn=
Pepper=
Ground Pepper=
### pinapple.lua ###
Pineapple Top=
Pineapple=
Pineapple Ring=
Pineapple Juice=
### potato.lua ###
Potato=картофель
Baked Potato=запеченный картофель
Cucumber and Potato Salad=
### pumpkin.lua ###
Pumpkin Slice=ломтик тыквы
Jack 'O Lantern (punch to turn on and off)=светильник джека (удар для включения и отключения)
Scarecrow Bottom=
Pumpkin Bread=тыквенный хлеб
Pumpkin Dough=тыквенное тесто
Pumpkin=тыква
### raspberry.lua ###
Raspberries=малина
Raspberry Smoothie=малиновый коктейль
### rhubarb.lua ###
Rhubarb=ревень
Rhubarb Pie=пирог из ревеня
### ryeoatrice.lua ###
Rye=
Rye seed=
Oat=
Oat seed=
Rice=
Rice grains=
Rice Bread=
Rice Flour=
Multigrain Flour=
Multigrain Bread=
### tomato.lua ###
Tomato=помидор
### wheat.lua ###
Wheat Seed=
Wheat=семена пшеницы
Straw=солома
Flour=мука
Bread=хлеб
Sliced Bread=
Toast=
Toast Sandwich=

View File

@ -1,54 +1,22 @@
# Translation of the farming mod by TenPlus1
# textdomain: farming # textdomain: farming
Crop= # author: (you)
Artichoke= # last update: 2020/Apr/26
Asparagus=
Barley Seed= ###### folder . ######
Barley=
Green Beans= ### init.lua ###
Bean Pole (place on soil before planting beans)= Seed=
Beetroot=
Beetroot Soup= ### compatibility.lua ###
Blackberry=
Blackberries=
Wild Blueberries=
Blueberry=
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=
Coffee Beans=
Cup of Coffee=
Banana= Banana=
Banana Leaves= Banana Leaves=
Orange= Orange=
Corn= Strawberry=
Corn on the Cob=
Popcorn= ### food.lua ###
Cornstarch=
Bottle of Ethanol=
Wild Cotton=
Cotton Seed=
Cotton=
String=
Cucumber=
Eggplant=
Glass of Water=
Sugar= Sugar=
Sugar Cube=
Caramel=
Salt= Salt=
Mayonnaise=
Rose Water= Rose Water=
Turkish Delight= Turkish Delight=
Garlic Bread= Garlic Bread=
@ -57,37 +25,8 @@ Chocolate Donut=
Apple Donut= Apple Donut=
Porridge= Porridge=
Jaffa Cake= Jaffa Cake=
Apple Pie=
Cactus Juice= ### hoes.lua ###
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=
Grapes=
Trellis (place on soil before planting grapes)=
Hemp=
Hemp Seed=
Hemp Leaf=
Bottle of Hemp Oil=
Hemp Fibre=
Hemp Block=
Hemp Rope=
Hoe= Hoe=
Wooden Hoe= Wooden Hoe=
Stone Hoe= Stone Hoe=
@ -95,76 +34,16 @@ Steel Hoe=
Bronze Hoe= Bronze Hoe=
Mese Hoe= Mese Hoe=
Diamond Hoe= Diamond Hoe=
Wood Hoe= # Surcharge du mod [Toolranks] à faire #
Hoe Bomb (use or throw on grassy areas to hoe land)= Hoe Bomb (use or throw on grassy areas to hoe land)=
Mithril Scythe (Use to harvest and replant crops)= Mithril Scythe (Right-click to harvest and replant crops)=
Seed= # Surcharge du mod [Toolranks] à faire #
Lettuce=
Melon Slice= ### soil.lua ###
Melon=
Mint=
Mint Seeds=
Mint Leaf=
Mint Tea=
Onion=
Onion Soup=
Parsley=
Pea=
Pea Pod=
Pea Soup=
Pepper=
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=
Raspberry=
Raspberries=
Raspberry Smoothie=
Rhubarb=
Rhubarb Pie=
Rice Seed=
Rice=
Rice Bread=
Rice Flour=
Rye seed=
Rye=
Oat seed=
Oats=
Multigrain Flour=
Multigrain Bread=
Savanna Soil=
Wet Savanna Soil=
Soil= Soil=
Wet Soil= Wet Soil=
Soy=
Soy Pod= ### utensils.lua ###
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=
Wooden Bowl= Wooden Bowl=
Saucepan= Saucepan=
Cooking Pot= Cooking Pot=
@ -174,8 +53,137 @@ Mortar and Pestle=
Cutting Board= Cutting Board=
Juicer= Juicer=
Glass Mixing Bowl= Glass Mixing Bowl=
Vanilla=
Vanilla Extract=
###### folder ./crops ######
### barley.lua ###
Barley Seed=
Barley=
### beans.lua ###
Green Beans=
Bean Pole (place on soil before planting beans)=
### beetroot.lua ###
Beetroot=
Beetroot Soup=
### blueberry.lua ###
Blueberries=
Blueberry Muffin=
Blueberry Pie=
### carrot.lua ##
Carrot=
Carrot Juice=
Golden Carrot=
### chili.lua ###
Chili Pepper=
Bowl of Chili=
### cocoa.lua ###
Cocoa Beans=
Cookie=
Bar of Dark Chocolate=
Chocolate Block=
### coffee.lua ###
Coffee Beans=
Cup of Coffee=
### corn.lua ###
Corn=
Corn on the Cob=
Cornstarch=
Bottle of Ethanol=
### cotton.lua ###
Cotton Seed=
Cotton=
String=
### cucumber.lua ###
Cucumber=
### garlic.lua ###
Garlic clove=
Garlic=
Garlic Braid=
### grapes.lua ###
Grapes=
Trellis (place on soil before planting grapes)=
### hemp.lua ###
Hemp Seed=
Hemp Leaf=
Bottle of Hemp Oil=
Hemp Fibre=
Hemp Block=
Hemp Rope=
### melon.lua ###
Melon Slice=
Melon=
### onion.lua ###
Onion=
### peas.lua ###
Pea Pod=
Peas=
Pea Soup=
### pepper.lua ###
Peppercorn=
Pepper=
Ground Pepper=
### pinapple.lua ###
Pineapple Top=
Pineapple=
Pineapple Ring=
Pineapple Juice=
### potato.lua ###
Potato=
Baked Potato=
Cucumber and Potato Salad=
### pumpkin.lua ###
Pumpkin Slice=
Jack 'O Lantern (punch to turn on and off)=
Scarecrow Bottom=
Pumpkin Bread=
Pumpkin Dough=
Pumpkin=
### raspberry.lua ###
Raspberries=
Raspberry Smoothie=
### rhubarb.lua ###
Rhubarb=
Rhubarb Pie=
### ryeoatrice.lua ###
Rye=
Rye seed=
Oat=
Oat seed=
Rice=
Rice grains=
Rice Bread=
Rice Flour=
Multigrain Flour=
Multigrain Bread=
### tomato.lua ###
Tomato=
### wheat.lua ###
Wheat Seed= Wheat Seed=
Wheat= Wheat=
Straw= Straw=

View File

@ -1,110 +1,77 @@
local mcl = farming.mcl
-- add lucky blocks -- add lucky blocks
lucky_block:add_blocks({ if minetest.get_modpath("lucky_block") then
{"dro", {"farming:corn"}, 5}, lucky_block:add_blocks({
{"dro", {"farming:coffee_cup_hot"}, 1}, {"dro", {"farming:corn"}, 5},
{"dro", {(mcl and "mcl_farming:bread" or "farming:bread")}, 5}, {"dro", {"farming:coffee_cup_hot"}, 1},
{"nod", (mcl and "mcl_farming:pumpkin_face_light" or "farming:jackolantern"), 0}, {"dro", {"farming:bread"}, 5},
{"tro", (mcl and "mcl_farming:pumpkin_face_light" or "farming:jackolantern_on")}, {"nod", "farming:jackolantern", 0},
{"nod", (mcl and "mcl_core:water_source" or "default:river_water_source"), 1}, {"tro", "farming:jackolantern_on"},
{"tel"}, {"nod", "default:river_water_source", 1},
{"dro", {"farming:trellis", "farming:grapes"}, 5}, {"tel"},
{"dro", {"farming:bottle_ethanol"}, 1}, {"dro", {"farming:trellis", "farming:grapes"}, 5},
{"nod", (mcl and "mcl_farming:melon" or "farming:melon"), 0}, {"dro", {"farming:bottle_ethanol"}, 1},
{"dro", {"farming:donut", "farming:donut_chocolate", "farming:donut_apple"}, 5}, {"nod", "farming:melon", 0},
{"dro", {"farming:hemp_leaf", "farming:hemp_fibre", "farming:seed_hemp"}, 10}, {"dro", {"farming:donut", "farming:donut_chocolate", "farming:donut_apple"}, 5},
{"nod", (mcl and "mcl_fire:fire" or "fire:permanent_flame"), 1}, {"dro", {"farming:hemp_leaf", "farming:hemp_fibre", "farming:seed_hemp"}, 10},
{"dro", {"farming:chili_pepper", "farming:chili_bowl"}, 5}, {"nod", "fire:permanent_flame", 1},
{"dro", {(mcl and "mcl_core:bowl" or "farming:bowl")}, 3}, {"dro", {"farming:chili_pepper", "farming:chili_bowl"}, 5},
{"dro", {"farming:saucepan"}, 1}, {"dro", {"farming:bowl"}, 3},
{"dro", {"farming:pot"}, 1}, {"dro", {"farming:saucepan"}, 1},
{"dro", {"farming:baking_tray"}, 1}, {"dro", {"farming:pot"}, 1},
{"dro", {"farming:skillet"}, 1}, {"dro", {"farming:baking_tray"}, 1},
{"exp", 4}, {"dro", {"farming:skillet"}, 1},
{"dro", {"farming:mortar_pestle"}, 1}, {"exp", 4},
{"dro", {"farming:cutting_board"}, 1}, {"dro", {"farming:mortar_pestle"}, 1},
{"dro", {"farming:juicer"}, 1}, {"dro", {"farming:cutting_board"}, 1},
{"dro", {"farming:mixing_bowl"}, 1}, {"dro", {"farming:juicer"}, 1},
{"dro", {"farming:sunflower_oil"}, 5}, {"dro", {"farming:mixing_bowl"}, 1},
{"dro", {(mcl and "mcl_farming:hoe_stone" or "farming:hoe_bronze")}, 1}, {"dro", {"farming:hoe_bronze"}, 1},
{"dro", {(mcl and "mcl_farming:hoe_gold" or "farming:hoe_mese")}, 1}, {"dro", {"farming:hoe_mese"}, 1},
{"dro", {(mcl and "mcl_farming:hoe_diamond" or "farming:hoe_diamond")}, 1}, {"dro", {"farming:hoe_diamond"}, 1},
{"dro", {"farming:hoe_bomb"}, 10}, {"dro", {"farming:hoe_bomb"}, 10},
{"dro", {"farming:turkish_delight"}, 5}, {"dro", {"farming:turkish_delight"}, 5},
{"lig"}, {"lig"},
{"dro", {(mcl and "mcl_farming:hoe_netherite" or "farming:scythe_mithril")}, 1}, {"dro", {"farming:scythe_mithril"}, 1},
{"sch", "instafarm", 0, true, { {"sch", "instafarm", 0, true, {
{"farming:wheat_8", "farming:carrot_8"}, {"farming:wheat_8", "farming:carrot_8"},
{"farming:cotton_8", "farming:rhubarb_3"}, {"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")}, {"sch", "instafarm", 0, true, {
{"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")}, {"farming:wheat_8", "farming:pepper_5"},
}}, {"farming:cotton_8", "farming:onion_5"},
{"sch", "instafarm", 0, true, { }},
{"farming:wheat_8", "farming:pepper_5"}, {"sch", "instafarm", 0, true, {
{"farming:cotton_8", "farming:onion_5"}, {"farming:wheat_8", "farming:beetroot_5"},
{"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")}, {"farming:cotton_8", "farming:barley_7"},
{"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"},
{"sch", "instafarm", 0, true, { {"farming:cotton_8", "farming:grapes_8"},
{"farming:wheat_8", (mcl and "mcl_farming:beetroot" or "farming:beetroot_5")}, }},
{"farming:cotton_8", "farming:barley_7"}, {"sch", "instafarm", 0, true, {
{"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")}, {"farming:wheat_8", "farming:pea_5"},
{"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")}, {"farming:cotton_8", "farming:coffee_5"},
{"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")}, }},
}}, {"sch", "instafarm", 0, true, {
{"sch", "instafarm", 0, true, { {"farming:wheat_8", "farming:raspberry_4"},
{"farming:wheat_8", "farming:corn_8"}, {"farming:cotton_8", "farming:tomato_8"},
{"farming:cotton_8", "farming:grapes_8"}, }},
{"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")}, {"sch", "instafarm", 0, true, {
{"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")}, {"farming:wheat_8", "farming:chili_8"},
{"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")}, {"farming:cotton_8", "farming:cucumber_4"},
}}, }},
{"sch", "instafarm", 0, true, { {"nod", "default:chest", 0, {
{"farming:wheat_8", "farming:pea_5"}, {name = "farming:seed_wheat", max = 15},
{"farming:cotton_8", "farming:coffee_5"}, {name = "farming:seed_barley", max = 15},
{"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")}, {name = "farming:seed_barley", max = 15},
{"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")}, {name = "farming:seed_hemp", max = 15},
{"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")}, {name = "farming:seed_rye", max = 15},
}}, {name = "farming:seed_rice", max = 15},
{"sch", "instafarm", 0, true, { {name = "farming:seed_oat", max = 15},
{"farming:wheat_8", "farming:raspberry_4"}, {name = "farming:soil_wet", max = 10},
{"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")}, end
{"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_barley", max = 15},
{name = "farming:seed_hemp", max = 15},
{name = "farming:seed_rye", max = 15},
{name = "farming:seed_rice", max = 15},
{name = "farming:seed_oat", max = 15},
{name = "farming:soil_wet", max = 10},
{name = "farming:cotton_wild", max = 5},
{name = "farming:grapebush", max = 5},
{name = "farming:asparagus", max = 7}
}},
{"dro", {"farming:chili_powder"}, 5},
{"dro", {"farming:weed"}, 9},
})

168
mapgen.lua Normal file
View File

@ -0,0 +1,168 @@
-- decoration function
local function register_plant(name, min, max, spawnon, spawnby, num, rarety)
-- do not place on mapgen if no value given (or not true)
if not rarety then
return
end
-- set rarety value or default to farming.rarety if not a number
rarety = tonumber(rarety) or farming.rarety
minetest.register_decoration({
deco_type = "simple",
place_on = spawnon or {"default:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
scale = rarety,
spread = {x = 100, y = 100, z = 100},
seed = 329,
octaves = 3,
persist = 0.6
},
y_min = min,
y_max = max,
decoration = "farming:" .. name,
spawn_by = spawnby,
num_spawn_by = num,
})
end
-- add crops to mapgen
register_plant("potato_3", 15, 40, nil, "", -1, farming.potato)
register_plant("tomato_7", 5, 20, nil, "", -1, farming.tomato)
register_plant("corn_7", 12, 22, nil, "", -1, nil)
register_plant("coffee_5", 20, 45, {"default:dirt_with_dry_grass",
"default:dirt_with_rainforest_litter",
"default:dry_dirt_with_dry_grass"}, "", -1, farming.coffee)
register_plant("raspberry_4", 3, 10, nil, "", -1, farming.raspberry)
register_plant("rhubarb_3", 3, 15, nil, "", -1, farming.rhubarb)
register_plant("blueberry_4", 3, 10, nil, "", -1, farming.blueberry)
register_plant("beanbush", 18, 35, nil, "", -1, farming.beans)
register_plant("grapebush", 25, 45, nil, "", -1, farming.grapes)
register_plant("onion_5", 5, 22, nil, "", -1, farming.onion)
register_plant("garlic_5", 3, 30, nil, "group:tree", 1, farming.garlic)
register_plant("pea_5", 25, 50, nil, "", -1, farming.peas)
register_plant("beetroot_5", 1, 15, nil, "", -1, farming.beetroot)
register_plant("mint_4", 1, 75, {"default:dirt_with_grass",
"default:dirt_with_coniferous_litter"}, "group:water", 1, farming.mint)
if minetest.get_mapgen_setting("mg_name") == "v6" then
register_plant("carrot_8", 1, 30, nil, "group:water", 1, farming.carrot)
register_plant("cucumber_4", 1, 20, nil, "group:water", 1, farming.cucumber)
register_plant("melon_8", 1, 20, nil, "group:water", 1, farming.melon)
register_plant("pumpkin_8", 1, 20, nil, "group:water", 1, farming.pumpkin)
else
-- v7 maps have a beach so plants growing near water is limited to 6 high
register_plant("carrot_8", 1, 15, nil, "", -1, nil)
register_plant("cucumber_4", 1, 10, nil, "", -1, farming.cucumber)
register_plant("melon_8", 1, 6, {"default:dirt_with_dry_grass",
"default:dirt_with_rainforest_litter"}, "", -1, farming.melon)
register_plant("pumpkin_8", 1, 6, nil, "", -1, farming.pumpkin)
end
if farming.hemp then
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass", "default:dirt_with_rainforest_litter"},
sidelen = 16,
noise_params = {
offset = 0,
scale = tonumber(farming.hemp) or farming.rarety,
spread = {x = 100, y = 100, z = 100},
seed = 420,
octaves = 3,
persist = 0.6
},
y_min = 3,
y_max = 45,
decoration = "farming:hemp_7",
spawn_by = "group:tree",
num_spawn_by = 1,
})
end
if farming.chili then
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass", "default:dirt_with_rainforest_litter"},
sidelen = 16,
noise_params = {
offset = 0,
scale = tonumber(farming.chili) or farming.rarety,
spread = {x = 100, y = 100, z = 100},
seed = 760,
octaves = 3,
persist = 0.6
},
y_min = 5,
y_max = 35,
decoration = {"farming:chili_8"},
spawn_by = "group:tree",
num_spawn_by = 1,
})
end
if farming.pepper then
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_rainforest_litter"},
sidelen = 16,
noise_params = {
offset = 0,
scale = tonumber(farming.pepper) or farming.rarety,
spread = {x = 100, y = 100, z = 100},
seed = 933,
octaves = 3,
persist = 0.6
},
y_min = 5,
y_max = 35,
decoration = {"farming:pepper_5"},
spawn_by = "group:tree",
num_spawn_by = 1,
})
end
if farming.pineapple then
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_dry_grass", "default:dry_dirt_with_dry_grass"},
sidelen = 16,
noise_params = {
offset = 0,
scale = tonumber(farming.pineapple) or farming.rarety,
spread = {x = 100, y = 100, z = 100},
seed = 917,
octaves = 3,
persist = 0.6
},
y_min = 18,
y_max = 30,
decoration = {"farming:pineapple_8"},
})
end
minetest.register_decoration({
name = "farming:cotton_wild",
deco_type = "simple",
place_on = {"default:dry_dirt_with_dry_grass"},
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 = {"savanna"},
y_max = 31000,
y_min = 1,
decoration = "farming:cotton_wild",
})

View File

@ -1,4 +1 @@
name = farming 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
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

@ -1,6 +1,2 @@
# Contains a value used for speed of crop growth in seconds # Contains a value used for speed of crop growth in seconds
farming_stage_length (Farming Stage Length) float 160.0 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

261
soil.lua
View File

@ -1,148 +1,132 @@
local S = minetest.get_translator("farming") local S = farming.intllib
-- default dry soil node
local dry_soil = "farming:soil"
-- add soil types to existing dirt blocks -- add soil types to existing dirt blocks
minetest.override_item("default:dirt", { minetest.override_item("default:dirt", {
soil = { soil = {
base = "default:dirt", dry = "farming:soil", wet = "farming:soil_wet" base = "default:dirt",
dry = "farming:soil",
wet = "farming:soil_wet"
} }
}) })
minetest.override_item("default:dirt_with_grass", { minetest.override_item("default:dirt_with_grass", {
soil = { soil = {
base = "default:dirt_with_grass", dry = "farming:soil", wet = "farming:soil_wet" base = "default:dirt_with_grass",
} dry = "farming:soil",
})
if minetest.registered_nodes["default:dirt_with_dry_grass"] then
minetest.override_item("default:dirt_with_dry_grass", {
soil = {
base = "default:dirt_with_dry_grass", dry = "farming:soil",
wet = "farming:soil_wet"
}
})
end
minetest.override_item("default:dirt_with_rainforest_litter", {
soil = {
base = "default:dirt_with_rainforest_litter", dry = "farming:soil",
wet = "farming:soil_wet" wet = "farming:soil_wet"
} }
}) })
if minetest.registered_nodes["default:dirt_with_coniferous_litter"] then minetest.override_item("default:dirt_with_dry_grass", {
soil = {
base = "default:dirt_with_dry_grass",
dry = "farming:soil",
wet = "farming:soil_wet"
}
})
minetest.override_item("default:dirt_with_coniferous_litter", { minetest.override_item("default:dirt_with_rainforest_litter", {
soil = { soil = {
base = "default:dirt_with_coniferous_litter", dry = "farming:soil", base = "default:dirt_with_rainforest_litter",
wet = "farming:soil_wet" dry = "farming:soil",
} wet = "farming:soil_wet"
}) }
end })
-- savanna soil minetest.override_item("default:dirt_with_coniferous_litter", {
soil = {
base = "default:dirt_with_coniferous_litter",
dry = "farming:soil",
wet = "farming:soil_wet"
}
})
if minetest.registered_nodes["default:dry_dirt"] then minetest.override_item("default:dry_dirt", {
soil = {
base = "default:dry_dirt",
dry = "farming:dry_soil",
wet = "farming:dry_soil_wet"
}
})
minetest.override_item("default:dry_dirt", { minetest.override_item("default:dry_dirt_with_dry_grass", {
soil = { soil = {
base = "default:dry_dirt", dry = "farming:dry_soil", base = "default:dry_dirt_with_dry_grass",
wet = "farming:dry_soil_wet" dry = "farming:dry_soil",
} wet = "farming:dry_soil_wet"
}) }
})
minetest.override_item("default:dry_dirt_with_dry_grass", {
soil = {
base = "default:dry_dirt_with_dry_grass", dry = "farming:dry_soil",
wet = "farming:dry_soil_wet"
}
})
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,
sounds = default.node_sound_dirt_defaults(),
soil = {
base = "default:dry_dirt", dry = "farming:dry_soil",
wet = "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,
sounds = default.node_sound_dirt_defaults(),
soil = {
base = "default:dry_dirt", dry = "farming:dry_soil",
wet = "farming:dry_soil_wet"
}
})
dry_soil = "farming:dry_soil"
end
-- normal soil -- normal soil
minetest.register_node("farming:soil", { minetest.register_node("farming:soil", {
description = S("Soil"), description = S("Soil"),
tiles = {"default_dirt.png^farming_soil.png", "default_dirt.png"}, tiles = {"default_dirt.png^farming_soil.png", "default_dirt.png"},
drop = "default:dirt", drop = "default:dirt",
groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 2, grassland = 1, groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 2, field = 1},
field = 1},
is_ground_content = false,
sounds = default.node_sound_dirt_defaults(), sounds = default.node_sound_dirt_defaults(),
soil = { soil = {
base = "default:dirt", dry = "farming:soil", wet = "farming:soil_wet" base = "default:dirt",
dry = "farming:soil",
wet = "farming:soil_wet"
} }
}) })
-- wet soil -- wet soil
minetest.register_node("farming:soil_wet", { minetest.register_node("farming:soil_wet", {
description = S("Wet Soil"), description = S("Wet Soil"),
tiles = { tiles = {
"default_dirt.png^farming_soil_wet.png", "default_dirt.png^farming_soil_wet.png",
"default_dirt.png^farming_soil_wet_side.png" "default_dirt.png^farming_soil_wet_side.png"},
},
drop = "default:dirt", drop = "default:dirt",
groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 3, grassland = 1, groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 3, field = 1},
field = 1},
is_ground_content = false,
sounds = default.node_sound_dirt_defaults(), sounds = default.node_sound_dirt_defaults(),
soil = { 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 -- savanna soil
if minetest.registered_nodes["default:dry_dirt"] then
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, field = 1},
sounds = default.node_sound_dirt_defaults(),
soil = {
base = "default:dry_dirt",
dry = "farming:dry_soil",
wet = "farming:dry_soil_wet"
}
})
minetest.register_alias("farming:desert_sand_soil", dry_soil) minetest.register_node("farming:dry_soil_wet", {
minetest.register_alias("farming:desert_sand_soil_wet", 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, field = 1},
sounds = default.node_sound_dirt_defaults(),
soil = {
base = "default:dry_dirt",
dry = "farming:dry_soil",
wet = "farming:dry_soil_wet"
}
})
end
-- sand is not soil, change existing sand-soil to use dry soil
minetest.register_alias("farming:desert_sand_soil", "farming:dry_soil")
minetest.register_alias("farming:desert_sand_soil_wet", "farming:dry_soil_wet")
-- if water near soil then change to wet soil -- if water near soil then change to wet soil
minetest.register_abm({ minetest.register_abm({
label = "Soil changes",
nodenames = {"group:field"}, nodenames = {"group:field"},
interval = 15, interval = 15,
chance = 4, chance = 4,
@ -163,61 +147,30 @@ minetest.register_abm({
-- what's on top of soil, if solid/not plant change soil to dirt -- what's on top of soil, if solid/not plant change soil to dirt
if minetest.registered_nodes[nn] if minetest.registered_nodes[nn]
and minetest.registered_nodes[nn].walkable and minetest.registered_nodes[nn].walkable
and minetest.get_item_group(nn, "plant") == 0 and minetest.get_item_group(nn, "plant") == 0 then
and minetest.get_item_group(nn, "growing") == 0 then minetest.set_node(pos, {name = "default:dirt"})
minetest.set_node(pos, {name = ndef.soil.base})
return return
end end
-- check if water is within 3 nodes -- if map around soil not loaded then skip until loaded
if minetest.find_node_near(pos, 3, {"group:water"}) then if minetest.find_node_near(pos, 3, {"ignore"}) then
return
-- only change if it's not already wet soil
if node.name ~= ndef.soil.wet then
minetest.set_node(pos, {name = ndef.soil.wet})
end
-- only dry out soil if no unloaded blocks nearby, just incase
elseif not minetest.find_node_near(pos, 3, {"ignore"}) then
if node.name == ndef.soil.wet then
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 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
end
-- check if water is within 3 nodes horizontally and 1 below
if #minetest.find_nodes_in_area(
{x = pos.x + 3, y = pos.y - 1, z = pos.z + 3},
{x = pos.x - 3, y = pos.y , z = pos.z - 3},
{"group:water"}) > 0 then
minetest.set_node(pos, {name = ndef.soil.wet})
elseif node.name == ndef.soil.wet then
minetest.set_node(pos, {name = ndef.soil.dry})
elseif node.name == ndef.soil.dry
and minetest.get_item_group(nn, "plant") == 0 then
minetest.set_node(pos, {name = ndef.soil.base})
end
end,
}) })
-- those darn weeds
if minetest.settings:get_bool("farming_disable_weeds") ~= true then
minetest.register_abm({
nodenames = {"group:field"},
neighbors = {"air"},
interval = 50,
chance = 35,
catch_up = false,
action = function(pos, node)
if minetest.find_node_near(pos, 4, {"farming:scarecrow_bottom"}) then
return
end
pos.y = pos.y + 1
if minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "farming:weed", param2 = 2})
end
end
})
end

View File

@ -1,52 +1,52 @@
local statistics = {}
local ROOT_2 = math.sqrt(2.0)
-- Approximations for erf(x) and erfInv(x) from -- Approximations for erf(x) and erfInv(x) from
-- https://en.wikipedia.org/wiki/Error_function -- https://en.wikipedia.org/wiki/Error_function
local statistics = {} local erf
local random, floor, ceil = math.random, math.floor, math.ceil local erf_inv
local exp, log, sqrt = math.exp, math.log, math.sqrt
local ROOT_2 = sqrt(2.0) local A = 8 * (math.pi - 3.0)/(3.0 * math.pi * (4.0 - math.pi))
local A = 8 * (math.pi - 3.0) / (3.0 * math.pi * (4.0 - math.pi))
local B = 4.0 / math.pi local B = 4.0 / math.pi
local C = 2.0 / (math.pi * A) local C = 2.0/(math.pi * A)
local D = 1.0 / A local D = 1.0 / A
erf = function(x)
local function erf(x) if x == 0 then return 0; end
if x == 0 then return 0 end
local xSq = x * x local xSq = x * x
local aXSq = A * xSq 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 return (x > 0 and v) or -v
end end
erf_inv = function(x)
local function erf_inv(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 = math.log(1 - x * x)
local y = log(1 - x * x)
local u = C + 0.5 * y 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 return (x > 0 and v) or -v
end end
local function std_normal(u) local function std_normal(u)
return ROOT_2 * erf_inv(2.0 * u - 1.0) return ROOT_2 * erf_inv(2.0 * u - 1.0)
end end
local poisson
local cdf_table = {}
local function generate_cdf(lambda_index, lambda) local function generate_cdf(lambda_index, lambda)
local max = ceil(4 * lambda) local max = math.ceil(4 * lambda)
local pdf = exp(-lambda) local pdf = math.exp(-lambda)
local cdf = pdf local cdf = pdf
local t = { [0] = pdf } local t = { [0] = pdf }
@ -59,33 +59,29 @@ local function generate_cdf(lambda_index, lambda)
return t return t
end end
local cdf_table = {}
for li = 1, 100 do for li = 1, 100 do
cdf_table[li] = generate_cdf(li, 0.25 * li) cdf_table[li] = generate_cdf(li, 0.25 * li)
end end
poisson = function(lambda, max)
local function poisson(lambda, max)
if max < 2 then 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 elseif lambda >= 2 * max then
return max return max
end end
local u = random() local u = math.random()
local lambda_index = floor(4 * lambda + 0.5) local lambda_index = math.floor(4 * lambda + 0.5)
local cdfs = cdf_table[lambda_index] local cdfs = cdf_table[lambda_index]
if cdfs then if cdfs then
lambda = 0.25 * lambda_index lambda = 0.25 * lambda_index
if u < cdfs[0] then return 0 end if u < cdfs[0] then return 0; end
if max > #cdfs then max = #cdfs + 1 else max = floor(max) end if max > #cdfs then max = #cdfs + 1 else max = math.floor(max); end
if u >= cdfs[max - 1] then return max end if u >= cdfs[max - 1] then return max; end
if max > 4 then -- Binary search if max > 4 then -- Binary search
@ -93,49 +89,60 @@ local function poisson(lambda, max)
while s + 1 < max do 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 end
else else
for i = 1, max - 1 do for i = 1, max - 1 do
if u < cdfs[i] then return i end if u < cdfs[i] then return i; end
end end
end end
return max return max
else 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
end end
-- Error and Inverse error functions -- Error function.
statistics.erf = erf statistics.erf = erf
-- Inverse error function.
statistics.erf_inv = erf_inv statistics.erf_inv = erf_inv
--- Standard normal distribution function (mean 0, standard deviation 1). --- 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() 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) return std_normal(u)
end end
--- Standard normal distribution function (mean 0, standard deviation 1). --- Standard normal distribution function (mean 0, standard deviation 1).
-- @param mu - The distribution mean. --
-- @param sigma - The distribution standard deviation. -- @param mu
-- @return - Any real number (actually between -3*sigma and 3*sigma). -- 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) statistics.normal = function(mu, sigma)
local u = random() local u = math.random()
if u < 0.001 then if u < 0.001 then
return mu - 3.0 * sigma return mu - 3.0 * sigma
@ -147,15 +154,19 @@ statistics.normal = function(mu, sigma)
end end
--- Poisson distribution function. --- Poisson distribution function.
-- @param lambda - The distribution mean and variance. --
-- @param max - The distribution maximum. -- @param lambda
-- @return - An integer between 0 and max (both inclusive). -- The distribution mean and variance.
-- @param max
-- The distribution maximum.
-- @return
-- An integer between 0 and max (both inclusive).
statistics.poisson = function(lambda, max) statistics.poisson = function(lambda, max)
lambda, max = tonumber(lambda), tonumber(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) return poisson(lambda, max)
end end

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