Mods in den Spieleordner reingeschoben. So richtig tief.

This commit is contained in:
N-Nachtigal 2025-05-08 22:41:25 +02:00
parent b4b6c08f4f
commit f7bc25a670
1674 changed files with 56056 additions and 530 deletions

276
mods/.farming_old/README.md Normal file
View file

@ -0,0 +1,276 @@
Farming Redo mod for Minetest
=============================
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
Farming Redo also works with Bonemeal mod for quick growing crops and saplings which can
be found at https://notabug.org/TenPlus1/bonemeal
#### Optional dependences:
* default
* mcl_core, mcl_sounds, mcl_farming, mcl_stairs
* stairs
* 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:
- 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.
- 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
- 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.42 - Soil needs water to be present within 3 blocks horizontally and 1 below to make wet soil, Jack 'o Lanterns now check protection, add chocolate block.
- 1.41 - Each crop has it's own spawn rate (can be changed in farming.conf)
- 1.40 - Added Mithril Scythe to quick harvest and replant crops on right-click. Added Hoe's for MoreOres with Toolrank support.
- 1.39 - Added Rice, Rye and Oats thanks to Ademants Grains mod. Added Jaffa Cake and multigrain bread.
- 1.38 - Pumpkin grows into block, use chopping board to cut into 4x slices, same with melon block, 2x2 slices makes a block, cocoa pods are no longer walkable
- 1.37 - Added custom 'growth_check(pos, nodename) function for crop nodes to use (check cocoa.lua for example)
- 1.36 - Added Beetroot, Beetroot Soup (6x beetroot, 1x bowl), fix register_plant() issue, add new recipes
- 1.35 - Deprecated bronze/mese/diamond hoe's, added hoe bomb and deprecated hoe's as lucky block prizes
- 1.34 - Added scarecrow Base (5x sticks in a cross shape)
- 1.33 - Added cooking utensils (wooden bowl, saucepan, cooking pot, baking tray, skillet, cutting board, mortar & pestle, juicer, glass mixing bowl) for easier food crafts.
- 1.32 - Added Pea plant (textures by Andrey01) - also added Wooden Bowl and Pea Soup crafts
- 1.31 - Added Pineapple which can be found growing in savannah areas (place pineapple in crafting to obtain 5x rings to eat and a top for re-planting), also Salt which is made from cooking a bucket of water, added food groups so it's more compatible with Ruben's food mods.
- 1.30 - Added Garlic, Pepper and Onions thanks to Grizzly Adam for sharing textures
- 1.29 - Updating functions so requires Minetest 0.4.16 and above to run
- 1.28 - Added chili peppers and bowl of chili, optimized code and fixed a few bugs, added porridge
- 1.27 - Added meshoptions to api and wheat plants, added farming.rarity setting to spawn more/less crops on map, have separate cotton/string items (4x cotton = 1x wool, 2x cotton = 2x string)
- 1.26 - Added support for [toolranks] mod when using hoe's
- 1.25 - Added check for farming.conf setting file to disable specific crops globally (inside mod folder) or world specific (inside world folder)
- 1.24 - Added Hemp which can be crafted into fibre, paper, string, rope and oil.
- 1.23 - Huge code tweak and tidy done and added barley seeds to be found in dry grass, barley can make flour for bread also.
- 1.22 - Added grape bushes at high climates which can be cultivated into grape vines using trellis (9 sticks).
- 1.21 - Added auto-refill code for planting crops (thanks crabman77), also fixed a few bugs
- 1.20b - Tidied code, made api compatible with new 0.4.13 changes and changed to soil texture overlays
- 1.20 - NEW growing routine added that allows crops to grow while player is away doing other things (thanks prestidigitator)
- 1.14 - Added Green Beans from Crops mod (thanks sofar), little bushels in the wild but need to be grown using beanpoles crafted with 4 sticks (2 either side)
- 1.13 - Fixed seed double-placement glitch. Mapgen now uses 0.4.12+ for plant generation
- 1.12 - Player cannot place seeds in protected area, also growing speeds changed to match defaults
- 1.11 - Added Straw Bale, streamlined growing abm a little, fixed melon rotation bug with screwdriver
- 1.10 - Added Blueberry Bush and Blueberry Muffins, also Pumpkin/Melon easier to pick up, added check for unloaded map
- 1.09 - Corn now uses single nodes instead of 1 ontop of the other, Ethanol recipe is more expensive (requires 5 corn) and some code cleanup.
- 1.08 - Added Farming Plus compatibility, plus can be removed and no more missing nodes
- 1.07 - Added Rhubarb and Rhubarb Pie
- 1.06 - register_hoe and register_plant added for compatibility with default farming mod, although any plants registered will use farming redo to grow
- 1.05 - Added Raspberry Bushels and Raspberry Smoothie
- 1.04 - Added Donuts... normal, chocolate and apple... and a few code cleanups and now compatible with jungletree's from MoreTrees mod
- 1.03 - Bug fixes and more compatibility as drop-in replacement for built-in farming mod
- 1.02 - Added farming.mod string to help other mods identify which farming mod is running, if it returns "redo" then you're using this one, "" empty is built-in mod
- 1.01 - Crafting coffee or ethanol returns empty bucket/bottle, also Cocoa spawns a little rarer
- 1.0 - Added Cocoa which randomly grows on jungle tree's, pods give cocoa beans which can be used to farm more pods on a jungle trunk or make Cookies which have been added (or other treats)
- 0.9 - Added Pumpkin, Jack 'O Lantern, Pumpkin Slice and Sugar (a huge thanks to painterly.net for allowing me to use their textures)
- 0.8 - Added Watermelon and Melon Slice
- 0.7 - Added Coffee, Coffee Beans, Drinking Cup, Cold and Hot Cup of Coffee
- 0.6 - Added Corn, Corn on the Cob... Also reworked Abm
- 0.5 - Added Carrot, Cucumber, Potato (and Baked Potato), Tomato
- 0.4 - Checks for Protection, also performance changes
- 0.3 - Added Diamond and Mese hoe
- 0.2 - Fixed check for wet soil
- 0.1 - Fixed growing bug
- 0.0 - Initial release

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 487 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 687 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 557 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 703 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

93
mods/.farming_old/api.txt Normal file
View file

@ -0,0 +1,93 @@
Farming API
-----------
The farming API allows you to easily register plants and hoes.
`farming.register_hoe(name, hoe definition)`
* Register a new hoe, see [#hoe definition]
`farming.register_plant(name, Plant definition)`
* Register a new growing plant, see [#Plant definition]
`farming.registered_plants[name] = definition`
* Table of registered plants, indexed by plant name
'crop' holds name of growing crop node minus _step-number at end
'seed' has name of seed required to plant crop
'minlight' min light level needed to grow
'maxlight' max light level needed to grow
'steps' number of steps crop has in growth cycle
'trellis' name of trellis node (e.g. "farming:trellis"), default: nil
### Hoe Definition
{
description = "My Hoe", -- Description for tooltip
inventory_image = "unknown_item.png", -- Image to be used as wield- and inventory image
max_uses = 30, -- Uses until destroyed
material = "", -- Material for recipes
recipe = { -- Craft recipe, if material isn't used
{"air", "air", "air"},
{"", "group:stick"},
{"", "group:stick"},
}
}
### Plant definition
{
description = "My Plant", -- Description of seed item
inventory_image = "unknown_item.png", -- Image to be used as seed's wield- and inventory image
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)
minlight = 13, -- Minimum light to grow
maxlight = minetest.LIGHT_MAX -- Maximum light to grow
can_grow = function(pos) -- Called every growth tick to check if plant can grow returning True if needs are met (optional, defaults to checking for wet soil below plant).
}
Note: Any crops registered with the above function will use the new growing routines, also if crops are manually added with the {growing=1} group they will also grow.
### Crop functions
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]
-- check surrounding for jungle tree
if minetest.find_node_near(pos, 1, {"default:jungletree"}) then
return true -- place next growth stage
end
return false -- condition not met, skip next growth stage until next check
end,
### Scythe items that will not drop
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)
### 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

@ -0,0 +1,171 @@
local S = minetest.get_translator("farming")
--= Helpers
local eth = minetest.get_modpath("ethereal")
local alias = function(orig, new)
minetest.register_alias(orig, new)
end
--= Add {eatable} group to default food items if found
farming.add_eatable("default:apple", 2)
farming.add_eatable("default:blueberries", 1)
farming.add_eatable("flowers:mushroom_brown", 1)
farming.add_eatable("flowers:mushroom_red", -5)
--= Aliases
-- Banana
if eth then
alias("farming_plus:banana_sapling", "ethereal:banana_tree_sapling")
alias("farming_plus:banana_leaves", "ethereal:bananaleaves")
alias("farming_plus:banana", "ethereal:banana")
else
minetest.register_node(":ethereal:banana", {
description = S("Banana"),
drawtype = "torchlike",
tiles = {"farming_banana_single.png"},
inventory_image = "farming_banana_single.png",
wield_image = "farming_banana_single.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.2, -0.5, -0.2, 0.2, 0.2, 0.2}
},
groups = {
food_banana = 1, fleshy = 3, dig_immediate = 3
},
is_ground_content = false,
on_use = minetest.item_eat(2),
sounds = farming.node_sound_leaves_defaults()
})
farming.add_eatable("ethereal:banana", 2)
minetest.register_node(":ethereal:bananaleaves", {
description = S("Banana Leaves"),
tiles = {"ethereal_banana_leaf.png"},
inventory_image = "ethereal_banana_leaf.png",
wield_image = "ethereal_banana_leaf.png",
paramtype = "light",
waving = 1,
groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2},
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
})
alias("farming_plus:banana_sapling", "default:sapling")
alias("farming_plus:banana_leaves", "ethereal:bananaleaves")
alias("farming_plus:banana", "ethereal:banana")
end
-- Carrot
alias("farming_plus:carrot_seed", "farming:carrot")
alias("farming_plus:carrot_1", "farming:carrot_1")
alias("farming_plus:carrot_2", "farming:carrot_4")
alias("farming_plus:carrot_3", "farming:carrot_6")
alias("farming_plus:carrot", "farming:carrot_8")
alias("farming_plus:carrot_item", "farming:carrot")
-- Cocoa
alias("farming_plus:cocoa_sapling", "farming:cocoa_beans")
alias("farming_plus:cocoa_leaves", "default:leaves")
alias("farming_plus:cocoa", "default:apple")
alias("farming_plus:cocoa_bean", "farming:cocoa_beans")
-- Orange
alias("farming_plus:orange_1", "farming:tomato_1")
alias("farming_plus:orange_2", "farming:tomato_4")
alias("farming_plus:orange_3", "farming:tomato_6")
if eth then
alias("farming_plus:orange_item", "ethereal:orange")
alias("farming_plus:orange", "ethereal:orange")
alias("farming_plus:orange_seed", "ethereal:orange_tree_sapling")
else
minetest.register_node(":ethereal:orange", {
description = S("Orange"),
drawtype = "plantlike",
tiles = {"farming_orange.png"},
inventory_image = "farming_orange.png",
wield_image = "farming_orange.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.2, -0.3, -0.2, 0.2, 0.2, 0.2}
},
groups = {
food_orange = 1, fleshy = 3, dig_immediate = 3, flammable = 2
},
is_ground_content = false,
on_use = minetest.item_eat(4),
sounds = farming.node_sound_leaves_defaults()
})
farming.add_eatable("ethereal:orange", 4)
alias("farming_plus:orange_item", "ethereal:orange")
alias("farming_plus:orange", "ethereal:orange")
alias("farming_plus:orange_seed", "default:sapling")
end
-- Potato
alias("farming_plus:potato_item", "farming:potato")
alias("farming_plus:potato_1", "farming:potato_1")
alias("farming_plus:potato_2", "farming:potato_2")
alias("farming_plus:potato", "farming:potato_3")
alias("farming_plus:potato_seed", "farming:potato")
-- Pumpkin
alias("farming:pumpkin_seed", "farming:pumpkin_slice")
alias("farming:pumpkin_face", "farming:jackolantern")
alias("farming:pumpkin_face_light", "farming:jackolantern_on")
alias("farming:big_pumpkin", "farming:jackolantern")
alias("farming:big_pumpkin_side", "air")
alias("farming:big_pumpkin_top", "air")
alias("farming:big_pumpkin_corner", "air")
alias("farming:scarecrow", "farming:jackolantern")
alias("farming:scarecrow_light", "farming:jackolantern_on")
alias("farming:pumpkin_flour", "farming:pumpkin_dough")
-- Rhubarb
alias("farming_plus:rhubarb_seed", "farming:rhubarb")
alias("farming_plus:rhubarb_1", "farming:rhubarb_1")
alias("farming_plus:rhubarb_2", "farming:rhubarb_2")
alias("farming_plus:rhubarb", "farming:rhubarb_3")
alias("farming_plus:rhubarb_item", "farming:rhubarb")
-- Strawberry
alias("farming_plus:strawberry_item", "ethereal:strawberry")
alias("farming_plus:strawberry_seed", "ethereal:strawberry")
alias("farming_plus:strawberry_1", "ethereal:strawberry_1")
alias("farming_plus:strawberry_2", "ethereal:strawberry_3")
alias("farming_plus:strawberry_3", "ethereal:strawberry_5")
alias("farming_plus:strawberry", "ethereal:strawberry_7")
-- Tomato
alias("farming_plus:tomato_seed", "farming:tomato")
alias("farming_plus:tomato_item", "farming:tomato")
alias("farming_plus:tomato_1", "farming:tomato_2")
alias("farming_plus:tomato_2", "farming:tomato_4")
alias("farming_plus:tomato_3", "farming:tomato_6")
alias("farming_plus:tomato", "farming:tomato_8")
-- Weeds
alias("farming:weed", "default:grass_2")

View file

@ -0,0 +1,84 @@
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
farming.register_decoration("artichoke",5)

View file

@ -0,0 +1,91 @@
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
farming.register_decoration("asparagus",5)

View file

@ -0,0 +1,135 @@
local S = minetest.get_translator("farming")
-- seed
minetest.register_node("farming:seed_barley", {
description = S("Barley Seed"),
tiles = {"farming_barley_seed.png"},
inventory_image = "farming_barley_seed.png",
wield_image = "farming_barley_seed.png",
drawtype = "signlike",
groups = {
handy = 1, compostability = 48, seed = 1, snappy = 3, attached_node = 1,
growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
paramtype = "light",
paramtype2 = "wallmounted",
walkable = false,
sunlight_propagates = true,
next_plant = "farming:barley_1",
selection_box = farming.select,
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_barley")
end,
on_timer = function(pos, elapsed)
minetest.set_node(pos, {name = "farming:barley_1", param2 = 3})
end
})
-- item
minetest.register_craftitem("farming:barley", {
description = S("Barley"),
inventory_image = "farming_barley.png",
groups = {food_barley = 1, flammable = 2, compostability = 65}
})
-- crop definition
local def = {
description = S("Barley") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_barley_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:barley_1", table.copy(def))
-- stage 2
def.tiles = {"farming_barley_2.png"}
minetest.register_node("farming:barley_2", table.copy(def))
-- stage 3
def.tiles = {"farming_barley_3.png"}
minetest.register_node("farming:barley_3", table.copy(def))
-- stage 4
def.tiles = {"farming_barley_4.png"}
minetest.register_node("farming:barley_4", table.copy(def))
-- stage 5
def.tiles = {"farming_barley_5.png"}
minetest.register_node("farming:barley_5", table.copy(def))
-- stage 6
def.tiles = {"farming_barley_6.png"}
def.drop = {
items = {
{items = {"farming:barley"}, rarity = 2},
{items = {"farming:seed_barley"}, rarity = 2}
}
}
minetest.register_node("farming:barley_6", table.copy(def))
-- stage 7
def.tiles = {"farming_barley_7.png"}
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 = {"farming:barley"}, rarity = 1},
{items = {"farming:barley"}, rarity = 3},
{items = {"farming:seed_barley"}, rarity = 1},
{items = {"farming:seed_barley"}, rarity = 3}
}
}
minetest.register_node("farming:barley_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:barley"] = {
crop = "farming:barley",
seed = "farming:seed_barley",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 8
}

View file

@ -0,0 +1,237 @@
-- All textures by (C) Auke Kok <sofar@foo-projects.org> CC-BY-SA-3.0
local S = minetest.get_translator("farming")
local a = farming.recipe_items
-- place beans helper
local function place_beans(itemstack, placer, pointed_thing, plantname)
local pt = pointed_thing
-- check if pointing at a node
if not pt or pt.type ~= "node" then return end
local under = minetest.get_node(pt.under)
-- return if any of the nodes are not registered
if not minetest.registered_nodes[under.name] then return end
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = minetest.registered_nodes[under.name]
if placer and itemstack and def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt)
end
-- is player planting crop?
local name = placer and placer:get_player_name() or ""
-- check for protection
if minetest.is_protected(pt.under, name) then return end
-- check if pointing at bean pole
if under.name ~= "farming:beanpole" then return end
-- add the node and remove 1 item from the itemstack
minetest.set_node(pt.under, {name = plantname})
minetest.sound_play("default_place_node", {pos = pt.under, gain = 1.0}, true)
if placer or not farming.is_creative(placer:get_player_name()) then
itemstack:take_item()
-- check for refill
if itemstack:get_count() == 0 then
minetest.after(0.20,
farming.refill_plant, placer, "farming:beans", placer:get_wield_index())
end
end
return itemstack
end
-- item/seed
minetest.register_craftitem("farming:beans", {
description = S("Green Beans"),
inventory_image = "farming_beans.png",
groups = {compostability = 48, seed = 2, food_beans = 1},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
return place_beans(itemstack, placer, pointed_thing, "farming:beanpole_1")
end
})
farming.add_eatable("farming:beans", 1)
-- beanpole
minetest.register_node("farming:beanpole", {
description = S("Bean Pole (place on soil before planting beans)"),
drawtype = "plantlike",
tiles = {"farming_beanpole.png"},
inventory_image = "farming_beanpole.png",
visual_scale = 1.90,
paramtype = "light",
walkable = false,
buildable_to = true,
sunlight_propagates = true,
drop = "farming:beanpole",
selection_box = farming.select,
groups = {handy = 1, snappy = 3, flammable = 2, attached_node = 1},
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults(),
on_place = function(itemstack, placer, pointed_thing)
local pt = pointed_thing
-- check if pointing at a node
if not pt or pt.type ~= "node" then return end
local under = minetest.get_node(pt.under)
-- return if any of the nodes are not registered
if not minetest.registered_nodes[under.name] then return end
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = minetest.registered_nodes[under.name]
if def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt)
end
if minetest.is_protected(pt.above, placer:get_player_name()) then
return
end
local nodename = under.name
if minetest.get_item_group(nodename, "soil") < 2 then return end
local top = {
x = pointed_thing.above.x,
y = pointed_thing.above.y + 1,
z = pointed_thing.above.z
}
nodename = minetest.get_node(top).name
if nodename ~= "air" then return end
minetest.set_node(pointed_thing.above, {name = "farming:beanpole"})
if not farming.is_creative(placer:get_player_name()) then
itemstack:take_item()
end
return itemstack
end
})
-- crop definition
local def = {
description = S("Green Beans") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_beanpole_1.png"},
visual_scale = 1.90,
paramtype = "light",
walkable = false,
buildable_to = true,
sunlight_propagates = true,
drop = {
items = {
{items = {"farming:beanpole"}, rarity = 1}
}
},
selection_box = farming.select,
groups = {
handy = 1, snappy = 3, flammable = 3, not_in_creative_inventory = 1,
attached_node = 1, growing = 1, plant = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
}
-- stage 1
minetest.register_node("farming:beanpole_1", table.copy(def))
-- stage2
def.tiles = {"farming_beanpole_2.png"}
minetest.register_node("farming:beanpole_2", table.copy(def))
-- stage 3
def.tiles = {"farming_beanpole_3.png"}
minetest.register_node("farming:beanpole_3", table.copy(def))
-- stage 4
def.tiles = {"farming_beanpole_4.png"}
minetest.register_node("farming:beanpole_4", table.copy(def))
-- stage 5 (final)
def.tiles = {"farming_beanpole_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:beanpole"}, rarity = 1},
{items = {"farming:beans 3"}, rarity = 1},
{items = {"farming:beans 2"}, rarity = 2},
{items = {"farming:beans 2"}, rarity = 3}
}
}
minetest.register_node("farming:beanpole_5", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:beans"] = {
trellis = "farming:beanpole",
crop = "farming:beanpole",
seed = "farming:beans",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 5
}
-- wild green bean bush (this is what you find on the map)
minetest.register_node("farming:beanbush", {
drawtype = "plantlike",
tiles = {"farming_beanbush.png"},
paramtype = "light",
waving = 1,
walkable = false,
buildable_to = true,
sunlight_propagates = true,
drop = {
items = {
{items = {"farming:beans 1"}, rarity = 1},
{items = {"farming:beans 1"}, rarity = 2},
{items = {"farming:beans 1"}, rarity = 3}
}
},
selection_box = farming.select,
groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
compostability = 35, not_in_creative_inventory = 1
},
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
})
-- mapgen
farming.register_decoration("beans",5,"farming:beanbush")

View file

@ -0,0 +1,87 @@
local S = minetest.get_translator("farming")
local a = farming.recipe_items
-- item/seed
minetest.register_craftitem("farming:beetroot", {
description = S("Beetroot"),
inventory_image = "farming_beetroot.png",
groups = {compostability = 48, seed = 2, food_beetroot = 1},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:beetroot_1")
end
})
farming.add_eatable("farming:beetroot", 1)
-- crop definition
local def = {
description = S("Beetroot") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_beetroot_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:beetroot_1", table.copy(def))
-- stage 2
def.tiles = {"farming_beetroot_2.png"}
minetest.register_node("farming:beetroot_2", table.copy(def))
-- stage 3
def.tiles = {"farming_beetroot_3.png"}
minetest.register_node("farming:beetroot_3", table.copy(def))
-- stage 4
def.tiles = {"farming_beetroot_4.png"}
minetest.register_node("farming:beetroot_4", table.copy(def))
-- stage 5 (final)
def.tiles = {"farming_beetroot_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
max_items = 4, items = {
{items = {"farming:beetroot"}, rarity = 1},
{items = {"farming:beetroot"}, rarity = 2},
{items = {"farming:beetroot"}, rarity = 3},
{items = {"farming:beetroot"}, rarity = 4}
}
}
minetest.register_node("farming:beetroot_5", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:beetroot"] = {
crop = "farming:beetroot",
seed = "farming:beetroot",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 5
}
-- mapgen
farming.register_decoration("beetroot",5)

View file

@ -0,0 +1,82 @@
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
farming.register_decoration("blackberry",4)

View file

@ -0,0 +1,81 @@
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:blueberries", {
description = S("Wild Blueberries"),
inventory_image = "farming_blueberries.png",
groups = {
compostability = 48,seed = 2, food_blueberries = 1, food_blueberry = 1,
food_berry = 1
},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:blueberry_1")
end
})
farming.add_eatable("farming:blueberries", 1)
-- ctop definition
local def = {
description = S("Blueberry") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_blueberry_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:blueberry_1", table.copy(def))
-- stage 2
def.tiles = {"farming_blueberry_2.png"}
minetest.register_node("farming:blueberry_2", table.copy(def))
-- stage 3
def.tiles = {"farming_blueberry_3.png"}
minetest.register_node("farming:blueberry_3", table.copy(def))
-- stage 4 (final)
def.tiles = {"farming_blueberry_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:blueberries 2"}, rarity = 1},
{items = {"farming:blueberries"}, rarity = 2},
{items = {"farming:blueberries"}, rarity = 3}
}
}
minetest.register_node("farming:blueberry_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:blueberries"] = {
crop = "farming:blueberry",
seed = "farming:blueberries",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 4
}
-- mapgen
farming.register_decoration("blueberry",4)

View file

@ -0,0 +1,89 @@
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
farming.register_decoration("cabbage",6)

View file

@ -0,0 +1,109 @@
-- Original textures from PixelBox texture pack
-- https://forum.minetest.net/viewtopic.php?id=4990
local S = minetest.get_translator("farming")
local a = farming.recipe_items
-- item/seed
minetest.register_craftitem("farming:carrot", {
description = S("Carrot"),
inventory_image = "farming_carrot.png",
groups = {compostability = 48, seed = 2, food_carrot = 1},
on_use = minetest.item_eat(4),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:carrot_1")
end
})
farming.add_eatable("farming:carrot", 4)
-- crop definition
local def = {
description = S("Carrot") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_carrot_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:carrot_1", table.copy(def))
-- stage 2
def.tiles = {"farming_carrot_2.png"}
minetest.register_node("farming:carrot_2", table.copy(def))
-- stage 3
def.tiles = {"farming_carrot_3.png"}
minetest.register_node("farming:carrot_3", table.copy(def))
-- stage 4
def.tiles = {"farming_carrot_4.png"}
minetest.register_node("farming:carrot_4", table.copy(def))
-- stage 5
def.tiles = {"farming_carrot_5.png"}
minetest.register_node("farming:carrot_5", table.copy(def))
-- stage 6
def.tiles = {"farming_carrot_6.png"}
minetest.register_node("farming:carrot_6", table.copy(def))
-- stage 7
def.tiles = {"farming_carrot_7.png"}
def.drop = {
items = {
{items = {"farming:carrot"}, rarity = 1},
{items = {"farming:carrot 2"}, rarity = 3}
}
}
minetest.register_node("farming:carrot_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_carrot_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:carrot 2"}, rarity = 1},
{items = {"farming:carrot 3"}, rarity = 2}
}
}
minetest.register_node("farming:carrot_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:carrot"] = {
crop = "farming:carrot",
seed = "farming:carrot",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 8
}
-- mapgen
farming.register_decoration("carrot",8)

View file

@ -0,0 +1,100 @@
local S = minetest.get_translator("farming")
local a = farming.recipe_items
-- item/seed
minetest.register_craftitem("farming:chili_pepper", {
description = S("Chili Pepper"),
inventory_image = "farming_chili_pepper.png",
groups = {compostability = 48, seed = 2, food_chili_pepper = 1},
on_use = minetest.item_eat(2),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:chili_1")
end
})
farming.add_eatable("farming:chili_pepper", 2)
-- crop definition
local def = {
description = S("Chili Pepper") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_chili_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:chili_1", table.copy(def))
-- stage 2
def.tiles = {"farming_chili_2.png"}
minetest.register_node("farming:chili_2", table.copy(def))
-- stage 3
def.tiles = {"farming_chili_3.png"}
minetest.register_node("farming:chili_3", table.copy(def))
-- stage 4
def.tiles = {"farming_chili_4.png"}
minetest.register_node("farming:chili_4", table.copy(def))
-- stage 5
def.tiles = {"farming_chili_5.png"}
minetest.register_node("farming:chili_5", table.copy(def))
-- stage 6
def.tiles = {"farming_chili_6.png"}
minetest.register_node("farming:chili_6", table.copy(def))
-- stage 7
def.tiles = {"farming_chili_7.png"}
minetest.register_node("farming:chili_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_chili_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:chili_pepper 3"}, rarity = 1},
{items = {"farming:chili_pepper 2"}, rarity = 2}
}
}
minetest.register_node("farming:chili_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:chili_pepper"] = {
crop = "farming:chili",
seed = "farming:chili_pepper",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 8
}
-- mapgen
farming.register_decoration("chili",8)

View file

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

View file

@ -0,0 +1,107 @@
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:coffee_beans", {
description = S("Coffee Beans"),
inventory_image = "farming_coffee_beans.png",
groups = {compostability = 48, seed = 2, food_coffee = 1, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:coffee_1")
end
})
-- crop definition
local def = {
description = S("Coffee") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_coffee_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:coffee_1", table.copy(def))
-- stage 2
def.tiles = {"farming_coffee_2.png"}
minetest.register_node("farming:coffee_2", table.copy(def))
-- stage 3
def.tiles = {"farming_coffee_3.png"}
minetest.register_node("farming:coffee_3", table.copy(def))
-- stage 4
def.tiles = {"farming_coffee_4.png"}
minetest.register_node("farming:coffee_4", table.copy(def))
-- stage 5 (final)
def.tiles = {"farming_coffee_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:coffee_beans 2"}, rarity = 1},
{items = {"farming:coffee_beans 2"}, rarity = 2},
{items = {"farming:coffee_beans 2"}, rarity = 3}
}
}
minetest.register_node("farming:coffee_5", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:coffee"] = {
crop = "farming:coffee",
seed = "farming:coffee_beans",
minlight = farming.min_light,
maxlight = farming.max_light,
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

@ -0,0 +1,130 @@
--[[
Original textures from GeMinecraft
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")
-- item/seed
minetest.register_craftitem("farming:corn", {
description = S("Corn"),
inventory_image = "farming_corn.png",
groups = {compostability = 45, seed = 2, food_corn = 1},
on_use = minetest.item_eat(3),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:corn_1")
end
})
farming.add_eatable("farming:corn", 3)
-- crop definition
local def = {
description = S("Corn") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_corn_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:corn_1", table.copy(def))
-- stage 2
def.tiles = {"farming_corn_2.png"}
minetest.register_node("farming:corn_2", table.copy(def))
-- stage 3
def.tiles = {"farming_corn_3.png"}
minetest.register_node("farming:corn_3", table.copy(def))
-- stage 4
def.tiles = {"farming_corn_4.png"}
minetest.register_node("farming:corn_4", table.copy(def))
-- stage 5
def.tiles = {"farming_corn_5.png"}
minetest.register_node("farming:corn_5", table.copy(def))
-- stage 6
def.tiles = {"farming_corn_6.png"}
def.visual_scale = 1.9
minetest.register_node("farming:corn_6", table.copy(def))
-- stage 7
def.tiles = {"farming_corn_7.png"}
def.drop = {
items = {
{items = {"farming:corn"}, rarity = 1},
{items = {"farming:corn"}, rarity = 2},
{items = {"farming:corn"}, rarity = 3}
}
}
minetest.register_node("farming:corn_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_corn_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:corn 2"}, rarity = 1},
{items = {"farming:corn 2"}, rarity = 2},
{items = {"farming:corn 2"}, rarity = 2}
}
}
minetest.register_node("farming:corn_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:corn"] = {
crop = "farming:corn",
seed = "farming:corn",
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.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

@ -0,0 +1,174 @@
local S = minetest.get_translator("farming")
-- 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)
minetest.register_node("farming:cotton_wild", {
description = S("Wild Cotton"),
drawtype = "plantlike",
waving = 1,
tiles = {"farming_cotton_wild.png"},
inventory_image = "farming_cotton_wild.png",
wield_image = "farming_cotton_wild.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {handy = 1, snappy = 3, attached_node = 1, flammable = 4, compostability = 60},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
drop = {
items = {
{items = {"farming:cotton"}, rarity = 2},
{items = {"farming:seed_cotton"}, rarity = 1}
}
},
sounds = farming.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-6 / 16, -8 / 16, -6 / 16, 6 / 16, 5 / 16, 6 / 16}
}
})
-- mapgen
farming.register_decoration("cotton",8)

View file

@ -0,0 +1,82 @@
--[[
Original textures from DocFarming mod
https://forum.minetest.net/viewtopic.php?id=3948
]]
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:cucumber", {
description = S("Cucumber"),
inventory_image = "farming_cucumber.png",
groups = {compostability = 48, seed = 2, food_cucumber = 1},
on_use = minetest.item_eat(4),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:cucumber_1")
end
})
farming.add_eatable("farming:cucumber", 4)
-- crop definition
local def = {
description = S("Cucumber") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_cucumber_1.png"},
paramtype = "light",
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:cucumber_1", table.copy(def))
-- stage 2
def.tiles = {"farming_cucumber_2.png"}
minetest.register_node("farming:cucumber_2", table.copy(def))
-- stage 3
def.tiles = {"farming_cucumber_3.png"}
minetest.register_node("farming:cucumber_3", table.copy(def))
-- stage 4 (final)
def.tiles = {"farming_cucumber_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:cucumber 2"}, rarity = 1},
{items = {"farming:cucumber 2"}, rarity = 2}
}
}
minetest.register_node("farming:cucumber_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:cucumber"] = {
crop = "farming:cucumber",
seed = "farming:cucumber",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 4
}
-- mapgen
farming.register_decoration("cucumber",4)

View file

@ -0,0 +1,86 @@
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
farming.register_decoration("eggplant",4)

View file

@ -0,0 +1,84 @@
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:garlic_clove", {
description = S("Garlic clove"),
inventory_image = "crops_garlic_clove.png",
groups = {compostability = 35, seed = 2, food_garlic_clove = 1, flammable = 3},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:garlic_1")
end
})
-- crop definition
local def = {
description = S("Garlic") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"crops_garlic_plant_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 = 3, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
}
-- stage 1
minetest.register_node("farming:garlic_1", table.copy(def))
-- stage 2
def.tiles = {"crops_garlic_plant_2.png"}
minetest.register_node("farming:garlic_2", table.copy(def))
-- stage 3
def.tiles = {"crops_garlic_plant_3.png"}
minetest.register_node("farming:garlic_3", table.copy(def))
-- stage 4
def.tiles = {"crops_garlic_plant_4.png"}
minetest.register_node("farming:garlic_4", table.copy(def))
-- stage 5
def.tiles = {"crops_garlic_plant_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:garlic 3"}, rarity = 1},
{items = {"farming:garlic"}, rarity = 2},
{items = {"farming:garlic"}, rarity = 5}
}
}
minetest.register_node("farming:garlic_5", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:garlic"] = {
crop = "farming:garlic",
seed = "farming:garlic_clove",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 5
}
-- mapgen
farming.register_decoration("garlic",5)

View file

@ -0,0 +1,85 @@
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
farming.register_decoration("ginger",5)

View file

@ -0,0 +1,250 @@
local S = minetest.get_translator("farming")
-- place trellis helper
local function place_grapes(itemstack, placer, pointed_thing, plantname)
local pt = pointed_thing
-- check if pointing at a node
if not pt or pt.type ~= "node" then return end
local under = minetest.get_node(pt.under)
-- return if any of the nodes are not registered
if not minetest.registered_nodes[under.name] then return end
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = minetest.registered_nodes[under.name]
if placer and itemstack and def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt)
end
-- is player planting seed?
local name = placer and placer:get_player_name() or ""
-- check for protection
if minetest.is_protected(pt.under, name) then return end
-- check if pointing at trellis
if under.name ~= "farming:trellis" then return end
-- add the node and remove 1 item from the itemstack
minetest.set_node(pt.under, {name = plantname})
minetest.sound_play("default_place_node", {pos = pt.under, gain = 1.0}, true)
if placer and not farming.is_creative(placer:get_player_name()) then
itemstack:take_item()
-- check for refill
if itemstack:get_count() == 0 then
minetest.after(0.20, farming.refill_plant, placer,
"farming:grapes", placer:get_wield_index()
)
end
end
return itemstack
end
-- item/seed
minetest.register_craftitem("farming:grapes", {
description = S("Grapes"),
inventory_image = "farming_grapes.png",
groups = {compostability = 48, seed = 2, food_grapes = 1},
on_use = minetest.item_eat(2),
on_place = function(itemstack, placer, pointed_thing)
return place_grapes(itemstack, placer, pointed_thing, "farming:grapes_1")
end
})
farming.add_eatable("farming:grapes", 2)
-- trellis
minetest.register_node("farming:trellis", {
description = S("Trellis (place on soil before planting grapes)"),
drawtype = "plantlike",
tiles = {"farming_trellis.png"},
inventory_image = "farming_trellis.png",
visual_scale = 1.9,
paramtype = "light",
walkable = false,
buildable_to = true,
sunlight_propagates = true,
drop = "farming:trellis",
selection_box = farming.select,
groups = {handy = 1, snappy = 3, flammable = 2, attached_node = 1},
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults(),
on_place = function(itemstack, placer, pointed_thing)
local pt = pointed_thing
-- check if pointing at a node
if not pt or pt.type ~= "node" then return end
local under = minetest.get_node(pt.under)
-- return if any of the nodes are not registered
if not minetest.registered_nodes[under.name] then return end
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = minetest.registered_nodes[under.name]
if def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt)
end
if minetest.is_protected(pt.above, placer:get_player_name()) then
return
end
local nodename = under.name
if minetest.get_item_group(nodename, "soil") < 2 then return end
local top = {
x = pointed_thing.above.x,
y = pointed_thing.above.y + 1,
z = pointed_thing.above.z
}
nodename = minetest.get_node(top).name
if nodename ~= "air" then return end
minetest.set_node(pointed_thing.above, {name = "farming:trellis"})
if not farming.is_creative(placer:get_player_name()) then
itemstack:take_item()
end
return itemstack
end
})
-- crop definition
local def = {
description = S("Grapes") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_grapes_1.png"},
visual_scale = 1.9,
paramtype = "light",
walkable = false,
buildable_to = true,
sunlight_propagates = true,
drop = {
items = {
{items = {"farming:trellis"}, rarity = 1},
}
},
selection_box = farming.select,
groups = {
handy = 1, snappy = 3, flammable = 3, not_in_creative_inventory = 1,
attached_node = 1, growing = 1, plant = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
}
-- stage 1
minetest.register_node("farming:grapes_1", table.copy(def))
-- stage2
def.tiles = {"farming_grapes_2.png"}
minetest.register_node("farming:grapes_2", table.copy(def))
-- stage 3
def.tiles = {"farming_grapes_3.png"}
minetest.register_node("farming:grapes_3", table.copy(def))
-- stage 4
def.tiles = {"farming_grapes_4.png"}
minetest.register_node("farming:grapes_4", table.copy(def))
-- stage 5
def.tiles = {"farming_grapes_5.png"}
minetest.register_node("farming:grapes_5", table.copy(def))
-- stage 6
def.tiles = {"farming_grapes_6.png"}
minetest.register_node("farming:grapes_6", table.copy(def))
-- stage 7
def.tiles = {"farming_grapes_7.png"}
minetest.register_node("farming:grapes_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_grapes_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:trellis"}, rarity = 1},
{items = {"farming:grapes 3"}, rarity = 1},
{items = {"farming:grapes 1"}, rarity = 2},
{items = {"farming:grapes 1"}, rarity = 3}
}
}
minetest.register_node("farming:grapes_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:grapes"] = {
trellis = "farming:trellis",
crop = "farming:grapes",
seed = "farming:grapes",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 8
}
-- wild grape vine (this is what you find on the map)
minetest.register_node("farming:grapebush", {
drawtype = "plantlike",
tiles = {"farming_grapebush.png"},
paramtype = "light",
waving = 1,
walkable = false,
buildable_to = true,
sunlight_propagates = true,
drop = {
items = {
{items = {"farming:grapes 1"}, rarity = 1},
{items = {"farming:grapes 1"}, rarity = 2},
{items = {"farming:grapes 1"}, rarity = 3}
}
},
selection_box = farming.select,
groups = {
handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, compostability = 35
},
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
})
-- mapgen
farming.register_decoration("grapes",8,"farming:grapebush")

View file

@ -0,0 +1,138 @@
local S = minetest.get_translator("farming")
-- seed
minetest.register_node("farming:seed_hemp", {
description = S("Hemp Seed"),
tiles = {"farming_hemp_seed.png"},
inventory_image = "farming_hemp_seed.png",
wield_image = "farming_hemp_seed.png",
drawtype = "signlike",
groups = {
handy = 1, compostability = 38, seed = 1, snappy = 3, attached_node = 1,
growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
paramtype = "light",
paramtype2 = "wallmounted",
walkable = false,
sunlight_propagates = true,
selection_box = farming.select,
next_plant = "farming:hemp_1",
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_hemp")
end,
on_timer = function(pos, elapsed)
minetest.set_node(pos, {name = "farming:hemp_1", param2 = 1})
end
})
-- item
minetest.register_craftitem("farming:hemp_leaf", {
description = S("Hemp Leaf"),
inventory_image = "farming_hemp_leaf.png",
groups = {compostability = 35}
})
-- crop definition
local def = {
description = S("Hemp") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_hemp_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:hemp_1", table.copy(def))
-- stage 2
def.tiles = {"farming_hemp_2.png"}
minetest.register_node("farming:hemp_2", table.copy(def))
-- stage 3
def.tiles = {"farming_hemp_3.png"}
minetest.register_node("farming:hemp_3", table.copy(def))
-- stage 4
def.tiles = {"farming_hemp_4.png"}
minetest.register_node("farming:hemp_4", table.copy(def))
-- stage 5
def.tiles = {"farming_hemp_5.png"}
minetest.register_node("farming:hemp_5", table.copy(def))
-- stage 6
def.tiles = {"farming_hemp_6.png"}
def.drop = {
items = {
{items = {"farming:hemp_leaf"}, rarity = 2},
{items = {"farming:seed_hemp"}, rarity = 1}
}
}
minetest.register_node("farming:hemp_6", table.copy(def))
-- stage 7
def.tiles = {"farming_hemp_7.png"}
def.drop = {
items = {
{items = {"farming:hemp_leaf"}, rarity = 1},
{items = {"farming:hemp_leaf"}, rarity = 3},
{items = {"farming:seed_hemp"}, rarity = 1},
{items = {"farming:seed_hemp"}, rarity = 3}
}
}
minetest.register_node("farming:hemp_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_hemp_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:hemp_leaf 2"}, rarity = 1},
{items = {"farming:hemp_leaf"}, rarity = 2},
{items = {"farming:seed_hemp"}, rarity = 1},
{items = {"farming:seed_hemp"}, rarity = 2}
}
}
minetest.register_node("farming:hemp_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:hemp"] = {
crop = "farming:hemp",
seed = "farming:seed_hemp",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 8
}
-- mapgen
farming.register_decoration("hemp",7)

View file

@ -0,0 +1,83 @@
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
farming.register_decoration("lettuce",5)

View file

@ -0,0 +1,108 @@
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:melon_slice", {
description = S("Melon Slice"),
inventory_image = "farming_melon_slice.png",
groups = {compostability = 48, seed = 2, food_melon_slice = 1},
on_use = minetest.item_eat(2),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:melon_1")
end
})
farming.add_eatable("farming:melon_slice", 2)
-- crop definition
local def = {
description = S("Melon") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_melon_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:melon_1", table.copy(def))
-- stage 2
def.tiles = {"farming_melon_2.png"}
minetest.register_node("farming:melon_2", table.copy(def))
-- stage 3
def.tiles = {"farming_melon_3.png"}
minetest.register_node("farming:melon_3", table.copy(def))
-- stage 4
def.tiles = {"farming_melon_4.png"}
minetest.register_node("farming:melon_4", table.copy(def))
-- stage 5
def.tiles = {"farming_melon_5.png"}
minetest.register_node("farming:melon_5", table.copy(def))
-- stage 6
def.tiles = {"farming_melon_6.png"}
minetest.register_node("farming:melon_6", table.copy(def))
-- stage 7
def.tiles = {"farming_melon_7.png"}
minetest.register_node("farming:melon_7", table.copy(def))
-- stage 8 (final)
minetest.register_node("farming:melon_8", {
description = S("Melon"),
tiles = {
"farming_melon_top.png",
"farming_melon_bottom.png",
"farming_melon_side.png"
},
groups = {
food_melon = 1, handy = 1, snappy = 3, choppy = 3, oddly_breakable_by_hand = 2,
flammable = 2, plant = 1, compostability = 65
},
is_ground_content = false,
drop = "farming:melon_8",
sounds = farming.node_sound_wood_defaults(),
paramtype2 = "facedir",
on_place = minetest.rotate_node,
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
-- add to registered_plants
farming.registered_plants["farming:melon"] = {
crop = "farming:melon",
seed = "farming:melon_slice",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 8
}
-- mapgen
farming.register_decoration("melon",8)

View file

@ -0,0 +1,103 @@
local S = minetest.get_translator("farming")
-- seed
minetest.register_node("farming:seed_mint", {
description = S("Mint Seeds"),
tiles = {"farming_mint_seeds.png"},
inventory_image = "farming_mint_seeds.png",
wield_image = "farming_mint_seeds.png",
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)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_mint")
end,
on_timer = function(pos, elapsed)
minetest.set_node(pos, {name = "farming:mint_1", param2 = 1})
end
})
-- item
minetest.register_craftitem("farming:mint_leaf", {
description = S("Mint Leaf"),
inventory_image = "farming_mint_leaf.png",
groups = {food_mint = 1, flammable = 4, compostability = 48}
})
-- crop definition
local def = {
description = S("Mint") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_mint_1.png"},
paramtype = "light",
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:mint_1", table.copy(def))
-- stage 2
def.tiles = {"farming_mint_2.png"}
minetest.register_node("farming:mint_2", table.copy(def))
-- stage 3
def.tiles = {"farming_mint_3.png"}
minetest.register_node("farming:mint_3", table.copy(def))
-- stage 4 (final)
def.tiles = {"farming_mint_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:mint_leaf 2"}, rarity = 1},
{items = {"farming:mint_leaf 2"}, rarity = 2},
{items = {"farming:seed_mint 1"}, rarity = 1},
{items = {"farming:seed_mint 2"}, rarity = 2}
}
}
minetest.register_node("farming:mint_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:mint"] = {
crop = "farming:mint",
seed = "farming:seed_mint",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 4
}
-- mapgen
farming.register_decoration("mint",4)

View file

@ -0,0 +1,96 @@
--[[
Original textures from Crops Plus mod
Copyright (C) 2018 Grizzly Adam
https://forum.minetest.net/viewtopic.php?f=9&t=19488
]]
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:onion", {
description = S("Onion"),
inventory_image = "crops_onion.png",
groups = {compostability = 48, seed = 2, food_onion = 1},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:onion_1")
end
})
farming.add_eatable("farming:onion", 1)
-- crop definition
local def = {
description = S("Onion") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"crops_onion_plant_1.png"},
paramtype = "light",
paramtype2 = "meshoptions",
place_param2 = 3,
sunlight_propagates = true,
waving = 1,
walkable = false,
buildable_to = true,
drop = "",
waving = 1,
selection_box = farming.select,
groups = {
handy = 1, snappy = 3, flammable = 3, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
}
-- stage 1
minetest.register_node("farming:onion_1", table.copy(def))
-- stage 2
def.tiles = {"crops_onion_plant_2.png"}
minetest.register_node("farming:onion_2", table.copy(def))
-- stage 3
def.tiles = {"crops_onion_plant_3.png"}
minetest.register_node("farming:onion_3", table.copy(def))
-- stage 4
def.tiles = {"crops_onion_plant_4.png"}
minetest.register_node("farming:onion_4", table.copy(def))
-- stage 5
def.tiles = {"crops_onion_plant_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
max_items = 5, items = {
{items = {"farming:onion"}, rarity = 1},
{items = {"farming:onion"}, rarity = 1},
{items = {"farming:onion"}, rarity = 2},
{items = {"farming:onion"}, rarity = 2},
{items = {"farming:onion"}, rarity = 5}
}
}
minetest.register_node("farming:onion_5", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:onion"] = {
crop = "farming:onion",
seed = "farming:onion",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 5
}
-- mapgen
farming.register_decoration("onion",5)

View file

@ -0,0 +1,75 @@
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
farming.register_decoration("parsley",5)

View file

@ -0,0 +1,94 @@
-- Textures for peas and their crop were done by Andrey01
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:pea_pod", {
description = S("Pea Pod"),
inventory_image = "farming_pea_pod.png",
groups = {compostability = 48, seed = 2, food_peas = 1, food_pea_pod = 1},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:pea_1")
end
})
farming.add_eatable("farming:pea_pod", 1)
-- replacement for separate peas item that was removed
minetest.register_alias("farming:peas", "farming:pea_pod")
-- crop definition
local def = {
description = S("Pea") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_pea_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:pea_1", table.copy(def))
-- stage 2
def.tiles = {"farming_pea_2.png"}
minetest.register_node("farming:pea_2", table.copy(def))
-- stage 3
def.tiles = {"farming_pea_3.png"}
minetest.register_node("farming:pea_3", table.copy(def))
-- stage 4
def.tiles = {"farming_pea_4.png"}
minetest.register_node("farming:pea_4", table.copy(def))
-- stage 5 (final)
def.tiles = {"farming_pea_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
max_items = 5, items = {
{items = {"farming:pea_pod"}, rarity = 1},
{items = {"farming:pea_pod"}, rarity = 2},
{items = {"farming:pea_pod"}, rarity = 3},
{items = {"farming:pea_pod"}, rarity = 5}
}
}
minetest.register_node("farming:pea_5", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:pea_pod"] = {
crop = "farming:pea",
seed = "farming:pea_pod",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 5
}
-- mapgen
farming.register_decoration("pea",5)

View file

@ -0,0 +1,154 @@
--[[
Original textures from Crops Plus mod
Copyright (C) 2018 Grizzly Adam
https://forum.minetest.net/viewtopic.php?f=9&t=19488
]]
local S = minetest.get_translator("farming")
-- seed
minetest.register_craftitem("farming:peppercorn", {
description = S("Peppercorn"),
inventory_image = "crops_peppercorn.png",
groups = {compostability = 48, seed = 1, food_peppercorn = 1, flammable = 3},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:pepper_1")
end
})
-- green pepper
minetest.register_craftitem("farming:pepper", {
description = S("Green Pepper"),
inventory_image = "crops_pepper.png",
on_use = minetest.item_eat(2),
groups = {food_pepper = 1, compostability = 55}
})
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({
output = "farming:peppercorn",
recipe = {{"group:food_pepper"}}
})
-- crop definition
local def = {
description = S("Pepper") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"crops_pepper_plant_1.png"},
paramtype = "light",
paramtype2 = "meshoptions",
place_param2 = 1,
sunlight_propagates = true,
waving = 1,
walkable = false,
buildable_to = true,
drop = "",
selection_box = farming.select,
groups = {
handy = 1, snappy = 3, flammable = 3, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
}
-- stage 1
minetest.register_node("farming:pepper_1", table.copy(def))
-- stage 2
def.tiles = {"crops_pepper_plant_2.png"}
minetest.register_node("farming:pepper_2", table.copy(def))
-- stage 3
def.tiles = {"crops_pepper_plant_3.png"}
minetest.register_node("farming:pepper_3", table.copy(def))
-- stage 4
def.tiles = {"crops_pepper_plant_4.png"}
minetest.register_node("farming:pepper_4", table.copy(def))
-- stage 5 (green pepper)
def.tiles = {"crops_pepper_plant_5.png"}
def.selection_box = farming.select_final
def.drop = {
max_items = 2, items = {
{items = {"farming:pepper 2"}, rarity = 1},
{items = {"farming:pepper"}, rarity = 2},
{items = {"farming:pepper"}, rarity = 3}
}
}
minetest.register_node("farming:pepper_5", table.copy(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
farming.registered_plants["farming:pepper"] = {
crop = "farming:pepper",
seed = "farming:peppercorn",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 7
}
-- mapgen
farming.register_decoration("pepper",7)

View file

@ -0,0 +1,119 @@
local S = minetest.get_translator("farming")
-- seed
minetest.register_craftitem("farming:pineapple_top", {
description = S("Pineapple Top"),
inventory_image = "farming_pineapple_top.png",
groups = {compostability = 48, seed = 2, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:pineapple_1")
end
})
-- item
minetest.register_node("farming:pineapple", {
description = S("Pineapple"),
drawtype = "plantlike",
tiles = {"farming_pineapple.png"},
inventory_image = "farming_pineapple.png",
wield_image = "farming_pineapple.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed", fixed = {-0.27, -0.37, -0.27, 0.27, 0.44, 0.27}
},
groups = {
food_pineapple = 1, fleshy = 3, dig_immediate = 3, flammable = 2,
compostability = 65
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false
})
-- crop definition
local def = {
description = S("Pineapple") .. S(" Crop"),
drawtype = "plantlike",
visual_scale = 1.5,
tiles = {"farming_pineapple_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:pineapple_1", table.copy(def))
-- stage 2
def.tiles = {"farming_pineapple_2.png"}
minetest.register_node("farming:pineapple_2", table.copy(def))
-- stage 3
def.tiles = {"farming_pineapple_3.png"}
minetest.register_node("farming:pineapple_3", table.copy(def))
-- stage 4
def.tiles = {"farming_pineapple_4.png"}
minetest.register_node("farming:pineapple_4", table.copy(def))
-- stage 5
def.tiles = {"farming_pineapple_5.png"}
minetest.register_node("farming:pineapple_5", table.copy(def))
-- stage 6
def.tiles = {"farming_pineapple_6.png"}
minetest.register_node("farming:pineapple_6", table.copy(def))
-- stage 7
def.tiles = {"farming_pineapple_7.png"}
minetest.register_node("farming:pineapple_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_pineapple_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:pineapple"}, rarity = 1},
{items = {"farming:pineapple"}, rarity = 2}
}
}
minetest.register_node("farming:pineapple_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:pineapple"] = {
crop = "farming:pineapple",
seed = "farming:pineapple_top",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 8
}
-- mapgen
farming.register_decoration("pineapple",8)

View file

@ -0,0 +1,102 @@
--[[
Original textures from DocFarming mod
https://forum.minetest.net/viewtopic.php?id=3948
]]
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:potato", {
description = S("Potato"),
inventory_image = "farming_potato.png",
groups = {compostability = 48, seed = 2, food_potato = 1},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:potato_1")
end,
-- 1 in 3 chance of being poisoned
on_use = function(itemstack, user, pointed_thing)
if user then
if math.random(3) == 1 then
return minetest.do_item_eat(-1, nil, itemstack, user, pointed_thing)
else
return minetest.do_item_eat(1, nil, itemstack, user, pointed_thing)
end
end
end
})
farming.add_eatable("farming:potato", 1)
-- crop definition
local def = {
description = S("Potato") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_potato_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:potato_1", table.copy(def))
-- stage 2
def.tiles = {"farming_potato_2.png"}
minetest.register_node("farming:potato_2", table.copy(def))
-- stage 3
def.tiles = {"farming_potato_3.png"}
def.drop = {
items = {
{items = {"farming:potato"}, rarity = 1},
{items = {"farming:potato"}, rarity = 3}
}
}
minetest.register_node("farming:potato_3", table.copy(def))
-- stage 4 (final)
def.tiles = {"farming_potato_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:potato 2"}, rarity = 1},
{items = {"farming:potato 3"}, rarity = 2}
}
}
minetest.register_node("farming:potato_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:potato"] = {
crop = "farming:potato",
seed = "farming:potato",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 4
}
-- mapgen
farming.register_decoration("potato",3)

View file

@ -0,0 +1,110 @@
local S = minetest.get_translator("farming")
-- seed
minetest.register_craftitem("farming:pumpkin_slice", {
description = S("Pumpkin Slice"),
inventory_image = "farming_pumpkin_slice.png",
groups = {compostability = 48, seed = 2, food_pumpkin_slice = 1},
on_use = minetest.item_eat(2),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:pumpkin_1")
end
})
farming.add_eatable("farming:pumpkin_slice", 2)
-- crop definition
local def = {
description = S("Pumpkin") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_pumpkin_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:pumpkin_1", table.copy(def))
-- stage 2
def.tiles = {"farming_pumpkin_2.png"}
minetest.register_node("farming:pumpkin_2", table.copy(def))
-- stage 3
def.tiles = {"farming_pumpkin_3.png"}
minetest.register_node("farming:pumpkin_3", table.copy(def))
-- stage 4
def.tiles = {"farming_pumpkin_4.png"}
minetest.register_node("farming:pumpkin_4", table.copy(def))
-- stage 5
def.tiles = {"farming_pumpkin_5.png"}
minetest.register_node("farming:pumpkin_5", table.copy(def))
-- stage 6
def.tiles = {"farming_pumpkin_6.png"}
minetest.register_node("farming:pumpkin_6", table.copy(def))
-- stage 7
def.tiles = {"farming_pumpkin_7.png"}
minetest.register_node("farming:pumpkin_7", table.copy(def))
-- stage 8 (final)
minetest.register_node("farming:pumpkin_8", {
description = S("Pumpkin"),
tiles = {
"farming_pumpkin_bottom.png^farming_pumpkin_top.png",
"farming_pumpkin_bottom.png",
"farming_pumpkin_side.png"
},
groups = {
food_pumpkin = 1, snappy = 3, choppy = 3, oddly_breakable_by_hand = 2,
flammable = 2, plant = 1, handy = 1
},
is_ground_content = false,
drop = "farming:pumpkin_8",
sounds = farming.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")
-- add to registered_plants
farming.registered_plants["farming:pumpkin"] = {
crop = "farming:pumpkin",
seed = "farming:pumpkin_slice",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 8
}
-- mapgen
farming.register_decoration("pumpkin",8)

View file

@ -0,0 +1,82 @@
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:raspberries", {
description = S("Raspberries"),
inventory_image = "farming_raspberries.png",
groups = {
compostability = 48, seed = 2, food_raspberries = 1, food_raspberry = 1,
food_berry = 1
},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:raspberry_1")
end
})
farming.add_eatable("farming:raspberries", 1)
-- crop definition
local def = {
description = S("Raspberry") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_raspberry_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:raspberry_1", table.copy(def))
-- stage 2
def.tiles = {"farming_raspberry_2.png"}
minetest.register_node("farming:raspberry_2", table.copy(def))
-- stage 3
def.tiles = {"farming_raspberry_3.png"}
minetest.register_node("farming:raspberry_3", table.copy(def))
-- stage 4 (final)
def.tiles = {"farming_raspberry_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:raspberries 2"}, rarity = 1},
{items = {"farming:raspberries"}, rarity = 2},
{items = {"farming:raspberries"}, rarity = 3}
}
}
minetest.register_node("farming:raspberry_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:raspberries"] = {
crop = "farming:raspberry",
seed = "farming:raspberries",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 4
}
-- mapgen
farming.register_decoration("raspberry",4)

View file

@ -0,0 +1,87 @@
local S = minetest.get_translator("farming")
-- item/seed
minetest.register_craftitem("farming:rhubarb", {
description = S("Rhubarb"),
inventory_image = "farming_rhubarb.png",
groups = {compostability = 48, seed = 2, food_rhubarb = 1},
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:rhubarb_1")
end
})
farming.add_eatable("farming:rhubarb", 1)
-- crop definition
local def = {
description = S("Rhubarb") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_rhubarb_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(),
minlight = 10,
maxlight = 12
}
-- stage 1
minetest.register_node("farming:rhubarb_1", table.copy(def))
-- stage2
def.tiles = {"farming_rhubarb_2.png"}
minetest.register_node("farming:rhubarb_2", table.copy(def))
-- stage3
def.tiles = {"farming_rhubarb_3.png"}
def.drop = {
items = {
{items = {"farming:rhubarb"}, 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 = 3}
}
}
minetest.register_node("farming:rhubarb_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:rhubarb"] = {
crop = "farming:rhubarb",
seed = "farming:rhubarb",
minlight = 10,
maxlight = 12,
steps = 4
}
-- mapgen
farming.register_decoration("rhubarb",3)

View file

@ -0,0 +1,151 @@
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
}
-- mapgen
farming.register_decoration("rice",8)

View file

@ -0,0 +1,50 @@
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 = {}})

View file

@ -0,0 +1,112 @@
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
farming.register_decoration("soy",7)

View file

@ -0,0 +1,86 @@
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
farming.register_decoration("spinach",4)

View file

@ -0,0 +1,114 @@
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
farming.register_decoration("strawberry",7)

View file

@ -0,0 +1,132 @@
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
farming.register_decoration("sunflower",8)

View file

@ -0,0 +1,111 @@
--[[
Textures edited from:
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")
-- item/seed
minetest.register_craftitem("farming:tomato", {
description = S("Tomato"),
inventory_image = "farming_tomato.png",
groups = {compostability = 45, seed = 2, food_tomato = 1},
on_use = minetest.item_eat(4),
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:tomato_1")
end
})
farming.add_eatable("farming:tomato", 4)
-- crop definition
local def = {
description = S("Tomato") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_tomato_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:tomato_1", table.copy(def))
-- stage2
def.tiles = {"farming_tomato_2.png"}
minetest.register_node("farming:tomato_2", table.copy(def))
-- stage 3
def.tiles = {"farming_tomato_3.png"}
minetest.register_node("farming:tomato_3", table.copy(def))
-- stage 4
def.tiles = {"farming_tomato_4.png"}
minetest.register_node("farming:tomato_4", table.copy(def))
-- stage 5
def.tiles = {"farming_tomato_5.png"}
minetest.register_node("farming:tomato_5", table.copy(def))
-- stage 6
def.tiles = {"farming_tomato_6.png"}
minetest.register_node("farming:tomato_6", table.copy(def))
-- stage 7
def.tiles = {"farming_tomato_7.png"}
def.drop = {
items = {
{items = {"farming:tomato"}, rarity = 1},
{items = {"farming:tomato"}, rarity = 3}
}
}
minetest.register_node("farming:tomato_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_tomato_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:tomato 3"}, rarity = 1},
{items = {"farming:tomato 2"}, rarity = 2},
{items = {"farming:tomato 1"}, rarity = 3}
}
}
minetest.register_node("farming:tomato_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:tomato"] = {
crop = "farming:tomato",
seed = "farming:tomato",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 8
}
-- mapgen
farming.register_decoration("tomato",8)

View file

@ -0,0 +1,109 @@
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
farming.register_decoration("vanilla",8)

View file

@ -0,0 +1,144 @@
local S = minetest.get_translator("farming")
-- seed
minetest.register_node("farming:seed_wheat", {
description = S("Wheat Seed"),
tiles = {"farming_wheat_seed.png"},
inventory_image = "farming_wheat_seed.png",
wield_image = "farming_wheat_seed.png",
drawtype = "signlike",
groups = {
handy = 1, seed = 1, snappy = 3, attached_node = 1, flammable = 4, growing = 1
},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
paramtype = "light",
paramtype2 = "wallmounted",
walkable = false,
sunlight_propagates = true,
selection_box = farming.select,
next_plant = "farming:wheat_1",
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_wheat")
end,
on_timer = function(pos, elapsed)
minetest.set_node(pos, {name = "farming:wheat_1", param2 = 3})
end
})
-- item
minetest.register_craftitem("farming:wheat", {
description = S("Wheat"),
inventory_image = "farming_wheat.png",
groups = {food_wheat = 1, flammable = 4}
})
-- crop definition
local def = {
description = S("Wheat") .. S(" Crop"),
drawtype = "plantlike",
tiles = {"farming_wheat_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 = {
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:wheat_1", table.copy(def))
-- stage 2
def.tiles = {"farming_wheat_2.png"}
minetest.register_node("farming:wheat_2", table.copy(def))
-- stage 3
def.tiles = {"farming_wheat_3.png"}
minetest.register_node("farming:wheat_3", table.copy(def))
-- stage 4
def.tiles = {"farming_wheat_4.png"}
minetest.register_node("farming:wheat_4", table.copy(def))
-- stage 5
def.tiles = {"farming_wheat_5.png"}
def.drop = {
items = {
{items = {"farming:wheat"}, rarity = 2},
{items = {"farming:seed_wheat"}, rarity = 2}
}
}
minetest.register_node("farming:wheat_5", table.copy(def))
-- stage 6
def.tiles = {"farming_wheat_6.png"}
def.drop = {
items = {
{items = {"farming:wheat"}, rarity = 2},
{items = {"farming:seed_wheat"}, rarity = 1}
}
}
minetest.register_node("farming:wheat_6", table.copy(def))
-- stage 7
def.tiles = {"farming_wheat_7.png"}
def.drop = {
items = {
{items = {"farming:wheat"}, rarity = 1},
{items = {"farming:wheat"}, rarity = 3},
{items = {"farming:seed_wheat"}, rarity = 1},
{items = {"farming:seed_wheat"}, rarity = 3}
}
}
minetest.register_node("farming:wheat_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_wheat_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:wheat"}, rarity = 1},
{items = {"farming:wheat"}, rarity = 3},
{items = {"farming:seed_wheat"}, rarity = 1},
{items = {"farming:seed_wheat"}, rarity = 3}
}
}
minetest.register_node("farming:wheat_8", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:wheat"] = {
crop = "farming:wheat",
seed = "farming:seed_wheat",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 8
}
-- mapgen
farming.register_decoration("wheat",8)

View file

@ -0,0 +1,52 @@
--[[
Farming settings can be changed here and kept inside mod folder
even after the mod has been updated, or you can place inside
world folder for map specific settings.
--]]
-- true to enable crop/food in-game and on mapgen set spawn rarety
farming.asparagus = 0.002
farming.eggplant = 0.002
farming.spinach = 0.002
farming.carrot = 0.002
farming.potato = 0.002
farming.tomato = 0.002
farming.cucumber = 0.002
farming.corn = 0.002
farming.coffee = 0.002
farming.melon = 0.009
farming.pumpkin = 0.009
farming.cocoa = true -- true or false only
farming.raspberry = 0.002
farming.blueberry = 0.002
farming.rhubarb = 0.002
farming.beans = 0.002
farming.grapes = 0.002
farming.barley = true -- true or false only
farming.chili = 0.003
farming.hemp = 0.003
farming.garlic = 0.002
farming.onion = 0.002
farming.pepper = 0.002
farming.pineapple = 0.003
farming.peas = 0.002
farming.beetroot = 0.002
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.rice = true
-- default minimum and maximum light levels crops need to grow
farming.min_light = 12
farming.max_light = 15

View file

@ -0,0 +1,76 @@
-- Override grass to drop wheat and oat seeds
local rarity_lookup = {[1] = 50, [2] = 50, [3] = 50, [4] = 5, [5] = 5}
if minetest.registered_nodes["default:grass_1"] then
for i = 1, 5 do
minetest.override_item("default:grass_" .. i, {
drop = {
max_items = 1,
items = {
{items = {"farming:seed_wheat"}, rarity = rarity_lookup[i]},
{items = {"farming:seed_oat"},rarity = rarity_lookup[i]},
{items = {"default:grass_1"}}
}
}
})
end
end
-- override dry grass to drop barley and rye seeds
if minetest.registered_nodes["default:dry_grass_1"] then
for i = 1, 5 do
minetest.override_item("default:dry_grass_" .. i, {
drop = {
max_items = 1,
items = {
{items = {"farming:seed_barley"}, rarity = rarity_lookup[i]},
{items = {"farming:seed_rye"}, rarity = rarity_lookup[i]},
{items = {"default:dry_grass_1"}}
}
}
})
end
end
-- override jungle grass to drop cotton and rice seeds
if minetest.registered_nodes["default:junglegrass"] then
minetest.override_item("default:junglegrass", {
drop = {
max_items = 1,
items = {
{items = {"farming:seed_cotton"}, rarity = 8},
{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

485
mods/.farming_old/hoes.lua Normal file
View file

@ -0,0 +1,485 @@
-- translation and mod check
local S = minetest.get_translator("farming")
local mod_tr = minetest.get_modpath("toolranks")
-- Hoe registration function
farming.register_hoe = function(name, def)
-- Check for : prefix (register new hoes in your mod's namespace)
if name:sub(1,1) ~= ":" then name = ":" .. name end
-- Check def table
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.max_uses == nil then def.max_uses = 30 end
-- add hoe group
def.groups = def.groups or {}
def.groups.hoe = 1
-- Register the tool
minetest.register_tool(name, {
description = def.description,
inventory_image = def.inventory_image,
groups = def.groups,
sound = {breaks = "default_tool_breaks"},
damage_groups = def.damage_groups or {fleshy = 1},
on_use = function(itemstack, user, pointed_thing)
return farming.hoe_on_use(itemstack, user, pointed_thing, def.max_uses)
end
})
-- Register its recipe
if def.recipe then
minetest.register_craft({
output = name:sub(2),
recipe = def.recipe
})
elseif def.material then
minetest.register_craft({
output = name:sub(2),
recipe = {
{def.material, def.material, ""},
{"", "group:stick", ""},
{"", "group:stick", ""}
}
})
end
end
-- Turns dirt with group soil=1 into soil
function farming.hoe_on_use(itemstack, user, pointed_thing, uses)
local pt = pointed_thing or {}
local is_used = false
-- am I going to hoe the top of a dirt node?
if pt.type == "node" and pt.above.y == pt.under.y + 1 then
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}) ; is_used = true
minetest.sound_play("default_dig_crumbly", {pos = pt.under, gain = 0.5}, true)
end
local wdef = itemstack:get_definition()
local wear = 65535 / (uses - 1)
-- using hoe as weapon
if pt.type == "object" then
local ent = pt.ref and pt.ref:get_luaentity()
local dir = user:get_look_dir()
if (ent and ent.name ~= "__builtin:item"
and ent.name ~= "__builtin:falling_node") or pt.ref:is_player() then
pt.ref:punch(user, nil, {full_punch_interval = 1.0,
damage_groups = wdef.damage_groups}, dir)
is_used = true
end
end
-- only when used on soil top or external entity
if is_used then
-- cretive doesnt wear tools but toolranks registers uses with wear so set to 1
if farming.is_creative(user:get_player_name()) then
if mod_tr then wear = 1 else wear = 0 end
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
return itemstack
end
-- Define Hoes
farming.register_hoe(":farming:hoe_wood", {
description = S("Wooden Hoe"),
inventory_image = "farming_tool_woodhoe.png",
max_uses = 30,
material = "group:wood"
})
minetest.register_craft({
type = "fuel",
recipe = "farming:hoe_wood",
burntime = 5
})
farming.register_hoe(":farming:hoe_stone", {
description = S("Stone Hoe"),
inventory_image = "farming_tool_stonehoe.png",
max_uses = 90,
material = "group:stone"
})
farming.register_hoe(":farming:hoe_steel", {
description = S("Steel Hoe"),
inventory_image = "farming_tool_steelhoe.png",
max_uses = 200,
material = "default:steel_ingot",
damage_groups = {fleshy = 2}
})
farming.register_hoe(":farming:hoe_bronze", {
description = S("Bronze Hoe"),
inventory_image = "farming_tool_bronzehoe.png",
max_uses = 250,
groups = {not_in_creative_inventory = 1},
material = "default:bronze_ingot",
damage_groups = {fleshy = 2}
})
farming.register_hoe(":farming:hoe_mese", {
description = S("Mese Hoe"),
inventory_image = "farming_tool_mesehoe.png",
max_uses = 350,
groups = {not_in_creative_inventory = 1},
damage_groups = {fleshy = 3}
})
farming.register_hoe(":farming:hoe_diamond", {
description = S("Diamond Hoe"),
inventory_image = "farming_tool_diamondhoe.png",
max_uses = 500,
groups = {not_in_creative_inventory = 1},
damage_groups = {fleshy = 3}
})
-- Toolranks support
if mod_tr then
minetest.override_item("farming:hoe_wood", {
original_description = S("Wood Hoe"),
description = toolranks.create_description(S("Wood Hoe"))})
minetest.override_item("farming:hoe_stone", {
original_description = S("Stone Hoe"),
description = toolranks.create_description(S("Stone Hoe"))})
minetest.override_item("farming:hoe_steel", {
original_description = S("Steel Hoe"),
description = toolranks.create_description(S("Steel Hoe"))})
minetest.override_item("farming:hoe_bronze", {
original_description = S("Bronze Hoe"),
description = toolranks.create_description(S("Bronze Hoe"))})
minetest.override_item("farming:hoe_mese", {
original_description = S("Mese Hoe"),
description = toolranks.create_description(S("Mese Hoe"))})
minetest.override_item("farming:hoe_diamond", {
original_description = S("Diamond Hoe"),
description = toolranks.create_description(S("Diamond Hoe"))})
end
-- hoe bomb function
local function hoe_area(pos, player)
-- check for protection
if minetest.is_protected(pos, player:get_player_name()) then
minetest.record_protection_violation(pos, player:get_player_name())
return
end
local r = 5 -- radius
-- remove flora (grass, flowers etc.)
local res = minetest.find_nodes_in_area(
{x = pos.x - r, y = pos.y - 1, z = pos.z - r},
{x = pos.x + r, y = pos.y + 2, z = pos.z + r}, {"group:flora"})
for n = 1, #res do
minetest.swap_node(res[n], {name = "air"})
end
-- replace dirt with tilled soil
res = minetest.find_nodes_in_area_under_air(
{x = pos.x - r, y = pos.y - 1, z = pos.z - r},
{x = pos.x + r, y = pos.y + 2, z = pos.z + r},
{"group:soil"})
for n = 1, #res do
minetest.swap_node(res[n], {name = "farming:soil"})
end
end
-- throwable hoe bomb entity
minetest.register_entity("farming:hoebomb_entity", {
initial_properties = {
physical = true,
visual = "sprite",
visual_size = {x = 1.0, y = 1.0},
textures = {"farming_hoe_bomb.png"},
collisionbox = {-0.1,-0.1,-0.1,0.1,0.1,0.1}
},
lastpos = {},
player = "",
on_step = function(self, dtime)
if not self.player then
self.object:remove()
return
end
local pos = self.object:get_pos()
if self.lastpos.x ~= nil then
local vel = self.object:get_velocity()
-- only when potion hits something physical
if vel.x == 0 or vel.y == 0 or vel.z == 0 then
if self.player ~= "" then
-- round up coords to fix glitching through doors
self.lastpos = vector.round(self.lastpos)
hoe_area(self.lastpos, self.player)
end
self.object:remove()
return
end
end
self.lastpos = pos
end
})
-- actual throwing function
local function throw_potion(itemstack, player)
local pos = player:get_pos()
local obj = minetest.add_entity({
x = pos.x, y = pos.y + 1.5, z = pos.z}, "farming:hoebomb_entity")
if not obj then return end
local dir = player:get_look_dir()
local velocity = 20
obj:set_velocity({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:get_luaentity().player = player
end
-- hoe bomb item
minetest.register_craftitem("farming:hoe_bomb", {
description = S("Hoe Bomb (use or throw on grassy areas to hoe land)"),
inventory_image = "farming_hoe_bomb.png",
groups = {flammable = 2, not_in_creative_inventory = 1},
on_use = function(itemstack, user, pointed_thing)
if pointed_thing.type == "node" then
hoe_area(pointed_thing.above, user)
else
throw_potion(itemstack, user)
if not farming.is_creative(user:get_player_name()) then
itemstack:take_item()
return itemstack
end
end
end,
})
-- helper function
local function node_not_num(nodename)
local num = #nodename:split("_")
local str = ""
if not num or num == 1 then return end
for v = 1, (num - 1) do
str = str .. nodename:split("_")[v] .. "_"
end
return str
end
farming.scythe_not_drops = {"farming:trellis", "farming:beanpole"}
farming.add_to_scythe_not_drops = function(item)
table.insert(farming.scythe_not_drops, item)
end
-- Mithril Scythe (special item)
minetest.register_tool("farming:scythe_mithril", {
description = S("Mithril Scythe (Use to harvest and replant crops)"),
inventory_image = "farming_scythe_mithril.png",
sound = {breaks = "default_tool_breaks"},
on_use = function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" then return end
local pos = pointed_thing.under
local name = placer:get_player_name()
if minetest.is_protected(pos, name) then return end
local node = minetest.get_node_or_nil(pos)
if not node then return end
local def = minetest.registered_nodes[node.name]
if not def or not def.drop or not def.groups or not def.groups.plant then
return
end
local drops = minetest.get_node_drops(node.name, "")
if not drops or #drops == 0 or (#drops == 1 and drops[1] == "") then
return
end
-- get crop name
local mname = node.name:split(":")[1]
local pname = node_not_num(node.name:split(":")[2])
if not pname then return end
-- add dropped items
for _, dropped_item in pairs(drops) do
-- dont drop items on this list
for _, not_item in pairs(farming.scythe_not_drops) do
if dropped_item == not_item then
dropped_item = nil
end
end
if dropped_item then
local obj = minetest.add_item(pos, dropped_item)
if obj then
obj:set_velocity({
x = math.random() - 0.5, y = 3, z = math.random() - 0.5})
end
end
end
-- Run script hook
for _, callback in pairs(core.registered_on_dignodes) do
callback(pos, node, placer)
end
-- play sound
minetest.sound_play("default_grass_footstep", {pos = pos, gain = 1.0}, true)
-- replace with seed or crop_1
local replace = mname .. ":" .. pname .. "1"
if minetest.registered_nodes[replace] then
local p2 = minetest.registered_nodes[replace].place_param2 or 1
minetest.set_node(pos, {name = replace, param2 = p2})
else
minetest.set_node(pos, {name = "air"})
end
if not farming.is_creative(name) then
itemstack:add_wear(65535 / 350) -- 350 uses
return itemstack
end
end
})
-- if moreores found add mithril scythe recipe
if minetest.get_modpath("moreores") then
minetest.register_craft({
output = "farming:scythe_mithril",
recipe = {
{"", "moreores:mithril_ingot", "moreores:mithril_ingot"},
{"moreores:mithril_ingot", "", "group:stick"},
{"", "", "group:stick"}
}
})
end

862
mods/.farming_old/init.lua Normal file
View file

@ -0,0 +1,862 @@
--[[
Farming Redo Mod by TenPlus1
NEW growing routine by prestidigitator
auto-refill by crabman77
]]
-- Translation support
local S = minetest.get_translator("farming")
-- global
farming = {
mod = "redo",
version = "20240924",
path = minetest.get_modpath("farming"),
select = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}},
select_final = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -2.5/16, 0.5}},
registered_plants = {},
min_light = 12, max_light = 15,
mapgen = minetest.get_mapgen_setting("mg_name"),
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"),
sounds = {},
register_decoration = function(crop,steps,alt_source)
biomes = asuna.features.crops[crop]
if not biomes then
return
end
local decor
if alt_source then
decor = alt_source
else
decor = {}
for i = 0, (steps > 4 and 2 or 0) do
decor[i + 1] = "farming:" .. crop .. "_" .. (steps - i)
end
end
local chars = {crop:byte()}
local seed = 11111
for _,c in ipairs(chars) do
seed = seed + c
end
seed = seed + #crop
minetest.register_decoration(biomes.inject_decoration({
name = "farming:" .. crop,
deco_type = "simple",
place_on = "group:soil",
sidelen = 8,
noise_params = {
offset = -0.4125,
scale = 0.3575,
spread = {x = 14, y = 14, z = 14},
seed = seed,
octaves = 2,
persist = 0.62,
lacunarity = 0.675,
},
y_max = 31000,
y_min = 1,
decoration = decor,
}))
end,
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")
function farming.is_creative(name)
return creative_mode_cache or minetest.check_player_privs(name, {creative = true})
end
-- stats, locals, settings, function helper
local statistics = dofile(farming.path .. "/statistics.lua")
local random, floor = math.random, math.floor
local time_speed = tonumber(minetest.settings:get("time_speed")) or 72
local SECS_PER_CYCLE = (time_speed > 0 and (24 * 60 * 60) / time_speed) or 0
local function clamp(x, min, max) return (x < min and min) or (x > max and max) or x end
-- return amount of day or night that has elapsed
-- dt is time elapsed, count_day if true counts day, otherwise night
local function day_or_night_time(dt, count_day)
local t_day = minetest.get_timeofday()
local t1_day = t_day - dt / SECS_PER_CYCLE
local t1_c, t2_c -- t1_c < t2_c and t2_c always in [0, 1)
if count_day then
if t_day < 0.25 then
t1_c = t1_day + 0.75 -- Relative to sunup, yesterday
t2_c = t_day + 0.75
else
t1_c = t1_day - 0.25 -- Relative to sunup, today
t2_c = t_day - 0.25
end
else
if t_day < 0.75 then
t1_c = t1_day + 0.25 -- Relative to sundown, yesterday
t2_c = t_day + 0.25
else
t1_c = t1_day - 0.75 -- Relative to sundown, today
t2_c = t_day - 0.75
end
end
local dt_c = clamp(t2_c, 0, 0.5) - clamp(t1_c, 0, 0.5) -- this cycle
if t1_c < -0.5 then
local nc = floor(-t1_c)
t1_c = t1_c + nc
dt_c = dt_c + 0.5 * nc + clamp(-t1_c - 0.5, 0, 0.5)
end
return dt_c * SECS_PER_CYCLE
end
-- Growth Logic
local STAGE_LENGTH_AVG = tonumber(minetest.settings:get("farming_stage_length")) or 200
local STAGE_LENGTH_DEV = STAGE_LENGTH_AVG / 6
-- quick start seed timer
farming.start_seed_timer = function(pos)
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
local function plant_name_stage(node)
local name
if type(node) == "table" then
if node.name then name = node.name
elseif node.x and node.y and node.z then
node = minetest.get_node_or_nil(node)
name = node and node.name
end
else
name = tostring(node)
end
if not name or name == "ignore" then return nil end
local sep_pos = name:find("_[^_]+$")
if sep_pos and sep_pos > 1 then
local stage = tonumber(name:sub(sep_pos + 1))
if stage and stage >= 0 then
return name:sub(1, sep_pos - 1), stage
end
end
return name, 0
end
-- Map from node name to
-- { plant_name = ..., name = ..., stage = n, stages_left = { node_name, ... } }
local plant_stages = {}
farming.plant_stages = plant_stages
--- Registers the stages of growth of a (possible plant) node.
-- @param node - Node or position table, or node name.
-- @return - The (possibly zero) number of stages of growth the plant will go through
-- before being fully grown, or nil if not a plant.
-- Recursive helper
local function reg_plant_stages(plant_name, stage, force_last)
local node_name = plant_name and plant_name .. "_" .. stage
local node_def = node_name and minetest.registered_nodes[node_name]
if not node_def then return nil end
local stages = plant_stages[node_name]
if stages then return stages end
if minetest.get_item_group(node_name, "growing") > 0 then
local ns = reg_plant_stages(plant_name, stage + 1, true)
local stages_left = (ns and { ns.name, unpack(ns.stages_left) }) or {}
stages = {
plant_name = plant_name,
name = node_name,
stage = stage,
stages_left = stages_left
}
if #stages_left > 0 then
local old_constr = node_def.on_construct
local old_destr = node_def.on_destruct
minetest.override_item(node_name, {
on_construct = function(pos)
if old_constr then old_constr(pos) end
farming.handle_growth(pos)
end,
on_destruct = function(pos)
minetest.get_node_timer(pos):stop()
if old_destr then old_destr(pos) end
end,
on_timer = function(pos, elapsed)
return farming.plant_growth_timer(pos, elapsed, node_name)
end,
})
end
elseif force_last then
stages = {
plant_name = plant_name,
name = node_name,
stage = stage,
stages_left = {}
}
else
return nil
end
plant_stages[node_name] = stages
return stages
end
-- split name and stage and register crop
local function register_plant_node(node)
local plant_name, stage = plant_name_stage(node)
if plant_name then
local stages = reg_plant_stages(plant_name, stage, false)
return stages and #stages.stages_left
end
end
-- check for further growth and set or stop timer
local function set_growing(pos, stages_left)
if not stages_left then return end
local timer = minetest.get_node_timer(pos)
if stages_left > 0 then
if not timer:is_started() then
local stage_length = statistics.normal(STAGE_LENGTH_AVG, STAGE_LENGTH_DEV)
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)
end
elseif timer:is_started() then
timer:stop()
end
end
-- detects a crop at given position, starting or stopping growth timer when needed
function farming.handle_growth(pos, node)
if not pos then return end
local stages_left = register_plant_node(node or pos)
if stages_left then set_growing(pos, stages_left) end
end
-- register crops nodes and add timer functions
minetest.after(0, function()
for _, node_def in pairs(minetest.registered_nodes) do
register_plant_node(node_def)
end
end)
-- Just in case a growing type or added node is missed (also catches existing
-- nodes added to map before timers were incorporated).
minetest.register_abm({
label = "Start crop timer",
nodenames = {"group:growing"},
interval = 300,
chance = 1,
catch_up = false,
action = function(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
})
-- 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.
function farming.plant_growth_timer(pos, elapsed, node_name)
local stages = plant_stages[node_name]
if not stages then return false end
local max_growth = #stages.stages_left
if max_growth <= 0 then return false end
local chk1 = minetest.registered_nodes[node_name].growth_check -- old
local chk2 = minetest.registered_nodes[node_name].can_grow -- new
if chk1 then -- custom farming redo growth_check function
if not chk1(pos, node_name) then return true end
elseif chk2 then -- custom mt 5.9x farming can_grow function
if not chk2(pos) then return true end
-- default mt 5.9x farming.can_grow function
elseif not farming.can_grow(pos) then return true end
local growth
local light_pos = {x = pos.x, y = pos.y, z = pos.z}
local lambda = elapsed / STAGE_LENGTH_AVG
if lambda < 0.1 then return true end
local MIN_LIGHT = minetest.registered_nodes[node_name].minlight or farming.min_light
local MAX_LIGHT = minetest.registered_nodes[node_name].maxlight or farming.max_light
if max_growth == 1 or lambda < 2.0 then
local light = (minetest.get_node_light(light_pos) or 0)
if light < MIN_LIGHT or light > MAX_LIGHT then return true end
growth = 1
else
local night_light = (minetest.get_node_light(light_pos, 0) or 0)
local day_light = (minetest.get_node_light(light_pos, 0.5) or 0)
local night_growth = night_light >= MIN_LIGHT and night_light <= MAX_LIGHT
local day_growth = day_light >= MIN_LIGHT and day_light <= MAX_LIGHT
if not night_growth then
if not day_growth then return true end
lambda = day_or_night_time(elapsed, true) / STAGE_LENGTH_AVG
elseif not day_growth then
lambda = day_or_night_time(elapsed, false) / STAGE_LENGTH_AVG
end
growth = statistics.poisson(lambda, max_growth)
if growth < 1 then return true end
end
if minetest.registered_nodes[stages.stages_left[growth]] then
local p2 = minetest.registered_nodes[stages.stages_left[growth] ].place_param2 or 1
minetest.set_node(pos, {name = stages.stages_left[growth], param2 = p2})
else
return true
end
return growth ~= max_growth
end
-- refill placed plant by crabman (26/08/2015) updated by TenPlus1
function farming.refill_plant(player, plantname, index)
local inv = player and player:get_inventory() ; if not inv then return end
local old_stack = inv:get_stack("main", index)
if old_stack:get_name() ~= "" then return end
for i, stack in ipairs(inv:get_list("main")) do
if stack:get_name() == plantname and i ~= index then
inv:set_stack("main", index, stack)
stack:clear()
inv:set_stack("main", i, stack)
return
end
end
end
-- Place Seeds on Soil
function farming.place_seed(itemstack, placer, pointed_thing, plantname)
local pt = pointed_thing
-- check if pointing at a node
if not itemstack or not pt or pt.type ~= "node" then return end
local under = minetest.get_node(pt.under)
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = minetest.registered_nodes[under.name]
if placer and itemstack and def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt)
end
local above = minetest.get_node(pt.above)
-- check if pointing at the top of the node
if pt.above.y ~= pt.under.y + 1 then return end
-- 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
-- can I replace above node, and am I pointing directly at soil
if not minetest.registered_nodes[above.name].buildable_to
or minetest.get_item_group(under.name, "soil") < 2
or minetest.get_item_group(above.name, "plant") ~= 0 then return end
-- is player planting seed?
local name = placer and placer:get_player_name() or ""
-- if not protected then add node and remove 1 item from the itemstack
if not minetest.is_protected(pt.above, name) then
local p2 = minetest.registered_nodes[plantname].place_param2 or 1
minetest.set_node(pt.above, {name = plantname, param2 = p2})
farming.start_seed_timer(pt.above)
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
and not farming.is_creative(placer:get_player_name()) then
local name = itemstack:get_name()
itemstack:take_item()
-- check for refill
if itemstack:get_count() == 0 then
minetest.after(0.2, farming.refill_plant,
placer, name, placer:get_wield_index())
end
end
return itemstack
end
end
-- Function to register plants (default farming compatibility)
farming.register_plant = function(name, def)
if not def.steps then return nil end
local mname = name:split(":")[1]
local pname = name:split(":")[2]
-- Check def
def.description = def.description or S("Seed")
def.inventory_image = def.inventory_image or "unknown_item.png"
def.minlight = def.minlight or 12
def.maxlight = def.maxlight or 15
-- Register seed
minetest.register_node(":" .. mname .. ":seed_" .. pname, {
description = def.description,
tiles = {def.inventory_image},
inventory_image = def.inventory_image,
wield_image = def.inventory_image,
drawtype = "signlike",
groups = {
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",
paramtype2 = "wallmounted",
walkable = false,
sunlight_propagates = true,
selection_box = farming.select,
place_param2 = 1, -- place seed flat
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)
return farming.place_seed(itemstack, placer, pointed_thing,
mname .. ":seed_" .. pname)
end
})
-- Register harvest
minetest.register_craftitem(":" .. mname .. ":" .. pname, {
description = pname:gsub("^%l", string.upper),
inventory_image = mname .. "_" .. pname .. ".png",
groups = def.groups or {flammable = 2},
})
-- Register growing steps
for i = 1, def.steps do
local base_rarity = 1
if def.steps ~= 1 then
base_rarity = 8 - (i - 1) * 7 / (def.steps - 1)
end
local drop = {
items = {
{items = {mname .. ":" .. pname}, rarity = base_rarity},
{items = {mname .. ":" .. pname}, rarity = base_rarity * 2},
{items = {mname .. ":seed_" .. pname}, rarity = base_rarity},
{items = {mname .. ":seed_" .. pname}, rarity = base_rarity * 2},
}
}
local sel = farming.select
local g = {
handy = 1, snappy = 3, flammable = 2, plant = 1, growing = 1,
attached_node = 1, not_in_creative_inventory = 1,
}
-- 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
sel = farming.select_final
g.growing = 0
end
local node_name = mname .. ":" .. pname .. "_" .. i
local next_plant = nil
if i < def.steps then
next_plant = mname .. ":" .. pname .. "_" .. (i + 1)
end
local desc = pname:gsub("^%l", string.upper)
minetest.register_node(node_name, {
description = S(desc) .. S(" Crop"),
drawtype = "plantlike",
waving = 1,
tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"},
paramtype = "light",
paramtype2 = def.paramtype2,
place_param2 = def.place_param2,
walkable = false,
buildable_to = true,
sunlight_propagates = true,
drop = drop,
selection_box = sel,
groups = g,
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults(),
minlight = def.minlight,
maxlight = def.maxlight,
next_plant = next_plant
})
end
-- add to farming.registered_plants
farming.registered_plants[mname .. ":" .. pname] = {
crop = mname .. ":" .. pname,
seed = mname .. ":seed_" .. pname,
steps = def.steps,
minlight = def.minlight,
maxlight = def.maxlight
}
-- print(dump(farming.registered_plants[mname .. ":" .. pname]))
return {seed = mname .. ":seed_" .. pname, harvest = mname .. ":" .. pname}
end
-- default settings
farming.asparagus = 0.002
farming.eggplant = 0.002
farming.spinach = 0.002
farming.carrot = 0.002
farming.potato = 0.002
farming.tomato = 0.002
farming.cucumber = 0.002
farming.corn = 0.002
farming.coffee = 0.002
farming.melon = 0.009
farming.pumpkin = 0.009
farming.cocoa = true
farming.raspberry = 0.002
farming.blueberry = 0.002
farming.rhubarb = 0.002
farming.beans = 0.002
farming.grapes = 0.002
farming.barley = true
farming.chili = 0.003
farming.hemp = 0.003
farming.garlic = 0.002
farming.onion = 0.002
farming.pepper = 0.002
farming.pineapple = 0.003
farming.peas = 0.002
farming.beetroot = 0.002
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.rice = true
-- Load new global settings if found inside mod folder
local input = io.open(farming.path .. "/farming.conf", "r")
if input then dofile(farming.path .. "/farming.conf") ; input:close() end
-- load new world-specific settings if found inside world folder
local worldpath = minetest.get_worldpath()
input = io.open(worldpath .. "/farming.conf", "r")
if input then dofile(worldpath .. "/farming.conf") ; input:close() end
-- helper function to add {eatable} group to food items, also {flammable}
function farming.add_eatable(item, hp)
local def = 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
-- 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
dofile(farming.path.."/grass.lua")
-- disable crops Mineclone already has
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
local function ddoo(file, check)
if check then dofile(farming.path .. "/crops/" .. file) end
end
-- add additional crops and food (if enabled)
ddoo("carrot.lua", farming.carrot)
ddoo("potato.lua", farming.potato)
ddoo("tomato.lua", farming.tomato)
ddoo("cucumber.lua", farming.cucumber)
ddoo("corn.lua", farming.corn)
ddoo("coffee.lua", farming.coffee)
ddoo("melon.lua", farming.melon)
ddoo("pumpkin.lua", farming.pumpkin)
ddoo("cocoa.lua", farming.cocoa)
ddoo("raspberry.lua", farming.raspberry)
ddoo("blueberry.lua", farming.blueberry)
ddoo("rhubarb.lua", farming.rhubarb)
ddoo("beans.lua", farming.beans)
ddoo("grapes.lua", farming.grapes)
ddoo("barley.lua", farming.barley)
ddoo("hemp.lua", farming.hemp)
ddoo("garlic.lua", farming.garlic)
ddoo("onion.lua", farming.onion)
ddoo("pepper.lua", farming.pepper)
ddoo("pineapple.lua", farming.pineapple)
ddoo("peas.lua", farming.peas)
ddoo("beetroot.lua", farming.beetroot)
ddoo("chili.lua", farming.chili)
ddoo("rye_oat.lua", farming.grains)
ddoo("rice.lua", farming.rice)
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 .. "/item_non_food.lua")
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")

View file

@ -0,0 +1,933 @@
local S = minetest.get_translator("farming")
local a = farming.recipe_items
local function register_craftitem(condition,eatable,name,def)
if condition then
core.register_craftitem(name,def)
if eatable then
farming.add_eatable(eatable)
end
end
end
local function register_node(condition,eatable,name,def)
if condition then
core.register_node(name,def)
if eatable then
farming.add_eatable(eatable)
end
end
end
-- Flour
register_craftitem(true,nil,"farming:flour", {
description = S("Flour"),
inventory_image = "farming_flour.png",
groups = {food_flour = 1, flammable = 1}
})
-- Garlic bulb
register_craftitem(farming.garlic,1,"farming:garlic", {
description = S("Garlic"),
inventory_image = "crops_garlic.png",
on_use = minetest.item_eat(1),
groups = {food_garlic = 1, compostability = 55}
})
-- Garlic braid
register_node(farming.garlic,nil,"farming:garlic_braid", {
description = S("Garlic Braid"),
inventory_image = "crops_garlic_braid.png",
wield_image = "crops_garlic_braid.png",
drawtype = "nodebox",
use_texture_alpha = "clip",
paramtype = "light",
paramtype2 = "facedir",
tiles = {
"crops_garlic_braid_top.png",
"crops_garlic_braid.png",
"crops_garlic_braid_side.png^[transformFx",
"crops_garlic_braid_side.png",
"crops_garlic_braid.png",
"crops_garlic_braid.png"
},
groups = {vessel = 1, dig_immediate = 3, flammable = 3, compostability = 65, handy = 1},
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults(),
node_box = {
type = "fixed", fixed = {{-0.1875, -0.5, 0.5, 0.1875, 0.5, 0.125}}
}
})
-- Corn on the cob (texture by TenPlus1)
register_craftitem(farming.corn,5,"farming:corn_cob", {
description = S("Corn on the Cob"),
inventory_image = "farming_corn_cob.png",
groups = {compostability = 65, food_corn_cooked = 1},
on_use = minetest.item_eat(5)
})
-- Popcorn
register_craftitem(farming.corn,4,"farming:popcorn", {
description = S("Popcorn"),
inventory_image = "farming_popcorn.png",
groups = {compostability = 55, food_popcorn = 1},
on_use = minetest.item_eat(4)
})
-- Cornstarch
register_craftitem(farming.corn,nil,"farming:cornstarch", {
description = S("Cornstarch"),
inventory_image = "farming_cornstarch.png",
groups = {food_cornstarch = 1, food_gelatin = 1, flammable = 2, compostability = 65}
})
-- Cup of coffee
register_node(farming.coffee,2,"farming:coffee_cup", {
description = S("Cup of Coffee"),
drawtype = "torchlike",
tiles = {"farming_coffee_cup.png"},
inventory_image = "farming_coffee_cup.png",
wield_image = "farming_coffee_cup.png",
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25}
},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1, drink = 1, handy = 1},
is_ground_content = false,
on_use = minetest.item_eat(2, "vessels:drinking_glass"),
sounds = farming.node_sound_glass_defaults()
})
minetest.register_alias("farming:coffee_cup_hot", "farming:coffee_cup")
minetest.register_alias("farming:drinking_cup", "vessels:drinking_glass")
-- Bar of of dark chocolate (thx to Ice Pandora for her deviantart.com chocolate tutorial)
register_craftitem(farming.cocoa,3,"farming:chocolate_dark", {
description = S("Bar of Dark Chocolate"),
inventory_image = "farming_chocolate_dark.png",
on_use = minetest.item_eat(3)
})
-- Chocolate block (not edible)
register_node(farming.cocoa,nil,"farming:chocolate_block", {
description = S("Chocolate Block"),
tiles = {"farming_chocolate_block.png"},
is_ground_content = false,
groups = {cracky = 2, oddly_breakable_by_hand = 2, handy = 1},
sounds = farming.node_sound_stone_defaults()
})
-- Bowl of chili
register_craftitem(farming.chili,8,"farming:chili_bowl", {
description = S("Bowl of Chili"),
inventory_image = "farming_chili_bowl.png",
on_use = minetest.item_eat(8, a.bowl),
groups = {compostability = 65}
})
-- Chili powder
register_craftitem(farming.chili,nil,"farming:chili_powder", {
description = S("Chili Powder"),
on_use = minetest.item_eat(-1),
inventory_image = "farming_chili_powder.png",
groups = {compostability = 45}
})
-- Carrot juice
register_craftitem(farming.carrot,4,"farming:carrot_juice", {
description = S("Carrot Juice"),
inventory_image = "farming_carrot_juice.png",
on_use = minetest.item_eat(4, "vessels:drinking_glass"),
groups = {vessel = 1, drink = 1}
})
-- Blueberry Pie
register_craftitem(farming.blueberry or core.registered_items["default:blueberries"],6,"farming:blueberry_pie", {
description = S("Blueberry Pie"),
inventory_image = "farming_blueberry_pie.png",
on_use = minetest.item_eat(6),
groups = {compostability = 75}
})
-- Blueberry muffin (thanks to sosogirl123 @ deviantart.com for muffin image)
register_craftitem(farming.blueberry or core.registered_items["default:blueberries"],2,"farming:muffin_blueberry", {
description = S("Blueberry Muffin"),
inventory_image = "farming_blueberry_muffin.png",
on_use = minetest.item_eat(2),
groups = {compostability = 65}
})
-- Tomato soup
register_craftitem(farming.tomato,8,"farming:tomato_soup", {
description = S("Tomato Soup"),
inventory_image = "farming_tomato_soup.png",
groups = {compostability = 65, drink = 1},
on_use = minetest.item_eat(8, "farming:bowl")
})
-- sliced bread
register_craftitem(true,1,"farming:bread_slice", {
description = S("Sliced Bread"),
inventory_image = "farming_bread_slice.png",
on_use = minetest.item_eat(1),
groups = {food_bread_slice = 1, compostability = 65}
})
-- toast
register_craftitem(true,1,"farming:toast", {
description = S("Toast"),
inventory_image = "farming_toast.png",
on_use = minetest.item_eat(1),
groups = {food_toast = 1, compostability = 65}
})
-- toast sandwich
register_craftitem(true,4,"farming:toast_sandwich", {
description = S("Toast Sandwich"),
inventory_image = "farming_toast_sandwich.png",
on_use = minetest.item_eat(4),
groups = {compostability = 85}
})
-- glass of water
register_craftitem(true,nil,"farming:glass_water", {
description = S("Glass of Water"),
inventory_image = "farming_water_glass.png",
groups = {food_glass_water = 1, flammable = 3, vessel = 1}
})
-- Sugar cube
register_node(true,nil,"farming:sugar_cube", {
description = S("Sugar Cube"),
tiles = {"farming_sugar_cube.png"},
groups = {shovely = 1, handy = 1, crumbly = 2},
is_ground_content = false,
floodable = true,
sounds = farming.node_sound_gravel_defaults(),
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
-- Sugar caramel
register_craftitem(true,nil,"farming:caramel", {
description = S("Caramel"),
inventory_image = "farming_caramel.png",
groups = {compostability = 40}
})
-- Salt
register_node(true,nil,"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, handy = 1},
is_ground_content = false,
sounds = farming.node_sound_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
},
-- special function to make salt crystals form inside water
dropped_step = function(self, pos, dtime)
self.ctimer = (self.ctimer or 0) + dtime
if self.ctimer < 15.0 then return end
self.ctimer = 0
local needed
if self.node_inside and self.node_inside.name == a.water_source then
needed = 8
elseif self.node_inside and self.node_inside.name == a.river_water_source then
needed = 9
end
if not needed then return end
local objs = core.get_objects_inside_radius(pos, 0.5)
if not objs or #objs ~= 1 then return end
local salt, ent = nil, nil
for k, obj in pairs(objs) do
ent = obj:get_luaentity()
if ent and ent.name == "__builtin:item"
and ent.itemstring == "farming:salt " .. needed then
obj:remove()
core.add_item(pos, "farming:salt_crystal")
return false -- return with no further action
end
end
end
})
-- Salt Crystal
register_node(true,nil,"farming:salt_crystal", {
description = S("Salt crystal"),
inventory_image = "farming_salt_crystal.png",
wield_image = "farming_salt_crystal.png",
drawtype = "plantlike",
visual_scale = 0.8,
paramtype = "light",
light_source = 1,
tiles = {"farming_salt_crystal.png"},
groups = {dig_immediate = 3, attached_node = 1, handy = 1},
is_ground_content = false,
sounds = farming.node_sound_defaults(),
selection_box = {
type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
},
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
-- Mayonnaise
register_node(true,3,"farming:mayonnaise", {
description = S("Mayonnaise"),
drawtype = "plantlike",
tiles = {"farming_mayo.png"},
inventory_image = "farming_mayo.png",
wield_image = "farming_mayo.png",
paramtype = "light",
is_ground_content = false,
walkable = false,
on_use = minetest.item_eat(3),
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.45, 0.25}
},
groups = {
compostability = 65, food_mayonnaise = 1, vessel = 1, dig_immediate = 3,
attached_node = 1, handy = 1
},
sounds = farming.node_sound_glass_defaults()
})
-- Rose Water
register_node(true,nil,"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, handy = 1
},
is_ground_content = false,
sounds = farming.node_sound_defaults(),
selection_box = {
type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
}
})
-- Turkish Delight
register_craftitem(true,2,"farming:turkish_delight", {
description = S("Turkish Delight"),
inventory_image = "farming_turkish_delight.png",
groups = {compostability = 85},
on_use = minetest.item_eat(2)
})
-- Garlic Bread
register_craftitem(farming.garlic,2,"farming:garlic_bread", {
description = S("Garlic Bread"),
inventory_image = "farming_garlic_bread.png",
groups = {compostability = 65},
on_use = minetest.item_eat(2)
})
-- Donuts (thanks to Bockwurst for making the donut images)
register_craftitem(true,4,"farming:donut", {
description = S("Donut"),
inventory_image = "farming_donut.png",
on_use = minetest.item_eat(4),
groups = {compostability = 65}
})
register_craftitem(farming.cocoa,6,"farming:donut_chocolate", {
description = S("Chocolate Donut"),
inventory_image = "farming_donut_chocolate.png",
on_use = minetest.item_eat(6),
groups = {compostability = 65}
})
register_craftitem(true,6,"farming:donut_apple", {
description = S("Apple Donut"),
inventory_image = "farming_donut_apple.png",
on_use = minetest.item_eat(6),
groups = {compostability = 65}
})
-- Porridge Oats
register_craftitem(farming.grains and farming.soy,6,"farming:porridge", {
description = S("Porridge"),
inventory_image = "farming_porridge.png",
on_use = minetest.item_eat(6, a.bowl),
groups = {compostability = 65}
})
-- Jaffa Cake
register_craftitem(farming.soy,6,"farming:jaffa_cake", {
description = S("Jaffa Cake"),
inventory_image = "farming_jaffa_cake.png",
on_use = minetest.item_eat(6),
groups = {compostability = 65}
})
-- Apple Pie
register_craftitem(true,6,"farming:apple_pie", {
description = S("Apple Pie"),
inventory_image = "farming_apple_pie.png",
on_use = minetest.item_eat(6),
groups = {compostability = 75}
})
-- Cactus Juice
register_craftitem(true,1,"farming:cactus_juice", {
description = S("Cactus Juice"),
inventory_image = "farming_cactus_juice.png",
groups = {vessel = 1, drink = 1, compostability = 55},
on_use = function(itemstack, user, pointed_thing)
if user then
local num = math.random(5) == 1 and -1 or 2
return minetest.do_item_eat(num, "vessels:drinking_glass",
itemstack, user, pointed_thing)
end
end
})
-- Pasta
register_craftitem(true,nil,"farming:pasta", {
description = S("Pasta"),
inventory_image = "farming_pasta.png",
groups = {compostability = 65, food_pasta = 1}
})
-- Mac & Cheese
register_craftitem(true,6,"farming:mac_and_cheese", {
description = S("Mac & Cheese"),
inventory_image = "farming_mac_and_cheese.png",
on_use = minetest.item_eat(6, a.bowl),
groups = {compostability = 65}
})
-- Spaghetti
register_craftitem(farming.garlic and farming.tomato,8,"farming:spaghetti", {
description = S("Spaghetti"),
inventory_image = "farming_spaghetti.png",
on_use = minetest.item_eat(8),
groups = {compostability = 65}
})
-- Korean Bibimbap
register_craftitem(farming.chili and farming.rice and farming.chili and farming.cabbage,8,"farming:bibimbap", {
description = S("Bibimbap"),
inventory_image = "farming_bibimbap.png",
on_use = minetest.item_eat(8, a.bowl),
groups = {compostability = 65}
})
-- Burger
register_craftitem(farming.lettuce and farming.tomato,16,"farming:burger", {
description = S("Burger"),
inventory_image = "farming_burger.png",
on_use = minetest.item_eat(16),
groups = {compostability = 95}
})
-- Salad
register_craftitem(farming.lettuce and farming.tomato,8,"farming:salad", {
description = S("Salad"),
inventory_image = "farming_salad.png",
on_use = minetest.item_eat(8, a.bowl),
groups = {compostability = 45}
})
-- Triple Berry Smoothie
register_craftitem(farming.raspberry and farming.blackberry and farming.strawberry,6,"farming:smoothie_berry", {
description = S("Triple Berry Smoothie"),
inventory_image = "farming_berry_smoothie.png",
on_use = minetest.item_eat(6, "vessels:drinking_glass"),
groups = {vessel = 1, drink = 1, compostability = 65}
})
-- Patatas a la importancia
register_craftitem(farming.garlic and farming.parsley and farming.potato and farming.onion,8,"farming:spanish_potatoes", {
description = S("Spanish Potatoes"),
inventory_image = "farming_spanish_potatoes.png",
on_use = minetest.item_eat(8, a.bowl),
groups = {compostability = 65}
})
-- Potato omelette
register_craftitem(farming.onion and farming.potato,6,"farming:potato_omelet", {
description = S("Potato omelette"),
inventory_image = "farming_potato_omelet.png",
on_use = minetest.item_eat(6, a.bowl),
groups = {compostability = 65}
})
-- Paella
register_craftitem(farming.peas and farming.pepper and farming.rice,8,"farming:paella", {
description = S("Paella"),
inventory_image = "farming_paella.png",
on_use = minetest.item_eat(8, a.bowl),
groups = {compostability = 65}
})
-- Vanilla Flan
register_craftitem(farming.vanilla and farming.soy,6,"farming:flan", {
description = S("Vanilla Flan"),
inventory_image = "farming_vanilla_flan.png",
on_use = minetest.item_eat(6),
groups = {compostability = 65}
})
-- Vegan Cheese
register_craftitem(farming.corn and farming.pepper and farming.soy,2,"farming:cheese_vegan", {
description = S("Vegan Cheese"),
inventory_image = "farming_cheese_vegan.png",
on_use = minetest.item_eat(2),
groups = {compostability = 65, food_cheese = 1}
})
-- Vegan Butter
register_craftitem(farming.soy and farming.sunflower,nil,"farming:butter_vegan", {
description = S("Vegan Butter"),
inventory_image = "farming_vegan_butter.png",
groups = {food_butter = 1}
})
-- Onigiri
register_craftitem(farming.rice,2,"farming:onigiri", {
description = S("Onigiri"),
inventory_image = "farming_onigiri.png",
on_use = minetest.item_eat(2),
groups = {compostability = 65}
})
-- Gyoza
register_craftitem(farming.cabbage and farming.garlic and farming.onion,4,"farming:gyoza", {
description = S("Gyoza"),
inventory_image = "farming_gyoza.png",
on_use = minetest.item_eat(4),
groups = {compostability = 65}
})
-- Mochi
register_craftitem(farming.rice,3,"farming:mochi", {
description = S("Mochi"),
inventory_image = "farming_mochi.png",
on_use = minetest.item_eat(3),
groups = {compostability = 65}
})
-- Gingerbread Man
register_craftitem(farming.ginger,2,"farming:gingerbread_man", {
description = S("Gingerbread Man"),
inventory_image = "farming_gingerbread_man.png",
on_use = minetest.item_eat(2),
groups = {compostability = 85}
})
-- Mint tea
register_craftitem(farming.mint,2,"farming:mint_tea", {
description = S("Mint Tea"),
inventory_image = "farming_mint_tea.png",
on_use = minetest.item_eat(2, a.drinking_glass),
groups = {drink = 1}
})
-- Onion soup
register_craftitem(farming.onion,6,"farming:onion_soup", {
description = S("Onion Soup"),
inventory_image = "farming_onion_soup.png",
groups = {compostability = 65, drink = 1},
on_use = minetest.item_eat(6, a.bowl)
})
-- Pea soup
register_craftitem(farming.peas,4,"farming:pea_soup", {
description = S("Pea Soup"),
inventory_image = "farming_pea_soup.png",
groups = {compostability = 65, drink = 1},
on_use = minetest.item_eat(4, a.bowl)
})
-- Ground pepper
register_node(farming.pepper,nil,"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, handy = 1,
dig_immediate = 3, attached_node = 1, compostability = 30
},
is_ground_content = false,
sounds = farming.node_sound_defaults(),
selection_box = {
type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
}
})
-- pineapple ring
register_craftitem(farming.pineapple,1,"farming:pineapple_ring", {
description = S("Pineapple Ring"),
inventory_image = "farming_pineapple_ring.png",
groups = {food_pineapple_ring = 1, compostability = 45},
on_use = minetest.item_eat(1)
})
-- Pineapple juice
register_craftitem(farming.pineapple,4,"farming:pineapple_juice", {
description = S("Pineapple Juice"),
inventory_image = "farming_pineapple_juice.png",
on_use = minetest.item_eat(4, "vessels:drinking_glass"),
groups = {vessel = 1, drink = 1, compostability = 35}
})
-- Potato & cucumber Salad
register_craftitem(farming.potato,10,"farming:potato_salad", {
description = S("Cucumber and Potato Salad"),
inventory_image = "farming_potato_salad.png",
on_use = minetest.item_eat(10, "farming:bowl")
})
-- Pumpkin dough
register_craftitem(farming.pumpkin,nil,"farming:pumpkin_dough", {
description = S("Pumpkin Dough"),
inventory_image = "farming_pumpkin_dough.png"
})
-- Pumpkin bread
register_craftitem(farming.pumpkin,8,"farming:pumpkin_bread", {
description = S("Pumpkin Bread"),
inventory_image = "farming_pumpkin_bread.png",
on_use = minetest.item_eat(8),
groups = {food_bread = 1}
})
-- Raspberry smoothie
register_craftitem(farming.raspberry,2,"farming:smoothie_raspberry", {
description = S("Raspberry Smoothie"),
inventory_image = "farming_raspberry_smoothie.png",
on_use = minetest.item_eat(2, "vessels:drinking_glass"),
groups = {vessel = 1, drink = 1, compostability = 65}
})
-- Rhubarb pie
register_craftitem(farming.rhubarb,6,"farming:rhubarb_pie", {
description = S("Rhubarb Pie"),
inventory_image = "farming_rhubarb_pie.png",
on_use = minetest.item_eat(6),
groups = {compostability = 65}
})
-- Rice flour
register_craftitem(farming.rice,nil,"farming:rice_flour", {
description = S("Rice Flour"),
inventory_image = "farming_rice_flour.png",
groups = {food_rice_flour = 1, flammable = 1, compostability = 65}
})
-- Rice bread
register_craftitem(farming.rice,5,"farming:rice_bread", {
description = S("Rice Bread"),
inventory_image = "farming_rice_bread.png",
on_use = minetest.item_eat(5),
groups = {food_rice_bread = 1, compostability = 65}
})
-- Multigrain flour
register_craftitem(farming.grains,nil,"farming:flour_multigrain", {
description = S("Multigrain Flour"),
inventory_image = "farming_flour_multigrain.png",
groups = {food_flour = 1, flammable = 1},
})
-- Multigrain bread
register_craftitem(farming.grains,7,"farming:bread_multigrain", {
description = S("Multigrain Bread"),
inventory_image = "farming_bread_multigrain.png",
on_use = minetest.item_eat(7),
groups = {food_bread = 1, compostability = 65}
})
-- Soy sauce
register_node(farming.soy,nil,"farming:soy_sauce", {
description = S("Soy Sauce"),
drawtype = "plantlike",
tiles = {"farming_soy_sauce.png"},
inventory_image = "farming_soy_sauce.png",
wield_image = "farming_soy_sauce.png",
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
},
groups = {
vessel = 1, food_soy_sauce = 1, dig_immediate = 3, attached_node = 1,
compostability = 65, handy = 1
},
is_ground_content = false,
sounds = farming.node_sound_glass_defaults()
})
-- Soy milk
register_node(farming.soy,2,"farming:soy_milk", {
description = S("Soy Milk"),
drawtype = "plantlike",
tiles = {"farming_soy_milk_glass.png"},
inventory_image = "farming_soy_milk_glass.png",
wield_image = "farming_soy_milk_glass.png",
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
},
on_use = minetest.item_eat(2, "vessels:drinking_glass"),
groups = {
vessel = 1, food_milk_glass = 1, dig_immediate = 3, handy = 1,
attached_node = 1, drink = 1, compostability = 65
},
is_ground_content = false,
sounds = farming.node_sound_glass_defaults()
})
-- Tofu
register_craftitem(farming.soy,3,"farming:tofu", {
description = S("Tofu"),
inventory_image = "farming_tofu.png",
groups = {
food_tofu = 1, food_meat_raw = 1, compostability = 65,
},
on_use = minetest.item_eat(3)
})
-- Cooked tofu
register_craftitem(farming.soy,6,"farming:tofu_cooked", {
description = S("Cooked Tofu"),
inventory_image = "farming_tofu_cooked.png",
groups = {food_meat = 1, compostability = 65},
on_use = minetest.item_eat(6)
})
-- Toasted sunflower seeds
register_craftitem(farming.sunflower,1,"farming:sunflower_seeds_toasted", {
description = S("Toasted Sunflower Seeds"),
inventory_image = "farming_sunflower_seeds_toasted.png",
groups = {food_sunflower_seeds_toasted = 1, compostability = 65},
on_use = minetest.item_eat(1)
})
-- Sunflower oil
register_node(farming.sunflower,nil,"farming:sunflower_oil", {
description = S("Bottle of Sunflower Oil"),
drawtype = "plantlike",
tiles = {"farming_sunflower_oil.png"},
inventory_image = "farming_sunflower_oil.png",
wield_image = "farming_sunflower_oil.png",
paramtype = "light",
is_ground_content = false,
walkable = false,
selection_box = {
type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
},
groups = {
food_oil = 1, vessel = 1, dig_immediate = 3, attached_node = 1,
flammable = 2, compostability = 65, handy = 1
},
sounds = farming.node_sound_glass_defaults()
})
-- Sunflower seed bread
register_craftitem(farming.sunflower,8,"farming:sunflower_bread", {
description = S("Sunflower Seed Bread"),
inventory_image = "farming_sunflower_bread.png",
on_use = minetest.item_eat(8),
groups = {food_bread = 1}
})
-- Vanilla extract
register_node(farming.vanilla and farming.corn,nil,"farming:vanilla_extract", {
description = S("Vanilla Extract"),
drawtype = "plantlike",
tiles = {"farming_vanilla_extract.png"},
inventory_image = "farming_vanilla_extract.png",
wield_image = "farming_vanilla_extract.png",
paramtype = "light",
is_ground_content = false,
walkable = false,
selection_box = {
type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1, handy = 1},
sounds = farming.node_sound_glass_defaults(),
})
-- Jerusalem Artichokes with miso butter
register_craftitem(farming.artichoke and farming.soy and farming.garlic,11,"farming:jerusalem_artichokes", {
description = S("Jerusalem Artichokes"),
inventory_image = "farming_jerusalem_artichokes.png",
on_use = minetest.item_eat(11, a.bowl)
})
--= Foods we shouldn't add when using Mineclonia/VoxeLibre
if not farming.mcl then
-- Bread
register_craftitem(true,5,"farming:bread", {
description = S("Bread"),
inventory_image = "farming_bread.png",
on_use = minetest.item_eat(5),
groups = {food_bread = 1}
})
-- Cocoa beans
register_craftitem(farming.cocoa,nil,"farming:cocoa_beans", {
description = S("Cocoa Beans"),
inventory_image = "farming_cocoa_beans.png",
groups = {compostability = 65, food_cocoa = 1, flammable = 2}
})
-- Chocolate cookie
register_craftitem(farming.cocoa,2,"farming:cookie", {
description = S("Cookie"),
inventory_image = "farming_cookie.png",
on_use = minetest.item_eat(2)
})
-- Golden carrot
register_craftitem(farming.carrot,10,"farming:carrot_gold", {
description = S("Golden Carrot"),
inventory_image = "farming_carrot_gold.png",
on_use = minetest.item_eat(10)
})
-- Beetroot soup
register_craftitem(farming.beetroot,6,"farming:beetroot_soup", {
description = S("Beetroot Soup"),
inventory_image = "farming_beetroot_soup.png",
on_use = minetest.item_eat(6, "farming:bowl"),
groups = {drink = 1}
})
-- Sugar
register_craftitem(true,nil,"farming:sugar", {
description = S("Sugar"),
inventory_image = "farming_sugar.png",
groups = {food_sugar = 1, flammable = 3}
})
-- Baked potato
register_craftitem(farming.potato,6,"farming:baked_potato", {
description = S("Baked Potato"),
inventory_image = "farming_baked_potato.png",
on_use = minetest.item_eat(6)
})
end

View file

@ -0,0 +1,126 @@
-- 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

@ -0,0 +1,282 @@
local S = minetest.get_translator("farming")
local function register_craftitem(condition,name,def)
if condition then
core.register_craftitem(name,def)
end
end
local function register_node(condition,name,def)
if condition then
core.register_node(name,def)
end
end
-- saucepan
register_craftitem(true,"farming:saucepan", {
description = S("Saucepan"),
inventory_image = "farming_saucepan.png",
groups = {food_saucepan = 1, flammable = 2}
})
-- cooking pot
register_craftitem(true,"farming:pot", {
description = S("Cooking Pot"),
inventory_image = "farming_pot.png",
groups = {food_pot = 1, flammable = 2}
})
-- baking tray
register_craftitem(true,"farming:baking_tray", {
description = S("Baking Tray"),
inventory_image = "farming_baking_tray.png",
groups = {food_baking_tray = 1, flammable = 2}
})
-- skillet
register_craftitem(true,"farming:skillet", {
description = S("Skillet"),
inventory_image = "farming_skillet.png",
groups = {food_skillet = 1, flammable = 2}
})
-- mortar & pestle
register_craftitem(true,"farming:mortar_pestle", {
description = S("Mortar and Pestle"),
inventory_image = "farming_mortar_pestle.png",
groups = {food_mortar_pestle = 1, flammable = 2}
})
-- cutting board
register_craftitem(true,"farming:cutting_board", {
description = S("Cutting Board"),
inventory_image = "farming_cutting_board.png",
groups = {food_cutting_board = 1, flammable = 2}
})
-- juicer
register_craftitem(true,"farming:juicer", {
description = S("Juicer"),
inventory_image = "farming_juicer.png",
groups = {food_juicer = 1, flammable = 2}
})
-- glass mixing bowl
register_craftitem(true,"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)
register_node(farming.corn,"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
register_node(true,"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
})
-- hemp oil
register_node(farming.hemp,"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
register_craftitem(farming.hemp,"farming:hemp_fibre", {
description = S("Hemp Fibre"),
inventory_image = "farming_hemp_fibre.png",
groups = {compostability = 55}
})
-- hemp block
register_node(farming.hemp,"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
register_node(false,"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
register_node(false,"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
register_craftitem(true,"farming:bowl", {
description = S("Wooden Bowl"),
inventory_image = "farming_bowl.png",
groups = {food_bowl = 1, flammable = 2}
})
-- String
register_craftitem(true,"farming:string", {
description = S("String"),
inventory_image = "farming_string.png",
groups = {flammable = 2}
})
-- Jack 'O Lantern
register_node(farming.pumpkin,"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
})
register_node(farming.pumpkin,"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

@ -0,0 +1,35 @@
-- 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

@ -0,0 +1,241 @@
The MIT License (MIT)
Copyright (c) 2016 TenPlus1
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
License of media (textures):
----------------------------
Created by TenPlus1 (CC0):
alt_textures/ethereal_strawberry*.png
farming_spanish_potatoes.png
Created by Hugues Ross (CC BY-SA 4.0):
ethereal_strawberry*.png
Created by NameNotQuality (CC0):
farming_vanilla_flan.png
farming_spaghetti.png
Created by Oz-tal (license: CC BY-SA 3.0):
crops_garlic_*.png
crops_onion.png
farming_cookie.png
farming_grapes.png
farming_vanilla.png
Created by Shadall (CC0):
farming_burger.png
Created by PilzAdam (License: CC BY 3.0):
farming_bread.png
farming_soil.png
farming_soil_wet.png
farming_soil_wet_side.png
farming_string.png
Created by Napiophelios (CC BY-SA 3.0):
farming_cotton.png
Created by Calinou (License: CC BY-SA):
farming_tool_bronzehoe.png
farming_tool_steelhoe.png
farming_tool_stonehoe.png
farming_tool_woodhoe.png
farming_tool_mesehoe.png
farming_tool_diamondhoe.png
Created by VanessaE (License: CC BY 3.0):
farming_cotton_seed.png
farming_wheat_seed.png
farming_flour.png
farming_wheat.png
farming_wheat_1.png
farming_wheat_2.png
farming_wheat_3.png
farming_wheat_4.png
farming_wheat_5.png
farming_wheat_5.png
farming_wheat_7.png
farming_wheat_8.png
farming_cotton_1.png
farming_cotton_2.png
farming_cotton_3.png
farming_cotton_4.png
farming_cotton_5.png
farming_cotton_6.png
farming_cotton_7.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):
farming_cucumber.png
farming_cucumber_1.png
farming_cucumber_2.png
farming_cucumber_3.png
farming_cucumber_4.png
farming_potato.png
farming_potato_1.png
farming_potato_2.png
farming_potato_3.png
farming_potato_4.png
farming_raspberries.png
farming_raspberry_1.png
farming_raspberry_2.png
farming_raspberry_3.png
farming_raspberry_4.png
Created by Gambit (License: CC BY 3.0):
default_junglegrass.png
farming_carrot.png
farming_carrot_1.png
farming_carrot_2.png
farming_carrot_3.png
farming_carrot_4.png
farming_carrot_5.png
farming_carrot_6.png
farming_carrot_7.png
farming_carrot_8.png
Created by JoseTheCrafter and edited by TenPlus1 (CC BY 3.0):
farming_tomato.png
farming_tomato_1.png
farming_tomato_2.png
farming_tomato_3.png
farming_tomato_4.png
farming_tomato_5.png
farming_tomato_6.png
farming_tomato_7.png
farming_tomato_8.png
Created by GeMinecraft and edited by TenPlus1 (CC BY 3.0):
farming_corn.png
farming_corn_cob.png
farming_corn_1.png
farming_corn_2.png
farming_corn_3.png
farming_corn_4.png
farming_corn_5.png
farming_corn_6.png
farming_corn_7.png
farming_corn_8.png
Created by TenPlus1 (CC BY 3.0)
farming_cocoa_1.png
farming_cocoa_2.png
farming_cocoa_3.png
farming_cocoa_beans.png
farming_raspberry_smoothie.png
farming_rhubarb_1.png
farming_rhubarb_2.png
farming_rhubarb_3.png
farming_rhubarb.png
farming_hemp*.png
farming_tofu*.png
farming_gingerbread_man.png
Created by ademant (CC-BY-3.0)
farming_rye*.png
farming_oat*.png
farming_rice*.png
Created by PilzAdam and edited by SpaghettiToastBook (CC0):
farming_bread_multigrain.png
Created by VanessaE and edited by SpaghettiToastBook (CC0):
farming_flour_multigrain.png
Created by mDiyo (Natura), modified by TenPlus1 (License: CC BY-SA 3.0):
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*

View file

@ -0,0 +1,189 @@
# 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

@ -0,0 +1,186 @@
# 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

@ -0,0 +1,176 @@
# 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

@ -0,0 +1,177 @@
# 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

@ -0,0 +1,177 @@
# 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

@ -0,0 +1,176 @@
# 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

@ -0,0 +1,176 @@
# textdomain: farming
Artichoke=
Asparagus=
Barley Seed=Seme d'orzo
Barley=Orzo
Green Beans=Fagiolini
Bean Pole (place on soil before planting beans)=Palina per fagiolini (mettila sul terreno coltivabile prima di piantare i fagiolini)
Beetroot=Barbabietola
Beetroot Soup=Zuppa di barbabietola
Blackberries=
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 Leaves=Foglie di banano
Orange=Arancia
Corn=Mais
Corn on the Cob=Pannocchia arrostita
Popcorn=
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 Cube=
Caramel=
Salt=Sale
Mayonnaise=
Rose Water=Acqua di rose
Turkish Delight=Lokum
Garlic Bread=Pane all'aglio
Donut=Ciambella
Chocolate Donut=Ciambella al cioccolato
Apple Donut=Ciambella alla mela
Porridge=Porridge
Jaffa Cake=Torta di jaffa
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=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
Wooden Hoe=Zappa di legno
Stone Hoe=Zappa di pietra
Steel Hoe=Zappa d'acciaio
Bronze Hoe=Zappa di bronzo
Mese Hoe=Zappa di mese
Diamond Hoe=Zappa di diamante
Wood Hoe=
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)=
Seed=Seme
Lettuce=
Melon Slice=Fetta d'anguria
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
Wet Soil=Terreno coltivabile bagnato
Soy Pod=
Soy Sauce=
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
Saucepan=Casseruola
Cooking Pot=Pentola da cottura
Baking Tray=Teglia da forno
Skillet=Padella
Mortar and Pestle=Mortaio e pestello
Cutting Board=Tagliere
Juicer=Spremiagrumi
Glass Mixing Bowl=Terrina di vetro
Vanilla=
Vanilla Extract=
Wheat Seed=Seme di grano
Wheat=Grano
Straw=Paglia
Flour=Farina
Bread=Pane
Sliced Bread=Pane a fette
Toast=Pane tostato
Toast Sandwich=Panino di pane tostato

View file

@ -0,0 +1,176 @@
# textdomain: farming
Artichoke=
Asparagus=
Barley Seed=Sementes de Cevada
Barley=Cevada
Green Beans=Feijoes Verdes
Bean Pole (place on soil before planting beans)=Apoio de feijao (coloque no solo antes de plantar feijao)
Beetroot=
Beetroot Soup=
Blackberries=
Wild Blueberries=Mirtilos Selvagens
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 Leaves=
Orange=
Corn=Milho
Corn on the Cob=Espiga de Milho
Popcorn=
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 Cube=
Caramel=
Salt=
Mayonnaise=
Rose Water=
Turkish Delight=
Garlic Bread=
Donut=Donut
Chocolate Donut=Donut de Chocolate
Apple Donut=Donut de Maça
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=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
Wooden Hoe=Enxada de Madeira
Stone Hoe=Enxada de Pedra
Steel Hoe=Enxada de Aço
Bronze Hoe=Enxada de Bronze
Mese Hoe=Enxada de Mese
Diamond Hoe=Enxada de Diamante
Wood Hoe=
Hoe Bomb (use or throw on grassy areas to hoe land)=
Mithril Scythe (Use to harvest and replant crops)=
Seed=Sementes
Lettuce=
Melon Slice=Sementes de Melancia
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
Wet Soil=Solo Seco
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=Tomate
Tomato Soup=
Wooden Bowl=
Saucepan=
Cooking Pot=
Baking Tray=
Skillet=
Mortar and Pestle=
Cutting Board=
Juicer=
Glass Mixing Bowl=
Vanilla=
Vanilla Extract=
Wheat Seed=Sementes de Trigo
Wheat=Trigo
Straw=Palha
Flour=Farinha
Bread=Pao
Sliced Bread=
Toast=
Toast Sandwich=

View file

@ -0,0 +1,186 @@
# 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

@ -0,0 +1,176 @@
# 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

@ -0,0 +1,176 @@
# 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

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

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 KiB

View file

@ -0,0 +1,4 @@
# Contains a value used for speed of crop growth in seconds
farming_stage_length (Farming Stage Length) float 160.0
farming_use_utensils (Use utensil recipes) bool true

196
mods/.farming_old/soil.lua Normal file
View file

@ -0,0 +1,196 @@
local S = minetest.get_translator("farming")
-- default dry soil node
local dry_soil = "farming:soil"
-- add soil types to existing dirt blocks
minetest.override_item("default:dirt", {
soil = {
base = "default:dirt", dry = "farming:soil", wet = "farming:soil_wet"
}
})
minetest.override_item("default:dirt_with_grass", {
soil = {
base = "default:dirt_with_grass", dry = "farming:soil", wet = "farming:soil_wet"
}
})
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"
}
})
if minetest.registered_nodes["default:dirt_with_coniferous_litter"] then
minetest.override_item("default:dirt_with_coniferous_litter", {
soil = {
base = "default:dirt_with_coniferous_litter", dry = "farming:soil",
wet = "farming:soil_wet"
}
})
end
-- savanna soil
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_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
minetest.register_node("farming:soil", {
description = S("Soil"),
tiles = {"default_dirt.png^farming_soil.png", "default_dirt.png"},
drop = "default:dirt",
groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 2, grassland = 1,
field = 1},
is_ground_content = false,
sounds = default.node_sound_dirt_defaults(),
soil = {
base = "default:dirt", dry = "farming:soil", wet = "farming:soil_wet"
}
})
-- wet soil
minetest.register_node("farming:soil_wet", {
description = S("Wet Soil"),
tiles = {
"default_dirt.png^farming_soil_wet.png",
"default_dirt.png^farming_soil_wet_side.png"
},
drop = "default:dirt",
groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 3, grassland = 1,
field = 1},
is_ground_content = false,
sounds = default.node_sound_dirt_defaults(),
soil = {
base = "default:dirt", dry = "farming:soil", wet = "farming:soil_wet"
}
})
-- sand is not soil, change existing sand-soil to use dry soil
minetest.register_alias("farming:desert_sand_soil", dry_soil)
minetest.register_alias("farming:desert_sand_soil_wet", dry_soil .. "_wet")
-- if water near soil then change to wet soil
minetest.register_abm({
label = "Soil changes",
nodenames = {"group:field"},
interval = 15,
chance = 4,
catch_up = false,
action = function(pos, node)
local ndef = minetest.registered_nodes[node.name]
if not ndef or not ndef.soil or not ndef.soil.wet
or not ndef.soil.base or not ndef.soil.dry then return end
pos.y = pos.y + 1
local nn = minetest.get_node_or_nil(pos)
pos.y = pos.y - 1
if nn then nn = nn.name else return end
-- what's on top of soil, if solid/not plant change soil to dirt
if minetest.registered_nodes[nn]
and minetest.registered_nodes[nn].walkable
and minetest.get_item_group(nn, "plant") == 0
and minetest.get_item_group(nn, "growing") == 0 then
minetest.set_node(pos, {name = ndef.soil.base})
return
end
-- check if water is within 3 nodes
if minetest.find_node_near(pos, 3, {"group:water"}) then
-- only change if it's not already wet soil
if node.name ~= ndef.soil.wet then
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
})

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

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