mods that hopefully work for a TechAge-based pack

This commit is contained in:
2026-09-09 06:27:51 -06:00
parent 4e6b08d194
commit c27db2a537
6234 changed files with 375578 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
farming.conf
+277
View File
@@ -0,0 +1,277 @@
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.jpg](screenshot.jpg)
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.luanti.org/viewtopic.php?t=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 49 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.50 - Add 'farming_floodable_crops' setting so that crops will drop when flooded.
- 1.49 - Added {eatable=1} groups to food items with the value giving HP when eaten, improved mineclone support, separated foods from crop files, hoes can deal damage. Add weed and weed bale (with setting to disable weed growth).
- 1.48 - added 'farming_use_utensils' setting to enable/disable utensils in recipes, added mayonnaise (thx felfa), added gingerbread man, Added MineClone2 compatibility
- 1.47 - Now blueberries can make blue dye, tweak soil types to work better with older 0.4.x clients and add spanish translation (thx mckaygerhard), add trellis setting to registered_crops and fix pea and soy crop names (thx nixnoxus), add strawberries if ethereal mod not active, added asparagus; spinach; eggplant (thx Atlante for new textures), Sugar Cube
- 1.46 - Added min/max default light settings, added lettuce and blackberries with food items (thanks OgelGames), added soya, vanilla and sunflowers (thanks Felfa), added tofu, added salt crystals (thanks gorlock)
- 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

+100
View File
@@ -0,0 +1,100 @@
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 = core.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 core.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)
### Eatable
A quick function to add {eatable='hp', flammable=2, food='type'} groups to a food item, food_type is generally 2 for food, 3 for drink and 1 for other/unsure to tie in with other games and mods.
farming.add_eatable(item, hp, food_type)
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()
+161
View File
@@ -0,0 +1,161 @@
local S = core.get_translator("farming")
--= Helpers
local eth = core.get_modpath("ethereal")
local alias = function(orig, new)
core.register_alias(orig, new)
end
--= Add {eatable} group to default food items if found
farming.add_eatable("default:apple", 2)
farming.add_eatable("default:blueberries", 1)
farming.add_eatable("flowers:mushroom_brown", 1)
farming.add_eatable("flowers:mushroom_red", -5)
--= Aliases
-- Banana
if eth then
alias("farming_plus:banana_sapling", "ethereal:banana_tree_sapling")
alias("farming_plus:banana_leaves", "ethereal:bananaleaves")
alias("farming_plus:banana", "ethereal:banana")
else
core.register_node(":ethereal:banana", {
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 = core.item_eat(2),
sounds = farming.node_sound_leaves_defaults()
})
farming.add_eatable("ethereal:banana", 2)
core.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
core.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 = core.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")
+107
View File
@@ -0,0 +1,107 @@
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:artichoke", {
description = S("Artichoke"),
inventory_image = "farming_artichoke.png",
groups = {compostability = 48, seed = 2, food_artichoke = 1},
on_use = core.item_eat(4),
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
core.register_node("farming:artichoke_1", table.copy(def))
-- stage 2
def.tiles = {"farming_artichoke_2.png"}
core.register_node("farming:artichoke_2", table.copy(def))
-- stage 3
def.tiles = {"farming_artichoke_3.png"}
core.register_node("farming:artichoke_3", table.copy(def))
-- stage 4
def.tiles = {"farming_artichoke_4.png"}
def.drop = {
items = {
{items = {"farming:artichoke"}, rarity = 1}
}
}
core.register_node("farming:artichoke_4", table.copy(def))
-- 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}
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:grove_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.artichoke,
spread = {x = 100, y = 100, z = 100},
seed = 123,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 13,
decoration = "farming:artichoke_4",
spawn_by = "group:tree", num_spawn_by = 1
})
+108
View File
@@ -0,0 +1,108 @@
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:asparagus", {
description = S("Asparagus"),
inventory_image = "farming_asparagus.png",
groups = {compostability = 48, seed = 2, food_asparagus = 1},
on_use = core.item_eat(1),
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
core.register_node("farming:asparagus_1", table.copy(def))
-- stage 2
def.tiles = {"farming_asparagus_2.png"}
core.register_node("farming:asparagus_2", table.copy(def))
-- stage 3
def.tiles = {"farming_asparagus_3.png"}
core.register_node("farming:asparagus_3", table.copy(def))
-- stage 4
def.tiles = {"farming_asparagus_4.png"}
def.drop = {
items = {
{items = {"farming:asparagus"}, rarity = 1}
}
}
core.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 2"}, rarity = 1},
{items = {"farming:asparagus"}, rarity = 2}
}
}
core.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
core.register_decoration({
name = "farming:asparagus_5",
deco_type = "simple",
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.asparagus,
spread = {x = 100, y = 100, z = 100},
seed = 234,
octaves = 3,
persist = 0.6
},
y_min = 8, y_max = 32,
decoration = "farming:asparagus_4",
param2 = 3
})
+135
View File
@@ -0,0 +1,135 @@
local S = core.get_translator("farming")
-- seed
core.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)
core.set_node(pos, {name = "farming:barley_1", param2 = 3})
end
})
-- item
core.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
core.register_node("farming:barley_1", table.copy(def))
-- stage 2
def.tiles = {"farming_barley_2.png"}
core.register_node("farming:barley_2", table.copy(def))
-- stage 3
def.tiles = {"farming_barley_3.png"}
core.register_node("farming:barley_3", table.copy(def))
-- stage 4
def.tiles = {"farming_barley_4.png"}
core.register_node("farming:barley_4", table.copy(def))
-- stage 5
def.tiles = {"farming_barley_5.png"}
core.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}
}
}
core.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}
}
}
core.register_node("farming:barley_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_barley_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:barley 2"}, rarity = 1},
{items = {"farming:barley"}, rarity = 2},
{items = {"farming:seed_barley 2"}, rarity = 1},
{items = {"farming:seed_barley"}, rarity = 2}
}
}
core.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
}
+251
View File
@@ -0,0 +1,251 @@
-- All textures by (C) Auke Kok <sofar@foo-projects.org> CC-BY-SA-3.0
local S = core.get_translator("farming")
-- place beans helper
local 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 = core.get_node(pt.under)
-- return if any of the nodes are not registered
if not core.registered_nodes[under.name] then return end
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = core.registered_nodes[under.name]
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 core.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
core.set_node(pt.under, {name = plantname})
core.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
core.after(0.20,
farming.refill_plant, placer, "farming:beans", placer:get_wield_index())
end
end
return itemstack
end
-- item/seed
core.register_craftitem("farming:beans", {
description = S("Green Beans"),
inventory_image = "farming_beans.png",
groups = {compostability = 48, seed = 2, food_beans = 1},
on_use = core.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
core.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 = core.get_node(pt.under)
-- return if any of the nodes are not registered
if not core.registered_nodes[under.name] then return end
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = core.registered_nodes[under.name]
if def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt)
end
if core.is_protected(pt.above, placer:get_player_name()) then
return
end
local nodename = under.name
if core.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 = core.get_node(top).name
if nodename ~= "air" then return end
core.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
core.register_node("farming:beanpole_1", table.copy(def))
-- stage2
def.tiles = {"farming_beanpole_2.png"}
core.register_node("farming:beanpole_2", table.copy(def))
-- stage 3
def.tiles = {"farming_beanpole_3.png"}
core.register_node("farming:beanpole_3", table.copy(def))
-- stage 4
def.tiles = {"farming_beanpole_4.png"}
core.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"}, rarity = 2},
{items = {"farming:beans"}, rarity = 3}
}
}
core.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)
core.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
core.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.beans,
spread = {x = 100, y = 100, z = 100},
seed = 345,
octaves = 3,
persist = 0.6
},
y_min = 18, y_max = 38,
decoration = "farming:beanbush"
})
+106
View File
@@ -0,0 +1,106 @@
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:beetroot", {
description = S("Beetroot"),
inventory_image = "farming_beetroot.png",
groups = {compostability = 48, seed = 2, food_beetroot = 1},
on_use = core.item_eat(1),
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
core.register_node("farming:beetroot_1", table.copy(def))
-- stage 2
def.tiles = {"farming_beetroot_2.png"}
core.register_node("farming:beetroot_2", table.copy(def))
-- stage 3
def.tiles = {"farming_beetroot_3.png"}
core.register_node("farming:beetroot_3", table.copy(def))
-- stage 4
def.tiles = {"farming_beetroot_4.png"}
core.register_node("farming:beetroot_4", table.copy(def))
-- stage 5 (final)
def.tiles = {"farming_beetroot_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:beetroot 2"}, rarity = 1},
{items = {"farming:beetroot"}, rarity = 2},
{items = {"farming:beetroot"}, rarity = 3}
}
}
core.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
local spawn_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}
if farming.eth then
spawn_on = {"ethereal:prairie_dirt"}
end
core.register_decoration({
deco_type = "simple",
place_on = spawn_on,
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.beetroot,
spread = {x = 100, y = 100, z = 100},
seed = 456,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 20,
decoration = "farming:beetroot_5"
})
+99
View File
@@ -0,0 +1,99 @@
local S = core.get_translator("farming")
-- item/seed
core.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 = core.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
core.register_node("farming:blackberry_1", table.copy(def))
-- stage 2
def.tiles = {"farming_blackberry_2.png"}
core.register_node("farming:blackberry_2", table.copy(def))
-- stage 3
def.tiles = {"farming_blackberry_3.png"}
core.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},
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.blackberry,
spread = {x = 100, y = 100, z = 100},
seed = 567,
octaves = 3,
persist = 0.6
},
y_min = 3, y_max = 20,
decoration = "farming:blackberry_4"
})
+98
View File
@@ -0,0 +1,98 @@
local S = core.get_translator("farming")
-- item/seed
core.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 = core.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
core.register_node("farming:blueberry_1", table.copy(def))
-- stage 2
def.tiles = {"farming_blueberry_2.png"}
core.register_node("farming:blueberry_2", table.copy(def))
-- stage 3
def.tiles = {"farming_blueberry_3.png"}
core.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}
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.blueberry,
spread = {x = 100, y = 100, z = 100},
seed = 678,
octaves = 3,
persist = 0.6
},
y_min = 3, y_max = 15,
decoration = "farming:blueberry_4"
})
+104
View File
@@ -0,0 +1,104 @@
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:cabbage", {
description = S("Cabbage"),
inventory_image = "farming_cabbage.png",
groups = {compostability = 48, seed = 2, food_cabbage = 1},
on_use = core.item_eat(1),
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
core.register_node("farming:cabbage_1", table.copy(def))
-- stage 2
def.tiles = {"farming_cabbage_2.png"}
core.register_node("farming:cabbage_2", table.copy(def))
-- stage 3
def.tiles = {"farming_cabbage_3.png"}
core.register_node("farming:cabbage_3", table.copy(def))
-- stage 4
def.tiles = {"farming_cabbage_4.png"}
core.register_node("farming:cabbage_4", table.copy(def))
-- stage 5
def.tiles = {"farming_cabbage_5.png"}
core.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 = {
items = {
{items = {"farming:cabbage 2"}, rarity = 1},
{items = {"farming:cabbage"}, rarity = 3}
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.cabbage,
spread = {x = 100, y = 100, z = 100},
seed = 789,
octaves = 3,
persist = 0.6
},
y_min = 2, y_max = 15,
decoration = "farming:cabbage_6"
})
+126
View File
@@ -0,0 +1,126 @@
-- Original textures from PixelBox texture pack
-- https://forum.core.net/viewtopic.php?id=4990
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:carrot", {
description = S("Carrot"),
inventory_image = "farming_carrot.png",
groups = {compostability = 48, seed = 2, food_carrot = 1},
on_use = core.item_eat(4),
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
core.register_node("farming:carrot_1", table.copy(def))
-- stage 2
def.tiles = {"farming_carrot_2.png"}
core.register_node("farming:carrot_2", table.copy(def))
-- stage 3
def.tiles = {"farming_carrot_3.png"}
core.register_node("farming:carrot_3", table.copy(def))
-- stage 4
def.tiles = {"farming_carrot_4.png"}
core.register_node("farming:carrot_4", table.copy(def))
-- stage 5
def.tiles = {"farming_carrot_5.png"}
core.register_node("farming:carrot_5", table.copy(def))
-- stage 6
def.tiles = {"farming_carrot_6.png"}
core.register_node("farming:carrot_6", table.copy(def))
-- stage 7
def.tiles = {"farming_carrot_7.png"}
def.drop = {
items = {
{items = {"farming:carrot"}, rarity = 1},
{items = {"farming:carrot"}, rarity = 3}
}
}
core.register_node("farming:carrot_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_carrot_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:carrot 2"}, rarity = 1},
{items = {"farming:carrot"}, rarity = 2},
{items = {"farming:carrot"}, rarity = 3},
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.carrot,
spread = {x = 100, y = 100, z = 100},
seed = 890,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 30,
decoration = "farming:carrot_7"
})
+120
View File
@@ -0,0 +1,120 @@
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:chili_pepper", {
description = S("Chili Pepper"),
inventory_image = "farming_chili_pepper.png",
groups = {compostability = 48, seed = 2, food_chili_pepper = 1},
on_use = core.item_eat(2),
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
core.register_node("farming:chili_1", table.copy(def))
-- stage 2
def.tiles = {"farming_chili_2.png"}
core.register_node("farming:chili_2", table.copy(def))
-- stage 3
def.tiles = {"farming_chili_3.png"}
core.register_node("farming:chili_3", table.copy(def))
-- stage 4
def.tiles = {"farming_chili_4.png"}
core.register_node("farming:chili_4", table.copy(def))
-- stage 5
def.tiles = {"farming_chili_5.png"}
core.register_node("farming:chili_5", table.copy(def))
-- stage 6
def.tiles = {"farming_chili_6.png"}
core.register_node("farming:chili_6", table.copy(def))
-- stage 7
def.tiles = {"farming_chili_7.png"}
core.register_node("farming:chili_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_chili_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:chili_pepper 2"}, rarity = 1},
{items = {"farming:chili_pepper"}, rarity = 2},
{items = {"farming:chili_pepper"}, rarity = 3},
{items = {"farming:chili_pepper"}, rarity = 4}
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "default:dirt_with_rainforest_litter",
"mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.chili,
spread = {x = 100, y = 100, z = 100},
seed = 901,
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 45,
decoration = "farming:chili_8",
spawn_by = "group:tree", num_spawn_by = 1
})
+186
View File
@@ -0,0 +1,186 @@
local S = core.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 = core.get_node(pt.under)
-- return if any of the nodes are not registered
if not core.registered_nodes[under.name] then return end
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = core.registered_nodes[under.name]
if placer and itemstack and def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt)
end
-- check if pointing at jungletree
if (under.name ~= "default:jungletree" and under.name ~= "mcl_core:jungletree")
or core.get_node(pt.above).name ~= "air" then
return
end
-- is player planting crop?
local name = placer and placer:get_player_name() or ""
-- check for protection
if core.is_protected(pt.above, name) then return end
-- add the node and remove 1 item from the itemstack
core.set_node(pt.above, {name = plantname})
core.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
core.after(0.20, farming.refill_plant, placer,
"farming:cocoa_beans_raw", placer:get_wield_index())
end
end
return itemstack
end
-- item/seed
core.register_craftitem("farming:cocoa_beans_raw", {
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 core.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
core.register_node("farming:cocoa_1", table.copy(def))
-- stage 2
def.tiles = {"farming_cocoa_2.png"}
core.register_node("farming:cocoa_2", table.copy(def))
-- stage3
def.tiles = {"farming_cocoa_3.png"}
def.drop = {
items = {
{items = {"farming:cocoa_beans_raw"}, rarity = 1}
}
}
core.register_node("farming:cocoa_3", table.copy(def))
-- stage 4 (final)
def.tiles = {"farming_cocoa_4.png"}
def.groups.growing = nil
def.growth_check = nil
def.drop = {
items = {
{items = {"farming:cocoa_beans_raw 2"}, rarity = 1},
{items = {"farming:cocoa_beans_raw"}, rarity = 2},
{items = {"farming:cocoa_beans_raw"}, rarity = 3}
}
}
core.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
core.register_on_generated(function(minp, maxp)
if maxp.y < 0 then return end
local pos, dir
local cocoa = core.find_nodes_in_area(minp, maxp,
{"default:jungletree", "mcl_core:jungletree"})
for n = 1, #cocoa do
pos = cocoa[n]
if core.find_node_near(pos, 1,
{"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 core.get_node(pos).name == "air"
and core.get_node_light(pos) > 12 then
--print ("Cocoa Pod added at " .. core.pos_to_string(pos))
core.set_node(pos, {
name = "farming:cocoa_" .. tostring(random(4))
})
end
end
end
end)
+107
View File
@@ -0,0 +1,107 @@
local S = core.get_translator("farming")
-- item/seed
core.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
core.register_node("farming:coffee_1", table.copy(def))
-- stage 2
def.tiles = {"farming_coffee_2.png"}
core.register_node("farming:coffee_2", table.copy(def))
-- stage 3
def.tiles = {"farming_coffee_3.png"}
core.register_node("farming:coffee_3", table.copy(def))
-- stage 4
def.tiles = {"farming_coffee_4.png"}
core.register_node("farming:coffee_4", table.copy(def))
-- stage 5 (final)
def.tiles = {"farming_coffee_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:coffee_beans 2"}, rarity = 1},
{items = {"farming:coffee_beans"}, rarity = 2},
{items = {"farming:coffee_beans"}, rarity = 3}
}
}
core.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
core.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"
})
+129
View File
@@ -0,0 +1,129 @@
--[[
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 = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:corn", {
description = S("Corn"),
inventory_image = "farming_corn.png",
groups = {compostability = 45, seed = 2, food_corn = 1},
on_use = core.item_eat(3),
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
core.register_node("farming:corn_1", table.copy(def))
-- stage 2
def.tiles = {"farming_corn_2.png"}
core.register_node("farming:corn_2", table.copy(def))
-- stage 3
def.tiles = {"farming_corn_3.png"}
core.register_node("farming:corn_3", table.copy(def))
-- stage 4
def.tiles = {"farming_corn_4.png"}
core.register_node("farming:corn_4", table.copy(def))
-- stage 5
def.tiles = {"farming_corn_5.png"}
core.register_node("farming:corn_5", table.copy(def))
-- stage 6
def.tiles = {"farming_corn_6.png"}
def.visual_scale = 1.9
core.register_node("farming:corn_6", table.copy(def))
-- stage 7
def.tiles = {"farming_corn_7.png"}
def.drop = {
items = {
{items = {"farming:corn"}, rarity = 1},
{items = {"farming:corn"}, rarity = 3}
}
}
core.register_node("farming:corn_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_corn_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:corn 2"}, rarity = 1},
{items = {"farming:corn"}, rarity = 2},
{items = {"farming:corn"}, rarity = 3}
}
}
core.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
core.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"
})
+199
View File
@@ -0,0 +1,199 @@
local S = core.get_translator("farming")
-- seed
core.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)
core.set_node(pos, {name = "farming:cotton_1", param2 = 1})
end
})
-- item
core.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
core.register_node("farming:cotton_1", table.copy(def))
-- stage 2
def.tiles = {"farming_cotton_2.png"}
core.register_node("farming:cotton_2", table.copy(def))
-- stage 3
def.tiles = {"farming_cotton_3.png"}
core.register_node("farming:cotton_3", table.copy(def))
-- stage 4
def.tiles = {"farming_cotton_4.png"}
core.register_node("farming:cotton_4", table.copy(def))
-- stage 5
def.tiles = {"farming_cotton_5.png"}
def.drop = {
items = {
{items = {"farming:seed_cotton"}, rarity = 1}
}
}
core.register_node("farming:cotton_5", table.copy(def))
-- stage 6
def.tiles = {"farming_cotton_6.png"}
core.register_node("farming:cotton_6", table.copy(def))
-- stage 7
def.tiles = {"farming_cotton_7.png"}
def.drop = {
items = {
{items = {"farming:cotton"}, rarity = 2},
{items = {"farming:seed_cotton"}, rarity = 1}
}
}
core.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}
}
}
core.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)
core.register_node("farming:cotton_wild", {
description = S("Wild Cotton"),
drawtype = "plantlike",
waving = 1,
tiles = {"farming_cotton_wild.png"},
inventory_image = "farming_cotton_wild.png",
wield_image = "farming_cotton_wild.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {handy = 1, snappy = 3, attached_node = 1, flammable = 4, compostability = 60},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
drop = {
items = {
{items = {"farming:cotton"}, rarity = 2},
{items = {"farming:seed_cotton"}, rarity = 1}
}
},
sounds = farming.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-6 / 16, -8 / 16, -6 / 16, 6 / 16, 5 / 16, 6 / 16}
}
})
-- mapgen
local spawn_on = {
"default:dry_dirt_with_dry_grass", "default:dirt_with_dry_grass",
"mcl_core:dirt_with_grass"
}
if farming.mapgen == "v6" then
spawn_on = {"default:dirt_with_grass"}
end
core.register_decoration({
name = "farming:cotton_wild",
deco_type = "simple",
place_on = spawn_on,
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.cotton,
spread = {x = 100, y = 100, z = 100},
seed = 4242,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 120,
decoration = "farming:cotton_wild"
})
--[[ Cotton using api
farming.register_plant("farming:cotton", {
description = "Cotton seed",
inventory_image = "farming_cotton_seed.png",
groups = {flammable = 2},
steps = 8,
})]]
+100
View File
@@ -0,0 +1,100 @@
--[[
Original textures from DocFarming mod
https://forum.core.net/viewtopic.php?id=3948
]]
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:cucumber", {
description = S("Cucumber"),
inventory_image = "farming_cucumber.png",
groups = {compostability = 48, seed = 2, food_cucumber = 1},
on_use = core.item_eat(4),
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
core.register_node("farming:cucumber_1", table.copy(def))
-- stage 2
def.tiles = {"farming_cucumber_2.png"}
core.register_node("farming:cucumber_2", table.copy(def))
-- stage 3
def.tiles = {"farming_cucumber_3.png"}
core.register_node("farming:cucumber_3", table.copy(def))
-- stage 4 (final)
def.tiles = {"farming_cucumber_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:cucumber 2"}, rarity = 1},
{items = {"farming:cucumber"}, rarity = 2}
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.cucumber,
spread = {x = 100, y = 100, z = 100},
seed = 245,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 20,
decoration = "farming:cucumber_4",
spawn_by = {"group:water", "group:sand"}, num_spawn_by = 1
})
+102
View File
@@ -0,0 +1,102 @@
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:eggplant", {
description = S("Eggplant"),
inventory_image = "farming_eggplant.png",
groups = {compostability = 48, seed = 2, food_eggplant = 1},
on_use = core.item_eat(3),
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
core.register_node("farming:eggplant_1", table.copy(def))
-- stage 2
def.tiles = {"farming_eggplant_2.png"}
core.register_node("farming:eggplant_2", table.copy(def))
-- stage 3
def.tiles = {"farming_eggplant_3.png"}
def.drop = {
items = {
{items = {"farming:eggplant"}, rarity = 1},
{items = {"farming:eggplant"}, rarity = 3}
}
}
core.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"}, rarity = 2}
}
}
core.register_node("farming:eggplant_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:eggplant"] = {
crop = "farming:eggplant",
seed = "farming:eggplant",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 4
}
-- mapgen
core.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.eggplant,
spread = {x = 100, y = 100, z = 100},
seed = 356,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 40,
decoration = "farming:eggplant_3",
param2 = 3
})
+103
View File
@@ -0,0 +1,103 @@
local S = core.get_translator("farming")
-- item/seed
core.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
core.register_node("farming:garlic_1", table.copy(def))
-- stage 2
def.tiles = {"crops_garlic_plant_2.png"}
core.register_node("farming:garlic_2", table.copy(def))
-- stage 3
def.tiles = {"crops_garlic_plant_3.png"}
core.register_node("farming:garlic_3", table.copy(def))
-- stage 4
def.tiles = {"crops_garlic_plant_4.png"}
core.register_node("farming:garlic_4", table.copy(def))
-- stage 5
def.tiles = {"crops_garlic_plant_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:garlic 2"}, rarity = 1},
{items = {"farming:garlic"}, rarity = 2},
{items = {"farming:garlic"}, rarity = 3}
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt",
"default:dirt_with_rainforest_litter"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.garlic,
spread = {x = 100, y = 100, z = 100},
seed = 467,
octaves = 3,
persist = 0.6
},
y_min = 3, y_max = 45,
decoration = "farming:garlic_5",
spawn_by = "group:tree", num_spawn_by = 1
})
+106
View File
@@ -0,0 +1,106 @@
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:ginger", {
description = S("Ginger"),
inventory_image = "farming_ginger.png",
groups = {compostability = 48, seed = 2, food_ginger = 1},
on_use = core.item_eat(1),
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, minlight = 5,
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
core.register_node("farming:ginger_1", table.copy(def))
-- stage 2
def.tiles = {"farming_ginger_2.png"}
core.register_node("farming:ginger_2", table.copy(def))
-- stage 3
def.tiles = {"farming_ginger_3.png"}
def.drop = {
items = {
{items = {"farming:ginger"}, rarity = 1},
{items = {"farming:ginger"}, rarity = 3}
}
}
core.register_node("farming:ginger_3", table.copy(def))
-- stage 4 (final)
def.tiles = {"farming_ginger_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:ginger 2"}, rarity = 1},
{items = {"farming:ginger"}, rarity = 2},
{items = {"farming:ginger"}, rarity = 3}
}
}
core.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 = farming.max_light,
steps = 4
}
-- mapgen
core.register_decoration({
name = "farming:ginger_4",
deco_type = "simple",
place_on = {
"default:dirt_with_rainforest_litter", "mcl_core:dirt_with_grass",
"ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.ginger,
spread = {x = 100, y = 100, z = 100},
seed = 999,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 80,
decoration = "farming:ginger_3",
param2 = 3
})
+268
View File
@@ -0,0 +1,268 @@
local S = core.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 = core.get_node(pt.under)
-- return if any of the nodes are not registered
if not core.registered_nodes[under.name] then return end
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = core.registered_nodes[under.name]
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 core.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
core.set_node(pt.under, {name = plantname})
core.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
core.after(0.20, farming.refill_plant, placer,
"farming:grapes", placer:get_wield_index()
)
end
end
return itemstack
end
-- item/seed
core.register_craftitem("farming:grapes", {
description = S("Grapes"),
inventory_image = "farming_grapes.png",
groups = {compostability = 48, seed = 2, food_grapes = 1},
on_use = core.item_eat(2),
on_place = function(itemstack, placer, pointed_thing)
return place_grapes(itemstack, placer, pointed_thing, "farming:grapes_1")
end
})
farming.add_eatable("farming:grapes", 2)
-- trellis
core.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 = core.get_node(pt.under)
-- return if any of the nodes are not registered
if not core.registered_nodes[under.name] then return end
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = core.registered_nodes[under.name]
if def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack, pt)
end
if core.is_protected(pt.above, placer:get_player_name()) then
return
end
local nodename = under.name
if core.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 = core.get_node(top).name
if nodename ~= "air" then return end
core.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
core.register_node("farming:grapes_1", table.copy(def))
-- stage2
def.tiles = {"farming_grapes_2.png"}
core.register_node("farming:grapes_2", table.copy(def))
-- stage 3
def.tiles = {"farming_grapes_3.png"}
core.register_node("farming:grapes_3", table.copy(def))
-- stage 4
def.tiles = {"farming_grapes_4.png"}
core.register_node("farming:grapes_4", table.copy(def))
-- stage 5
def.tiles = {"farming_grapes_5.png"}
core.register_node("farming:grapes_5", table.copy(def))
-- stage 6
def.tiles = {"farming_grapes_6.png"}
core.register_node("farming:grapes_6", table.copy(def))
-- stage 7
def.tiles = {"farming_grapes_7.png"}
core.register_node("farming:grapes_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_grapes_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:trellis"}, rarity = 1},
{items = {"farming:grapes 2"}, rarity = 1},
{items = {"farming:grapes"}, rarity = 2},
{items = {"farming:grapes"}, rarity = 3},
{items = {"farming:grapes"}, rarity = 4}
}
}
core.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)
core.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"}, rarity = 1},
{items = {"farming:grapes"}, rarity = 2},
{items = {"farming:grapes"}, 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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.grapes,
spread = {x = 100, y = 100, z = 100},
seed = 578,
octaves = 3,
persist = 0.6
},
y_min = 25, y_max = 50,
decoration = "farming:grapebush"
})
+157
View File
@@ -0,0 +1,157 @@
local S = core.get_translator("farming")
-- seed
core.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)
core.set_node(pos, {name = "farming:hemp_1", param2 = 1})
end
})
-- item
core.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
core.register_node("farming:hemp_1", table.copy(def))
-- stage 2
def.tiles = {"farming_hemp_2.png"}
core.register_node("farming:hemp_2", table.copy(def))
-- stage 3
def.tiles = {"farming_hemp_3.png"}
core.register_node("farming:hemp_3", table.copy(def))
-- stage 4
def.tiles = {"farming_hemp_4.png"}
core.register_node("farming:hemp_4", table.copy(def))
-- stage 5
def.tiles = {"farming_hemp_5.png"}
core.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}
}
}
core.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}
}
}
core.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 2"}, rarity = 1},
{items = {"farming:seed_hemp"}, rarity = 2}
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "default:dirt_with_rainforest_litter",
"mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.hemp,
spread = {x = 100, y = 100, z = 100},
seed = 420,
octaves = 3,
persist = 0.6
},
y_min = 3, y_max = 45,
decoration = "farming:hemp_7",
spawn_by = "group:tree", num_spawn_by = 1
})
+100
View File
@@ -0,0 +1,100 @@
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:lettuce", {
description = S("Lettuce"),
inventory_image = "farming_lettuce.png",
groups = {compostability = 48, seed = 2, food_lettuce = 1},
on_use = core.item_eat(2),
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
core.register_node("farming:lettuce_1", table.copy(def))
-- stage 2
def.tiles = {"farming_lettuce_2.png"}
core.register_node("farming:lettuce_2", table.copy(def))
-- stage 3
def.tiles = {"farming_lettuce_3.png"}
core.register_node("farming:lettuce_3", table.copy(def))
-- stage 4
def.tiles = {"farming_lettuce_4.png"}
core.register_node("farming:lettuce_4", table.copy(def))
-- stage 5
def.tiles = {"farming_lettuce_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:lettuce 2"}, rarity = 1},
{items = {"farming:lettuce"}, rarity = 3}
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.lettuce,
spread = {x = 100, y = 100, z = 100},
seed = 689,
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 35,
decoration = "farming:lettuce_5"
})
+126
View File
@@ -0,0 +1,126 @@
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:melon_slice", {
description = S("Melon Slice"),
inventory_image = "farming_melon_slice.png",
groups = {compostability = 48, seed = 2, food_melon_slice = 1},
on_use = core.item_eat(2),
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
core.register_node("farming:melon_1", table.copy(def))
-- stage 2
def.tiles = {"farming_melon_2.png"}
core.register_node("farming:melon_2", table.copy(def))
-- stage 3
def.tiles = {"farming_melon_3.png"}
core.register_node("farming:melon_3", table.copy(def))
-- stage 4
def.tiles = {"farming_melon_4.png"}
core.register_node("farming:melon_4", table.copy(def))
-- stage 5
def.tiles = {"farming_melon_5.png"}
core.register_node("farming:melon_5", table.copy(def))
-- stage 6
def.tiles = {"farming_melon_6.png"}
core.register_node("farming:melon_6", table.copy(def))
-- stage 7
def.tiles = {"farming_melon_7.png"}
core.register_node("farming:melon_7", table.copy(def))
-- stage 8 (final)
core.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 = core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "default:dirt_with_dry_grass",
"default:dirt_with_rainforest_litter", "mcl_core:dirt_with_grass"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.melon,
spread = {x = 100, y = 100, z = 100},
seed = 790,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 3,
decoration = "farming:melon_8",
spawn_by = {"group:water", "group:sand"}, num_spawn_by = 1
})
+122
View File
@@ -0,0 +1,122 @@
local S = core.get_translator("farming")
-- seed
core.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)
core.set_node(pos, {name = "farming:mint_1", param2 = 1})
end
})
-- item
core.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
core.register_node("farming:mint_1", table.copy(def))
-- stage 2
def.tiles = {"farming_mint_2.png"}
core.register_node("farming:mint_2", table.copy(def))
-- stage 3
def.tiles = {"farming_mint_3.png"}
core.register_node("farming:mint_3", table.copy(def))
-- stage 4 (final)
def.tiles = {"farming_mint_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:mint_leaf 2"}, rarity = 1},
{items = {"farming:mint_leaf"}, rarity = 2},
{items = {"farming:seed_mint 2"}, rarity = 1},
{items = {"farming:seed_mint"}, rarity = 2}
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "default:dirt_with_coniferous_litter",
"mcl_core:dirt_with_grass", "ethereal:bamboo_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.mint,
spread = {x = 100, y = 100, z = 100},
seed = 801,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 75,
decoration = "farming:mint_4",
spawn_by = {"group:water", "group:sand"}, num_spawn_by = 1
})
+111
View File
@@ -0,0 +1,111 @@
--[[
Original textures from Crops Plus mod
Copyright (C) 2018 Grizzly Adam
https://forum.core.net/viewtopic.php?f=9&t=19488
]]
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:onion", {
description = S("Onion"),
inventory_image = "crops_onion.png",
groups = {compostability = 48, seed = 2, food_onion = 1},
on_use = core.item_eat(1),
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
core.register_node("farming:onion_1", table.copy(def))
-- stage 2
def.tiles = {"crops_onion_plant_2.png"}
core.register_node("farming:onion_2", table.copy(def))
-- stage 3
def.tiles = {"crops_onion_plant_3.png"}
core.register_node("farming:onion_3", table.copy(def))
-- stage 4
def.tiles = {"crops_onion_plant_4.png"}
core.register_node("farming:onion_4", table.copy(def))
-- stage 5
def.tiles = {"crops_onion_plant_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:onion 2"}, rarity = 1},
{items = {"farming:onion"}, rarity = 2},
{items = {"farming:onion"}, rarity = 4}
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.onion,
spread = {x = 100, y = 100, z = 100},
seed = 912,
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 28,
decoration = "farming:onion_5"
})
+93
View File
@@ -0,0 +1,93 @@
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:parsley", {
description = S("Parsley"),
inventory_image = "farming_parsley.png",
groups = {compostability = 48, seed = 2, food_parsley = 1},
on_use = core.item_eat(1),
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
core.register_node("farming:parsley_1", table.copy(def))
-- stage 2
def.tiles = {"farming_parsley_2.png"}
core.register_node("farming:parsley_2", table.copy(def))
-- 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}
}
}
core.register_node("farming:parsley_3", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:parsley"] = {
crop = "farming:parsley",
seed = "farming:parsley",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 3
}
-- mapgen
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt",
"ethereal:grove_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.parsley,
spread = {x = 100, y = 100, z = 100},
seed = 23,
octaves = 3,
persist = 0.6
},
y_min = 10, y_max = 40,
decoration = "farming:parsley_3"
})
+110
View File
@@ -0,0 +1,110 @@
-- Textures for peas and their crop were done by Andrey01
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:pea_pod", {
description = S("Pea Pod"),
inventory_image = "farming_pea_pod.png",
groups = {compostability = 48, seed = 2, food_peas = 1, food_pea_pod = 1},
on_use = core.item_eat(1),
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
core.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
core.register_node("farming:pea_1", table.copy(def))
-- stage 2
def.tiles = {"farming_pea_2.png"}
core.register_node("farming:pea_2", table.copy(def))
-- stage 3
def.tiles = {"farming_pea_3.png"}
core.register_node("farming:pea_3", table.copy(def))
-- stage 4
def.tiles = {"farming_pea_4.png"}
core.register_node("farming:pea_4", table.copy(def))
-- stage 5 (final)
def.tiles = {"farming_pea_5.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:pea_pod 2"}, rarity = 1},
{items = {"farming:pea_pod"}, rarity = 2},
{items = {"farming:pea_pod"}, rarity = 3}
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.peas,
spread = {x = 100, y = 100, z = 100},
seed = 132,
octaves = 3,
persist = 0.6
},
y_min = 25, y_max = 55,
decoration = "farming:pea_5"
})
+173
View File
@@ -0,0 +1,173 @@
--[[
Original textures from Crops Plus mod
Copyright (C) 2018 Grizzly Adam
https://forum.core.net/viewtopic.php?f=9&t=19488
]]
local S = core.get_translator("farming")
-- seed
core.register_craftitem("farming:peppercorn", {
description = S("Peppercorn"),
inventory_image = "crops_peppercorn.png",
groups = {compostability = 48, seed = 1, food_peppercorn = 1, flammable = 3},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:pepper_1")
end
})
-- green pepper
core.register_craftitem("farming:pepper", {
description = S("Green Pepper"),
inventory_image = "crops_pepper.png",
on_use = core.item_eat(2),
groups = {food_pepper = 1, compostability = 55}
})
farming.add_eatable("farming:pepper", 2)
-- yellow pepper
core.register_craftitem("farming:pepper_yellow", {
description = S("Yellow Pepper"),
inventory_image = "crops_pepper_yellow.png",
on_use = core.item_eat(3),
groups = {food_pepper = 1, compostability = 55}
})
farming.add_eatable("farming:pepper_yellow", 3)
-- red pepper
core.register_craftitem("farming:pepper_red", {
description = S("Red Pepper"),
inventory_image = "crops_pepper_red.png",
on_use = core.item_eat(4),
groups = {food_pepper = 1, compostability = 55}
})
farming.add_eatable("farming:pepper_red", 4)
-- pepper to peppercorn recipe
core.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
core.register_node("farming:pepper_1", table.copy(def))
-- stage 2
def.tiles = {"crops_pepper_plant_2.png"}
core.register_node("farming:pepper_2", table.copy(def))
-- stage 3
def.tiles = {"crops_pepper_plant_3.png"}
core.register_node("farming:pepper_3", table.copy(def))
-- stage 4
def.tiles = {"crops_pepper_plant_4.png"}
core.register_node("farming:pepper_4", table.copy(def))
-- stage 5 (green pepper)
def.tiles = {"crops_pepper_plant_5.png"}
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:pepper 2"}, rarity = 1},
{items = {"farming:pepper"}, rarity = 2},
{items = {"farming:pepper"}, rarity = 3}
}
}
core.register_node("farming:pepper_5", table.copy(def))
-- stage 6 (yellow pepper)
def.tiles = {"crops_pepper_plant_6.png"}
def.drop = {
items = {
{items = {"farming:pepper_yellow 2"}, rarity = 1},
{items = {"farming:pepper_yellow"}, rarity = 2},
{items = {"farming:pepper_yellow"}, rarity = 3}
}
}
core.register_node("farming:pepper_6", table.copy(def))
-- stage 7 (red pepper - final)
def.tiles = {"crops_pepper_plant_7.png"}
def.groups.growing = nil
def.drop = {
items = {
{items = {"farming:pepper_red 2"}, rarity = 1},
{items = {"farming:pepper_red"}, rarity = 2},
{items = {"farming:pepper_red"}, rarity = 3}
}
}
core.register_node("farming:pepper_7", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:pepper"] = {
crop = "farming:pepper",
seed = "farming:peppercorn",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 5
}
-- mapgen
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "default:dirt_with_rainforest_litter",
"mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.pepper,
spread = {x = 100, y = 100, z = 100},
seed = 243,
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 35,
decoration = {"farming:pepper_5", "farming:pepper_6", "farming:pepper_7"},
spawn_by = "group:tree", num_spawn_by = 1
})
+143
View File
@@ -0,0 +1,143 @@
local S = core.get_translator("farming")
-- seed
core.register_craftitem("farming:pineapple_top", {
description = S("Pineapple Top"),
inventory_image = "farming_pineapple_top.png",
groups = {compostability = 48, seed = 2, flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:pineapple_1")
end
})
-- item
core.register_node("farming:pineapple", {
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
core.register_node("farming:pineapple_1", table.copy(def))
-- stage 2
def.tiles = {"farming_pineapple_2.png"}
core.register_node("farming:pineapple_2", table.copy(def))
-- stage 3
def.tiles = {"farming_pineapple_3.png"}
core.register_node("farming:pineapple_3", table.copy(def))
-- stage 4
def.tiles = {"farming_pineapple_4.png"}
core.register_node("farming:pineapple_4", table.copy(def))
-- stage 5
def.tiles = {"farming_pineapple_5.png"}
core.register_node("farming:pineapple_5", table.copy(def))
-- stage 6
def.tiles = {"farming_pineapple_6.png"}
core.register_node("farming:pineapple_6", table.copy(def))
-- stage 7
def.tiles = {"farming_pineapple_7.png"}
core.register_node("farming:pineapple_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_pineapple_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:pineapple"}, rarity = 1},
{items = {"farming:pineapple"}, rarity = 3}
}
}
core.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
local spawn_on = {
"default:dirt_with_dry_grass", "default:dry_dirt_with_dry_grass",
"mcl_core:dirt_with_grass"
}
if farming.mapgen == "v6" then
spawn_on = {"default:dirt_with_grass"}
end
core.register_decoration({
deco_type = "simple",
place_on = spawn_on,
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.pineapple,
spread = {x = 100, y = 100, z = 100},
seed = 354,
octaves = 3,
persist = 0.6
},
y_min = 11, y_max = 30,
decoration = "farming:pineapple_8"
})
+121
View File
@@ -0,0 +1,121 @@
--[[
Original textures from DocFarming mod
https://forum.core.net/viewtopic.php?id=3948
]]
local S = core.get_translator("farming")
-- item/seed
core.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 core.do_item_eat(-1, nil, itemstack, user, pointed_thing)
else
return core.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
core.register_node("farming:potato_1", table.copy(def))
-- stage 2
def.tiles = {"farming_potato_2.png"}
core.register_node("farming:potato_2", table.copy(def))
-- stage 3
def.tiles = {"farming_potato_3.png"}
def.drop = {
items = {
{items = {"farming:potato"}, rarity = 1},
{items = {"farming:potato"}, rarity = 3}
}
}
core.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"}, rarity = 2},
{items = {"farming:potato"}, rarity = 3}
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "default:dirt_with_rainforest_litter",
"mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.potato,
spread = {x = 100, y = 100, z = 100},
seed = 465,
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 40,
decoration = "farming:potato_3"
})
+129
View File
@@ -0,0 +1,129 @@
local S = core.get_translator("farming")
-- seed
core.register_craftitem("farming:pumpkin_slice", {
description = S("Pumpkin Slice"),
inventory_image = "farming_pumpkin_slice.png",
groups = {compostability = 48, seed = 2, food_pumpkin_slice = 1},
on_use = core.item_eat(2),
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
core.register_node("farming:pumpkin_1", table.copy(def))
-- stage 2
def.tiles = {"farming_pumpkin_2.png"}
core.register_node("farming:pumpkin_2", table.copy(def))
-- stage 3
def.tiles = {"farming_pumpkin_3.png"}
core.register_node("farming:pumpkin_3", table.copy(def))
-- stage 4
def.tiles = {"farming_pumpkin_4.png"}
core.register_node("farming:pumpkin_4", table.copy(def))
-- stage 5
def.tiles = {"farming_pumpkin_5.png"}
core.register_node("farming:pumpkin_5", table.copy(def))
-- stage 6
def.tiles = {"farming_pumpkin_6.png"}
core.register_node("farming:pumpkin_6", table.copy(def))
-- stage 7
def.tiles = {"farming_pumpkin_7.png"}
core.register_node("farming:pumpkin_7", table.copy(def))
-- stage 8 (final)
core.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 = core.rotate_node,
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "default:dirt_with_rainforest_litter",
"mcl_core:dirt_with_grass"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.pumpkin,
spread = {x = 100, y = 100, z = 100},
seed = 576,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 3,
decoration = "farming:pumpkin_8",
spawn_by = {"group:water", "group:sand"}, num_spawn_by = 1
})
+99
View File
@@ -0,0 +1,99 @@
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:raspberries", {
description = S("Raspberries"),
inventory_image = "farming_raspberries.png",
groups = {
compostability = 48, seed = 2, food_raspberries = 1, food_raspberry = 1,
food_berry = 1
},
on_use = core.item_eat(1),
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
core.register_node("farming:raspberry_1", table.copy(def))
-- stage 2
def.tiles = {"farming_raspberry_2.png"}
core.register_node("farming:raspberry_2", table.copy(def))
-- stage 3
def.tiles = {"farming_raspberry_3.png"}
core.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}
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.raspberry,
spread = {x = 100, y = 100, z = 100},
seed = 687,
octaves = 3,
persist = 0.6
},
y_min = 3, y_max = 15,
decoration = "farming:raspberry_4"
})
+105
View File
@@ -0,0 +1,105 @@
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:rhubarb", {
description = S("Rhubarb"),
inventory_image = "farming_rhubarb.png",
groups = {compostability = 48, seed = 2, food_rhubarb = 1},
on_use = core.item_eat(1),
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
core.register_node("farming:rhubarb_1", table.copy(def))
-- stage2
def.tiles = {"farming_rhubarb_2.png"}
core.register_node("farming:rhubarb_2", table.copy(def))
-- stage3
def.tiles = {"farming_rhubarb_3.png"}
def.drop = {
items = {
{items = {"farming:rhubarb"}, rarity = 1},
{items = {"farming:rhubarb"}, rarity = 3}
}
}
core.register_node("farming:rhubarb_3", table.copy(def))
-- 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}
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.rhubarb,
spread = {x = 100, y = 100, z = 100},
seed = 798,
octaves = 3,
persist = 0.6
},
y_min = 3, y_max = 20,
decoration = "farming:rhubarb_3"
})
+143
View File
@@ -0,0 +1,143 @@
local S = core.get_translator("farming")
-- rice seed
core.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)
core.set_node(pos, {name = "farming:rice_1", param2 = 3})
end
})
-- rice item
core.register_craftitem("farming:rice", {
description = S("Rice"),
inventory_image = "farming_rice.png",
groups = {seed = 2, food_rice = 1, flammable = 2, compostability = 65},
})
-- dry rice seed to give edible rice
core.register_craft({
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
core.register_node("farming:rice_1", table.copy(def))
-- stage 2
def.tiles = {"farming_rice_2.png"}
core.register_node("farming:rice_2", table.copy(def))
-- stage 3
def.tiles = {"farming_rice_3.png"}
core.register_node("farming:rice_3", table.copy(def))
-- stage 4
def.tiles = {"farming_rice_4.png"}
core.register_node("farming:rice_4", table.copy(def))
-- stage 5
def.tiles = {"farming_rice_5.png"}
core.register_node("farming:rice_5", table.copy(def))
-- stage 6
def.tiles = {"farming_rice_6.png"}
def.drop = {
items = {
{items = {"farming:seed_rice"}, rarity = 2}
}
}
core.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 = 3}
}
}
core.register_node("farming:rice_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_rice_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:seed_rice 2"}, rarity = 1},
{items = {"farming:seed_rice"}, rarity = 2},
{items = {"farming:seed_rice"}, rarity = 3},
{items = {"farming:seed_rice"}, rarity = 4}
}
}
core.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
}
+54
View File
@@ -0,0 +1,54 @@
local S = core.get_translator("farming")
--= A nice addition from Ademant's grain mod :)
-- Rye
farming.register_plant("farming:rye", {
description = S("Rye seed"),
paramtype2 = "meshoptions",
inventory_image = "farming_rye_seed.png",
steps = 8,
place_param2 = 3
})
-- override rye item
core.override_item("farming:rye", {
description = S("Rye"),
groups = {food_rye = 1, flammable = 4, compostability = 65}
})
-- override rye crop
core.override_item("farming:rye_1", {drop = {}})
core.override_item("farming:rye_2", {drop = {}})
core.override_item("farming:rye_3", {drop = {}})
core.override_item("farming:rye_4", {drop = {}})
core.override_item("farming:rye_5", {drop = {}})
-- Oats
farming.register_plant("farming:oat", {
description = S("Oat seed"),
paramtype2 = "meshoptions",
inventory_image = "farming_oat_seed.png",
steps = 8,
place_param2 = 3
})
-- override oat item
core.override_item("farming:oat", {
description = S("Oats"),
groups = {food_oats = 1, flammable = 4, compostability = 65}
})
-- override oat crop
core.override_item("farming:oat_1", {drop = {}})
core.override_item("farming:oat_2", {drop = {}})
core.override_item("farming:oat_3", {drop = {}})
core.override_item("farming:oat_4", {drop = {}})
core.override_item("farming:oat_5", {drop = {}})
+129
View File
@@ -0,0 +1,129 @@
local S = core.get_translator("farming")
-- item/seed
core.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
core.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
core.register_node("farming:soy_1", table.copy(def))
-- stage 2
def.tiles = {"farming_soy_2.png"}
core.register_node("farming:soy_2", table.copy(def))
-- stage 3
def.tiles = {"farming_soy_3.png"}
core.register_node("farming:soy_3", table.copy(def))
-- stage 4
def.tiles = {"farming_soy_4.png"}
core.register_node("farming:soy_4", table.copy(def))
-- stage 5
def.tiles = {"farming_soy_5.png"}
def.drop = {
items = {
{items = {"farming:soy_pod"}, rarity = 2}
}
}
core.register_node("farming:soy_5", table.copy(def))
-- stage 6
def.tiles = {"farming_soy_6.png"}
def.drop = {
items = {
{items = {"farming:soy_pod"}, rarity = 1},
{items = {"farming:soy_pod"}, rarity = 3}
}
}
core.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 = {
items = {
{items = {"farming:soy_pod 2"}, rarity = 1},
{items = {"farming:soy_pod"}, rarity = 2},
{items = {"farming:soy_pod"}, rarity = 3},
{items = {"farming:soy_pod"}, rarity = 4}
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "default:dirt_with_dry_grass",
"default:dirt_with_rainforest_litter", "default:dry_dirt_with_dry_grass",
"mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.soy,
spread = {x = 100, y = 100, z = 100},
seed = 809,
octaves = 3,
persist = 0.6
},
y_min = 20, y_max = 50,
decoration = "farming:soy_6"
})
+103
View File
@@ -0,0 +1,103 @@
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:spinach", {
description = S("Spinach"),
inventory_image = "farming_spinach.png",
groups = {compostability = 48, seed = 2, food_spinach = 1},
on_use = core.item_eat(1),
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
core.register_node("farming:spinach_1", table.copy(def))
-- stage 2
def.tiles = {"farming_spinach_2.png"}
core.register_node("farming:spinach_2", table.copy(def))
-- stage 3
def.tiles = {"farming_spinach_3.png"}
def.drop = {
items = {
{items = {"farming:spinach"}, rarity = 1},
{items = {"farming:spinach"}, rarity = 3}
}
}
core.register_node("farming:spinach_3", table.copy(def))
-- stage 4
def.tiles = {"farming_spinach_4.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:spinach 2"}, rarity = 1},
{items = {"farming:spinach"}, rarity = 2},
{items = {"farming:spinach"}, rarity = 3},
{items = {"farming:spinach"}, rarity = 4}
}
}
core.register_node("farming:spinach_4", table.copy(def))
-- add to registered_plants
farming.registered_plants["farming:spinach"] = {
crop = "farming:spinach",
seed = "farming:spinach",
minlight = farming.min_light,
maxlight = farming.max_light,
steps = 4
}
-- mapgen
core.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.spinach,
spread = {x = 100, y = 100, z = 100},
seed = 910,
octaves = 3,
persist = 0.6
},
y_min = 1, y_max = 100,
decoration = "farming:spinach_3",
param2 = 3
})
+127
View File
@@ -0,0 +1,127 @@
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem(":ethereal:strawberry", {
description = S("Strawberry"),
inventory_image = "ethereal_strawberry.png",
groups = {compostability = 48, seed = 2, food_strawberry = 1, food_berry = 1},
on_use = core.item_eat(1),
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
core.register_node(":ethereal:strawberry_1", table.copy(def))
-- stage 2
def.tiles = {"ethereal_strawberry_2.png"}
core.register_node(":ethereal:strawberry_2", table.copy(def))
-- stage 3
def.tiles = {"ethereal_strawberry_3.png"}
core.register_node(":ethereal:strawberry_3", table.copy(def))
-- stage 4
def.tiles = {"ethereal_strawberry_4.png"}
core.register_node(":ethereal:strawberry_4", table.copy(def))
-- stage 5
def.tiles = {"ethereal_strawberry_5.png"}
core.register_node(":ethereal:strawberry_5", table.copy(def))
-- stage 6
def.tiles = {"ethereal_strawberry_6.png"}
core.register_node(":ethereal:strawberry_6", table.copy(def))
-- stage 7
def.tiles = {"ethereal_strawberry_7.png"}
def.drop = {
items = {
{items = {"ethereal:strawberry"}, rarity = 1},
{items = {"ethereal:strawberry"}, rarity = 3}
}
}
core.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"}, rarity = 2},
{items = {"ethereal:strawberry"}, rarity = 3},
{items = {"ethereal:strawberry"}, rarity = 4},
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.strawberry,
spread = {x = 100, y = 100, z = 100},
seed = 143,
octaves = 3,
persist = 0.6
},
y_min = 15, y_max = 55,
decoration = "ethereal:strawberry_7"
})
+149
View File
@@ -0,0 +1,149 @@
local S = core.get_translator("farming")
-- seed
core.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)
core.set_node(pos, {name = "farming:sunflower_1", param2 = 1})
end
})
core.register_alias("farming:sunflower_seeds", "farming:seed_sunflower")
-- item
core.register_craftitem("farming:sunflower", {
description = S("Sunflower"),
inventory_image = "farming_sunflower.png",
groups = {flammable = 2}
})
-- turn item into seeds
core.register_craft({
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, minlight = 14,
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
core.register_node("farming:sunflower_1", table.copy(def))
-- stage 2
def.tiles = {"farming_sunflower_2.png"}
core.register_node("farming:sunflower_2", table.copy(def))
-- stage 3
def.tiles = {"farming_sunflower_3.png"}
core.register_node("farming:sunflower_3", table.copy(def))
-- stage 4
def.tiles = {"farming_sunflower_4.png"}
core.register_node("farming:sunflower_4", table.copy(def))
-- stage 5
def.tiles = {"farming_sunflower_5.png"}
core.register_node("farming:sunflower_5", table.copy(def))
-- stage 6
def.tiles = {"farming_sunflower_6.png"}
def.visual_scale = 1.9
core.register_node("farming:sunflower_6", table.copy(def))
-- stage 7
def.tiles = {"farming_sunflower_7.png"}
core.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}
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.sunflower,
spread = {x = 100, y = 100, z = 100},
seed = 254,
octaves = 3,
persist = 0.6
},
y_min = 10, y_max = 40,
decoration = "farming:sunflower_8"
})
+129
View File
@@ -0,0 +1,129 @@
--[[
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 = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:tomato", {
description = S("Tomato"),
inventory_image = "farming_tomato.png",
groups = {compostability = 45, seed = 2, food_tomato = 1},
on_use = core.item_eat(4),
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
core.register_node("farming:tomato_1", table.copy(def))
-- stage2
def.tiles = {"farming_tomato_2.png"}
core.register_node("farming:tomato_2", table.copy(def))
-- stage 3
def.tiles = {"farming_tomato_3.png"}
core.register_node("farming:tomato_3", table.copy(def))
-- stage 4
def.tiles = {"farming_tomato_4.png"}
core.register_node("farming:tomato_4", table.copy(def))
-- stage 5
def.tiles = {"farming_tomato_5.png"}
core.register_node("farming:tomato_5", table.copy(def))
-- stage 6
def.tiles = {"farming_tomato_6.png"}
core.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}
}
}
core.register_node("farming:tomato_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_tomato_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:tomato 2"}, rarity = 1},
{items = {"farming:tomato"}, rarity = 2},
{items = {"farming:tomato"}, rarity = 3},
{items = {"farming:tomato"}, rarity = 4}
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.tomato,
spread = {x = 100, y = 100, z = 100},
seed = 365,
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 25,
decoration = "farming:tomato_7"
})
+125
View File
@@ -0,0 +1,125 @@
local S = core.get_translator("farming")
-- item/seed
core.register_craftitem("farming:vanilla", {
description = S("Vanilla"),
inventory_image = "farming_vanilla.png",
groups = {compostability = 48, seed = 2, food_vanilla = 1},
on_use = core.item_eat(1),
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
core.register_node("farming:vanilla_1", table.copy(def))
-- stage 2
def.tiles = {"farming_vanilla_2.png"}
core.register_node("farming:vanilla_2", table.copy(def))
-- stage 3
def.tiles = {"farming_vanilla_3.png"}
core.register_node("farming:vanilla_3", table.copy(def))
-- stage 4
def.tiles = {"farming_vanilla_4.png"}
core.register_node("farming:vanilla_4", table.copy(def))
-- stage 5
def.tiles = {"farming_vanilla_5.png"}
core.register_node("farming:vanilla_5", table.copy(def))
-- stage 6
def.tiles = {"farming_vanilla_6.png"}
def.visual_scale = 1.9
core.register_node("farming:vanilla_6", table.copy(def))
-- stage 7
def.tiles = {"farming_vanilla_7.png"}
def.drop = {
items = {
{items = {"farming:vanilla"}, rarity = 1},
{items = {"farming:vanilla"}, rarity = 3}
}
}
core.register_node("farming:vanilla_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_vanilla_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:vanilla 2"}, rarity = 1},
{items = {"farming:vanilla"}, rarity = 2},
{items = {"farming:vanilla"}, rarity = 3},
{items = {"farming:vanilla"}, rarity = 4}
}
}
core.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
core.register_decoration({
deco_type = "simple",
place_on = {
"default:dirt_with_grass", "mcl_core:dirt_with_grass", "ethereal:grove_dirt"
},
sidelen = 16,
noise_params = {
offset = 0,
scale = farming.vanilla,
spread = {x = 100, y = 100, z = 100},
seed = 476,
octaves = 3,
persist = 0.6
},
y_min = 5, y_max = 35,
decoration = "farming:vanilla_7"
})
+134
View File
@@ -0,0 +1,134 @@
local S = core.get_translator("farming")
-- seed
core.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)
core.set_node(pos, {name = "farming:wheat_1", param2 = 3})
end
})
-- item
core.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
core.register_node("farming:wheat_1", table.copy(def))
-- stage 2
def.tiles = {"farming_wheat_2.png"}
core.register_node("farming:wheat_2", table.copy(def))
-- stage 3
def.tiles = {"farming_wheat_3.png"}
core.register_node("farming:wheat_3", table.copy(def))
-- stage 4
def.tiles = {"farming_wheat_4.png"}
core.register_node("farming:wheat_4", table.copy(def))
-- stage 5
def.tiles = {"farming_wheat_5.png"}
core.register_node("farming:wheat_5", table.copy(def))
-- stage 6
def.tiles = {"farming_wheat_6.png"}
def.drop = {
items = {
{items = {"farming:wheat"}, rarity = 2},
{items = {"farming:seed_wheat"}, rarity = 2}
}
}
core.register_node("farming:wheat_6", table.copy(def))
-- stage 7
def.tiles = {"farming_wheat_7.png"}
def.drop = {
items = {
{items = {"farming:wheat"}, rarity = 2},
{items = {"farming:seed_wheat"}, rarity = 1}
}
}
core.register_node("farming:wheat_7", table.copy(def))
-- stage 8 (final)
def.tiles = {"farming_wheat_8.png"}
def.groups.growing = nil
def.selection_box = farming.select_final
def.drop = {
items = {
{items = {"farming:wheat 2"}, rarity = 1},
{items = {"farming:wheat"}, rarity = 2},
{items = {"farming:seed_wheat 2"}, rarity = 1},
{items = {"farming:seed_wheat"}, rarity = 2}
}
}
core.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
}
+52
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
+76
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 core.registered_nodes["default:grass_1"] then
for i = 1, 5 do
core.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 core.registered_nodes["default:dry_grass_1"] then
for i = 1, 5 do
core.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 core.registered_nodes["default:junglegrass"] then
core.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 of the above seeds
if farming.mcl then
core.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
+423
View File
@@ -0,0 +1,423 @@
-- translation and mod check
local S = core.get_translator("farming")
local mod_tr = core.get_modpath("toolranks")
local mod_mcl = core.get_modpath("mcl_core")
-- Hoe registration function
function farming.register_hoe(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
def.description = def.description or S("Hoe")
def.inventory_image = def.inventory_image or "unknown_item.png"
def.max_uses = def.max_uses or 30
-- add hoe group
def.groups = def.groups or {}
def.groups.hoe = 1
-- Register the tool
core.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
local recipe = not mod_mcl and (def.recipe or def.material and {
{def.material, def.material}, {"", "group:stick"}, {"", "group:stick"} })
if recipe then
core.register_craft({output = name:sub(2), recipe = recipe})
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 pointing at the top of a dirt node
if pt.type == "node" and pt.above.y == pt.under.y + 1 then
local pname = user:get_player_name() or ""
local upos = pointed_thing.under
local under = core.get_node(upos)
local udef = core.registered_nodes[under.name] ; if not udef then return end
if core.is_protected(upos, pname) then
core.record_protection_violation(upos, pname) ; return
end
-- do we have space above and tillable dirt below
if core.get_node({x = upos.x, y = upos.y + 1, z = upos.z}).name ~= "air"
or udef.groups.soil ~= 1 then return end
-- mineclonia compatibility check before default soil check
if not mod_mcl and (not udef.soil or not udef.soil.wet or not udef.soil.dry) then
return
end
local new_dirt = mod_mcl and "mcl_farming:soil" or udef.soil.dry
-- turn the node into soil, mark hoe for wear and play sound
core.set_node(pt.under, {name = new_dirt}) ; is_used = true
core.sound_play("default_dig_crumbly", {pos = upos, 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
if is_used then -- add wear when used
-- creative 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
core.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"
})
core.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
core.override_item("farming:hoe_wood", {original_description = S("Wood Hoe"),
description = toolranks.create_description(S("Wood Hoe"))})
core.override_item("farming:hoe_stone", {original_description = S("Stone Hoe"),
description = toolranks.create_description(S("Stone Hoe"))})
core.override_item("farming:hoe_steel", {original_description = S("Steel Hoe"),
description = toolranks.create_description(S("Steel Hoe"))})
core.override_item("farming:hoe_bronze", {original_description = S("Bronze Hoe"),
description = toolranks.create_description(S("Bronze Hoe"))})
core.override_item("farming:hoe_mese", {original_description = S("Mese Hoe"),
description = toolranks.create_description(S("Mese Hoe"))})
core.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 core.is_protected(pos, player:get_player_name()) then
core.record_protection_violation(pos, player:get_player_name()) ; return
end
local r = 5 -- radius
-- remove flora (grass, flowers etc.)
local res = core.find_nodes_in_area(
{x = pos.x - r, y = pos.y - 1, z = pos.z - r},
{x = pos.x + r, y = pos.y + 1, z = pos.z + r}, {"group:flora", "group:grass",
"group:dry_grass", "default:dry_shrub", "farming:weed"})
for n = 1, #res do
core.remove_node(res[n])
end
-- replace dirt with tilled soil
res = core.find_nodes_in_area_under_air(
{x = pos.x - r, y = pos.y - 1, z = pos.z - r},
{x = pos.x + r, y = pos.y + 2, z = pos.z + r},
{"group:soil", "ethereal:dry_dirt"})
for n = 1, #res do
core.swap_node(res[n], {name = "farming:soil"})
end
end
-- throwable hoe bomb entity
core.register_entity("farming:hoebomb_entity", {
initial_properties = {
physical = true,
visual = "sprite",
visual_size = {x = 1.0, y = 1.0},
textures = {"farming_hoe_bomb.png"},
collisionbox = {-0.2,-0.2,-0.2,0.2,0.2,0.2}
},
on_step = function(self, dtime, moveresult)
if not self.player then
self.object:remove() ; return
end
if moveresult.collides then
local pos = vector.round(self.object:get_pos())
pos.y = pos.y - 1 ; hoe_area(pos, self.player)
self.object:remove()
end
end
})
-- actual throwing function
local function throw_potion(itemstack, player)
local pos = player:get_pos()
local obj = core.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
core.register_craftitem("farming:hoe_bomb", {
description = S("Hoe Bomb (use or throw on grassy areas to hoe land)"),
inventory_image = "farming_hoe_bomb.png",
groups = {flammable = 2, not_in_creative_inventory = 1},
on_use = function(itemstack, user, pointed_thing)
if pointed_thing.type == "node" then
hoe_area(pointed_thing.under, user)
else
throw_potion(itemstack, user)
end
if not farming.is_creative(user:get_player_name()) then
itemstack:take_item()
return itemstack
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"] = 1,
["farming:beanpole"] = 1
}
function farming.add_to_scythe_not_drops(item)
farming.scythe_not_drops[item] = 1
end
-- Mithril Scythe (special item)
core.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 punching entity/object
if pointed_thing.type == "object" then
pointed_thing.ref:punch(placer, 1, {full_punch_interval = 1.0})
return itemstack
end
if pointed_thing.type ~= "node" then return end
local pos = pointed_thing.under
local name = placer:get_player_name()
if core.is_protected(pos, name) then return end
local node = core.get_node(pos)
local def = core.registered_nodes[node.name]
if not def or not def.drop or not def.groups.plant then return end
local drops = core.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 apart from those on table above
for _, dropped_item in pairs(drops) do
if dropped_item and not farming.scythe_not_drops[dropped_item] then
local obj = core.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
core.sound_play("default_grass_footstep", {pos = pos}, true)
-- replace with seed or crop_1
local replace = mname .. ":" .. pname .. "1"
if core.registered_nodes[replace] then
local p2 = core.registered_nodes[replace].place_param2 or 1
core.set_node(pos, {name = replace, param2 = p2})
else
core.remove_node(pos)
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 core.get_modpath("moreores") then
core.register_craft({
output = "farming:scythe_mithril",
recipe = {
{"", "moreores:mithril_ingot", "moreores:mithril_ingot"},
{"moreores:mithril_ingot", "", "group:stick"},
{"", "", "group:stick"}
}
})
end
+816
View File
@@ -0,0 +1,816 @@
--[[
Farming Redo Mod by TenPlus1
NEW growing routine by prestidigitator
auto-refill by crabman77
]]
-- Translation support
local S = core.get_translator("farming")
-- global
farming = {
mod = "redo",
version = "20260426",
path = core.get_modpath("farming"),
select = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}},
select_final = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -2.5/16, 0.5}},
registered_plants = {},
min_light = 12, max_light = 15,
mapgen = core.get_mapgen_setting("mg_name"),
use_utensils = core.settings:get_bool("farming_use_utensils") ~= false,
mtg = core.get_modpath("default"),
eth = core.get_modpath("ethereal"),
mcl = core.get_modpath("mcl_core"),
mcl_hardness = 0.01,
translate = S
}
-- 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 = core.settings:get_bool("creative_mode")
function farming.is_creative(name)
return creative_mode_cache or core.check_player_privs(name, {creative = true})
end
-- stats, locals, settings, function helper
local statistics = dofile(farming.path .. "/statistics.lua")
local random, floor = math.random, math.floor
local time_speed = tonumber(core.settings:get("time_speed")) or 72
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 = core.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(core.settings:get("farming_stage_length")) or 200
local STAGE_LENGTH_DEV = STAGE_LENGTH_AVG / 6
-- quick start seed timer
function farming.start_seed_timer(pos)
local timer = core.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 = core.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 core.registered_nodes[node_name]
if not node_def or plant_stages[node_name] then
return plant_stages[node_name] -- no node or already in table
end
local is_growing = core.get_item_group(node_name, "growing") > 0
if not is_growing and not force_last then return nil end
local ns = is_growing and reg_plant_stages(plant_name, stage + 1, true)
local stages_left = (ns and { ns.name, unpack(ns.stages_left) }) or {}
local stages = {
plant_name = plant_name,
name = node_name,
stage = stage,
stages_left = stages_left
}
if #stages_left > 0 then
local next_name = plant_name .. "_" .. (stage + 1) -- next plant name
local old_constr = node_def.on_construct
local old_destr = node_def.on_destruct
core.override_item(node_name, {
next_plant = core.registered_nodes[next_name] and next_name,
on_construct = function(pos)
if old_constr then old_constr(pos) end
farming.handle_growth(pos)
end,
on_destruct = function(pos)
core.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
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 = core.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
-- are crops floodable?
local floodable = core.settings:get_bool("farming_floodable_crops")
-- register crops nodes, add timer functions and drop when flooded
core.after(0, function()
for node, node_def in pairs(core.registered_nodes) do
register_plant_node(node_def)
if floodable then
if core.get_item_group(node, "plant") >= 1
or core.get_item_group(node, "seed") >= 1 and not node_def.on_flood then
minetest.override_item(node, {
floodable = true,
on_flood = function(pos, oldnode, newnode)
core.dig_node(pos)
end
})
end
end
end
end)
-- Just in case a growing type or added node is missed (also catches existing
-- nodes added to map before timers were incorporated).
core.register_lbm({
label = "Start crop timer",
name = "farming:start_crop_timer",
nodenames = {"group:growing"},
run_at_every_load = false,
action = function(pos, node, dtime_s)
local timer = core.get_node_timer(pos)
if timer:is_started() then return end
farming.start_seed_timer(pos)
end
})
-- default check crop is on wet soil
farming.can_grow = function(pos)
local below = core.get_node({x = pos.x, y = pos.y -1, z = pos.z})
return core.get_item_group(below.name, "soil") >= 3
end
-- Plant timer function that grows plants under the right conditions.
function farming.plant_growth_timer(pos, elapsed, node_name)
local stages = plant_stages[node_name]
if not stages then return false end
local max_growth = #stages.stages_left
if max_growth <= 0 then return false end
local chk1 = core.registered_nodes[node_name].growth_check -- old
local chk2 = core.registered_nodes[node_name].can_grow -- new
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 = core.registered_nodes[node_name].minlight or farming.min_light
local MAX_LIGHT = core.registered_nodes[node_name].maxlight or farming.max_light
if max_growth == 1 or lambda < 2.0 then
local light = (core.get_node_light(light_pos) or 0)
if light < MIN_LIGHT or light > MAX_LIGHT then return true end
growth = 1
else
local night_light = core.get_node_light(light_pos, 0) or 0
local day_light = core.get_node_light(light_pos, 0.5) or 0
local night_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 core.registered_nodes[stages.stages_left[growth]] then
local p2 = core.registered_nodes[stages.stages_left[growth] ].place_param2 or 1
core.set_node(pos, {name = stages.stages_left[growth], param2 = p2})
else
return true
end
return growth ~= max_growth
end
-- Compatibility function for default farming mod, forces a growth step
function farming.grow_plant(pos, elapsed)
local node = core.get_node(pos)
local def = core.registered_nodes[node.name]
elapsed = elapsed or STAGE_LENGTH_AVG
farming.plant_growth_timer(pos, elapsed, node.name)
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 = core.get_node(pt.under)
local under_def = core.registered_nodes[under.name]
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
if placer and itemstack and under_def and under_def.on_rightclick then
return under_def.on_rightclick(pt.under, under, placer, itemstack, pt)
end
-- check if pointing at the top of the node
if pt.above.y ~= pt.under.y + 1 then return end
local above = core.get_node(pt.above)
local above_def = core.registered_nodes[above.name]
-- return if any of the nodes arent registered
if not under_def or not above_def then return end
-- can I replace above node, and am I pointing directly at soil
if not above_def.buildable_to
or core.get_item_group(under.name, "soil") < 2
or core.get_item_group(above.name, "plant") ~= 0 then return end
-- is player planting seed?
local name = placer and placer:get_player_name() or ""
-- if not protected then add node and remove 1 item from the itemstack
if not core.is_protected(pt.above, name) then
local p2 = core.registered_nodes[plantname].place_param2 or 1
local item_name = itemstack:get_name()
core.set_node(pt.above, {name = plantname, param2 = p2})
farming.start_seed_timer(pt.above)
core.sound_play("default_place_node", {pos = pt.above}, true)
core.log("action", string.format("%s planted %s at %s",
(placer and placer:is_player() and name or "A mod"),
item_name, core.pos_to_string(pt.above)
))
if placer and itemstack and not farming.is_creative(name) then
itemstack:take_item()
-- check for refill
if itemstack:get_count() == 0 then
core.after(0.2, farming.refill_plant, placer, item_name,
placer:get_wield_index())
end
end
return itemstack
end
end
-- Function to register plants (default farming compatibility)
function farming.register_plant(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 farming.min_light
def.maxlight = def.maxlight or farming.max_light
-- Register seed
core.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,
fertility = def.fertility or {},
place_param2 = 1, -- place seed flat
next_plant = mname .. ":" .. pname .. "_1",
on_timer = function(pos, elapsed)
local def = core.registered_nodes[mname .. ":" .. pname .. "_1"]
if def then
core.set_node(pos, {name = def.name, param2 = def.place_param2})
end
end,
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing,
mname .. ":seed_" .. pname)
end
})
-- Register harvest
core.register_craftitem(":" .. mname .. ":" .. pname, {
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)
core.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 = core.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, ftype)
local def = core.registered_items[item]
if def then
local groups = table.copy(def.groups) or {}
groups.eatable = hp ; groups.flammable = 2 ; groups.food = ftype or 2
core.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 core.get_modpath("default") then
dofile(farming.path .. "/soil.lua")
end
dofile(farming.path .. "/hoes.lua")
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 core.get_modpath("lucky_block") then
dofile(farming.path .. "/lucky_block.lua")
end
print("[MOD] Farming Redo loaded")
File diff suppressed because it is too large Load Diff
+126
View File
@@ -0,0 +1,126 @@
-- add group helper
local function add_groups(item, groups)
local def = core.registered_items[item]
if def then
local grps = table.copy(def.groups) or {}
for k, v in pairs(groups) do
grps[k] = v
end
core.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
+312
View File
@@ -0,0 +1,312 @@
local S = core.get_translator("farming")
-- water floorb
core.register_craftitem("farming:water_floorb", {
description = S("Water Floorb"),
inventory_image = "farming_water_floorb.png",
groups = {flammable = 1}
})
-- saucepan
core.register_craftitem("farming:saucepan", {
description = S("Saucepan"),
inventory_image = "farming_saucepan.png",
groups = {food_saucepan = 1, flammable = 2}
})
-- cooking pot
core.register_craftitem("farming:pot", {
description = S("Cooking Pot"),
inventory_image = "farming_pot.png",
groups = {food_pot = 1, flammable = 2}
})
-- baking tray
core.register_craftitem("farming:baking_tray", {
description = S("Baking Tray"),
inventory_image = "farming_baking_tray.png",
groups = {food_baking_tray = 1, flammable = 2}
})
-- skillet
core.register_craftitem("farming:skillet", {
description = S("Skillet"),
inventory_image = "farming_skillet.png",
groups = {food_skillet = 1, flammable = 2}
})
-- mortar & pestle
core.register_craftitem("farming:mortar_pestle", {
description = S("Mortar and Pestle"),
inventory_image = "farming_mortar_pestle.png",
groups = {food_mortar_pestle = 1, flammable = 2}
})
-- cutting board
core.register_craftitem("farming:cutting_board", {
description = S("Cutting Board"),
inventory_image = "farming_cutting_board.png",
groups = {food_cutting_board = 1, flammable = 2}
})
-- juicer
core.register_craftitem("farming:juicer", {
description = S("Juicer"),
inventory_image = "farming_juicer.png",
groups = {food_juicer = 1, flammable = 2}
})
-- glass mixing bowl
core.register_craftitem("farming:mixing_bowl", {
description = S("Glass Mixing Bowl"),
inventory_image = "farming_mixing_bowl.png",
groups = {food_mixing_bowl = 1, flammable = 2}
})
-- Ethanol (thanks to JKMurray for this idea)
core.register_node("farming:bottle_ethanol", {
description = S("Bottle of Ethanol"),
drawtype = "plantlike",
tiles = {"farming_bottle_ethanol.png"},
inventory_image = "farming_bottle_ethanol.png",
wield_image = "farming_bottle_ethanol.png",
paramtype = "light",
is_ground_content = false,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1, handy = 1},
sounds = farming.node_sound_glass_defaults()
})
-- straw
core.register_node("farming:straw", {
description = S("Straw"),
tiles = {"farming_straw.png"},
is_ground_content = false,
groups = {handy = 1, snappy = 3, flammable = 4, fall_damage_add_percent = -30},
sounds = farming.node_sound_leaves_defaults(),
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
-- weed
core.register_node("farming:weed", {
description = S("Weed"),
drawtype = "plantlike",
tiles = {"farming_weed.png"},
inventory_image = "farming_weed.png",
paramtype = "light",
paramtype2 = "meshoptions",
place_param2 = 2,
sunlight_propagates = true,
walkable = false,
buildable_to = true,
waving = 1,
selection_box = farming.select,
groups = {snappy = 3, flammable = 4, plant = 1, attached_node = 1},
_mcl_hardness = farming.mcl_hardness,
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults()
})
-- weed bale
core.register_node("farming:weed_bale", {
description = S("Weed Bale"),
tiles = {
"farming_weed_bale_top.png", "farming_weed_bale_top.png",
"farming_weed_bale_side.png"
},
paramtype2 = "facedir",
groups = {handy = 1, snappy = 3, flammable = 4, fall_damage_add_percent = -30},
sounds = farming.node_sound_leaves_defaults(),
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
-- hemp oil
core.register_node("farming:hemp_oil", {
description = S("Bottle of Hemp Oil"),
drawtype = "plantlike",
tiles = {"farming_hemp_oil.png"},
inventory_image = "farming_hemp_oil.png",
wield_image = "farming_hemp_oil.png",
paramtype = "light",
is_ground_content = false,
walkable = false,
selection_box = {
type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
},
groups = {
food_oil = 1, vessel = 1, dig_immediate = 3, attached_node = 1,
compostability = 45, handy = 1
},
sounds = farming.node_sound_glass_defaults()
})
-- hemp fibre
core.register_craftitem("farming:hemp_fibre", {
description = S("Hemp Fibre"),
inventory_image = "farming_hemp_fibre.png",
groups = {compostability = 55}
})
-- hemp block
core.register_node("farming:hemp_block", {
description = S("Hemp Block"),
tiles = {"farming_hemp_block.png"},
paramtype = "light",
groups = {
axey = 1, handy = 1, snappy = 2, oddly_breakable_by_hand = 1, flammable = 2,
compostability = 85
},
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults(),
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
-- hemp rope
core.register_node("farming:hemp_rope", {
description = S("Hemp Rope"),
walkable = false,
climbable = true,
sunlight_propagates = true,
paramtype = "light",
tiles = {"farming_hemp_rope.png"},
wield_image = "farming_hemp_rope.png",
inventory_image = "farming_hemp_rope.png",
drawtype = "plantlike",
groups = {
handy = 1, axey = 1, swordy = 1, flammable = 2, choppy = 3,
oddly_breakable_by_hand = 3, compostability = 55, rope = 1
},
is_ground_content = false,
sounds = farming.node_sound_leaves_defaults(),
selection_box = {
type = "fixed", fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}
},
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
--- Wooden scarecrow base
core.register_node("farming:scarecrow_bottom", {
description = S("Scarecrow Bottom"),
paramtype = "light",
sunlight_propagates = true,
paramtype2 = "facedir",
tiles = {"default_wood.png"},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-1/16, -8/16, -1/16, 1/16, 8/16, 1/16},
{-12/16, 4/16, -1/16, 12/16, 2/16, 1/16},
}
},
groups = {axey = 1, handy = 1, snappy = 3, flammable = 2},
is_ground_content = false,
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
--= Items we shouldn't add when using Mineclonia/VoxeLibre
if not farming.mcl then
-- Wooden bowl
core.register_craftitem("farming:bowl", {
description = S("Wooden Bowl"),
inventory_image = "farming_bowl.png",
groups = {food_bowl = 1, flammable = 2}
})
-- String
core.register_craftitem("farming:string", {
description = S("String"),
inventory_image = "farming_string.png",
groups = {flammable = 2}
})
-- Jack 'O Lantern
core.register_node("farming:jackolantern", {
description = S("Jack 'O Lantern (punch to turn on and off)"),
tiles = {
"farming_pumpkin_bottom.png^farming_pumpkin_top.png",
"farming_pumpkin_bottom.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png^farming_pumpkin_face_off.png"
},
paramtype2 = "facedir",
groups = {
handy = 1, snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2
},
is_ground_content = false,
sounds = farming.node_sound_wood_defaults(),
on_punch = function(pos, node, puncher)
local name = puncher:get_player_name() or ""
if core.is_protected(pos, name) then return end
node.name = "farming:jackolantern_on"
core.swap_node(pos, node)
end,
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
core.register_node("farming:jackolantern_on", {
tiles = {
"farming_pumpkin_bottom.png^farming_pumpkin_top.png",
"farming_pumpkin_bottom.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png",
"farming_pumpkin_side.png^farming_pumpkin_face_on.png"
},
light_source = core.LIGHT_MAX - 1,
paramtype2 = "facedir",
groups = {
handy = 1, snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2,
not_in_creative_inventory = 1
},
is_ground_content = false,
sounds = farming.node_sound_wood_defaults(),
drop = "farming:jackolantern",
on_punch = function(pos, node, puncher)
local name = puncher:get_player_name() or ""
if core.is_protected(pos, name) then return end
node.name = "farming:jackolantern"
core.swap_node(pos, node)
end,
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
end
File diff suppressed because it is too large Load Diff
+35
View File
@@ -0,0 +1,35 @@
-- check and register stairs
if core.global_exists("stairs") then
if stairs.mod and stairs.mod == "redo" then
stairs.register_all("straw", "farming:straw",
{snappy = 3, flammable = 4},
{"farming_straw.png"},
"Straw",
farming.node_sound_leaves_defaults())
stairs.register_all("hemp_block", "farming:hemp_block",
{snappy = 2, oddly_breakable_by_hand = 1, flammable = 2},
{"farming_hemp_block.png"},
"Hemp Block",
farming.node_sound_leaves_defaults())
else
stairs.register_stair_and_slab("straw", "farming:straw",
{snappy = 3, flammable = 4},
{"farming_straw.png"},
"Straw Stair",
"Straw Slab",
farming.node_sound_leaves_defaults())
stairs.register_stair_and_slab("hemp_block", "farming:hemp_block",
{snappy = 2, oddly_breakable_by_hand = 1, flammable = 2},
{"farming_hemp_block.png"},
"Hemp Block Stair",
"Hemp Block Slab",
farming.node_sound_leaves_defaults())
end
end
+246
View File
@@ -0,0 +1,246 @@
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 SkyBuilder1717 (CC BY-SA 4.0):
farming_mixing_bowl.png
farming_pot.png [edited]
farming_saucepan.png [edited]
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*
+189
View File
@@ -0,0 +1,189 @@
# textdomain: farming
Banana=Banan
Banana Leaves=Bananblade
Orange=Appelsin
Artichoke=Artiskok
Crop=Afgrøde
Asparagus=Asparges
Barley Seed=Bygkorn
Barley=Byg
Green Beans=Grønne bønner
Bean Pole (place on soil before planting beans)=Bønnestang (placer på jord før bønner plantes)
Beetroot=Rødbede
Blackberries=Brombær
Blackberry=Brombær
Wild Blueberries=Vilde blåbær
Blueberry=Blåbær
Cabbage=Kål
Carrot=Gulerod
Chili Pepper=Chili
Raw Cocoa Beans=Rå kakaobønner
Cocoa Beans=Kakaobønner
Coffee Beans=Kaffebønner
Coffee=Kaffe
Corn=Majs
Cotton Seed=Bomuldsfrø
Cotton=Bomuld
Wild Cotton=Vild bomuld
Cucumber=Agurk
Eggplant=Aubergine
Garlic clove=Hvidløgsfed
Garlic=Hvidløg
Ginger=Ingefær
Grapes=Druer
Trellis (place on soil before planting grapes)=Espalier (placer på jord før druer plantes)
Hemp Seed=Hampfrø
Hemp Leaf=Hampblad
Hemp=Hamp
Lettuce=Salat
Melon Slice=Melonskive
Melon=Melon
Mint Seeds=Myntefrø
Mint Leaf=Mynteblad
Mint=Mynte
Onion=Løg
Parsley=Persille
Pea Pod=Ærteskæl
Pea=Ært
Peppercorn=Peberkorn
Green Pepper=Grøn peberfrugt
Yellow Pepper=Gul peberfrugt
Red Pepper=Rød peberfrugt
Pepper=Peberfrugt
Pineapple Top=Ananas-top
Pineapple=Ananas
Potato=Kartoffel
Pumpkin Slice=Græskarstykke
Pumpkin=Græskar
Raspberries=Hindbær
Raspberry=Hindbær
Rhubarb=Rabarber
Rice Seed=Riskorn
Rice=Ris
Rye seed=Rugforn
Rye=Rug
Oat seed=Havrekorn
Oats=Havre
Soy Pod=Sojabælg
Soy=Soya
Spinach=Spinat
Strawberry=Jordbær
Sunflower Seeds=Solsikkefrø
Sunflower=Solsikke
Tomato=Tomat
Vanilla=Vanilje
Wheat Seed=Hvedekorn
Wheat=Hvede
Hoe=Hakke
Wooden Hoe=Træhakke
Stone Hoe=Stenhakke
Steel Hoe=Stålhakke
Bronze Hoe=Bronzehakke
Mese Hoe=Mesehakke
Diamond Hoe=Diamanthakke
Wood Hoe=Træhakke
Hoe Bomb (use or throw on grassy areas to hoe land)=Hakke-bombe (brug eller kast på græsarealer for at hakke jord)
Mithril Scythe (Use to harvest and replant crops)=Mithril-le (brug til at høste og genplante afgrøder)
Seed=Frø
Flour=Mel
Garlic Braid=Hvidløgsfletning
Corn on the Cob=Majskolbe
Popcorn=Popcorn
Cornstarch=Majsstivelse
Cup of Coffee=Kop kaffe
Bar of Dark Chocolate=Plade mørk chokolade
Chocolate Block=Chokoladeblok
Bowl of Chili=Chiliret
Chili Powder=Chilipulver
Carrot Juice=Gulerodssaft
Blueberry Pie=Blåbærkage
Blueberry Muffin=Blåbærmuffin
Tomato Soup=Tomatsuppe
Sliced Bread=Skåret brød
Toast=Ristet brød
Toast Sandwich=Toast
Glass of Water=Glas vand
Sugar Cube=Sukkertop
Caramel=Karamel
Salt=Salt
Salt crystal=Saltkrystal
Mayonnaise=Mayonnaise
Rose Water=Rosenvand
Turkish Delight=Tyrkisk delight
Garlic Bread=Hvidløgsbrød
Donut=Donut
Chocolate Donut=Chokoladedonut
Apple Donut=Æbledonut
Porridge=Grød
Jaffa Cake= Jaffakage
Apple Pie=Æblekage
Cactus Juice=Kaktussaft
Pasta=Pasta
Mac & Cheese=Macaroni med ost
Spaghetti=Spaghetti
Bibimbap=Bibimbap
Burger=Burger
Salad=Salat
Triple Berry Smoothie=Trebærsmoothie
Spanish Potatoes=Spanske kartofler
Potato omelette=Kartoflomelet
Paella=Paella
Vanilla Flan=Vaniljecreme
Vegan Cheese=Vegansk ost
Vegan Butter=Vegansk smør
Onigiri=Onigiri
Gyoza=Gyoza
Mochi=Mochi
Gingerbread Man=Peberkagemand
Mint Tea=Myntete
Onion Soup=Løgsuppe
Pea Soup=Ærtesuppe
Ground Pepper=Kværnet peber
Pineapple Ring=Ananasskive
Pineapple Juice=Ananassaft
Cucumber and Potato Salad=Agurk- og kartoflsalat
Pumpkin Dough=Græskardej
Pumpkin Bread=Græskarbrød
Raspberry Smoothie=Hindbærsmoothie
Rhubarb Pie=Rabarberkage
Rice Flour=Rismel
Rice Bread=Risbrød
Multigrain Flour=Flerkornsmel
Multigrain Bread=Flerkornsbrød
Soy Sauce=Sojasovs
Soy Milk=Soyamælk
Tofu=Tofu
Cooked Tofu=Tilberedt tofu
Toasted Sunflower Seeds=Ristede solsikkefrø
Bottle of Sunflower Oil=Flaske solsikkeolie
Sunflower Seed Bread=Solsikkefrøbrød
Vanilla Extract=Vaniljeekstrakt
Jerusalem Artichokes=Jordskokker
Bread=Brød
Cookie=Småkage
Golden Carrot=Gylden gulerod
Beetroot Soup=Rødbedesuppe
Sugar=Sukker
Baked Potato=Bagt kartoffel
Saucepan=Gryde
Cooking Pot=Kogegrej
Baking Tray=Bageplade
Skillet=Stegepande
Mortar and Pestle=Morter og stødder
Cutting Board=Skærebræt
Juicer=Juicer
Glass Mixing Bowl=Glasskål
Bottle of Ethanol=Flaske ethanol
Straw=Strå
Bottle of Hemp Oil=Flaske hampolie
Hemp Fibre=Hampfiber
Hemp Block=Hampblok
Hemp Rope=Hampreb
Scarecrow Bottom=Fugleskræmselsunderskab
Wooden Bowl=Træskål
String=Snor
Jack 'O Lantern (punch to turn on and off)=Halloween-græskar (bank for at tænde/slukke)
Savanna Soil=Savannejord
Wet Savanna Soil=Fugtig savannejord
Soil=Jord
Wet Soil=Fugtig jord
+189
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
+186
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=
+176
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
+177
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
+177
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'avoine
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
+186
View File
@@ -0,0 +1,186 @@
# textdomain: farming
Crop= Termény
Artichoke=Articsóka
Asparagus=Spárga
Barley Seed=Árpamag
Barley=Árpa
Green Beans=Zöldbab
Bean Pole (place on soil before planting beans)=Karó babhoz (szúrd a földbe és oda vess babot)
Beetroot=Cékla
Beetroot Soup=Céklaleves
Blackberry=Szeder
Blackberries=Szedrek
Wild Blueberries=Vadáfonya
Blueberry=Áfonya
Blueberry Muffin=Áfonyamuffin
Blueberry Pie=Áfonyatorta
Cabbage=Káposzta
Carrot=Répa
Carrot Juice=Répalé
Golden Carrot=Aranyrépa
Chili Pepper=Chilipaprika
Bowl of Chili=Chilis tál
Chili Powder=Chilipor
Raw Cocoa Beans=Nyers kakaóbab
Cocoa Beans=Kakaóbab
Cookie=Süti
Bar of Dark Chocolate=Étcsoki rúd
Chocolate Block=Csokoládé tömb
Coffee=Kávé
Coffee Beans=Kávébab
Cup of Coffee=Csésze kávé
Banana=Banán
Banana Leaves=Banánlevél
Orange=Narancs
Corn=Kukorica
Corn on the Cob=Főtt kukorica
Popcorn=Pattogatott kukorica
Cornstarch=Keményítő
Bottle of Ethanol=Üveg etanol
Wild Cotton=Vadgyapot
Cotton Seed=Gyapotmag
Cotton=Gyapot
String=Madzag
Cucumber=Uborka
Eggplant=Padlizsán
Glass of Water=Pohár víz
Sugar=Cukor
Sugar Cube=Kockacukor
Caramel=Karamell
Salt=Só
Mayonnaise=Majonéz
Rose Water=Rózsavíz
Turkish Delight=Török desszert
Garlic Bread=Fokhagymás kenyér
Donut=Fánk
Chocolate Donut=Csokis fánk
Apple Donut=Almás fánk
Porridge=Zabkása
Jaffa Cake=Jaffatorta
Apple Pie=Almáspite
Cactus Juice=Kaktuszlé
Pasta=Tészta
Mac & Cheese=Sajtos makaróni
Spaghetti=Spagetti
Bibimbap=Bibimbap
Burger=Burger
Salad=Saláta
Triple Berry Smoothie=Hárombogyós turmix
Spanish Potatoes=Tepsis krumpli
Potato omelet=Krumplis rántotta
Paella=Paella
Vanilla Flan=Vaníliás gyümölcstorta
Vegan Cheese=Vegán sajt
Onigiri=Onigiri
Gyoza=Gyoza
Mochi=Mochi
Gingerbread Man=Mézeskalács-emberke
Garlic clove=Fokhagymagerezd
Garlic=Fokhagyma
Garlic Braid=Fokhagymafüzér
Ginger=Gyömbér
Grapes=Szőlő
Trellis (place on soil before planting grapes)=Karó szőlőhöz (szúrd a földbe és oda vess szőlőt)
Hemp=Kender
Hemp Seed=Kendermag
Hemp Leaf=Kenderlevél
Bottle of Hemp Oil=Üveg kenderolaj
Hemp Fibre=Kenderrost
Hemp Block=Kender tömb
Hemp Rope=Kenderkötél
Hoe=Kapa
Wooden Hoe=Fakapa
Stone Hoe=Kőkapa
Steel Hoe=Acélkapa
Bronze Hoe=Bronzkapa
Mese Hoe=Mesekapa
Diamond Hoe=Gyémántkapa
Wood Hoe=Fakapa (2)
Hoe Bomb (use or throw on grassy areas to hoe land)=Kapabomba (használd vagy dobd füves területre a föld felkapálásához)
Mithril Scythe (Use to harvest and replant crops)=Mithrilkasza (használd termények begyűjtéséhez és újravetéséhez)
Seed=Mag
Lettuce=Saláta
Melon Slice=Dinnyeszelet
Melon=Dinnye
Mint=Menta
Mint Seeds=Mentamag
Mint Leaf=Mentalevél
Mint Tea=Mentatea
Onion=Hagyma
Onion Soup=Hagymaleves
Parsley=Petrezselyem
Pea=Borsó
Pea Pod=Hüvelyes borsó
Pea Soup=Borsóleves
Pepper=Bors
Peppercorn=Borsszemek
Green Pepper=Zöldpaprika
Yellow Pepper=Sárga paprika
Red Pepper=Pirospaprika
Ground Pepper=Őrölt bors
Pineapple Top=Ananászüstök
Pineapple=Ananász
Pineapple Ring=Ananász szelet
Pineapple Juice=Ananászlé
Potato=Krumpli
Baked Potato=Sült krumpli
Cucumber and Potato Salad=Uborkás krumplisaláta
Pumpkin Slice=Tök szelet
Jack 'O Lantern (punch to turn on and off)=Töklámpás (ütéssel kapcsold ki és be)
Scarecrow Bottom=Madárijesztő alja
Pumpkin Bread=Tökkenyér
Pumpkin Dough=Töktészta
Pumpkin=Tök
Raspberry=Málna
Raspberries=Málnák
Raspberry Smoothie=Málnaturmix
Rhubarb=Rebarbara
Rhubarb Pie=Rebarbaratorta
Rice Seed=Rizsmag
Rice=Rizs
Rice Bread=Rizskenyér
Rice Flour=Rizsliszt
Rye seed=Rozsmag
Rye=Rozs
Oat seed=Zabmag
Oats=Zab
Multigrain Flour=Vegyesliszt
Multigrain Bread=Vegyesliszt-kenyér
Savanna Soil=Szavannatalaj
Wet Savanna Soil=Nedves szavannatalaj
Soil=Talaj
Wet Soil=Nedves talaj
Soy=Szója
Soy Pod=Hüvelyes szója
Soy Sauce=Szójaszósz
Soy Milk=Szójatej
Tofu=Tofu
Cooked Tofu=Főtt tofu
Spinach=Spenót
Strawberry=Eper
Sunflower=Napraforgó
Sunflower Seeds=Napraforgómag
Toasted Sunflower Seeds=Pirított napraforgómag
Bottle of Sunflower Oil=Üveg napraforgó-olaj
Sunflower Seed Bread=Napraforgómagos kenyér
Tomato=Paradicsom
Tomato Soup=Paradicsomleves
Wooden Bowl=Fatál
Saucepan=Szószostál
Cooking Pot=Főzőedény
Baking Tray=Sütőtál
Skillet=Serpenyő
Mortar and Pestle=Mozsár és zúzó
Cutting Board=Vágódeszka
Juicer=Facsaró
Glass Mixing Bowl=Üver keverőedény
Vanilla=Vanília
Vanilla Extract=Vaníliakivonat
Wheat Seed=Búzamag
Wheat=Búza
Straw=Szalma
Flour=Liszt
Bread=Kenyér
Sliced Bread=Szeletelt kenyér
Toast=Pirítós
Toast Sandwich=Pirítósszendvics
+176
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
+186
View File
@@ -0,0 +1,186 @@
# textdomain: farming
Crop=Roślina
Artichoke=Karczhoch
Asparagus=Szparag
Barley Seed=Nasiona Jęczmienia
Barley=Jęczmień
Green Beans=Fasola
Bean Pole (place on soil before planting beans)=Tyczka Fasolowa (postaw na glebie prrzed zasadzeniem fasoli)
Beetroot=Burak
Beetroot Soup=Barszcz
Blackberry=Jeżyna
Blackberries=Jeżyny
Wild Blueberries=Dzikie borówki
Blueberry=Borówka
Blueberry Muffin=Muffinka Borówkowa
Blueberry Pie=Ciasto Borówkowe
Cabbage=Kapusta
Carrot=Marchewka
Carrot Juice=Sok Marchewkowy
Golden Carrot=Złota Marchewka
Chili Pepper=Papryka Chili
Bowl of Chili=Miska Chili
Chili Powder=Chili W Proszku
Raw Cocoa Beans=Surowe Ziarna Kakao
Cocoa Beans=Ziarna Kakao
Cookie=Ciastko
Bar of Dark Chocolate=Tabliczka Czarnej Czekolady
Chocolate Block=Blok Czekolady
Coffee=Kawa
Coffee Beans=Ziarna Kawy
Cup of Coffee=Filiżanka Kawy
Banana=Banan
Banana Leaves=Liście Bananowca
Orange=Pomarańcza
Corn=Kukurydza
Corn on the Cob=Pieczona Kukurydza
Popcorn=Popcorn
Cornstarch=Skrobia Kukurydziana
Bottle of Ethanol=Butelka Etanolu
Wild Cotton=Dzika Bawełna
Cotton Seed=Nasiona Bawełny
Cotton=Bawełna
String=Nić
Cucumber=Ogórek
Eggplant=Bakłażan
Glass of Water=Szklanka wody
Sugar=Cukier
Sugar Cube=Kostka Cukru
Caramel=Karmel
Salt=Sól
Mayonnaise=Majonez
Rose Water=Woda różana
Turkish Delight=Rachatłukum
Garlic Bread=Chleb Czosnkowy
Donut=Pączek
Chocolate Donut=Czekoladowy Pączek
Apple Donut=Jabłkowy Pączek
Porridge=Owsianka
Jaffa Cake=Ciastko Z Dżemem Pomarańczowym
Apple Pie=Ciasto Jabłkowe
Cactus Juice=Sok Kaktusowy
Pasta=Makaron
Mac & Cheese=Makaron Z Serem
Spaghetti=Spaghetti
Bibimbap=Bibimbap
Burger=Burger
Salad=Sałatka
Triple Berry Smoothie=Koktajl Jagodowy
Spanish Potatoes=Ziemniaki Po Hiszpańsku
Potato omelet=Omlet Z Ziemniakami
Paella=Paella
Vanilla Flan=Flan Waniliowy
Vegan Cheese=Wegański Ser
Onigiri=Onigiri
Gyoza=Gyoza
Mochi=Mochi
Gingerbread Man=Piernikowy Ludzik
Garlic clove=Ząbek Czosnku
Garlic=Czosnek
Garlic Braid=Warkocz Czosnku
Ginger=Imbir
Grapes=Winogrona
Trellis (place on soil before planting grapes)=Trelaż (postaw na glebie przed posadzeniem winogron)
Hemp=Konopia
Hemp Seed=Nasiono Konopii
Hemp Leaf=Liść Konopii
Bottle of Hemp Oil=Butelka Oleju Konopnego
Hemp Fibre=Włókno Konopne
Hemp Block=Blok Konopii
Hemp Rope=Lina Konopna
Hoe=Motyka
Wooden Hoe=Drewniana Motyka
Stone Hoe=Kamienna Motyka
Steel Hoe=Stalowa Motyka
Bronze Hoe=Brązowa Motyka
Mese Hoe=Mesowa Motyka
Diamond Hoe=Diamentowa Motyka
Wood Hoe=Drewniana Motyka
Hoe Bomb (use or throw on grassy areas to hoe land)=Motykowa Bomba (użyj lub rzuć na trawie, aby spulchniać glebę)
Mithril Scythe (Use to harvest and replant crops)=Mithrilowa Kosa (Użyj, aby zbierać i na nowo siać rośliny)
Seed=Nasiono
Lettuce=Sałata
Melon Slice=Kawałek Arbuza
Melon=Arbuz
Mint=Mięta
Mint Seeds=Nasiona Mięty
Mint Leaf=Liść Mięty
Mint Tea=Liść Herbaty
Onion=Cebula
Onion Soup=Zupa Cebulowa
Parsley=Pietruszka
Pea=Groszek
Pea Pod=Strąk Groszku
Pea Soup=Zupa Crochowa
Pepper=Papryka
Peppercorn=Ziarna Pieprzu
Green Pepper=Zielona Papryka
Yellow Pepper=Zółta Papryka
Red Pepper=Czerwona Papryka
Ground Pepper=Pieprz Mielony
Pineapple Top=Piętka Ananasa
Pineapple=Ananas
Pineapple Ring=Kawałek Ananasa
Pineapple Juice=Sok Ananasowy
Potato=Ziemniak
Baked Potato=Pieczony Ziemniak
Cucumber and Potato Salad=Sałatka Ziemniaczana
Pumpkin Slice=Kawałek Dyni
Jack 'O Lantern (punch to turn on and off)= Latarnia Z Dyni (uderz, aby włączyć lub wyłączyć)
Scarecrow Bottom=tułów Stracha Na Wróble
Pumpkin Bread=Chleb Dyniowy
Pumpkin Dough=Ciasto Dyniowe
Pumpkin=Dynia
Raspberry=Malina
Raspberries=Maliny
Raspberry Smoothie=Koktajl Malinowy
Rhubarb=Rabarbar
Rhubarb Pie=Cisto Rabarbarowe
Rice Seed=Nasiona Ryżu
Rice=Ryż
Rice Bread=Chleb Ryżowy
Rice Flour=Mąka Ryżowa
Rye seed=Nasiona Żyta
Rye=Żyto
Oat seed=Nasiona Owsa
Oats=Owies
Multigrain Flour=Mąka Wielozbożowa
Multigrain Bread=Chleb Wielozbożowy
Savanna Soil=Sawannowa Gleba
Wet Savanna Soil=Wilgotna Sawannowa Gleba
Soil=Gleba
Wet Soil=Wilgotna Gleba
Soy=Soja
Soy Pod=Strąk Soi
Soy Sauce=Sos Sojowy
Soy Milk=Mleko Sojowe
Tofu=Tofu
Cooked Tofu=Pieczone Tofu
Spinach=Szpinak
Strawberry=Truskawka
Sunflower=Słonecznik
Sunflower Seeds=Ziarna Słonecznika
Toasted Sunflower Seeds=Piecone Nasiona Słonecznika
Bottle of Sunflower Oil=Butelka Oleju Słonecznikowego
Sunflower Seed Bread=Chleb Z Ziarnami Słonecznika
Tomato=Pomidor
Tomato Soup=Zupa Pomidorowa
Wooden Bowl=Drewniana Miska
Saucepan=Patelnia
Cooking Pot=Garnek
Baking Tray=Blacha Do Pieczenia
Skillet=Rondel
Mortar and Pestle=Moździerz I Tłuczek
Cutting Board=Deska Do Krojenia
Juicer=Wyciskarka Do Soku
Glass Mixing Bowl=Miska Do Mieszania
Vanilla=Wanilia
Vanilla Extract=Ekstrakt Z Wanilii
Wheat Seed=Nasiono Pszenicy
Wheat=Pszenica
Straw=Siano
Flour=Mąka
Bread=Chleb
Sliced Bread=Kromka Chleba
Toast=Tost
Toast Sandwich=Kanapka Tostowa
+176
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=
+186
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=Сэндвич
+193
View File
@@ -0,0 +1,193 @@
# textdomain: farming
Crop=植株
Artichoke=洋蓟
Asparagus=芦笋
Barley Seed=大麦种子
Barley=大麦
Green Beans=青豆
Bean Pole (place on soil before planting beans)=豆杆(种豆前先放在土上)
Beetroot=甜菜根
Beetroot Soup=甜菜根汤
Blackberry=黑莓
Blackberries=黑莓
Blueberry=蓝莓
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=咖啡
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=土豆煎蛋饼
Potato omelette=土豆煎蛋饼
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=三明治面包
Salt crystal=盐晶
Vegan Butter=植物黄油
# Jerusalem Artichoke(洋姜) is an ingredient, but in the game it refers to a dish.
Jerusalem Artichokes=
Weed=杂草
Weed Bale=杂草捆
+176
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=三明治麵包
+125
View File
@@ -0,0 +1,125 @@
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")},
}},
{"sch", "instafarm", 0, true, {
{"farming:wheat_8", "farming:parsley_3"},
{"farming:cotton_8", "farming:mint_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:soy_7"},
{"farming:cotton_8", "farming:ginger_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:river_water_source")},
}},
{"nod", "default:chest", 0, {
{name = (mcl and "mcl_farming:wheat_seeds" or "farming:seed_wheat"), max = 15},
{name = "farming:seed_barley", max = 15},
{name = "farming:seed_hemp", max = 15},
{name = "farming:seed_rye", max = 15},
{name = "farming:seed_rice", max = 15},
{name = "farming:seed_oat", max = 15},
{name = "farming:soil_wet", max = 10},
{name = "farming:cotton_wild", max = 5},
{name = "farming:grapebush", max = 5},
{name = "farming:asparagus", max = 7}
}},
{"dro", {"farming:chili_powder"}, 5},
{"dro", {"farming:weed"}, 9},
})
+4
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

+8
View File
@@ -0,0 +1,8 @@
# 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
farming_disable_weeds (Disable Weed growth) bool false
farming_floodable_crops (Crops will drop when flooded) bool false
+218
View File
@@ -0,0 +1,218 @@
local S = core.get_translator("farming")
local get_node = core.get_node
-- default dry soil node
local dry_soil = "farming:soil"
-- add soil types to existing dirt blocks
core.override_item("default:dirt", {
soil = {
base = "default:dirt", dry = "farming:soil", wet = "farming:soil_wet"
}
})
core.override_item("default:dirt_with_grass", {
soil = {
base = "default:dirt_with_grass", dry = "farming:soil", wet = "farming:soil_wet"
}
})
if core.registered_nodes["default:dirt_with_dry_grass"] then
core.override_item("default:dirt_with_dry_grass", {
soil = {
base = "default:dirt_with_dry_grass", dry = "farming:soil",
wet = "farming:soil_wet"
}
})
end
core.override_item("default:dirt_with_rainforest_litter", {
soil = {
base = "default:dirt_with_rainforest_litter", dry = "farming:soil",
wet = "farming:soil_wet"
}
})
if core.registered_nodes["default:dirt_with_coniferous_litter"] then
core.override_item("default:dirt_with_coniferous_litter", {
soil = {
base = "default:dirt_with_coniferous_litter", dry = "farming:soil",
wet = "farming:soil_wet"
}
})
end
-- savanna soil
if core.registered_nodes["default:dry_dirt"] then
core.override_item("default:dry_dirt", {
soil = {
base = "default:dry_dirt", dry = "farming:dry_soil",
wet = "farming:dry_soil_wet"
}
})
core.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"
}
})
core.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"
}
})
core.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
core.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
core.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
core.register_alias("farming:desert_sand_soil", dry_soil)
core.register_alias("farming:desert_sand_soil_wet", dry_soil .. "_wet")
-- if water near soil then change to wet soil
core.register_abm({
label = "Soil changes",
nodenames = {"group:field"},
interval = 15,
chance = 4,
catch_up = false,
action = function(pos, node)
local ndef = core.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
local nn = get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name
-- what's on top of soil, if solid/not plant change soil to dirt
if core.registered_nodes[nn]
and core.registered_nodes[nn].walkable
and core.get_item_group(nn, "plant") == 0
and core.get_item_group(nn, "growing") == 0 then
core.set_node(pos, {name = ndef.soil.base}) ; return
end
-- check if water is within 3 nodes
if core.find_node_near(pos, 3, {"group:water"}) then
-- only change if it's not already wet soil
if node.name ~= ndef.soil.wet then
core.set_node(pos, {name = ndef.soil.wet})
end
-- only dry out soil if no unloaded blocks nearby, just incase
elseif not core.find_node_near(pos, 3, {"ignore"}) then
if node.name == ndef.soil.wet then
core.set_node(pos, {name = ndef.soil.dry})
-- if crop or seed found don't turn into base soil
elseif node.name == ndef.soil.dry
and core.get_item_group(nn, "plant") == 0
and core.get_item_group(nn, "growing") == 0 then
core.set_node(pos, {name = ndef.soil.base})
end
end
end
})
-- those darn weeds
if core.settings:get_bool("farming_disable_weeds") ~= true then
core.register_abm({
nodenames = {"group:field"},
neighbors = {"air"},
interval = 50,
chance = 70,
catch_up = false,
action = function(pos, node)
if core.find_node_near(pos, 8, {"farming:scarecrow_bottom"}) then
return
end
pos.y = pos.y + 1
if core.get_node(pos).name == "air" then
core.set_node(pos, {name = "farming:weed", param2 = 10})
end
end
})
end
+163
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

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