diff --git a/README.md b/README.md index 712dd62..ec4143e 100644 --- a/README.md +++ b/README.md @@ -217,6 +217,7 @@ on an older map are enabled and growing properly. ### Changelog: +- 1.49 - Added {eatable=1} groups to food items with the value giving HP when eaten, improved mineclone support, separated foods from crop files., hoes can deal damage. - 1.48 - added 'farming_use_utensils' setting to enable/disable utensils in recipes, added mayonnaise (thx felfa), added gingerbread man, Added MineClone2 compatibility - 1.47 - Now blueberries can make blue dye, tweak soil types to work better with older 0.4.x clients and add spanish translation (thx mckaygerhard), add trellis setting to registered_crops and fix pea and soy crop names (thx nixnoxus), add strawberries if ethereal mod not active, added asparagus; spinach; eggplant (thx Atlante for new textures), Sugar Cube - 1.46 - Added min/max default light settings, added lettuce and blackberries with food items (thanks OgelGames), added soya, vanilla and sunflowers (thanks Felfa), added tofu, added salt crystals (thanks gorlock) diff --git a/textures/farming_banana_leaf.png b/alt_textures/ethereal_banana_leaf_32px.png similarity index 100% rename from textures/farming_banana_leaf.png rename to alt_textures/ethereal_banana_leaf_32px.png diff --git a/alt_textures/ethereal_strawberry.png b/alt_textures/ethereal_strawberry.png new file mode 100644 index 0000000..5b43e6b Binary files /dev/null and b/alt_textures/ethereal_strawberry.png differ diff --git a/alt_textures/ethereal_strawberry_1.png b/alt_textures/ethereal_strawberry_1.png new file mode 100644 index 0000000..3fa21ed Binary files /dev/null and b/alt_textures/ethereal_strawberry_1.png differ diff --git a/alt_textures/ethereal_strawberry_2.png b/alt_textures/ethereal_strawberry_2.png new file mode 100644 index 0000000..751115e Binary files /dev/null and b/alt_textures/ethereal_strawberry_2.png differ diff --git a/alt_textures/ethereal_strawberry_3.png b/alt_textures/ethereal_strawberry_3.png new file mode 100644 index 0000000..8b7a7b8 Binary files /dev/null and b/alt_textures/ethereal_strawberry_3.png differ diff --git a/alt_textures/ethereal_strawberry_4.png b/alt_textures/ethereal_strawberry_4.png new file mode 100644 index 0000000..dcf0017 Binary files /dev/null and b/alt_textures/ethereal_strawberry_4.png differ diff --git a/alt_textures/ethereal_strawberry_5.png b/alt_textures/ethereal_strawberry_5.png new file mode 100644 index 0000000..a2decaa Binary files /dev/null and b/alt_textures/ethereal_strawberry_5.png differ diff --git a/alt_textures/ethereal_strawberry_6.png b/alt_textures/ethereal_strawberry_6.png new file mode 100644 index 0000000..a4d0d60 Binary files /dev/null and b/alt_textures/ethereal_strawberry_6.png differ diff --git a/alt_textures/ethereal_strawberry_7.png b/alt_textures/ethereal_strawberry_7.png new file mode 100644 index 0000000..ace223c Binary files /dev/null and b/alt_textures/ethereal_strawberry_7.png differ diff --git a/alt_textures/ethereal_strawberry_8.png b/alt_textures/ethereal_strawberry_8.png new file mode 100644 index 0000000..6d7280b Binary files /dev/null and b/alt_textures/ethereal_strawberry_8.png differ diff --git a/alt_textures/farming_burger_32px.png b/alt_textures/farming_burger_32px.png new file mode 100644 index 0000000..43ab6d4 Binary files /dev/null and b/alt_textures/farming_burger_32px.png differ diff --git a/alt_textures/farming_mayo_32px.png b/alt_textures/farming_mayo_32px.png new file mode 100644 index 0000000..c8e773b Binary files /dev/null and b/alt_textures/farming_mayo_32px.png differ diff --git a/alt_textures/farming_paella_32px.png b/alt_textures/farming_paella_32px.png new file mode 100644 index 0000000..1362ac7 Binary files /dev/null and b/alt_textures/farming_paella_32px.png differ diff --git a/alt_textures/farming_popcorn_32px.png b/alt_textures/farming_popcorn_32px.png new file mode 100644 index 0000000..846399e Binary files /dev/null and b/alt_textures/farming_popcorn_32px.png differ diff --git a/alt_textures/farming_potato_omelet_32px.png b/alt_textures/farming_potato_omelet_32px.png new file mode 100644 index 0000000..abdacad Binary files /dev/null and b/alt_textures/farming_potato_omelet_32px.png differ diff --git a/alt_textures/farming_potato_salad_32px.png b/alt_textures/farming_potato_salad_32px.png new file mode 100644 index 0000000..0028c91 Binary files /dev/null and b/alt_textures/farming_potato_salad_32px.png differ diff --git a/alt_textures/farming_spaghetti_24px.png b/alt_textures/farming_spaghetti_24px.png new file mode 100644 index 0000000..a401281 Binary files /dev/null and b/alt_textures/farming_spaghetti_24px.png differ diff --git a/alt_textures/farming_spanish_potatoes_32px.png b/alt_textures/farming_spanish_potatoes_32px.png new file mode 100644 index 0000000..198b50e Binary files /dev/null and b/alt_textures/farming_spanish_potatoes_32px.png differ diff --git a/alt_textures/farming_sunflower_32px.png b/alt_textures/farming_sunflower_32px.png new file mode 100644 index 0000000..06b9387 Binary files /dev/null and b/alt_textures/farming_sunflower_32px.png differ diff --git a/alt_textures/farming_sunflower_bread_32px.png b/alt_textures/farming_sunflower_bread_32px.png new file mode 100644 index 0000000..112e8c6 Binary files /dev/null and b/alt_textures/farming_sunflower_bread_32px.png differ diff --git a/alt_textures/farming_vanilla_flan_32px.png b/alt_textures/farming_vanilla_flan_32px.png new file mode 100644 index 0000000..c8b9ff0 Binary files /dev/null and b/alt_textures/farming_vanilla_flan_32px.png differ diff --git a/api.txt b/api.txt index b9d5cff..19481f4 100644 --- a/api.txt +++ b/api.txt @@ -20,7 +20,6 @@ The farming API allows you to easily register plants and hoes. ### Hoe Definition - { description = "My Hoe", -- Description for tooltip inventory_image = "unknown_item.png", -- Image to be used as wield- and inventory image @@ -42,6 +41,7 @@ The farming API allows you to easily register plants and hoes. -- ^ Always provide a plant texture for each step, format: modname_plantname_i.png (i = stepnumber) minlight = 13, -- Minimum light to grow maxlight = minetest.LIGHT_MAX -- Maximum light to grow + can_grow = function(pos) -- Called every growth tick to check if plant can grow returning True if needs are met (optional, defaults to checking for wet soil below plant). } Note: Any crops registered with the above function will use the new growing routines, also if crops are manually added with the {growing=1} group they will also grow. @@ -50,7 +50,7 @@ Note: Any crops registered with the above function will use the new growing rout If a mod registers nodes to be used as crops using the {growing=1} group then an additional function can be used for custom growth checks instead of the standard 'are we above wet soil'. -growth_check = function(pos, node_name) +growth_check = function(pos, [node_name]) [DEPRECATED for above can_grow function] -- check surrounding for jungle tree if minetest.find_node_near(pos, 1, {"default:jungletree"}) then return true -- place next growth stage @@ -70,3 +70,24 @@ A handy function that starts a crops timer with a randomly selected time set by stage_length setting. This is mostly used for special functions or 3rd party mods. farming.start_seed_timer(pos) + + +Node Sounds +----------- + +Farming Redo will detect wether the Default mod or MineClone/VoxeLibre mod is active and +store whichever sound set is available inside the following to save any other farming +mods from having to detect it themselves: + +farming.node_sound_defaults() +farming.node_sound_stone_defaults() +farming.node_sound_dirt_defaults() +farming.node_sound_sand_defaults() +farming.node_sound_gravel_defaults() +farming.node_sound_wood_defaults() +farming.node_sound_leaves_defaults() +farming.node_sound_ice_defaults() +farming.node_sound_metal_defaults() +farming.node_sound_water_defaults() +farming.node_sound_snow_defaults() +farming.node_sound_glass_defaults() diff --git a/compatibility.lua b/compatibility.lua index e718ee5..6895326 100644 --- a/compatibility.lua +++ b/compatibility.lua @@ -1,5 +1,5 @@ -local S = farming.translate +local S = minetest.get_translator("farming") --= Helpers @@ -8,9 +8,17 @@ local alias = function(orig, new) minetest.register_alias(orig, new) end +--= Add {eatable} group to default food items if found + +farming.add_eatable("default:apple", 2) +farming.add_eatable("default:blueberries", 1) +farming.add_eatable("flowers:mushroom_brown", 1) +farming.add_eatable("flowers:mushroom_red", -5) + --= Aliases -- Banana + if eth then alias("farming_plus:banana_sapling", "ethereal:banana_tree_sapling") alias("farming_plus:banana_leaves", "ethereal:bananaleaves") @@ -29,20 +37,26 @@ else type = "fixed", fixed = {-0.2, -0.5, -0.2, 0.2, 0.2, 0.2} }, - groups = {food_banana = 1, fleshy = 3, dig_immediate = 3, flammable = 2}, + groups = { + food_banana = 1, fleshy = 3, dig_immediate = 3 + }, + is_ground_content = false, on_use = minetest.item_eat(2), - sounds = farming.sounds.node_sound_leaves_defaults() + sounds = farming.node_sound_leaves_defaults() }) + farming.add_eatable("ethereal:banana", 2) + minetest.register_node(":ethereal:bananaleaves", { description = S("Banana Leaves"), - tiles = {"farming_banana_leaf.png"}, - inventory_image = "farming_banana_leaf.png", - wield_image = "farming_banana_leaf.png", + 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}, - sounds = farming.sounds.node_sound_leaves_defaults() + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() }) alias("farming_plus:banana_sapling", "default:sapling") @@ -51,6 +65,7 @@ else end -- Carrot + alias("farming_plus:carrot_seed", "farming:carrot") alias("farming_plus:carrot_1", "farming:carrot_1") alias("farming_plus:carrot_2", "farming:carrot_4") @@ -59,12 +74,14 @@ 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") @@ -87,17 +104,23 @@ else type = "fixed", fixed = {-0.2, -0.3, -0.2, 0.2, 0.2, 0.2} }, - groups = {food_orange = 1, fleshy = 3, dig_immediate = 3, flammable = 2}, + groups = { + food_orange = 1, fleshy = 3, dig_immediate = 3, flammable = 2 + }, + is_ground_content = false, on_use = minetest.item_eat(4), - sounds = farming.sounds.node_sound_leaves_defaults() + 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") @@ -105,6 +128,7 @@ 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") @@ -117,6 +141,7 @@ 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") @@ -124,6 +149,7 @@ 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") @@ -132,6 +158,7 @@ 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") @@ -139,5 +166,6 @@ alias("farming_plus:tomato_2", "farming:tomato_4") alias("farming_plus:tomato_3", "farming:tomato_6") alias("farming_plus:tomato", "farming:tomato_8") --- Weed +-- Weeds + alias("farming:weed", "default:grass_2") diff --git a/crops/artichoke.lua b/crops/artichoke.lua index d144e42..6a986aa 100644 --- a/crops/artichoke.lua +++ b/crops/artichoke.lua @@ -1,19 +1,25 @@ -local S = farming.translate +local S = minetest.get_translator("farming") + +-- item/seed --- item definition minetest.register_craftitem("farming:artichoke", { description = S("Artichoke"), inventory_image = "farming_artichoke.png", - groups = {compostability = 48, seed = 2, food_artichoke = 1, flammable = 2}, + groups = {compostability = 48, seed = 2, food_artichoke = 1}, + on_use = minetest.item_eat(4), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:artichoke_1") - end, - on_use = minetest.item_eat(4) + 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", @@ -27,25 +33,32 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:artichoke_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_artichoke_2.png"} minetest.register_node("farming:artichoke_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_artichoke_3.png"} minetest.register_node("farming:artichoke_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_artichoke_4.png"} minetest.register_node("farming:artichoke_4", table.copy(def)) -- stage 5 (final) + def.tiles = {"farming_artichoke_5.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -58,6 +71,7 @@ def.drop = { minetest.register_node("farming:artichoke_5", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:artichoke"] = { crop = "farming:artichoke", seed = "farming:artichoke", @@ -67,6 +81,7 @@ farming.registered_plants["farming:artichoke"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/asparagus.lua b/crops/asparagus.lua index 770f1aa..5cd4d02 100644 --- a/crops/asparagus.lua +++ b/crops/asparagus.lua @@ -1,19 +1,25 @@ -local S = farming.translate +local S = minetest.get_translator("farming") + +-- item/seed --- asparagus minetest.register_craftitem("farming:asparagus", { description = S("Asparagus"), inventory_image = "farming_asparagus.png", - groups = {compostability = 48, seed = 2, food_asparagus = 1, flammable = 2}, + groups = {compostability = 48, seed = 2, food_asparagus = 1}, + on_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:asparagus_1") - end, - on_use = minetest.item_eat(1) + end }) --- asparagus definition +farming.add_eatable("farming:asparagus", 1) + +-- crop definition + local def = { + description = S("Asparagus") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_asparagus_1.png"}, paramtype = "light", @@ -29,21 +35,27 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:asparagus_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_asparagus_2.png"} minetest.register_node("farming:asparagus_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_asparagus_3.png"} minetest.register_node("farming:asparagus_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_asparagus_4.png"} def.drop = { items = { @@ -52,7 +64,8 @@ def.drop = { } minetest.register_node("farming:asparagus_4", table.copy(def)) --- stage 5 +-- stage 5 (final) + def.tiles = {"farming_asparagus_5.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -65,6 +78,7 @@ def.drop = { minetest.register_node("farming:asparagus_5", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:asparagus"] = { crop = "farming:asparagus", seed = "farming:asparagus", @@ -74,6 +88,7 @@ farming.registered_plants["farming:asparagus"] = { } -- mapgen + minetest.register_decoration({ name = "farming:asparagus_5", deco_type = "simple", diff --git a/crops/barley.lua b/crops/barley.lua index 76eb963..ca65456 100644 --- a/crops/barley.lua +++ b/crops/barley.lua @@ -1,8 +1,8 @@ -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") + +-- seed --- barley seeds minetest.register_node("farming:seed_barley", { description = S("Barley Seed"), tiles = {"farming_barley_seed.png"}, @@ -13,39 +13,36 @@ minetest.register_node("farming:seed_barley", { handy = 1, compostability = 48, seed = 1, snappy = 3, attached_node = 1, growing = 1 }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, paramtype = "light", paramtype2 = "wallmounted", walkable = false, sunlight_propagates = true, next_plant = "farming:barley_1", selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_barley") end, + on_timer = function(pos, elapsed) minetest.set_node(pos, {name = "farming:barley_1", param2 = 3}) end }) --- harvested barley +-- item + minetest.register_craftitem("farming:barley", { description = S("Barley"), inventory_image = "farming_barley.png", groups = {food_barley = 1, flammable = 2, compostability = 65} }) --- flour -minetest.register_craft({ - output = "farming:flour", - recipe = { - {"farming:barley", "farming:barley", "farming:barley"}, - {"farming:barley", a.mortar_pestle, ""} - }, - replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} -}) +-- crop definition --- barley definition local def = { + description = S("Barley") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_barley_1.png"}, paramtype = "light", @@ -61,29 +58,37 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:barley_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_barley_2.png"} minetest.register_node("farming:barley_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_barley_3.png"} minetest.register_node("farming:barley_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_barley_4.png"} minetest.register_node("farming:barley_4", table.copy(def)) -- stage 5 + def.tiles = {"farming_barley_5.png"} minetest.register_node("farming:barley_5", table.copy(def)) -- stage 6 + def.tiles = {"farming_barley_6.png"} def.drop = { items = { @@ -94,6 +99,7 @@ def.drop = { minetest.register_node("farming:barley_6", table.copy(def)) -- stage 7 + def.tiles = {"farming_barley_7.png"} def.drop = { items = { @@ -104,6 +110,7 @@ def.drop = { minetest.register_node("farming:barley_7", table.copy(def)) -- stage 8 (final) + def.tiles = {"farming_barley_8.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -118,6 +125,7 @@ def.drop = { minetest.register_node("farming:barley_8", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:barley"] = { crop = "farming:barley", seed = "farming:seed_barley", @@ -125,10 +133,3 @@ farming.registered_plants["farming:barley"] = { maxlight = farming.max_light, steps = 8 } - --- Fuel -minetest.register_craft({ - type = "fuel", - recipe = "farming:barley", - burntime = 1 -}) diff --git a/crops/beans.lua b/crops/beans.lua index 2462ae7..22ca1bd 100644 --- a/crops/beans.lua +++ b/crops/beans.lua @@ -1,32 +1,27 @@ ---[[ - All textures by - (C) Auke Kok - CC-BY-SA-3.0 -]] -local S = farming.translate +-- All textures by (C) Auke Kok CC-BY-SA-3.0 + +local S = minetest.get_translator("farming") local a = farming.recipe_items --- place beans +-- 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 + if not pt or pt.type ~= "node" then return end local under = minetest.get_node(pt.under) -- return if any of the nodes are not registered - if not minetest.registered_nodes[under.name] then - return - end + if not minetest.registered_nodes[under.name] then return end -- am I right-clicking on something that has a custom on_place set? -- thanks to Krock for helping with this issue :) local def = minetest.registered_nodes[under.name] + if placer and itemstack and def and def.on_rightclick then return def.on_rightclick(pt.under, under, placer, itemstack, pt) end @@ -35,19 +30,15 @@ local function place_beans(itemstack, placer, pointed_thing, plantname) local name = placer and placer:get_player_name() or "" -- check for protection - if minetest.is_protected(pt.under, name) then - return - end + if minetest.is_protected(pt.under, name) then return end -- check if pointing at bean pole - if under.name ~= "farming:beanpole" then - return - end + if under.name ~= "farming:beanpole" then return end -- add the node and remove 1 item from the itemstack minetest.set_node(pt.under, {name = plantname}) - minetest.sound_play("default_place_node", {pos = pt.under, gain = 1.0}) + minetest.sound_play("default_place_node", {pos = pt.under, gain = 1.0}, true) if placer or not farming.is_creative(placer:get_player_name()) then @@ -57,35 +48,30 @@ local function place_beans(itemstack, placer, pointed_thing, plantname) if itemstack:get_count() == 0 then minetest.after(0.20, - farming.refill_plant, - placer, - "farming:beans", - placer:get_wield_index() - ) + farming.refill_plant, placer, "farming:beans", placer:get_wield_index()) end end return itemstack end --- beans +-- item/seed + minetest.register_craftitem("farming:beans", { description = S("Green Beans"), inventory_image = "farming_beans.png", - groups = {compostability = 48, seed = 2, food_beans = 1, flammable = 2}, + groups = {compostability = 48, seed = 2, food_beans = 1}, on_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) return place_beans(itemstack, placer, pointed_thing, "farming:beanpole_1") end }) --- beans can be used for green dye -minetest.register_craft({ - output = a.dye_green, - recipe = {{"farming:beans"}} -}) +farming.add_eatable("farming:beans", 1) -- beanpole + minetest.register_node("farming:beanpole", { description = S("Bean Pole (place on soil before planting beans)"), drawtype = "plantlike", @@ -99,27 +85,25 @@ minetest.register_node("farming:beanpole", { drop = "farming:beanpole", selection_box = farming.select, groups = {handy = 1, snappy = 3, flammable = 2, attached_node = 1}, - sounds = farming.sounds.node_sound_leaves_defaults(), + 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 + if not pt or pt.type ~= "node" then return end local under = minetest.get_node(pt.under) -- return if any of the nodes are not registered - if not minetest.registered_nodes[under.name] then - return - end + if not minetest.registered_nodes[under.name] then return end -- am I right-clicking on something that has a custom on_place set? -- thanks to Krock for helping with this issue :) local def = minetest.registered_nodes[under.name] + if def and def.on_rightclick then return def.on_rightclick(pt.under, under, placer, itemstack, pt) end @@ -130,9 +114,7 @@ minetest.register_node("farming:beanpole", { local nodename = under.name - if minetest.get_item_group(nodename, "soil") < 2 then - return - end + if minetest.get_item_group(nodename, "soil") < 2 then return end local top = { x = pointed_thing.above.x, @@ -142,9 +124,7 @@ minetest.register_node("farming:beanpole", { nodename = minetest.get_node(top).name - if nodename ~= "air" then - return - end + if nodename ~= "air" then return end minetest.set_node(pointed_thing.above, {name = "farming:beanpole"}) @@ -156,23 +136,10 @@ minetest.register_node("farming:beanpole", { end }) -minetest.register_craft({ - output = "farming:beanpole", - recipe = { - {"", "", ""}, - {"group:stick", "", "group:stick"}, - {"group:stick", "", "group:stick"} - } -}) +-- crop definition -minetest.register_craft({ - type = "fuel", - recipe = "farming:beanpole", - burntime = 10 -}) - --- green bean definition local def = { + description = S("Green Beans") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_beanpole_1.png"}, visual_scale = 1.90, @@ -190,25 +157,32 @@ local def = { handy = 1, snappy = 3, flammable = 3, not_in_creative_inventory = 1, attached_node = 1, growing = 1, plant = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:beanpole_1", table.copy(def)) -- stage2 + def.tiles = {"farming_beanpole_2.png"} minetest.register_node("farming:beanpole_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_beanpole_3.png"} minetest.register_node("farming:beanpole_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_beanpole_4.png"} minetest.register_node("farming:beanpole_4", table.copy(def)) -- stage 5 (final) + def.tiles = {"farming_beanpole_5.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -223,6 +197,7 @@ def.drop = { minetest.register_node("farming:beanpole_5", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:beans"] = { trellis = "farming:beanpole", crop = "farming:beanpole", @@ -233,6 +208,7 @@ farming.registered_plants["farming:beans"] = { } -- wild green bean bush (this is what you find on the map) + minetest.register_node("farming:beanbush", { drawtype = "plantlike", tiles = {"farming_beanbush.png"}, @@ -253,10 +229,12 @@ minetest.register_node("farming:beanbush", { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, compostability = 35, not_in_creative_inventory = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() }) -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/beetroot.lua b/crops/beetroot.lua index f025e51..149b978 100644 --- a/crops/beetroot.lua +++ b/crops/beetroot.lua @@ -1,41 +1,26 @@ -local S = farming.translate +local S = minetest.get_translator("farming") local a = farming.recipe_items --- beetroot +-- item/seed + minetest.register_craftitem("farming:beetroot", { description = S("Beetroot"), inventory_image = "farming_beetroot.png", - groups = {compostability = 48, seed = 2, food_beetroot = 1, flammable = 2}, + groups = {compostability = 48, seed = 2, food_beetroot = 1}, + on_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:beetroot_1") - end, - on_use = minetest.item_eat(1) + end }) --- beetroot soup -minetest.register_craftitem("farming:beetroot_soup", { - description = S("Beetroot Soup"), - inventory_image = "farming_beetroot_soup.png", - groups = {flammable = 2}, - on_use = minetest.item_eat(6, "farming:bowl") -}) +farming.add_eatable("farming:beetroot", 1) -minetest.register_craft({ - output = "farming:beetroot_soup", - recipe = { - {"group:food_beetroot", "group:food_beetroot", "group:food_beetroot"}, - {"group:food_beetroot", "group:food_bowl", "group:food_beetroot"} - } -}) - --- red dye -minetest.register_craft({ - output = a.dye_red, - recipe = {{"group:food_beetroot"}} -}) +-- crop definition local def = { + description = S("Beetroot") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_beetroot_1.png"}, paramtype = "light", @@ -49,25 +34,32 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:beetroot_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_beetroot_2.png"} minetest.register_node("farming:beetroot_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_beetroot_3.png"} minetest.register_node("farming:beetroot_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_beetroot_4.png"} minetest.register_node("farming:beetroot_4", table.copy(def)) --- stage 5 +-- stage 5 (final) + def.tiles = {"farming_beetroot_5.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -82,6 +74,7 @@ def.drop = { minetest.register_node("farming:beetroot_5", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:beetroot"] = { crop = "farming:beetroot", seed = "farming:beetroot", @@ -91,6 +84,7 @@ farming.registered_plants["farming:beetroot"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/blackberry.lua b/crops/blackberry.lua index 6dca0e6..2d308ac 100644 --- a/crops/blackberry.lua +++ b/crops/blackberry.lua @@ -1,21 +1,28 @@ -local S = farming.translate +local S = minetest.get_translator("farming") + +-- item/seed --- blackberries minetest.register_craftitem("farming:blackberry", { description = S("Blackberries"), inventory_image = "farming_blackberry.png", groups = { compostability = 48, seed = 2, food_blackberries = 1, food_blackberry = 1, - food_berry = 1, flammable = 2 + food_berry = 1 }, + on_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:blackberry_1") - end, - on_use = minetest.item_eat(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", @@ -28,21 +35,27 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:blackberry_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_blackberry_2.png"} minetest.register_node("farming:blackberry_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_blackberry_3.png"} minetest.register_node("farming:blackberry_3", table.copy(def)) --- stage 4 +-- stage 4 (final) + def.tiles = {"farming_blackberry_4.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -56,6 +69,7 @@ def.drop = { minetest.register_node("farming:blackberry_4", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:blackberry"] = { crop = "farming:blackberry", seed = "farming:blackberry", @@ -65,6 +79,7 @@ farming.registered_plants["farming:blackberry"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/blueberry.lua b/crops/blueberry.lua index 1370362..85bbeeb 100644 --- a/crops/blueberry.lua +++ b/crops/blueberry.lua @@ -1,61 +1,27 @@ -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") + +-- item/seed --- blueberries minetest.register_craftitem("farming:blueberries", { description = S("Wild Blueberries"), inventory_image = "farming_blueberries.png", groups = { compostability = 48,seed = 2, food_blueberries = 1, food_blueberry = 1, - food_berry = 1, flammable = 2 + food_berry = 1 }, + on_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:blueberry_1") - end, - on_use = minetest.item_eat(1) + end }) --- blueberry muffin (thanks to sosogirl123 @ deviantart.com for muffin image) -minetest.register_craftitem("farming:muffin_blueberry", { - description = S("Blueberry Muffin"), - inventory_image = "farming_blueberry_muffin.png", - on_use = minetest.item_eat(2), - groups = {compostability = 65} -}) +farming.add_eatable("farming:blueberries", 1) -minetest.register_craft({ - output = "farming:muffin_blueberry 2", - recipe = { - {"group:food_blueberries", "group:food_bread", "group:food_blueberries"} - } -}) - --- Blueberry Pie -minetest.register_craftitem("farming:blueberry_pie", { - description = S("Blueberry Pie"), - inventory_image = "farming_blueberry_pie.png", - on_use = minetest.item_eat(6), - groups = {compostability = 75} -}) - -minetest.register_craft({ - output = "farming:blueberry_pie", - recipe = { - {"group:food_flour", "group:food_sugar", "group:food_blueberries"}, - {"", a.baking_tray, ""} - }, - replacements = {{"group:food_baking_tray", "farming:baking_tray"}} -}) - --- Blue Dye -minetest.register_craft({ - output = a.dye_blue, - recipe = {{"farming:blueberries"}} -}) - --- blueberry definition +-- ctop definition local def = { + description = S("Blueberry") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_blueberry_1.png"}, paramtype = "light", @@ -68,21 +34,27 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:blueberry_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_blueberry_2.png"} minetest.register_node("farming:blueberry_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_blueberry_3.png"} minetest.register_node("farming:blueberry_3", table.copy(def)) -- stage 4 (final) + def.tiles = {"farming_blueberry_4.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -96,6 +68,7 @@ def.drop = { minetest.register_node("farming:blueberry_4", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:blueberries"] = { crop = "farming:blueberry", seed = "farming:blueberries", @@ -105,6 +78,7 @@ farming.registered_plants["farming:blueberries"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/cabbage.lua b/crops/cabbage.lua index c42bd22..c72c43f 100644 --- a/crops/cabbage.lua +++ b/crops/cabbage.lua @@ -1,18 +1,25 @@ -local S = farming.translate +local S = minetest.get_translator("farming") + +-- item/seed --- cabbage minetest.register_craftitem("farming:cabbage", { description = S("Cabbage"), inventory_image = "farming_cabbage.png", - groups = {compostability = 48, seed = 2, food_cabbage = 1, flammable = 2}, + groups = {compostability = 48, seed = 2, food_cabbage = 1}, + on_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:cabbage_1") - end, - on_use = minetest.item_eat(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", @@ -26,29 +33,37 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:cabbage_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_cabbage_2.png"} minetest.register_node("farming:cabbage_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_cabbage_3.png"} minetest.register_node("farming:cabbage_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_cabbage_4.png"} minetest.register_node("farming:cabbage_4", table.copy(def)) -- stage 5 + def.tiles = {"farming_cabbage_5.png"} minetest.register_node("farming:cabbage_5", table.copy(def)) --- stage 6 +-- stage 6 (final) + def.tiles = {"farming_cabbage_6.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -61,6 +76,7 @@ def.drop = { minetest.register_node("farming:cabbage_6", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:cabbage"] = { crop = "farming:cabbage", seed = "farming:cabbage", @@ -70,6 +86,7 @@ farming.registered_plants["farming:cabbage"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/carrot.lua b/crops/carrot.lua index eb46bf4..26f69c9 100644 --- a/crops/carrot.lua +++ b/crops/carrot.lua @@ -1,57 +1,29 @@ ---[[ - Original textures from PixelBox texture pack - https://forum.minetest.net/viewtopic.php?id=4990 -]] +-- Original textures from PixelBox texture pack +-- https://forum.minetest.net/viewtopic.php?id=4990 -local S = farming.translate +local S = minetest.get_translator("farming") local a = farming.recipe_items --- carrot +-- item/seed + minetest.register_craftitem("farming:carrot", { description = S("Carrot"), inventory_image = "farming_carrot.png", - groups = {compostability = 48, seed = 2, food_carrot = 1, flammable = 2}, + groups = {compostability = 48, seed = 2, food_carrot = 1}, + on_use = minetest.item_eat(4), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:carrot_1") - end, - on_use = minetest.item_eat(4) + end }) --- carrot juice -minetest.register_craftitem("farming:carrot_juice", { - description = S("Carrot Juice"), - inventory_image = "farming_carrot_juice.png", - on_use = minetest.item_eat(4, "vessels:drinking_glass"), - groups = {vessel = 1, drink = 1} -}) +farming.add_eatable("farming:carrot", 4) -minetest.register_craft({ - output = "farming:carrot_juice", - recipe = { - {a.juicer}, - {"group:food_carrot"}, - {"vessels:drinking_glass"} - }, - replacements = { - {"group:food_juicer", "farming:juicer"} - } -}) +-- crop definition --- golden carrot -minetest.register_craftitem("farming:carrot_gold", { - description = S("Golden Carrot"), - inventory_image = "farming_carrot_gold.png", - on_use = minetest.item_eat(10) -}) - -minetest.register_craft({ - output = "farming:carrot_gold", - recipe = {{"group:food_carrot", "default:gold_lump"}} -}) - --- carrot definition local def = { + description = S("Carrot") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_carrot_1.png"}, paramtype = "light", @@ -65,34 +37,42 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } - -- stage 1 + minetest.register_node("farming:carrot_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_carrot_2.png"} minetest.register_node("farming:carrot_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_carrot_3.png"} minetest.register_node("farming:carrot_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_carrot_4.png"} minetest.register_node("farming:carrot_4", table.copy(def)) -- stage 5 + def.tiles = {"farming_carrot_5.png"} minetest.register_node("farming:carrot_5", table.copy(def)) -- stage 6 + def.tiles = {"farming_carrot_6.png"} minetest.register_node("farming:carrot_6", table.copy(def)) -- stage 7 + def.tiles = {"farming_carrot_7.png"} def.drop = { items = { @@ -103,6 +83,7 @@ def.drop = { minetest.register_node("farming:carrot_7", table.copy(def)) -- stage 8 (final) + def.tiles = {"farming_carrot_8.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -115,6 +96,7 @@ def.drop = { minetest.register_node("farming:carrot_8", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:carrot"] = { crop = "farming:carrot", seed = "farming:carrot", @@ -124,6 +106,7 @@ farming.registered_plants["farming:carrot"] = { } -- mapgen + local mg = farming.mapgen == "v6" def = { diff --git a/crops/chili.lua b/crops/chili.lua index 48afc47..00ae994 100644 --- a/crops/chili.lua +++ b/crops/chili.lua @@ -1,59 +1,26 @@ -local S = farming.translate +local S = minetest.get_translator("farming") local a = farming.recipe_items --- chili pepper +-- item/seed + minetest.register_craftitem("farming:chili_pepper", { description = S("Chili Pepper"), inventory_image = "farming_chili_pepper.png", - groups = {compostability = 48, seed = 2, food_chili_pepper = 1, flammable = 4}, + groups = {compostability = 48, seed = 2, food_chili_pepper = 1}, + on_use = minetest.item_eat(2), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:chili_1") - end, - on_use = minetest.item_eat(2) + end }) --- bowl of chili -minetest.register_craftitem("farming:chili_bowl", { - description = S("Bowl of Chili"), - inventory_image = "farming_chili_bowl.png", - on_use = minetest.item_eat(8, a.bowl), - groups = {compostability = 65} -}) +farming.add_eatable("farming:chili_pepper", 2) -minetest.register_craft({ - output = "farming:chili_bowl", - recipe = { - {"group:food_chili_pepper", "group:food_rice", "group:food_tomato"}, - {"group:food_beans", "group:food_bowl", ""} - } -}) +-- crop definition --- chili can be used for red dye -minetest.register_craft({ - output = a.dye_red, - recipe = {{"farming:chili_pepper"}} -}) - --- chili powder -minetest.register_craftitem("farming:chili_powder", { - description = S("Chili Powder"), - on_use = minetest.item_eat(-1), - inventory_image = "farming_chili_powder.png", - groups = {compostability = 45} -}) - -minetest.register_craft({ - output = "farming:chili_powder", - recipe = { - {"farming:chili_pepper", a.mortar_pestle} - }, - replacements = {{"farming:mortar_pestle", "farming:mortar_pestle"}} -}) - - --- chili definition local def = { + description = S("Chili Pepper") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_chili_1.png"}, paramtype = "light", @@ -67,37 +34,47 @@ local def = { handy = 1, snappy = 3, flammable = 4, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:chili_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_chili_2.png"} minetest.register_node("farming:chili_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_chili_3.png"} minetest.register_node("farming:chili_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_chili_4.png"} minetest.register_node("farming:chili_4", table.copy(def)) -- stage 5 + def.tiles = {"farming_chili_5.png"} minetest.register_node("farming:chili_5", table.copy(def)) -- stage 6 + def.tiles = {"farming_chili_6.png"} minetest.register_node("farming:chili_6", table.copy(def)) -- stage 7 + def.tiles = {"farming_chili_7.png"} minetest.register_node("farming:chili_7", table.copy(def)) -- stage 8 (final) + def.tiles = {"farming_chili_8.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -110,6 +87,7 @@ def.drop = { minetest.register_node("farming:chili_8", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:chili_pepper"] = { crop = "farming:chili", seed = "farming:chili_pepper", @@ -119,6 +97,7 @@ farming.registered_plants["farming:chili_pepper"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = { diff --git a/crops/cocoa.lua b/crops/cocoa.lua index cc3267f..9f35174 100644 --- a/crops/cocoa.lua +++ b/crops/cocoa.lua @@ -1,6 +1,5 @@ -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") -- place cocoa local function place_cocoa(itemstack, placer, pointed_thing, plantname) @@ -8,20 +7,17 @@ local function place_cocoa(itemstack, placer, pointed_thing, plantname) local pt = pointed_thing -- check if pointing at a node - if not pt or pt.type ~= "node" then - return - end + if not pt or pt.type ~= "node" then return end local under = minetest.get_node(pt.under) -- return if any of the nodes are not registered - if not minetest.registered_nodes[under.name] then - return - end + if not minetest.registered_nodes[under.name] then return end -- am I right-clicking on something that has a custom on_place set? -- thanks to Krock for helping with this issue :) local def = minetest.registered_nodes[under.name] + if placer and itemstack and def and def.on_rightclick then return def.on_rightclick(pt.under, under, placer, itemstack, pt) end @@ -36,14 +32,12 @@ local function place_cocoa(itemstack, placer, pointed_thing, plantname) local name = placer and placer:get_player_name() or "" -- check for protection - if minetest.is_protected(pt.above, name) then - return - end + if minetest.is_protected(pt.above, name) then return end -- add the node and remove 1 item from the itemstack minetest.set_node(pt.above, {name = plantname}) - minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0}) + minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0}, true) if placer and not farming.is_creative(placer:get_player_name()) then @@ -52,99 +46,30 @@ local function place_cocoa(itemstack, placer, pointed_thing, plantname) -- check for refill if itemstack:get_count() == 0 then - minetest.after(0.20, - farming.refill_plant, - placer, - "farming:cocoa_beans_raw", - placer:get_wield_index() - ) + minetest.after(0.20, farming.refill_plant, placer, + "farming:cocoa_beans_raw", placer:get_wield_index()) end end return itemstack end --- cocoa beans +-- item/seed + minetest.register_craftitem("farming:cocoa_beans_raw", { description = S("Raw Cocoa Beans"), inventory_image = "farming_cocoa_beans.png^[brighten", groups = {compostability = 48, seed = 1, flammable = 2}, + on_place = function(itemstack, placer, pointed_thing) return place_cocoa(itemstack, placer, pointed_thing, "farming:cocoa_1") end }) -minetest.register_craftitem("farming:cocoa_beans", { - description = S("Cocoa Beans"), - inventory_image = "farming_cocoa_beans.png", - groups = {compostability = 65, food_cocoa = 1, flammable = 2} -}) +-- crop definition -minetest.register_craft({ - type = "cooking", - cooktime = 5, - output = "farming:cocoa_beans", - recipe = "farming:cocoa_beans_raw" -}) - -minetest.register_craft( { - output = a.dye_brown, - recipe = {{"farming:cocoa_beans"}} -}) - --- chocolate cookie -minetest.register_craftitem("farming:cookie", { - description = S("Cookie"), - inventory_image = "farming_cookie.png", - on_use = minetest.item_eat(2) -}) - -minetest.register_craft( { - output = "farming:cookie 8", - recipe = { - {"group:food_wheat", "group:food_cocoa", "group:food_wheat" } - } -}) - --- bar of dark chocolate (thanks to Ice Pandora for her deviantart.com chocolate tutorial) -minetest.register_craftitem("farming:chocolate_dark", { - description = S("Bar of Dark Chocolate"), - inventory_image = "farming_chocolate_dark.png", - on_use = minetest.item_eat(3) -}) - -minetest.register_craft( { - output = "farming:chocolate_dark", - recipe = { - {"group:food_cocoa", "group:food_cocoa", "group:food_cocoa"} - } -}) - --- chocolate block -minetest.register_node("farming:chocolate_block", { - description = S("Chocolate Block"), - tiles = {"farming_chocolate_block.png"}, - is_ground_content = false, - groups = {cracky = 2, oddly_breakable_by_hand = 2}, - sounds = farming.sounds.node_sound_stone_defaults() -}) - -minetest.register_craft({ - output = "farming:chocolate_block", - recipe = { - {"farming:chocolate_dark", "farming:chocolate_dark", "farming:chocolate_dark"}, - {"farming:chocolate_dark", "farming:chocolate_dark", "farming:chocolate_dark"}, - {"farming:chocolate_dark", "farming:chocolate_dark", "farming:chocolate_dark"} - } -}) - -minetest.register_craft({ - output = "farming:chocolate_dark 9", - recipe = {{"farming:chocolate_block"}} -}) - --- cocoa definition local def = { + description = S("Cocoa Beans") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_cocoa_1.png"}, paramtype = "light", @@ -158,7 +83,11 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, growing = 1, not_in_creative_inventory = 1, leafdecay = 1, leafdecay_drop = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults(), + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults(), + + -- custom function that returns True when conditions are met growth_check = function(pos, node_name) if minetest.find_node_near(pos, 1, @@ -171,13 +100,16 @@ local def = { } -- stage 1 + minetest.register_node("farming:cocoa_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_cocoa_2.png"} minetest.register_node("farming:cocoa_2", table.copy(def)) -- stage3 + def.tiles = {"farming_cocoa_3.png"} def.drop = { items = { @@ -187,6 +119,7 @@ def.drop = { minetest.register_node("farming:cocoa_3", table.copy(def)) -- stage 4 (final) + def.tiles = {"farming_cocoa_4.png"} def.groups.growing = nil def.growth_check = nil @@ -200,6 +133,7 @@ def.drop = { minetest.register_node("farming:cocoa_4", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:cocoa_beans"] = { trellis = "default:jungletree", crop = "farming:cocoa", @@ -209,46 +143,10 @@ farming.registered_plants["farming:cocoa_beans"] = { steps = 4 } --- localize math.random for speed -local random = math.random +-- register async mapgen script --- add random cocoa pods to jungle tree's -minetest.register_on_generated(function(minp, maxp) - - if maxp.y < 0 then - return - end - - local pos, dir - local cocoa = minetest.find_nodes_in_area(minp, maxp, - {"default:jungletree", "mcl_core:jungletree"}) - - for n = 1, #cocoa do - - pos = cocoa[n] - - if minetest.find_node_near(pos, 1, - {"default:jungleleaves", "moretrees:jungletree_leaves_green", - "mcl_core:jungleleaves"}) then - - dir = random(80) - - if dir == 1 then pos.x = pos.x + 1 - elseif dir == 2 then pos.x = pos.x - 1 - elseif dir == 3 then pos.z = pos.z + 1 - elseif dir == 4 then pos.z = pos.z -1 - end - - if dir < 5 - and minetest.get_node(pos).name == "air" - and minetest.get_node_light(pos) > 12 then - ---print ("Cocoa Pod added at " .. minetest.pos_to_string(pos)) - - minetest.swap_node(pos, { - name = "farming:cocoa_" .. tostring(random(4)) - }) - end - end - end -end) +if minetest.register_mapgen_script then + minetest.register_mapgen_script(farming.path .. "/crops/cocoa_mapgen.lua") +else + dofile(farming.path .. "/crops/cocoa_mapgen.lua") +end diff --git a/crops/cocoa_mapgen.lua b/crops/cocoa_mapgen.lua new file mode 100644 index 0000000..f4bc191 --- /dev/null +++ b/crops/cocoa_mapgen.lua @@ -0,0 +1,58 @@ + +-- Localize things for speed + +local random = math.random +local jungletree_nodes = {"default:jungletree", "mcl_core:jungletree"} +local jungletree_leaves = { + "default:jungleleaves", "moretrees:jungletree_leaves_green", "mcl_core:jungleleaves"} + +-- check area to place cocoa pods near jungle trees + +local function generate(vmanip, minp, maxp) + + if maxp.y < 0 then return end + + local min, max = vmanip:get_emerged_area() + local area = VoxelArea:new({MinEdge = min, MaxEdge = max}) + local data = vmanip:get_light_data() + local cocoa = minetest.find_nodes_in_area(minp, maxp, jungletree_nodes) + + for n = 1, #cocoa do + + local pos = cocoa[n] + + if minetest.find_node_near(pos, 1, jungletree_leaves) then + + local dir = random(80) + + if dir == 1 then pos.x = pos.x + 1 + elseif dir == 2 then pos.x = pos.x - 1 + elseif dir == 3 then pos.z = pos.z + 1 + elseif dir == 4 then pos.z = pos.z -1 + end + + if dir < 5 and minetest.get_node(pos).name == "air" then + + local index = area:index(pos.x, pos.y, pos.z) + + if data[index] > 12 then -- light at pos > 12 + + minetest.set_node(pos, {name = "farming:cocoa_" .. random(4)}) +--print("Cocoa Pod added at " .. minetest.pos_to_string(pos)) + end + end + end + end +end + +-- mapgen + +if minetest.save_gen_notify then -- async env (5.9+) + minetest.register_on_generated(function(vmanip, minp, maxp, blockseed) + generate(vmanip, minp, maxp) + end) +else -- main thread (5.8 and earlier) + minetest.register_on_generated(function(minp, maxp, blockseed) + generate(minetest.get_mapgen_object("voxelmanip"), minp, maxp) + end) +end diff --git a/crops/coffee.lua b/crops/coffee.lua index ba34506..e1f254b 100644 --- a/crops/coffee.lua +++ b/crops/coffee.lua @@ -1,51 +1,22 @@ -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") + +-- item/seed --- coffee minetest.register_craftitem("farming:coffee_beans", { description = S("Coffee Beans"), inventory_image = "farming_coffee_beans.png", groups = {compostability = 48, seed = 2, food_coffee = 1, flammable = 2}, + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:coffee_1") end }) --- cup of coffee -minetest.register_node("farming:coffee_cup", { - description = S("Cup of Coffee"), - drawtype = "torchlike", - tiles = {"farming_coffee_cup.png"}, - inventory_image = "farming_coffee_cup.png", - wield_image = "farming_coffee_cup.png", - paramtype = "light", - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25} - }, - groups = {vessel = 1, dig_immediate = 3, attached_node = 1, drink = 1}, - on_use = minetest.item_eat(2, "vessels:drinking_glass"), - sounds = farming.sounds.node_sound_glass_defaults() -}) +-- crop definition -minetest.register_alias("farming:coffee_cup_hot", "farming:coffee_cup") -minetest.register_alias("farming:drinking_cup", "vessels:drinking_glass") - -minetest.register_craft( { - output = "farming:coffee_cup", - recipe = { - {"group:food_coffee", "group:food_glass_water", a.saucepan} - }, - replacements = { - {"group:food_saucepan", "farming:saucepan"} - } -}) - - --- coffee definition local def = { + description = S("Coffee") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_coffee_1.png"}, paramtype = "light", @@ -59,25 +30,32 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:coffee_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_coffee_2.png"} minetest.register_node("farming:coffee_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_coffee_3.png"} minetest.register_node("farming:coffee_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_coffee_4.png"} minetest.register_node("farming:coffee_4", table.copy(def)) -- stage 5 (final) + def.tiles = {"farming_coffee_5.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -91,6 +69,7 @@ def.drop = { minetest.register_node("farming:coffee_5", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:coffee"] = { crop = "farming:coffee", seed = "farming:coffee_beans", @@ -100,6 +79,7 @@ farming.registered_plants["farming:coffee"] = { } -- mapgen + local mg = farming.mapgen == "v6" def = { diff --git a/crops/corn.lua b/crops/corn.lua index 689ccc9..b56d9c8 100644 --- a/crops/corn.lua +++ b/crops/corn.lua @@ -4,109 +4,27 @@ 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 = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") + +-- item/seed --- corn minetest.register_craftitem("farming:corn", { description = S("Corn"), inventory_image = "farming_corn.png", - groups = {compostability = 45, seed = 2, food_corn = 1, flammable = 2}, + groups = {compostability = 45, seed = 2, food_corn = 1}, + on_use = minetest.item_eat(3), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:corn_1") - end, - on_use = minetest.item_eat(3) + end }) --- corn on the cob (texture by TenPlus1) -minetest.register_craftitem("farming:corn_cob", { - description = S("Corn on the Cob"), - inventory_image = "farming_corn_cob.png", - groups = {compostability = 65, food_corn_cooked = 1, flammable = 2}, - on_use = minetest.item_eat(5) -}) +farming.add_eatable("farming:corn", 3) -minetest.register_craft({ - type = "cooking", - cooktime = 10, - output = "farming:corn_cob", - recipe = "group:food_corn" -}) +-- crop definition --- popcorn -minetest.register_craftitem("farming:popcorn", { - description = S("Popcorn"), - inventory_image = "farming_popcorn.png", - groups = {compostability = 55, food_popcorn = 1, flammable = 2}, - on_use = minetest.item_eat(4) -}) - -minetest.register_craft({ - output = "farming:popcorn", - recipe = { - {"group:food_oil", "group:food_corn", a.pot} - }, - replacements = { - {"group:food_pot", "farming:pot"}, - {"group:food_oil", "vessels:glass_bottle"} - } -}) - --- cornstarch -minetest.register_craftitem("farming:cornstarch", { - description = S("Cornstarch"), - inventory_image = "farming_cornstarch.png", - groups = {food_cornstarch = 1, food_gelatin = 1, flammable = 2, compostability = 65} -}) - -minetest.register_craft({ - output = "farming:cornstarch", - recipe = { - {a.mortar_pestle, "group:food_corn_cooked", a.baking_tray}, - {"", "group:food_bowl", ""}, - }, - replacements = { - {"group:food_mortar_pestle", "farming:mortar_pestle"}, - {"group:food_baking_tray", "farming:baking_tray"} - } -}) - --- ethanol (thanks to JKMurray for this idea) -minetest.register_node("farming:bottle_ethanol", { - description = S("Bottle of Ethanol"), - drawtype = "plantlike", - tiles = {"farming_bottle_ethanol.png"}, - inventory_image = "farming_bottle_ethanol.png", - wield_image = "farming_bottle_ethanol.png", - paramtype = "light", - is_ground_content = false, - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} - }, - groups = {vessel = 1, dig_immediate = 3, attached_node = 1}, - sounds = farming.sounds.node_sound_glass_defaults() -}) - -minetest.register_craft( { - output = "farming:bottle_ethanol", - recipe = { - {"group:food_corn", "group:food_corn", "group:food_corn"}, - {"group:food_corn", a.glass_bottle, "group:food_corn"}, - {"group:food_corn", "group:food_corn", "group:food_corn"} - } -}) - -minetest.register_craft({ - type = "fuel", - recipe = "farming:bottle_ethanol", - burntime = 80, - replacements = {{"farming:bottle_ethanol", a.glass_bottle}} -}) - --- corn definition local def = { + description = S("Corn") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_corn_1.png"}, paramtype = "light", @@ -120,34 +38,43 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:corn_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_corn_2.png"} minetest.register_node("farming:corn_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_corn_3.png"} minetest.register_node("farming:corn_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_corn_4.png"} minetest.register_node("farming:corn_4", table.copy(def)) -- stage 5 + def.tiles = {"farming_corn_5.png"} minetest.register_node("farming:corn_5", table.copy(def)) -- stage 6 + def.tiles = {"farming_corn_6.png"} def.visual_scale = 1.9 minetest.register_node("farming:corn_6", table.copy(def)) -- stage 7 + def.tiles = {"farming_corn_7.png"} def.drop = { items = { @@ -159,6 +86,7 @@ def.drop = { minetest.register_node("farming:corn_7", table.copy(def)) -- stage 8 (final) + def.tiles = {"farming_corn_8.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -172,6 +100,7 @@ def.drop = { minetest.register_node("farming:corn_8", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:corn"] = { crop = "farming:corn", seed = "farming:corn", @@ -181,6 +110,7 @@ farming.registered_plants["farming:corn"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/cotton.lua b/crops/cotton.lua index e09381f..bc1d142 100644 --- a/crops/cotton.lua +++ b/crops/cotton.lua @@ -1,36 +1,8 @@ -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") --- wild cotton as a source of cotton seed and a chance of cotton itself -minetest.register_node("farming:cotton_wild", { - description = S("Wild Cotton"), - drawtype = "plantlike", - waving = 1, - tiles = {"farming_cotton_wild.png"}, - inventory_image = "farming_cotton_wild.png", - wield_image = "farming_cotton_wild.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - groups = { - handy = 1, snappy = 3, attached_node = 1, flammable = 4, compostability = 60 - }, - drop = { - items = { - {items = {"farming:cotton"}, rarity = 2}, - {items = {"farming:seed_cotton"}, rarity = 1} - } - }, - sounds = farming.sounds.node_sound_leaves_defaults(), - selection_box = { - type = "fixed", - fixed = {-6 / 16, -8 / 16, -6 / 16, 6 / 16, 5 / 16, 6 / 16} - } -}) +-- seed --- cotton seeds minetest.register_node("farming:seed_cotton", { description = S("Cotton Seed"), tiles = {"farming_cotton_seed.png"}, @@ -41,70 +13,36 @@ minetest.register_node("farming:seed_cotton", { compostability = 48, seed = 1, snappy = 3, attached_node = 1, flammable = 4, growing = 1 }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, paramtype = "light", paramtype2 = "wallmounted", walkable = false, sunlight_propagates = true, selection_box = farming.select, next_plant = "farming:cotton_1", + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_cotton") end, + on_timer = function(pos, elapsed) minetest.set_node(pos, {name = "farming:cotton_1", param2 = 1}) end }) --- cotton +-- item + minetest.register_craftitem("farming:cotton", { description = S("Cotton"), inventory_image = "farming_cotton.png", groups = {flammable = 4, compostability = 50} }) --- string -if not farming.mcl then +-- crop definition - minetest.register_craftitem("farming:string", { - description = S("String"), - inventory_image = "farming_string.png", - groups = {flammable = 2} - }) -end - --- cotton to wool -minetest.register_craft({ - output = a.wool, - recipe = { - {"farming:cotton", "farming:cotton"}, - {"farming:cotton", "farming:cotton"} - } -}) - --- cotton to string -minetest.register_craft({ - output = a.string .. " 2", - recipe = { - {"farming:cotton"}, - {"farming:cotton"} - } -}) - --- can be used as fuel -minetest.register_craft({ - type = "fuel", - recipe = "farming:string", - burntime = 1 -}) - -minetest.register_craft({ - type = "fuel", - recipe = "farming:cotton", - burntime = 1 -}) - --- cotton definition local def = { + description = S("Cotton") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_cotton_1.png"}, paramtype = "light", @@ -118,25 +56,32 @@ local def = { handy = 1, snappy = 3, flammable = 4, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:cotton_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_cotton_2.png"} minetest.register_node("farming:cotton_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_cotton_3.png"} minetest.register_node("farming:cotton_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_cotton_4.png"} minetest.register_node("farming:cotton_4", table.copy(def)) -- stage 5 + def.tiles = {"farming_cotton_5.png"} def.drop = { items = { @@ -146,6 +91,7 @@ def.drop = { minetest.register_node("farming:cotton_5", table.copy(def)) -- stage 6 + def.tiles = {"farming_cotton_6.png"} def.drop = { items = { @@ -156,6 +102,7 @@ def.drop = { minetest.register_node("farming:cotton_6", table.copy(def)) -- stage 7 + def.tiles = {"farming_cotton_7.png"} def.drop = { items = { @@ -168,6 +115,7 @@ def.drop = { minetest.register_node("farming:cotton_7", table.copy(def)) -- stage 8 (final) + def.tiles = {"farming_cotton_8.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -184,6 +132,7 @@ def.drop = { minetest.register_node("farming:cotton_8", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:cotton"] = { crop = "farming:cotton", seed = "farming:seed_cotton", @@ -192,15 +141,37 @@ farming.registered_plants["farming:cotton"] = { steps = 8 } ---[[ Cotton using api -farming.register_plant("farming:cotton", { - description = "Cotton seed", - inventory_image = "farming_cotton_seed.png", - groups = {flammable = 2}, - steps = 8, -})]] +-- wild cotton (this is what you find on the map) + +minetest.register_node("farming:cotton_wild", { + description = S("Wild Cotton"), + drawtype = "plantlike", + waving = 1, + tiles = {"farming_cotton_wild.png"}, + inventory_image = "farming_cotton_wild.png", + wield_image = "farming_cotton_wild.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + groups = {handy = 1, snappy = 3, attached_node = 1, flammable = 4, compostability = 60}, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + drop = { + items = { + {items = {"farming:cotton"}, rarity = 2}, + {items = {"farming:seed_cotton"}, rarity = 1} + } + }, + sounds = farming.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-6 / 16, -8 / 16, -6 / 16, 6 / 16, 5 / 16, 6 / 16} + } +}) -- mapgen + local mg = farming.mapgen == "v6" def = { @@ -227,3 +198,12 @@ minetest.register_decoration({ y_min = 1, 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, +})]] diff --git a/crops/cucumber.lua b/crops/cucumber.lua index 577aff4..66d3867 100644 --- a/crops/cucumber.lua +++ b/crops/cucumber.lua @@ -4,21 +4,27 @@ https://forum.minetest.net/viewtopic.php?id=3948 ]] -local S = farming.translate +local S = minetest.get_translator("farming") + +-- item/seed --- cucumber minetest.register_craftitem("farming:cucumber", { description = S("Cucumber"), inventory_image = "farming_cucumber.png", - groups = {compostability = 48, seed = 2, food_cucumber = 1, flammable = 2}, + groups = {compostability = 48, seed = 2, food_cucumber = 1}, + on_use = minetest.item_eat(4), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:cucumber_1") - end, - on_use = minetest.item_eat(4) + end }) --- cucumber definition +farming.add_eatable("farming:cucumber", 4) + +-- crop definition + local def = { + description = S("Cucumber") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_cucumber_1.png"}, paramtype = "light", @@ -30,21 +36,27 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:cucumber_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_cucumber_2.png"} minetest.register_node("farming:cucumber_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_cucumber_3.png"} minetest.register_node("farming:cucumber_3", table.copy(def)) -- stage 4 (final) + def.tiles = {"farming_cucumber_4.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -57,6 +69,7 @@ def.drop = { minetest.register_node("farming:cucumber_4", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:cucumber"] = { crop = "farming:cucumber", seed = "farming:cucumber", @@ -66,6 +79,7 @@ farming.registered_plants["farming:cucumber"] = { } -- mapgen + local mg = farming.mapgen == "v6" def = { diff --git a/crops/eggplant.lua b/crops/eggplant.lua index b72eda4..941e6ee 100644 --- a/crops/eggplant.lua +++ b/crops/eggplant.lua @@ -1,19 +1,25 @@ -local S = farming.translate +local S = minetest.get_translator("farming") + +-- item/seed --- eggplant minetest.register_craftitem("farming:eggplant", { description = S("Eggplant"), inventory_image = "farming_eggplant.png", - groups = {compostability = 48, seed = 2, food_eggplant = 1, flammable = 2}, + groups = {compostability = 48, seed = 2, food_eggplant = 1}, + on_use = minetest.item_eat(3), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:eggplant_1") - end, - on_use = minetest.item_eat(3) + end }) --- definition +farming.add_eatable("farming:eggplant", 3) + +-- crop definition + local def = { + description = S("Eggplant") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_eggplant_1.png"}, paramtype = "light", @@ -28,17 +34,22 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:eggplant_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_eggplant_2.png"} minetest.register_node("farming:eggplant_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_eggplant_3.png"} def.drop = { items = { @@ -48,7 +59,8 @@ def.drop = { } minetest.register_node("farming:eggplant_3", table.copy(def)) --- stage 4 +-- stage 4 (final) + def.tiles = {"farming_eggplant_4.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -61,6 +73,7 @@ def.drop = { minetest.register_node("farming:eggplant_4", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:eggplant"] = { crop = "farming:eggplant", seed = "farming:eggplant", @@ -70,6 +83,7 @@ farming.registered_plants["farming:eggplant"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/garlic.lua b/crops/garlic.lua index 3849ee5..51cd03c 100644 --- a/crops/garlic.lua +++ b/crops/garlic.lua @@ -1,82 +1,22 @@ -local S = farming.translate +local S = minetest.get_translator("farming") + +-- item/seed --- garlic clove minetest.register_craftitem("farming:garlic_clove", { description = S("Garlic clove"), inventory_image = "crops_garlic_clove.png", groups = {compostability = 35, seed = 2, food_garlic_clove = 1, flammable = 3}, + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:garlic_1") end }) --- garlic bulb -minetest.register_craftitem("farming:garlic", { - description = S("Garlic"), - inventory_image = "crops_garlic.png", - on_use = minetest.item_eat(1), - groups = {food_garlic = 1, flammable = 3, compostability = 55} -}) - -minetest.register_craft({ - output = "farming:garlic_clove 8", - recipe = {{"farming:garlic"}} -}) - -minetest.register_craft({ - output = "farming:garlic", - recipe = { - {"farming:garlic_clove", "farming:garlic_clove", "farming:garlic_clove"}, - {"farming:garlic_clove", "", "farming:garlic_clove"}, - {"farming:garlic_clove", "farming:garlic_clove", "farming:garlic_clove"} - } -}) - --- garlic braid -minetest.register_node("farming:garlic_braid", { - description = S("Garlic Braid"), - inventory_image = "crops_garlic_braid.png", - wield_image = "crops_garlic_braid.png", - drawtype = "nodebox", - use_texture_alpha = "clip", - paramtype = "light", - paramtype2 = "facedir", - tiles = { - "crops_garlic_braid_top.png", - "crops_garlic_braid.png", - "crops_garlic_braid_side.png^[transformFx", - "crops_garlic_braid_side.png", - "crops_garlic_braid.png", - "crops_garlic_braid.png" - }, - groups = {vessel = 1, dig_immediate = 3, flammable = 3, compostability = 65}, - sounds = farming.sounds.node_sound_leaves_defaults(), - node_box = { - type = "fixed", - fixed = { - {-0.1875, -0.5, 0.5, 0.1875, 0.5, 0.125} - } - } -}) - -minetest.register_craft({ - output = "farming:garlic_braid", - recipe = { - {"farming:garlic", "farming:garlic", "farming:garlic"}, - {"farming:garlic", "farming:garlic", "farming:garlic"}, - {"farming:garlic", "farming:garlic", "farming:garlic"} - } -}) - -minetest.register_craft({ - type = "shapeless", - output = "farming:garlic 9", - recipe = {"farming:garlic_braid"} -}) - -- crop definition + local def = { + description = S("Garlic") .. S(" Crop"), drawtype = "plantlike", tiles = {"crops_garlic_plant_1.png"}, paramtype = "light", @@ -92,25 +32,32 @@ local def = { handy = 1, snappy = 3, flammable = 3, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:garlic_1", table.copy(def)) -- stage 2 + def.tiles = {"crops_garlic_plant_2.png"} minetest.register_node("farming:garlic_2", table.copy(def)) -- stage 3 + def.tiles = {"crops_garlic_plant_3.png"} minetest.register_node("farming:garlic_3", table.copy(def)) -- stage 4 + def.tiles = {"crops_garlic_plant_4.png"} minetest.register_node("farming:garlic_4", table.copy(def)) -- stage 5 + def.tiles = {"crops_garlic_plant_5.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -124,6 +71,7 @@ def.drop = { minetest.register_node("farming:garlic_5", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:garlic"] = { crop = "farming:garlic", seed = "farming:garlic_clove", @@ -133,6 +81,7 @@ farming.registered_plants["farming:garlic"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/ginger.lua b/crops/ginger.lua index e94d995..103f1e0 100644 --- a/crops/ginger.lua +++ b/crops/ginger.lua @@ -1,19 +1,25 @@ -local S = farming.translate +local S = minetest.get_translator("farming") + +-- item/seed --- ginger minetest.register_craftitem("farming:ginger", { description = S("Ginger"), inventory_image = "farming_ginger.png", - groups = {compostability = 48, seed = 2, food_ginger = 1, flammable = 2}, + groups = {compostability = 48, seed = 2, food_ginger = 1}, + on_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:ginger_1") - end, - on_use = minetest.item_eat(1) + end }) --- ginger definition +farming.add_eatable("farming:ginger", 1) + +-- crop definition + local def = { + description = S("Ginger") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_ginger_1.png"}, paramtype = "light", @@ -27,17 +33,22 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:ginger_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_ginger_2.png"} minetest.register_node("farming:ginger_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_ginger_3.png"} def.drop = { items = { @@ -48,6 +59,7 @@ def.drop = { minetest.register_node("farming:ginger_3", table.copy(def)) -- stage 4 (final) + def.tiles = {"farming_ginger_4.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -60,6 +72,7 @@ def.drop = { minetest.register_node("farming:ginger_4", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:ginger"] = { crop = "farming:ginger", seed = "farming:ginger", @@ -69,6 +82,7 @@ farming.registered_plants["farming:ginger"] = { } -- mapgen + minetest.register_decoration({ name = "farming:ginger_4", deco_type = "simple", diff --git a/crops/grapes.lua b/crops/grapes.lua index 57fc283..6e0fd6d 100644 --- a/crops/grapes.lua +++ b/crops/grapes.lua @@ -1,27 +1,24 @@ -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") + +-- place trellis helper --- place trellis local function place_grapes(itemstack, placer, pointed_thing, plantname) local pt = pointed_thing -- check if pointing at a node - if not pt or pt.type ~= "node" then - return - end + if not pt or pt.type ~= "node" then return end local under = minetest.get_node(pt.under) -- return if any of the nodes are not registered - if not minetest.registered_nodes[under.name] then - return - end + if not minetest.registered_nodes[under.name] then return end -- am I right-clicking on something that has a custom on_place set? -- thanks to Krock for helping with this issue :) local def = minetest.registered_nodes[under.name] + if placer and itemstack and def and def.on_rightclick then return def.on_rightclick(pt.under, under, placer, itemstack, pt) end @@ -30,19 +27,15 @@ local function place_grapes(itemstack, placer, pointed_thing, plantname) local name = placer and placer:get_player_name() or "" -- check for protection - if minetest.is_protected(pt.under, name) then - return - end + if minetest.is_protected(pt.under, name) then return end -- check if pointing at trellis - if under.name ~= "farming:trellis" then - return - end + if under.name ~= "farming:trellis" then return end -- add the node and remove 1 item from the itemstack minetest.set_node(pt.under, {name = plantname}) - minetest.sound_play("default_place_node", {pos = pt.under, gain = 1.0}) + minetest.sound_play("default_place_node", {pos = pt.under, gain = 1.0}, true) if placer and not farming.is_creative(placer:get_player_name()) then @@ -51,11 +44,8 @@ local function place_grapes(itemstack, placer, pointed_thing, plantname) -- check for refill if itemstack:get_count() == 0 then - minetest.after(0.20, - farming.refill_plant, - placer, - "farming:grapes", - placer:get_wield_index() + minetest.after(0.20, farming.refill_plant, placer, + "farming:grapes", placer:get_wield_index() ) end end @@ -63,24 +53,23 @@ local function place_grapes(itemstack, placer, pointed_thing, plantname) return itemstack end --- grapes +-- item/seed + minetest.register_craftitem("farming:grapes", { description = S("Grapes"), inventory_image = "farming_grapes.png", + groups = {compostability = 48, seed = 2, food_grapes = 1}, on_use = minetest.item_eat(2), - groups = {compostability = 48, seed = 2, food_grapes = 1, flammable = 3}, + on_place = function(itemstack, placer, pointed_thing) return place_grapes(itemstack, placer, pointed_thing, "farming:grapes_1") end }) --- grapes can be used for violet dye -minetest.register_craft({ - output = a.dye_violet, - recipe = {{"farming:grapes"}} -}) +farming.add_eatable("farming:grapes", 2) -- trellis + minetest.register_node("farming:trellis", { description = S("Trellis (place on soil before planting grapes)"), drawtype = "plantlike", @@ -94,27 +83,25 @@ minetest.register_node("farming:trellis", { drop = "farming:trellis", selection_box = farming.select, groups = {handy = 1, snappy = 3, flammable = 2, attached_node = 1}, - sounds = farming.sounds.node_sound_leaves_defaults(), + 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 + if not pt or pt.type ~= "node" then return end local under = minetest.get_node(pt.under) -- return if any of the nodes are not registered - if not minetest.registered_nodes[under.name] then - return - end + if not minetest.registered_nodes[under.name] then return end -- am I right-clicking on something that has a custom on_place set? -- thanks to Krock for helping with this issue :) local def = minetest.registered_nodes[under.name] + if def and def.on_rightclick then return def.on_rightclick(pt.under, under, placer, itemstack, pt) end @@ -125,9 +112,7 @@ minetest.register_node("farming:trellis", { local nodename = under.name - if minetest.get_item_group(nodename, "soil") < 2 then - return - end + if minetest.get_item_group(nodename, "soil") < 2 then return end local top = { x = pointed_thing.above.x, @@ -137,9 +122,7 @@ minetest.register_node("farming:trellis", { nodename = minetest.get_node(top).name - if nodename ~= "air" then - return - end + if nodename ~= "air" then return end minetest.set_node(pointed_thing.above, {name = "farming:trellis"}) @@ -151,23 +134,10 @@ minetest.register_node("farming:trellis", { end }) -minetest.register_craft({ - output = "farming:trellis", - recipe = { - {"group:stick", "group:stick", "group:stick"}, - {"group:stick", "group:stick", "group:stick"}, - {"group:stick", "group:stick", "group:stick"} - } -}) +-- crop definition -minetest.register_craft({ - type = "fuel", - recipe = "farming:trellis", - burntime = 15 -}) - --- grapes definition local def = { + description = S("Grapes") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_grapes_1.png"}, visual_scale = 1.9, @@ -185,37 +155,47 @@ local def = { handy = 1, snappy = 3, flammable = 3, not_in_creative_inventory = 1, attached_node = 1, growing = 1, plant = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:grapes_1", table.copy(def)) -- stage2 + def.tiles = {"farming_grapes_2.png"} minetest.register_node("farming:grapes_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_grapes_3.png"} minetest.register_node("farming:grapes_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_grapes_4.png"} minetest.register_node("farming:grapes_4", table.copy(def)) -- stage 5 + def.tiles = {"farming_grapes_5.png"} minetest.register_node("farming:grapes_5", table.copy(def)) -- stage 6 + def.tiles = {"farming_grapes_6.png"} minetest.register_node("farming:grapes_6", table.copy(def)) -- stage 7 + def.tiles = {"farming_grapes_7.png"} minetest.register_node("farming:grapes_7", table.copy(def)) -- stage 8 (final) + def.tiles = {"farming_grapes_8.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -230,6 +210,7 @@ def.drop = { minetest.register_node("farming:grapes_8", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:grapes"] = { trellis = "farming:trellis", crop = "farming:grapes", @@ -240,6 +221,7 @@ farming.registered_plants["farming:grapes"] = { } -- wild grape vine (this is what you find on the map) + minetest.register_node("farming:grapebush", { drawtype = "plantlike", tiles = {"farming_grapebush.png"}, @@ -260,10 +242,12 @@ minetest.register_node("farming:grapebush", { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, compostability = 35 }, - sounds = farming.sounds.node_sound_leaves_defaults() + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() }) -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/hemp.lua b/crops/hemp.lua index 6cf2671..4bb595b 100644 --- a/crops/hemp.lua +++ b/crops/hemp.lua @@ -1,8 +1,8 @@ -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") + +-- seed --- hemp seeds minetest.register_node("farming:seed_hemp", { description = S("Hemp Seed"), tiles = {"farming_hemp_seed.png"}, @@ -13,200 +13,36 @@ minetest.register_node("farming:seed_hemp", { handy = 1, compostability = 38, seed = 1, snappy = 3, attached_node = 1, growing = 1 }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, paramtype = "light", paramtype2 = "wallmounted", walkable = false, sunlight_propagates = true, selection_box = farming.select, next_plant = "farming:hemp_1", + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_hemp") end, + on_timer = function(pos, elapsed) minetest.set_node(pos, {name = "farming:hemp_1", param2 = 1}) end }) --- harvested hemp +-- item + minetest.register_craftitem("farming:hemp_leaf", { description = S("Hemp Leaf"), inventory_image = "farming_hemp_leaf.png", groups = {compostability = 35} }) --- hemp oil -minetest.register_node("farming:hemp_oil", { - description = S("Bottle of Hemp Oil"), - drawtype = "plantlike", - tiles = {"farming_hemp_oil.png"}, - inventory_image = "farming_hemp_oil.png", - wield_image = "farming_hemp_oil.png", - paramtype = "light", - is_ground_content = false, - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} - }, - groups = { - food_oil = 1, vessel = 1, dig_immediate = 3, attached_node = 1, - compostability = 45 - }, - sounds = farming.sounds.node_sound_glass_defaults() -}) +-- crop definition -minetest.register_craft( { - output = "farming:hemp_oil", - recipe = { - {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}, - {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}, - {"", a.glass_bottle, ""} - } -}) - -minetest.register_craft( { - output = "farming:hemp_oil", - recipe = { - {"farming:seed_hemp", "farming:seed_hemp", "farming:seed_hemp"}, - {"farming:seed_hemp", "farming:seed_hemp", "farming:seed_hemp"}, - {"farming:seed_hemp", a.glass_bottle, "farming:seed_hemp"} - } -}) - -minetest.register_craft({ - type = "fuel", - recipe = "farming:hemp_oil", - burntime = 20, - replacements = {{"farming:hemp_oil", a.glass_bottle}} -}) - --- hemp fibre -minetest.register_craftitem("farming:hemp_fibre", { - description = S("Hemp Fibre"), - inventory_image = "farming_hemp_fibre.png", - groups = {compostability = 55} -}) - -minetest.register_craft( { - output = "farming:hemp_fibre 8", - recipe = { - {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}, - {"farming:hemp_leaf", "group:water_bucket", "farming:hemp_leaf"}, - {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"} - }, - replacements = {{"group:water_bucket", a.bucket_empty}} -}) - -if minetest.get_modpath("bucket_wooden") then - minetest.register_craft( { - output = "farming:hemp_fibre 8", - recipe = { - {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}, - {"farming:hemp_leaf", "group:water_bucket_wooden", "farming:hemp_leaf"}, - {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"} - }, - replacements = {{"group:water_bucket_wooden", "bucket_wooden:bucket_empty"}} - }) -end - --- hemp block -minetest.register_node("farming:hemp_block", { - description = S("Hemp Block"), - tiles = {"farming_hemp_block.png"}, - paramtype = "light", - groups = { - axey = 1, handy = 1, snappy = 2, oddly_breakable_by_hand = 1, flammable = 2, - compostability = 85 - }, - sounds = farming.sounds.node_sound_leaves_defaults(), - _mcl_hardness = 0.8, - _mcl_blast_resistance = 1 -}) - -minetest.register_craft( { - output = "farming:hemp_block", - recipe = { - {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"}, - {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"}, - {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"} - } -}) - --- check and register stairs -if minetest.global_exists("stairs") then - - if stairs.mod and stairs.mod == "redo" then - - stairs.register_all("hemp_block", "farming:hemp_block", - {snappy = 2, oddly_breakable_by_hand = 1, flammable = 2}, - {"farming_hemp_block.png"}, - "Hemp Block", - farming.sounds.node_sound_leaves_defaults()) - else - - stairs.register_stair_and_slab("hemp_block", "farming:hemp_block", - {snappy = 2, oddly_breakable_by_hand = 1, flammable = 2}, - {"farming_hemp_block.png"}, - "Hemp Block Stair", - "Hemp Block Slab", - farming.sounds.node_sound_leaves_defaults()) - end -end - --- paper -minetest.register_craft( { - output = a.paper .. " 3", - recipe = { - {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"} - } -}) - --- string -minetest.register_craft( { - output = "farming:cotton 3", - recipe = { - {"farming:hemp_fibre"}, - {"farming:hemp_fibre"}, - {"farming:hemp_fibre"} - } -}) - --- hemp rope -minetest.register_node("farming:hemp_rope", { - description = S("Hemp Rope"), - walkable = false, - climbable = true, - sunlight_propagates = true, - paramtype = "light", - tiles = {"farming_hemp_rope.png"}, - wield_image = "farming_hemp_rope.png", - inventory_image = "farming_hemp_rope.png", - drawtype = "plantlike", - groups = { - handy = 1, axey = 1, swordy = 1, flammable = 2, choppy = 3, - oddly_breakable_by_hand = 3, compostability = 55 - }, - sounds = farming.sounds.node_sound_leaves_defaults(), - selection_box = { - type = "fixed", - fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7} - }, - _mcl_hardness = 0.8, - _mcl_blast_resistance = 1 -}) - --- string -minetest.register_craft( { - output = "farming:hemp_rope 6", - recipe = { - {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"}, - {"farming:cotton", "farming:cotton", "farming:cotton"}, - {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"} - } -}) - --- hemp definition local def = { + description = S("Hemp") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_hemp_1.png"}, paramtype = "light", @@ -220,29 +56,37 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:hemp_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_hemp_2.png"} minetest.register_node("farming:hemp_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_hemp_3.png"} minetest.register_node("farming:hemp_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_hemp_4.png"} minetest.register_node("farming:hemp_4", table.copy(def)) -- stage 5 + def.tiles = {"farming_hemp_5.png"} minetest.register_node("farming:hemp_5", table.copy(def)) -- stage 6 + def.tiles = {"farming_hemp_6.png"} def.drop = { items = { @@ -253,6 +97,7 @@ def.drop = { minetest.register_node("farming:hemp_6", table.copy(def)) -- stage 7 + def.tiles = {"farming_hemp_7.png"} def.drop = { items = { @@ -265,6 +110,7 @@ def.drop = { minetest.register_node("farming:hemp_7", table.copy(def)) -- stage 8 (final) + def.tiles = {"farming_hemp_8.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -279,6 +125,7 @@ def.drop = { minetest.register_node("farming:hemp_8", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:hemp"] = { crop = "farming:hemp", seed = "farming:seed_hemp", @@ -288,6 +135,7 @@ farming.registered_plants["farming:hemp"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = { diff --git a/crops/lettuce.lua b/crops/lettuce.lua index 3e555be..a950d0f 100644 --- a/crops/lettuce.lua +++ b/crops/lettuce.lua @@ -1,18 +1,25 @@ -local S = farming.translate +local S = minetest.get_translator("farming") + +-- item/seed --- lettuce minetest.register_craftitem("farming:lettuce", { description = S("Lettuce"), inventory_image = "farming_lettuce.png", - groups = {compostability = 48, seed = 2, food_lettuce = 1, flammable = 2}, + groups = {compostability = 48, seed = 2, food_lettuce = 1}, + on_use = minetest.item_eat(2), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:lettuce_1") - end, - on_use = minetest.item_eat(2) + 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", @@ -25,25 +32,32 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:lettuce_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_lettuce_2.png"} minetest.register_node("farming:lettuce_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_lettuce_3.png"} minetest.register_node("farming:lettuce_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_lettuce_4.png"} minetest.register_node("farming:lettuce_4", table.copy(def)) -- stage 5 + def.tiles = {"farming_lettuce_5.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -56,6 +70,7 @@ def.drop = { minetest.register_node("farming:lettuce_5", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:lettuce"] = { crop = "farming:lettuce", seed = "farming:lettuce", @@ -65,6 +80,7 @@ farming.registered_plants["farming:lettuce"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/melon.lua b/crops/melon.lua index 85a1af9..b123eb0 100644 --- a/crops/melon.lua +++ b/crops/melon.lua @@ -1,34 +1,25 @@ -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") + +-- item/seed --- melon minetest.register_craftitem("farming:melon_slice", { description = S("Melon Slice"), inventory_image = "farming_melon_slice.png", - groups = {compostability = 48, seed = 2, food_melon_slice = 1, flammable = 3}, + groups = {compostability = 48, seed = 2, food_melon_slice = 1}, + on_use = minetest.item_eat(2), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:melon_1") - end, - on_use = minetest.item_eat(2) + end }) -minetest.register_craft({ - output = "farming:melon_8", - recipe = { - {"farming:melon_slice", "farming:melon_slice"}, - {"farming:melon_slice", "farming:melon_slice"} - } -}) +farming.add_eatable("farming:melon_slice", 2) -minetest.register_craft({ - output = "farming:melon_slice 4", - recipe = {{"farming:melon_8", a.cutting_board}}, - replacements = {{"farming:cutting_board", "farming:cutting_board"}} -}) +-- crop definition --- melon definition local def = { + description = S("Melon") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_melon_1.png"}, paramtype = "light", @@ -41,37 +32,47 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:melon_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_melon_2.png"} minetest.register_node("farming:melon_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_melon_3.png"} minetest.register_node("farming:melon_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_melon_4.png"} minetest.register_node("farming:melon_4", table.copy(def)) -- stage 5 + def.tiles = {"farming_melon_5.png"} minetest.register_node("farming:melon_5", table.copy(def)) -- stage 6 + def.tiles = {"farming_melon_6.png"} minetest.register_node("farming:melon_6", table.copy(def)) -- stage 7 + def.tiles = {"farming_melon_7.png"} minetest.register_node("farming:melon_7", table.copy(def)) -- stage 8 (final) + minetest.register_node("farming:melon_8", { description = S("Melon"), tiles = { @@ -83,8 +84,9 @@ minetest.register_node("farming:melon_8", { food_melon = 1, handy = 1, snappy = 3, choppy = 3, oddly_breakable_by_hand = 2, flammable = 2, plant = 1, compostability = 65 }, + is_ground_content = false, drop = "farming:melon_8", - sounds = farming.sounds.node_sound_wood_defaults(), + sounds = farming.node_sound_wood_defaults(), paramtype2 = "facedir", on_place = minetest.rotate_node, _mcl_hardness = 0.8, @@ -92,6 +94,7 @@ minetest.register_node("farming:melon_8", { }) -- add to registered_plants + farming.registered_plants["farming:melon"] = { crop = "farming:melon", seed = "farming:melon_slice", @@ -101,6 +104,7 @@ farming.registered_plants["farming:melon"] = { } -- mapgen + local mg = farming.mapgen == "v6" def = { diff --git a/crops/mint.lua b/crops/mint.lua index f8afebb..9894e7e 100644 --- a/crops/mint.lua +++ b/crops/mint.lua @@ -1,8 +1,8 @@ -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") + +-- seed --- mint seed minetest.register_node("farming:seed_mint", { description = S("Mint Seeds"), tiles = {"farming_mint_seeds.png"}, @@ -13,49 +13,36 @@ minetest.register_node("farming:seed_mint", { compostability = 48, seed = 1, snappy = 3, attached_node = 1, growing = 1, handy = 1, flammable = 2 }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, paramtype = "light", paramtype2 = "wallmounted", walkable = false, sunlight_propagates = true, selection_box = farming.select, next_plant = "farming:mint_1", + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_mint") end, + on_timer = function(pos, elapsed) minetest.set_node(pos, {name = "farming:mint_1", param2 = 1}) end }) --- mint leaf +-- item + minetest.register_craftitem("farming:mint_leaf", { description = S("Mint Leaf"), inventory_image = "farming_mint_leaf.png", groups = {food_mint = 1, flammable = 4, compostability = 48} }) --- mint tea -minetest.register_craftitem("farming:mint_tea", { - description = S("Mint Tea"), - inventory_image = "farming_mint_tea.png", - on_use = minetest.item_eat(2, a.drinking_glass), - groups = {flammable = 4} -}) +-- crop definition -minetest.register_craft({ - output = "farming:mint_tea", - recipe = { - {"group:food_mint", "group:food_mint", "group:food_mint"}, - {"group:food_glass_water", a.juicer, ""} - }, - replacements = { - {"group:food_juicer", "farming:juicer"} - } -}) - - --- mint definition local def = { + description = S("Mint") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_mint_1.png"}, paramtype = "light", @@ -68,21 +55,27 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:mint_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_mint_2.png"} minetest.register_node("farming:mint_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_mint_3.png"} minetest.register_node("farming:mint_3", table.copy(def)) -- stage 4 (final) + def.tiles = {"farming_mint_4.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -97,6 +90,7 @@ def.drop = { minetest.register_node("farming:mint_4", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:mint"] = { crop = "farming:mint", seed = "farming:seed_mint", @@ -106,6 +100,7 @@ farming.registered_plants["farming:mint"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = { diff --git a/crops/onion.lua b/crops/onion.lua index 08310c8..1c56b4f 100644 --- a/crops/onion.lua +++ b/crops/onion.lua @@ -5,46 +5,27 @@ https://forum.minetest.net/viewtopic.php?f=9&t=19488 ]] -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") + +-- item/seed --- onion minetest.register_craftitem("farming:onion", { description = S("Onion"), inventory_image = "crops_onion.png", - groups = {compostability = 48, seed = 2, food_onion = 1, flammable = 3}, + groups = {compostability = 48, seed = 2, food_onion = 1}, + on_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:onion_1") - end, - on_use = minetest.item_eat(1) + end }) --- onion soup -minetest.register_craftitem("farming:onion_soup", { - description = S("Onion Soup"), - inventory_image = "farming_onion_soup.png", - groups = {flammable = 2, compostability = 65}, - on_use = minetest.item_eat(6, a.bowl) -}) - -minetest.register_craft({ - output = "farming:onion_soup", - recipe = { - {"group:food_onion", "group:food_onion", "group:food_onion"}, - {"group:food_onion", "group:food_bowl", "group:food_onion"}, - {"", a.pot, ""} - }, - replacements = {{"farming:pot", "farming:pot"}} -}) - --- yellow dye -minetest.register_craft({ - output = a.dye_yellow, - recipe = {{"group:food_onion"}} -}) +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", @@ -61,25 +42,32 @@ local def = { handy = 1, snappy = 3, flammable = 3, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:onion_1", table.copy(def)) -- stage 2 + def.tiles = {"crops_onion_plant_2.png"} minetest.register_node("farming:onion_2", table.copy(def)) -- stage 3 + def.tiles = {"crops_onion_plant_3.png"} minetest.register_node("farming:onion_3", table.copy(def)) -- stage 4 + def.tiles = {"crops_onion_plant_4.png"} minetest.register_node("farming:onion_4", table.copy(def)) -- stage 5 + def.tiles = {"crops_onion_plant_5.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -95,6 +83,7 @@ def.drop = { minetest.register_node("farming:onion_5", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:onion"] = { crop = "farming:onion", seed = "farming:onion", @@ -104,6 +93,7 @@ farming.registered_plants["farming:onion"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/parsley.lua b/crops/parsley.lua index 3ba3bf7..4be7ab9 100644 --- a/crops/parsley.lua +++ b/crops/parsley.lua @@ -1,18 +1,25 @@ -local S = farming.translate +local S = minetest.get_translator("farming") + +-- item/seed --- item definition minetest.register_craftitem("farming:parsley", { description = S("Parsley"), inventory_image = "farming_parsley.png", - groups = {compostability = 48, seed = 2, food_parsley = 1, flammable = 2}, + groups = {compostability = 48, seed = 2, food_parsley = 1}, + on_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:parsley_1") end }) +farming.add_eatable("farming:parsley", 1) + -- crop definition + local def = { + description = S("Parsley") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_parsley_1.png"}, paramtype = "light", @@ -26,17 +33,22 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:parsley_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_parsley_2.png"} minetest.register_node("farming:parsley_2", table.copy(def)) -- stage 3 (final) + def.tiles = {"farming_parsley_3.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -50,6 +62,7 @@ def.drop = { minetest.register_node("farming:parsley_3", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:parsley"] = { crop = "farming:parsley", seed = "farming:parsley", @@ -59,6 +72,7 @@ farming.registered_plants["farming:parsley"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/peas.lua b/crops/peas.lua index a3e7800..467d08e 100644 --- a/crops/peas.lua +++ b/crops/peas.lua @@ -1,43 +1,31 @@ -local S = farming.translate -local a = farming.recipe_items +-- Textures for peas and their crop were done by Andrey01 --- Textures for Pea crop and Peas were done by Andrey01 +local S = minetest.get_translator("farming") + +-- item/seed --- pea pod minetest.register_craftitem("farming:pea_pod", { description = S("Pea Pod"), inventory_image = "farming_pea_pod.png", - groups = { - compostability = 48, seed = 2, food_peas = 1, food_pea_pod = 1, flammable = 2 - }, + groups = {compostability = 48, seed = 2, food_peas = 1, food_pea_pod = 1}, + on_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:pea_1") - end, - on_use = minetest.item_eat(1) + end }) +farming.add_eatable("farming:pea_pod", 1) + -- replacement for separate peas item that was removed + minetest.register_alias("farming:peas", "farming:pea_pod") --- pea soup -minetest.register_craftitem("farming:pea_soup", { - description = S("Pea Soup"), - inventory_image = "farming_pea_soup.png", - groups = {flammable = 2, compostability = 65}, - on_use = minetest.item_eat(4, a.bowl) -}) - -minetest.register_craft({ - output = "farming:pea_soup", - recipe = { - {"group:food_peas"}, - {"group:food_peas"}, - {"group:food_bowl"} - } -}) +-- crop definition local def = { + description = S("Pea") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_pea_1.png"}, paramtype = "light", @@ -53,25 +41,32 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:pea_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_pea_2.png"} minetest.register_node("farming:pea_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_pea_3.png"} minetest.register_node("farming:pea_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_pea_4.png"} minetest.register_node("farming:pea_4", table.copy(def)) --- stage 5 +-- stage 5 (final) + def.tiles = {"farming_pea_5.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -86,6 +81,7 @@ def.drop = { minetest.register_node("farming:pea_5", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:pea_pod"] = { crop = "farming:pea", seed = "farming:pea_pod", @@ -95,6 +91,7 @@ farming.registered_plants["farming:pea_pod"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/pepper.lua b/crops/pepper.lua index e1f3a4c..2147929 100644 --- a/crops/pepper.lua +++ b/crops/pepper.lua @@ -5,80 +5,64 @@ https://forum.minetest.net/viewtopic.php?f=9&t=19488 ]] -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") + +-- seed --- peppercorn (seed) minetest.register_craftitem("farming:peppercorn", { description = S("Peppercorn"), inventory_image = "crops_peppercorn.png", groups = {compostability = 48, seed = 1, food_peppercorn = 1, flammable = 3}, + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:pepper_1") end }) -- green pepper + minetest.register_craftitem("farming:pepper", { description = S("Green Pepper"), inventory_image = "crops_pepper.png", on_use = minetest.item_eat(2), - groups = {food_pepper = 1, flammable = 3, compostability = 55} + groups = {food_pepper = 1, compostability = 55} }) +farming.add_eatable("farming:pepper", 2) + -- yellow pepper + minetest.register_craftitem("farming:pepper_yellow", { description = S("Yellow Pepper"), inventory_image = "crops_pepper_yellow.png", on_use = minetest.item_eat(3), - groups = {food_pepper = 1, flammable = 3, compostability = 55} + groups = {food_pepper = 1, compostability = 55} }) +farming.add_eatable("farming:pepper_yellow", 3) + -- red pepper + minetest.register_craftitem("farming:pepper_red", { description = S("Red Pepper"), inventory_image = "crops_pepper_red.png", on_use = minetest.item_eat(4), - groups = {food_pepper = 1, flammable = 3, compostability = 55} + groups = {food_pepper = 1, compostability = 55} }) +farming.add_eatable("farming:pepper_red", 4) + +-- pepper to peppercorn recipe + minetest.register_craft({ output = "farming:peppercorn", recipe = {{"group:food_pepper"}} }) --- ground pepper -minetest.register_node("farming:pepper_ground", { - description = S("Ground Pepper"), - inventory_image = "crops_pepper_ground.png", - wield_image = "crops_pepper_ground.png", - drawtype = "plantlike", - visual_scale = 0.8, - paramtype = "light", - tiles = {"crops_pepper_ground.png"}, - groups = { - vessel = 1, food_pepper_ground = 1, - dig_immediate = 3, attached_node = 1, compostability = 30 - }, - sounds = farming.sounds.node_sound_defaults(), - selection_box = { - type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} - } -}) - -minetest.register_craft( { - output = "farming:pepper_ground", - recipe = { - {"group:food_peppercorn"}, - {a.glass_bottle}, - {a.mortar_pestle} - }, - replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} -}) - -- crop definition + local def = { + description = S("Pepper") .. S(" Crop"), drawtype = "plantlike", tiles = {"crops_pepper_plant_1.png"}, paramtype = "light", @@ -94,25 +78,32 @@ local def = { handy = 1, snappy = 3, flammable = 3, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:pepper_1", table.copy(def)) -- stage 2 + def.tiles = {"crops_pepper_plant_2.png"} minetest.register_node("farming:pepper_2", table.copy(def)) -- stage 3 + def.tiles = {"crops_pepper_plant_3.png"} minetest.register_node("farming:pepper_3", table.copy(def)) -- stage 4 + def.tiles = {"crops_pepper_plant_4.png"} minetest.register_node("farming:pepper_4", table.copy(def)) -- stage 5 (green pepper) + def.tiles = {"crops_pepper_plant_5.png"} def.selection_box = farming.select_final def.drop = { @@ -125,6 +116,7 @@ def.drop = { minetest.register_node("farming:pepper_5", table.copy(def)) -- stage 6 (yellow pepper) + def.tiles = {"crops_pepper_plant_6.png"} def.drop = { max_items = 2, items = { @@ -135,7 +127,8 @@ def.drop = { } minetest.register_node("farming:pepper_6", table.copy(def)) --- stage 7 (red pepper) +-- stage 7 (red pepper - final) + def.tiles = {"crops_pepper_plant_7.png"} def.groups.growing = nil def.drop = { @@ -148,6 +141,7 @@ def.drop = { minetest.register_node("farming:pepper_7", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:pepper"] = { crop = "farming:pepper", seed = "farming:peppercorn", @@ -157,6 +151,7 @@ farming.registered_plants["farming:pepper"] = { } -- mapgen + local mg = farming.mapgen == "v6" def = { diff --git a/crops/pineapple.lua b/crops/pineapple.lua index 32790c3..3f18eed 100644 --- a/crops/pineapple.lua +++ b/crops/pineapple.lua @@ -1,18 +1,20 @@ -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") + +-- seed --- pineapple top minetest.register_craftitem("farming:pineapple_top", { description = S("Pineapple Top"), inventory_image = "farming_pineapple_top.png", groups = {compostability = 48, seed = 2, flammable = 2}, + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:pineapple_1") end }) --- pineapple +-- item + minetest.register_node("farming:pineapple", { description = S("Pineapple"), drawtype = "plantlike", @@ -23,63 +25,20 @@ minetest.register_node("farming:pineapple", { sunlight_propagates = true, walkable = false, selection_box = { - type = "fixed", - fixed = {-0.27, -0.37, -0.27, 0.27, 0.44, 0.27} + type = "fixed", fixed = {-0.27, -0.37, -0.27, 0.27, 0.44, 0.27} }, groups = { food_pineapple = 1, fleshy = 3, dig_immediate = 3, flammable = 2, compostability = 65 - } -}) - --- pineapple -minetest.register_craftitem("farming:pineapple_ring", { - description = S("Pineapple Ring"), - inventory_image = "farming_pineapple_ring.png", - groups = {food_pineapple_ring = 1, flammable = 2, compostability = 45}, - on_use = minetest.item_eat(1) -}) - -minetest.register_craft( { - output = "farming:pineapple_ring 5", - recipe = {{"group:food_pineapple"}}, - replacements = {{"farming:pineapple", "farming:pineapple_top"}} -}) - --- pineapple juice -minetest.register_craftitem("farming:pineapple_juice", { - description = S("Pineapple Juice"), - inventory_image = "farming_pineapple_juice.png", - on_use = minetest.item_eat(4, "vessels:drinking_glass"), - groups = {vessel = 1, drink = 1, compostability = 35} -}) - -minetest.register_craft({ - output = "farming:pineapple_juice", - recipe = { - {"group:food_pineapple_ring", "group:food_pineapple_ring", - "group:food_pineapple_ring"}, - {"", a.drinking_glass, ""}, - {"", a.juicer, ""} }, - replacements = { - {"group:food_juicer", "farming:juicer"} - } -}) - -minetest.register_craft({ - output = "farming:pineapple_juice 2", - recipe = { - {a.drinking_glass, "group:food_pineapple", a.drinking_glass}, - {"", a.juicer, ""} - }, - replacements = { - {"group:food_juicer", "farming:juicer"} - } + _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"}, @@ -94,37 +53,47 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:pineapple_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_pineapple_2.png"} minetest.register_node("farming:pineapple_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_pineapple_3.png"} minetest.register_node("farming:pineapple_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_pineapple_4.png"} minetest.register_node("farming:pineapple_4", table.copy(def)) -- stage 5 + def.tiles = {"farming_pineapple_5.png"} minetest.register_node("farming:pineapple_5", table.copy(def)) -- stage 6 + def.tiles = {"farming_pineapple_6.png"} minetest.register_node("farming:pineapple_6", table.copy(def)) -- stage 7 + def.tiles = {"farming_pineapple_7.png"} minetest.register_node("farming:pineapple_7", table.copy(def)) -- stage 8 (final) + def.tiles = {"farming_pineapple_8.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -137,6 +106,7 @@ def.drop = { minetest.register_node("farming:pineapple_8", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:pineapple"] = { crop = "farming:pineapple", seed = "farming:pineapple_top", @@ -146,6 +116,7 @@ farming.registered_plants["farming:pineapple"] = { } -- mapgen + local mg = farming.mapgen == "v6" def = { diff --git a/crops/potato.lua b/crops/potato.lua index caaa72b..1f76493 100644 --- a/crops/potato.lua +++ b/crops/potato.lua @@ -4,19 +4,24 @@ https://forum.minetest.net/viewtopic.php?id=3948 ]] -local S = farming.translate +local S = minetest.get_translator("farming") + +-- item/seed --- potato minetest.register_craftitem("farming:potato", { description = S("Potato"), inventory_image = "farming_potato.png", - groups = {compostability = 48, seed = 2, food_potato = 1, flammable = 2}, + groups = {compostability = 48, seed = 2, food_potato = 1}, + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:potato_1") end, + -- 1 in 3 chance of being poisoned on_use = function(itemstack, user, pointed_thing) + if user then + if math.random(3) == 1 then return minetest.do_item_eat(-1, nil, itemstack, user, pointed_thing) else @@ -26,38 +31,12 @@ minetest.register_craftitem("farming:potato", { end }) --- baked potato -minetest.register_craftitem("farming:baked_potato", { - description = S("Baked Potato"), - inventory_image = "farming_baked_potato.png", - on_use = minetest.item_eat(6) -}) +farming.add_eatable("farming:potato", 1) -minetest.register_craft({ - type = "cooking", - cooktime = 10, - output = "farming:baked_potato", - recipe = "group:food_potato" -}) +-- crop definition --- Potato and cucumber Salad -minetest.register_craftitem("farming:potato_salad", { - description = S("Cucumber and Potato Salad"), - inventory_image = "farming_potato_salad.png", - on_use = minetest.item_eat(10, "farming:bowl") -}) - -minetest.register_craft({ - output = "farming:potato_salad", - recipe = { - {"group:food_cucumber"}, - {"farming:baked_potato"}, - {"group:food_bowl"} - } -}) - --- potato definition local def = { + description = S("Potato") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_potato_1.png"}, paramtype = "light", @@ -71,17 +50,22 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:potato_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_potato_2.png"} minetest.register_node("farming:potato_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_potato_3.png"} def.drop = { items = { @@ -91,7 +75,8 @@ def.drop = { } minetest.register_node("farming:potato_3", table.copy(def)) --- stage 4 +-- stage 4 (final) + def.tiles = {"farming_potato_4.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -104,6 +89,7 @@ def.drop = { minetest.register_node("farming:potato_4", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:potato"] = { crop = "farming:potato", seed = "farming:potato", @@ -113,6 +99,7 @@ farming.registered_plants["farming:potato"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/pumpkin.lua b/crops/pumpkin.lua index 617fb1c..de3fe08 100644 --- a/crops/pumpkin.lua +++ b/crops/pumpkin.lua @@ -1,152 +1,25 @@ -local S = farming.translate +local S = minetest.get_translator("farming") + +-- seed --- pumpkin slice minetest.register_craftitem("farming:pumpkin_slice", { description = S("Pumpkin Slice"), inventory_image = "farming_pumpkin_slice.png", - groups = {compostability = 48, seed = 2, food_pumpkin_slice = 1, flammable = 2}, + groups = {compostability = 48, seed = 2, food_pumpkin_slice = 1}, + on_use = minetest.item_eat(2), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:pumpkin_1") - end, - on_use = minetest.item_eat(2) + end }) -minetest.register_craft({ - output = "farming:pumpkin", - recipe = { - {"farming:pumpkin_slice", "farming:pumpkin_slice"}, - {"farming:pumpkin_slice", "farming:pumpkin_slice"} - } -}) +farming.add_eatable("farming:pumpkin_slice", 2) -local tmp = farming.use_utensils and "farming:cutting_board" or "" +-- crop definition -minetest.register_craft({ - output = "farming:pumpkin_slice 4", - recipe = {{"farming:pumpkin", tmp}}, - replacements = {{"farming:cutting_board", "farming:cutting_board"}} -}) - --- jack 'o lantern -minetest.register_node("farming:jackolantern", { - description = S("Jack 'O Lantern (punch to turn on and off)"), - tiles = { - "farming_pumpkin_bottom.png^farming_pumpkin_top.png", - "farming_pumpkin_bottom.png", - "farming_pumpkin_side.png", - "farming_pumpkin_side.png", - "farming_pumpkin_side.png", - "farming_pumpkin_side.png^farming_pumpkin_face_off.png" - }, - paramtype2 = "facedir", - groups = { - handy = 1, snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2 - }, - sounds = farming.sounds.node_sound_wood_defaults(), - on_punch = function(pos, node, puncher) - local name = puncher:get_player_name() or "" - if minetest.is_protected(pos, name) then return end - node.name = "farming:jackolantern_on" - minetest.swap_node(pos, node) - end, - _mcl_hardness = 0.8, - _mcl_blast_resistance = 1 -}) - -minetest.register_node("farming:jackolantern_on", { - tiles = { - "farming_pumpkin_bottom.png^farming_pumpkin_top.png", - "farming_pumpkin_bottom.png", - "farming_pumpkin_side.png", - "farming_pumpkin_side.png", - "farming_pumpkin_side.png", - "farming_pumpkin_side.png^farming_pumpkin_face_on.png" - }, - light_source = minetest.LIGHT_MAX - 1, - paramtype2 = "facedir", - groups = { - handy = 1, snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, - not_in_creative_inventory = 1 - }, - sounds = farming.sounds.node_sound_wood_defaults(), - drop = "farming:jackolantern", - on_punch = function(pos, node, puncher) - local name = puncher:get_player_name() or "" - if minetest.is_protected(pos, name) then return end - node.name = "farming:jackolantern" - minetest.swap_node(pos, node) - end, - _mcl_hardness = 0.8, - _mcl_blast_resistance = 1 -}) - -minetest.register_craft({ - output = "farming:jackolantern", - recipe = { - {"default:torch"}, - {"group:food_pumpkin"} - } -}) - ---- wooden scarecrow base -minetest.register_node("farming:scarecrow_bottom", { - description = S("Scarecrow Bottom"), - paramtype = "light", - sunlight_propagates = true, - paramtype2 = "facedir", - tiles = {"default_wood.png"}, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-1/16, -8/16, -1/16, 1/16, 8/16, 1/16}, - {-12/16, 4/16, -1/16, 12/16, 2/16, 1/16}, - } - }, - groups = {axey = 1, handy = 1, snappy = 3, flammable = 2}, - _mcl_hardness = 0.8, - _mcl_blast_resistance = 1 -}) - -minetest.register_craft({ - output = "farming:scarecrow_bottom", - recipe = { - {"", "group:stick", ""}, - {"group:stick", "group:stick", "group:stick"}, - {"", "group:stick", ""} - } -}) - --- pumpkin bread -minetest.register_craftitem("farming:pumpkin_bread", { - description = S("Pumpkin Bread"), - inventory_image = "farming_pumpkin_bread.png", - on_use = minetest.item_eat(8), - groups = {food_bread = 1, flammable = 2} -}) - -minetest.register_craftitem("farming:pumpkin_dough", { - description = S("Pumpkin Dough"), - inventory_image = "farming_pumpkin_dough.png" -}) - -minetest.register_craft({ - output = "farming:pumpkin_dough", - recipe = { - {"group:food_pumpkin_slice", "group:food_flour", "group:food_pumpkin_slice"} - } -}) - -minetest.register_craft({ - type = "cooking", - output = "farming:pumpkin_bread", - recipe = "farming:pumpkin_dough", - cooktime = 10 -}) - --- pumpkin definition local def = { + description = S("Pumpkin") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_pumpkin_1.png"}, paramtype = "light", @@ -160,37 +33,47 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:pumpkin_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_pumpkin_2.png"} minetest.register_node("farming:pumpkin_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_pumpkin_3.png"} minetest.register_node("farming:pumpkin_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_pumpkin_4.png"} minetest.register_node("farming:pumpkin_4", table.copy(def)) -- stage 5 + def.tiles = {"farming_pumpkin_5.png"} minetest.register_node("farming:pumpkin_5", table.copy(def)) -- stage 6 + def.tiles = {"farming_pumpkin_6.png"} minetest.register_node("farming:pumpkin_6", table.copy(def)) -- stage 7 + def.tiles = {"farming_pumpkin_7.png"} minetest.register_node("farming:pumpkin_7", table.copy(def)) -- stage 8 (final) + minetest.register_node("farming:pumpkin_8", { description = S("Pumpkin"), tiles = { @@ -202,8 +85,9 @@ minetest.register_node("farming:pumpkin_8", { 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.sounds.node_sound_wood_defaults(), + sounds = farming.node_sound_wood_defaults(), paramtype2 = "facedir", on_place = minetest.rotate_node, _mcl_hardness = 0.8, @@ -213,6 +97,7 @@ minetest.register_node("farming:pumpkin_8", { minetest.register_alias("farming:pumpkin", "farming:pumpkin_8") -- add to registered_plants + farming.registered_plants["farming:pumpkin"] = { crop = "farming:pumpkin", seed = "farming:pumpkin_slice", @@ -222,6 +107,7 @@ farming.registered_plants["farming:pumpkin"] = { } -- mapgen + local mg = farming.mapgen == "v6" def = { diff --git a/crops/raspberry.lua b/crops/raspberry.lua index 0b16347..210225d 100644 --- a/crops/raspberry.lua +++ b/crops/raspberry.lua @@ -1,38 +1,28 @@ -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") + +-- item/seed --- raspberries minetest.register_craftitem("farming:raspberries", { description = S("Raspberries"), inventory_image = "farming_raspberries.png", - groups = {compostability = 48, seed = 2, food_raspberries = 1, food_raspberry = 1, - food_berry = 1, flammable = 2}, + groups = { + compostability = 48, seed = 2, food_raspberries = 1, food_raspberry = 1, + food_berry = 1 + }, + on_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:raspberry_1") - end, - on_use = minetest.item_eat(1) + end }) --- raspberry smoothie -minetest.register_craftitem("farming:smoothie_raspberry", { - description = S("Raspberry Smoothie"), - inventory_image = "farming_raspberry_smoothie.png", - on_use = minetest.item_eat(2, "vessels:drinking_glass"), - groups = {vessel = 1, drink = 1, compostability = 65} -}) +farming.add_eatable("farming:raspberries", 1) -minetest.register_craft({ - output = "farming:smoothie_raspberry", - recipe = { - {a.snow}, - {"group:food_raspberries"}, - {a.drinking_glass} - } -}) +-- crop definition --- raspberries definition local def = { + description = S("Raspberry") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_raspberry_1.png"}, paramtype = "light", @@ -45,21 +35,27 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:raspberry_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_raspberry_2.png"} minetest.register_node("farming:raspberry_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_raspberry_3.png"} minetest.register_node("farming:raspberry_3", table.copy(def)) -- stage 4 (final) + def.tiles = {"farming_raspberry_4.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -73,6 +69,7 @@ def.drop = { minetest.register_node("farming:raspberry_4", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:raspberries"] = { crop = "farming:raspberry", seed = "farming:raspberries", @@ -82,6 +79,7 @@ farming.registered_plants["farming:raspberries"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/rhubarb.lua b/crops/rhubarb.lua index ab22851..15ff9df 100644 --- a/crops/rhubarb.lua +++ b/crops/rhubarb.lua @@ -1,38 +1,25 @@ -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") + +-- item/seed --- rhubarb minetest.register_craftitem("farming:rhubarb", { description = S("Rhubarb"), inventory_image = "farming_rhubarb.png", - groups = {compostability = 48, seed = 2, food_rhubarb = 1, flammable = 2}, + groups = {compostability = 48, seed = 2, food_rhubarb = 1}, + on_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:rhubarb_1") - end, - on_use = minetest.item_eat(1) + end }) --- rhubarb pie -minetest.register_craftitem("farming:rhubarb_pie", { - description = S("Rhubarb Pie"), - inventory_image = "farming_rhubarb_pie.png", - on_use = minetest.item_eat(6), - groups = {compostability = 65} -}) +farming.add_eatable("farming:rhubarb", 1) -minetest.register_craft({ - output = "farming:rhubarb_pie", - recipe = { - {a.baking_tray, "group:food_sugar", ""}, - {"group:food_rhubarb", "group:food_rhubarb", "group:food_rhubarb"}, - {"group:food_wheat", "group:food_wheat", "group:food_wheat"} - }, - replacements = {{"group:food_baking_tray", "farming:baking_tray"}} -}) +-- crop definition --- rhubarb definition local def = { + description = S("Rhubarb") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_rhubarb_1.png"}, paramtype = "light", @@ -46,19 +33,24 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults(), + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults(), minlight = 10, maxlight = 12 } -- stage 1 + minetest.register_node("farming:rhubarb_1", table.copy(def)) -- stage2 + def.tiles = {"farming_rhubarb_2.png"} minetest.register_node("farming:rhubarb_2", table.copy(def)) -- stage3 + def.tiles = {"farming_rhubarb_3.png"} def.drop = { items = { @@ -68,6 +60,7 @@ def.drop = { minetest.register_node("farming:rhubarb_3", table.copy(def)) -- stage 4 (final) + def.tiles = {"farming_rhubarb_4.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -81,6 +74,7 @@ def.drop = { minetest.register_node("farming:rhubarb_4", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:rhubarb"] = { crop = "farming:rhubarb", seed = "farming:rhubarb", @@ -90,6 +84,7 @@ farming.registered_plants["farming:rhubarb"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/rice.lua b/crops/rice.lua index 372b2f4..66c0c04 100644 --- a/crops/rice.lua +++ b/crops/rice.lua @@ -1,8 +1,8 @@ -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") -- rice seed + minetest.register_node("farming:seed_rice", { description = S("Rice Seed"), tiles = {"farming_rice_seed.png"}, @@ -13,21 +13,26 @@ minetest.register_node("farming:seed_rice", { handy = 1, compostability = 48, seed = 1, snappy = 3, attached_node = 1, flammable = 4, growing = 1 }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, paramtype = "light", paramtype2 = "wallmounted", walkable = false, sunlight_propagates = true, selection_box = farming.select, next_plant = "farming:rice_1", + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_rice") end, + on_timer = function(pos, elapsed) minetest.set_node(pos, {name = "farming:rice_1", param2 = 3}) end }) --- rice +-- rice item + minetest.register_craftitem("farming:rice", { description = S("Rice"), inventory_image = "farming_rice.png", @@ -35,6 +40,7 @@ minetest.register_craftitem("farming:rice", { }) -- dry rice seed to give edible rice + minetest.register_craft({ type = "cooking", cooktime = 1, @@ -42,38 +48,10 @@ minetest.register_craft({ recipe = "farming:seed_rice" }) --- rice flour and bread -minetest.register_craftitem("farming:rice_bread", { - description = S("Rice Bread"), - inventory_image = "farming_rice_bread.png", - on_use = minetest.item_eat(5), - groups = {food_rice_bread = 1, flammable = 2, compostability = 65} -}) +-- crop definition -minetest.register_craftitem("farming:rice_flour", { - description = S("Rice Flour"), - inventory_image = "farming_rice_flour.png", - groups = {food_rice_flour = 1, flammable = 1, compostability = 65} -}) - -minetest.register_craft({ - output = "farming:rice_flour", - recipe = { - {"farming:rice", "farming:rice", "farming:rice"}, - {"farming:rice", a.mortar_pestle, ""} - }, - replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} -}) - -minetest.register_craft({ - type = "cooking", - cooktime = 15, - output = "farming:rice_bread", - recipe = "farming:rice_flour" -}) - --- rice definition local def = { + description = S("Rice") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_rice_1.png"}, paramtype = "light", @@ -89,25 +67,32 @@ local def = { handy = 1, snappy = 3, flammable = 4, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:rice_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_rice_2.png"} minetest.register_node("farming:rice_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_rice_3.png"} minetest.register_node("farming:rice_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_rice_4.png"} minetest.register_node("farming:rice_4", table.copy(def)) -- stage 5 + def.tiles = {"farming_rice_5.png"} def.drop = { items = { @@ -117,6 +102,7 @@ def.drop = { minetest.register_node("farming:rice_5", table.copy(def)) -- stage 6 + def.tiles = {"farming_rice_6.png"} def.drop = { items = { @@ -126,6 +112,7 @@ def.drop = { minetest.register_node("farming:rice_6", table.copy(def)) -- stage 7 + def.tiles = {"farming_rice_7.png"} def.drop = { items = { @@ -137,6 +124,7 @@ def.drop = { minetest.register_node("farming:rice_7", table.copy(def)) -- stage 8 (final) + def.tiles = {"farming_rice_8.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -150,6 +138,7 @@ def.drop = { minetest.register_node("farming:rice_8", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:rice"] = { crop = "farming:rice", seed = "farming:seed_rice", @@ -157,16 +146,3 @@ farming.registered_plants["farming:rice"] = { maxlight = farming.max_light, steps = 8 } - --- fuels -minetest.register_craft({ - type = "fuel", - recipe = "farming:rice", - burntime = 1 -}) - -minetest.register_craft({ - type = "fuel", - recipe = "farming:rice_bread", - burntime = 1 -}) diff --git a/crops/rye_oat.lua b/crops/rye_oat.lua new file mode 100644 index 0000000..3fd93c1 --- /dev/null +++ b/crops/rye_oat.lua @@ -0,0 +1,50 @@ + +local S = minetest.get_translator("farming") + +--= A nice addition from Ademant's grain mod :) + +-- Rye + +farming.register_plant("farming:rye", { + description = S("Rye seed"), + paramtype2 = "meshoptions", + inventory_image = "farming_rye_seed.png", + steps = 8, + place_param2 = 3 +}) + +-- override rye item + +minetest.override_item("farming:rye", { + description = S("Rye"), + groups = {food_rye = 1, flammable = 4, compostability = 65} +}) + +-- override rye crop + +minetest.override_item("farming:rye_1", {drop = {}}) +minetest.override_item("farming:rye_2", {drop = {}}) +minetest.override_item("farming:rye_3", {drop = {}}) + +-- Oats + +farming.register_plant("farming:oat", { + description = S("Oat seed"), + paramtype2 = "meshoptions", + inventory_image = "farming_oat_seed.png", + steps = 8, + place_param2 = 3 +}) + +-- override oat item + +minetest.override_item("farming:oat", { + description = S("Oats"), + groups = {food_oats = 1, flammable = 4, compostability = 65} +}) + +-- override oat crop + +minetest.override_item("farming:oat_1", {drop = {}}) +minetest.override_item("farming:oat_2", {drop = {}}) +minetest.override_item("farming:oat_3", {drop = {}}) diff --git a/crops/ryeoatrice.lua b/crops/ryeoatrice.lua deleted file mode 100644 index 90dfda9..0000000 --- a/crops/ryeoatrice.lua +++ /dev/null @@ -1,115 +0,0 @@ - -local S = farming.translate -local a = farming.recipe_items - ---= A nice addition from Ademant's grain mod :) - --- Rye - -farming.register_plant("farming:rye", { - description = S("Rye seed"), - paramtype2 = "meshoptions", - inventory_image = "farming_rye_seed.png", - steps = 8, - place_param2 = 3 -}) - -minetest.override_item("farming:rye", { - description = S("Rye"), - groups = {food_rye = 1, flammable = 4, compostability = 65} -}) - -minetest.override_item("farming:rye_1", {drop = {}}) -minetest.override_item("farming:rye_2", {drop = {}}) -minetest.override_item("farming:rye_3", {drop = {}}) - -minetest.register_craft({ - output = "farming:flour", - recipe = { - {"farming:rye", "farming:rye", "farming:rye"}, - {"farming:rye", a.mortar_pestle, ""} - }, - replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} -}) - --- Oats - -farming.register_plant("farming:oat", { - description = S("Oat seed"), - paramtype2 = "meshoptions", - inventory_image = "farming_oat_seed.png", - steps = 8, - place_param2 = 3 -}) - -minetest.override_item("farming:oat", { - description = S("Oats"), - groups = {food_oats = 1, flammable = 4, compostability = 65} -}) - -minetest.override_item("farming:oat_1", {drop = {}}) -minetest.override_item("farming:oat_2", {drop = {}}) -minetest.override_item("farming:oat_3", {drop = {}}) - -minetest.register_craft({ - output = "farming:flour", - recipe = { - {"farming:oat", "farming:oat", "farming:oat"}, - {"farming:oat", a.mortar_pestle, ""} - }, - replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} -}) - --- Multigrain flour - -minetest.register_craftitem("farming:flour_multigrain", { - description = S("Multigrain Flour"), - inventory_image = "farming_flour_multigrain.png", - groups = {food_flour = 1, flammable = 1}, -}) - -minetest.register_craft({ - type = "shapeless", - output = "farming:flour_multigrain", - recipe = { - "group:food_wheat", "group:food_barley", "group:food_oats", - "group:food_rye", a.mortar_pestle - }, - replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} -}) - --- Multigrain bread - -minetest.register_craftitem("farming:bread_multigrain", { - description = S("Multigrain Bread"), - inventory_image = "farming_bread_multigrain.png", - on_use = minetest.item_eat(7), - groups = {food_bread = 1, flammable = 2, compostability = 65} -}) - -minetest.register_craft({ - type = "cooking", - cooktime = 15, - output = "farming:bread_multigrain", - recipe = "farming:flour_multigrain" -}) - --- Fuels - -minetest.register_craft({ - type = "fuel", - recipe = "farming:bread_multigrain", - burntime = 1 -}) - -minetest.register_craft({ - type = "fuel", - recipe = "farming:rye", - burntime = 1 -}) - -minetest.register_craft({ - type = "fuel", - recipe = "farming:oat", - burntime = 1 -}) diff --git a/crops/soy.lua b/crops/soy.lua index 8c38345..78e9390 100644 --- a/crops/soy.lua +++ b/crops/soy.lua @@ -1,121 +1,26 @@ -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") + +-- item/seed --- soy pod minetest.register_craftitem("farming:soy_pod", { description = S("Soy Pod"), inventory_image = "farming_soy_pod.png", groups = {compostability = 48, seed = 2, food_soy = 1, food_soy_pod = 1, flammable = 2}, + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:soy_1") end }) -- replacement for soy beans that was removed + minetest.register_alias("farming:soy_beans", "farming:soy_pod") --- soy sauce -minetest.register_node("farming:soy_sauce", { - description = S("Soy Sauce"), - drawtype = "plantlike", - tiles = {"farming_soy_sauce.png"}, - inventory_image = "farming_soy_sauce.png", - wield_image = "farming_soy_sauce.png", - paramtype = "light", - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} - }, - groups = { - vessel = 1, food_soy_sauce = 1, dig_immediate = 3, attached_node = 1, - compostability = 65 - }, - sounds = farming.sounds.node_sound_glass_defaults() -}) - --- soy sauce recipe -minetest.register_craft( { - output = "farming:soy_sauce", - recipe = { - {"group:food_soy", "group:food_salt", "group:food_soy"}, - {a.juicer, a.bucket_water, a.glass_bottle} - }, - replacements = { - {a.bucket_water, a.bucket_empty}, - {"group:food_juicer", "farming:juicer"} - } -}) - --- soy milk -minetest.register_node("farming:soy_milk", { - description = S("Soy Milk"), - drawtype = "plantlike", - tiles = {"farming_soy_milk_glass.png"}, - inventory_image = "farming_soy_milk_glass.png", - wield_image = "farming_soy_milk_glass.png", - paramtype = "light", - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} - }, - on_use = minetest.item_eat(2, "vessels:drinking_glass"), - groups = { - vessel = 1, food_milk_glass = 1, dig_immediate = 3, - attached_node = 1, drink = 1, compostability = 65 - }, - sounds = farming.sounds.node_sound_glass_defaults() -}) - -minetest.register_craft( { - output = "farming:soy_milk", - recipe = { - {"group:food_soy", "group:food_soy", "group:food_soy"}, - {"farming:vanilla_extract", "bucket:bucket_water", a.drinking_glass} - }, - replacements = { - {a.bucket_water, a.bucket_empty}, - {"farming:vanilla_extract", a.glass_bottle} - } -}) - --- tofu -minetest.register_craftitem("farming:tofu", { - description = S("Tofu"), - inventory_image = "farming_tofu.png", - groups = {food_tofu = 1, food_meat_raw = 1, flammable = 2, compostability = 65}, - on_use = minetest.item_eat(3) -}) - -minetest.register_craft({ - output = "farming:tofu", - recipe = { - {"group:food_soy", "group:food_soy", "group:food_soy"}, - {"group:food_soy", "group:food_soy", a.baking_tray} - }, - replacements = {{"farming:baking_tray", "farming:baking_tray"}} -}) - --- cooked tofu -minetest.register_craftitem("farming:tofu_cooked", { - description = S("Cooked Tofu"), - inventory_image = "farming_tofu_cooked.png", - groups = {food_meat = 1, flammable = 2, compostability = 65}, - on_use = minetest.item_eat(6) -}) - -minetest.register_craft({ - type = "cooking", - output = "farming:tofu_cooked", - recipe = "farming:tofu", - cooktime = 5 -}) - -- crop definition local def = { + description = S("Soy") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_soy_1.png"}, paramtype = "light", @@ -131,25 +36,32 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:soy_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_soy_2.png"} minetest.register_node("farming:soy_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_soy_3.png"} minetest.register_node("farming:soy_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_soy_4.png"} minetest.register_node("farming:soy_4", table.copy(def)) -- stage 5 + def.tiles = {"farming_soy_5.png"} def.drop = { max_items = 1, items = { @@ -159,6 +71,7 @@ def.drop = { minetest.register_node("farming:soy_5", table.copy(def)) -- stage 6 + def.tiles = {"farming_soy_6.png"} def.drop = { max_items = 3, items = { @@ -169,7 +82,8 @@ def.drop = { } minetest.register_node("farming:soy_6", table.copy(def)) --- stage 7 +-- stage 7 (final) + def.tiles = {"farming_soy_7.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -185,6 +99,7 @@ def.drop = { minetest.register_node("farming:soy_7", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:soy_pod"] = { crop = "farming:soy", seed = "farming:soy_pod", @@ -194,6 +109,7 @@ farming.registered_plants["farming:soy_pod"] = { } -- mapgen + local mg = farming.mapgen == "v6" def = { diff --git a/crops/spinach.lua b/crops/spinach.lua index ed43ae9..e84f976 100644 --- a/crops/spinach.lua +++ b/crops/spinach.lua @@ -1,19 +1,25 @@ -local S = farming.translate +local S = minetest.get_translator("farming") + +-- item/seed --- spinach minetest.register_craftitem("farming:spinach", { description = S("Spinach"), inventory_image = "farming_spinach.png", - groups = {compostability = 48, seed = 2, food_spinach = 1, flammable = 2}, + groups = {compostability = 48, seed = 2, food_spinach = 1}, + on_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:spinach_1") - end, - on_use = minetest.item_eat(1) + end }) --- definition +farming.add_eatable("farming:spinach", 1) + +-- crop definition + local def = { + description = S("Spinach") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_spinach_1.png"}, paramtype = "light", @@ -27,17 +33,22 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:spinach_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_spinach_2.png"} minetest.register_node("farming:spinach_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_spinach_3.png"} def.drop = { items = { @@ -48,6 +59,7 @@ def.drop = { minetest.register_node("farming:spinach_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_spinach_4.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -61,6 +73,7 @@ def.drop = { minetest.register_node("farming:spinach_4", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:spinach"] = { crop = "farming:spinach", seed = "farming:spinach", @@ -70,6 +83,7 @@ farming.registered_plants["farming:spinach"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/strawberry.lua b/crops/strawberry.lua index 2b52b92..9d49485 100644 --- a/crops/strawberry.lua +++ b/crops/strawberry.lua @@ -1,21 +1,25 @@ -local S = farming.translate +local S = minetest.get_translator("farming") + +-- item/seed --- Strawberry (can also be planted as seed) minetest.register_craftitem(":ethereal:strawberry", { description = S("Strawberry"), inventory_image = "ethereal_strawberry.png", - groups = { - compostability = 48, seed = 2, food_strawberry = 1, food_berry = 1, flammable = 2 - }, + groups = {compostability = 48, seed = 2, food_strawberry = 1, food_berry = 1}, + on_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "ethereal:strawberry_1") end, - on_use = minetest.item_eat(1) }) --- Define Strawberry Bush growth stages +farming.add_eatable("ethereal:strawberry", 1) + +-- crop definition + local def = { + description = S("Strawberry") .. S(" Crop"), drawtype = "plantlike", tiles = {"ethereal_strawberry_1.png"}, paramtype = "light", @@ -32,29 +36,37 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } --stage 1 + minetest.register_node(":ethereal:strawberry_1", table.copy(def)) -- stage 2 + def.tiles = {"ethereal_strawberry_2.png"} minetest.register_node(":ethereal:strawberry_2", table.copy(def)) -- stage 3 + def.tiles = {"ethereal_strawberry_3.png"} minetest.register_node(":ethereal:strawberry_3", table.copy(def)) -- stage 4 + def.tiles = {"ethereal_strawberry_4.png"} minetest.register_node(":ethereal:strawberry_4", table.copy(def)) -- stage 5 + def.tiles = {"ethereal_strawberry_5.png"} minetest.register_node(":ethereal:strawberry_5", table.copy(def)) -- stage 6 + def.tiles = {"ethereal_strawberry_6.png"} def.drop = { items = { @@ -65,6 +77,7 @@ def.drop = { minetest.register_node(":ethereal:strawberry_6", table.copy(def)) -- stage 7 + def.tiles = {"ethereal_strawberry_7.png"} def.drop = { items = { @@ -74,7 +87,8 @@ def.drop = { } minetest.register_node(":ethereal:strawberry_7", table.copy(def)) --- stage 8 +-- stage 8 (final) + def.tiles = {"ethereal_strawberry_8.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -87,6 +101,7 @@ def.drop = { minetest.register_node(":ethereal:strawberry_8", table.copy(def)) -- add to registered_plants + farming.registered_plants["ethereal:strawberry"] = { crop = "ethereal:strawberry", seed = "ethereal:strawberry", @@ -96,6 +111,7 @@ farming.registered_plants["ethereal:strawberry"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/sunflower.lua b/crops/sunflower.lua index 15c62e0..9738d5e 100644 --- a/crops/sunflower.lua +++ b/crops/sunflower.lua @@ -1,15 +1,8 @@ -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") --- sunflower -minetest.register_craftitem("farming:sunflower", { - description = S("Sunflower"), - inventory_image = "farming_sunflower.png", - groups = {flammable = 2} -}) +-- seed --- sunflower seeds minetest.register_node("farming:seed_sunflower", { description = S("Sunflower Seeds"), tiles = {"farming_sunflower_seeds.png"}, @@ -20,15 +13,19 @@ minetest.register_node("farming:seed_sunflower", { compostability = 48, seed = 1, snappy = 3, attached_node = 1, growing = 1, handy = 1, food_sunflower_seeds = 1, flammable = 2 }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, paramtype = "light", paramtype2 = "wallmounted", walkable = false, sunlight_propagates = true, selection_box = farming.select, next_plant = "farming:sunflower_1", + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_sunflower") end, + on_timer = function(pos, elapsed) minetest.set_node(pos, {name = "farming:sunflower_1", param2 = 1}) end @@ -36,84 +33,25 @@ minetest.register_node("farming:seed_sunflower", { minetest.register_alias("farming:sunflower_seeds", "farming:seed_sunflower") +-- item + +minetest.register_craftitem("farming:sunflower", { + description = S("Sunflower"), + inventory_image = "farming_sunflower.png", + groups = {flammable = 2} +}) + +-- turn item into seeds + minetest.register_craft({ output = "farming:seed_sunflower 5", recipe = {{"farming:sunflower"}} }) --- sunflower seeds (toasted) -minetest.register_craftitem("farming:sunflower_seeds_toasted", { - description = S("Toasted Sunflower Seeds"), - inventory_image = "farming_sunflower_seeds_toasted.png", - groups = {food_sunflower_seeds_toasted = 1, flammable = 2, compostability = 65}, - on_use = minetest.item_eat(1) -}) +-- crop definition -minetest.register_craft({ - type = "cooking", - cooktime = 10, - output = "farming:sunflower_seeds_toasted", - recipe = "farming:seed_sunflower" -}) - --- sunflower oil -minetest.register_node("farming:sunflower_oil", { - description = S("Bottle of Sunflower Oil"), - drawtype = "plantlike", - tiles = {"farming_sunflower_oil.png"}, - inventory_image = "farming_sunflower_oil.png", - wield_image = "farming_sunflower_oil.png", - paramtype = "light", - is_ground_content = false, - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} - }, - groups = { - food_oil = 1, vessel = 1, dig_immediate = 3, attached_node = 1, - flammable = 2, compostability = 65 - }, - sounds = farming.sounds.node_sound_glass_defaults() -}) - -minetest.register_craft( { - output = "farming:sunflower_oil", - recipe = { - {"group:food_sunflower_seeds", "group:food_sunflower_seeds", "group:food_sunflower_seeds"}, - {"group:food_sunflower_seeds", "group:food_sunflower_seeds", "group:food_sunflower_seeds"}, - {"group:food_sunflower_seeds", a.glass_bottle, "group:food_sunflower_seeds"} - } -}) - -minetest.register_craft({ - type = "fuel", - recipe = "farming:sunflower_oil", - burntime = 30, - replacements = {{"farming:sunflower_oil", a.glass_bottle}} -}) - --- sunflower seed bread -minetest.register_craftitem("farming:sunflower_bread", { - description = S("Sunflower Seed Bread"), - inventory_image = "farming_sunflower_bread.png", - on_use = minetest.item_eat(8), - groups = {food_bread = 1, flammable = 2} -}) - -minetest.register_craft({ - output = "farming:sunflower_bread", - recipe = { - { - "group:food_sunflower_seeds_toasted", - "group:food_bread", - "group:food_sunflower_seeds_toasted" - } - } -}) - --- sunflower definition local def = { + description = S("Sunflower") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_sunflower_1.png"}, paramtype = "light", @@ -127,38 +65,48 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:sunflower_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_sunflower_2.png"} minetest.register_node("farming:sunflower_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_sunflower_3.png"} minetest.register_node("farming:sunflower_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_sunflower_4.png"} minetest.register_node("farming:sunflower_4", table.copy(def)) -- stage 5 + def.tiles = {"farming_sunflower_5.png"} minetest.register_node("farming:sunflower_5", table.copy(def)) -- stage 6 + def.tiles = {"farming_sunflower_6.png"} def.visual_scale = 1.9 minetest.register_node("farming:sunflower_6", table.copy(def)) -- stage 7 + def.tiles = {"farming_sunflower_7.png"} minetest.register_node("farming:sunflower_7", table.copy(def)) -- stage 8 (final) + def.tiles = {"farming_sunflower_8.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -171,6 +119,7 @@ def.drop = { minetest.register_node("farming:sunflower_8", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:sunflower"] = { crop = "farming:sunflower", seed = "farming:seed_sunflower", @@ -180,6 +129,7 @@ farming.registered_plants["farming:sunflower"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/tomato.lua b/crops/tomato.lua index 486a44c..b97246c 100644 --- a/crops/tomato.lua +++ b/crops/tomato.lua @@ -4,38 +4,27 @@ http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1288375-food-plus-mod-more-food-than-you-can-imagine-v2-9) ]] -local S = farming.translate +local S = minetest.get_translator("farming") + +-- item/seed --- tomato minetest.register_craftitem("farming:tomato", { description = S("Tomato"), inventory_image = "farming_tomato.png", - groups = {compostability = 45, seed = 2, food_tomato = 1, flammable = 2}, + groups = {compostability = 45, seed = 2, food_tomato = 1}, + on_use = minetest.item_eat(4), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:tomato_1") - end, - on_use = minetest.item_eat(4) + end }) --- tomato soup -minetest.register_craftitem("farming:tomato_soup", { - description = S("Tomato Soup"), - inventory_image = "farming_tomato_soup.png", - groups = {flammable = 2, compostability = 65}, - on_use = minetest.item_eat(8, "farming:bowl") -}) +farming.add_eatable("farming:tomato", 4) -minetest.register_craft({ - output = "farming:tomato_soup", - recipe = { - {"group:food_tomato"}, - {"group:food_tomato"}, - {"group:food_bowl"} - } -}) +-- crop definition --- tomato definition local def = { + description = S("Tomato") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_tomato_1.png"}, paramtype = "light", @@ -49,33 +38,42 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:tomato_1", table.copy(def)) -- stage2 + def.tiles = {"farming_tomato_2.png"} minetest.register_node("farming:tomato_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_tomato_3.png"} minetest.register_node("farming:tomato_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_tomato_4.png"} minetest.register_node("farming:tomato_4", table.copy(def)) -- stage 5 + def.tiles = {"farming_tomato_5.png"} minetest.register_node("farming:tomato_5", table.copy(def)) -- stage 6 + def.tiles = {"farming_tomato_6.png"} minetest.register_node("farming:tomato_6", table.copy(def)) -- stage 7 + def.tiles = {"farming_tomato_7.png"} def.drop = { items = { @@ -86,6 +84,7 @@ def.drop = { minetest.register_node("farming:tomato_7", table.copy(def)) -- stage 8 (final) + def.tiles = {"farming_tomato_8.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -99,6 +98,7 @@ def.drop = { minetest.register_node("farming:tomato_8", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:tomato"] = { crop = "farming:tomato", seed = "farming:tomato", @@ -108,6 +108,7 @@ farming.registered_plants["farming:tomato"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/vanilla.lua b/crops/vanilla.lua index 0d03bde..307cd46 100644 --- a/crops/vanilla.lua +++ b/crops/vanilla.lua @@ -1,20 +1,25 @@ -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") + +-- item/seed --- vanilla minetest.register_craftitem("farming:vanilla", { description = S("Vanilla"), inventory_image = "farming_vanilla.png", - groups = {compostability = 48, seed = 2, food_vanilla = 1, flammable = 2}, + groups = {compostability = 48, seed = 2, food_vanilla = 1}, + on_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:vanilla_1") - end, - on_use = minetest.item_eat(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", @@ -28,70 +33,43 @@ local def = { handy = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } --- vanilla extract -minetest.register_node("farming:vanilla_extract", { - description = S("Vanilla Extract"), - drawtype = "plantlike", - tiles = {"farming_vanilla_extract.png"}, - inventory_image = "farming_vanilla_extract.png", - wield_image = "farming_vanilla_extract.png", - paramtype = "light", - is_ground_content = false, - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} - }, - groups = {vessel = 1, dig_immediate = 3, attached_node = 1}, - sounds = farming.sounds.node_sound_glass_defaults(), -}) - -minetest.register_craft( { - output = "farming:vanilla_extract", - recipe = { - {"group:food_vanilla", "group:food_vanilla", "group:food_vanilla"}, - {"group:food_vanilla", "farming:bottle_ethanol", "group:food_glass_water"}, - }, - replacements = { - {"group:food_glass_water", a.drinking_glass} - } -}) - -minetest.register_craft({ - type = "fuel", - recipe = "farming:vanilla_extract", - burntime = 25, - replacements = {{"farming:vanilla_extract", a.glass_bottle}} -}) - -- stage 1 + minetest.register_node("farming:vanilla_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_vanilla_2.png"} minetest.register_node("farming:vanilla_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_vanilla_3.png"} minetest.register_node("farming:vanilla_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_vanilla_4.png"} minetest.register_node("farming:vanilla_4", table.copy(def)) -- stage 5 + def.tiles = {"farming_vanilla_5.png"} minetest.register_node("farming:vanilla_5", table.copy(def)) -- stage 6 + def.tiles = {"farming_vanilla_6.png"} def.visual_scale = 1.9 minetest.register_node("farming:vanilla_6", table.copy(def)) -- stage 7 + def.tiles = {"farming_vanilla_7.png"} def.drop = { items = { @@ -103,6 +81,7 @@ def.drop = { minetest.register_node("farming:vanilla_7", table.copy(def)) -- stage 8 (final) + def.tiles = {"farming_vanilla_8.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -117,6 +96,7 @@ def.drop = { minetest.register_node("farming:vanilla_8", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:vanilla"] = { crop = "farming:vanilla", seed = "farming:vanilla", @@ -126,6 +106,7 @@ farming.registered_plants["farming:vanilla"] = { } -- mapgen + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass", "mcl_core:dirt_with_grass"}, diff --git a/crops/wheat.lua b/crops/wheat.lua index 8770c70..c00208b 100644 --- a/crops/wheat.lua +++ b/crops/wheat.lua @@ -1,8 +1,8 @@ -local S = farming.translate -local a = farming.recipe_items +local S = minetest.get_translator("farming") + +-- seed --- wheat seeds minetest.register_node("farming:seed_wheat", { description = S("Wheat Seed"), tiles = {"farming_wheat_seed.png"}, @@ -12,106 +12,36 @@ minetest.register_node("farming:seed_wheat", { groups = { handy = 1, seed = 1, snappy = 3, attached_node = 1, flammable = 4, growing = 1 }, + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, paramtype = "light", paramtype2 = "wallmounted", walkable = false, sunlight_propagates = true, selection_box = farming.select, next_plant = "farming:wheat_1", + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "farming:seed_wheat") end, + on_timer = function(pos, elapsed) minetest.set_node(pos, {name = "farming:wheat_1", param2 = 3}) end }) --- harvested wheat +-- item + minetest.register_craftitem("farming:wheat", { description = S("Wheat"), inventory_image = "farming_wheat.png", groups = {food_wheat = 1, flammable = 4} }) --- straw -minetest.register_node("farming:straw", { - description = S("Straw"), - tiles = {"farming_straw.png"}, - is_ground_content = false, - groups = {handy = 1, snappy = 3, flammable = 4, fall_damage_add_percent = -30}, - sounds = farming.sounds.node_sound_leaves_defaults(), - _mcl_hardness = 0.8, - _mcl_blast_resistance = 1 -}) +-- crop definition -minetest.register_craft({ - output = "farming:straw 3", - recipe = { - {"farming:wheat", "farming:wheat", "farming:wheat"}, - {"farming:wheat", "farming:wheat", "farming:wheat"}, - {"farming:wheat", "farming:wheat", "farming:wheat"} - } -}) - -minetest.register_craft({ - output = "farming:wheat 3", - recipe = {{"farming:straw"}} -}) - --- check and register stairs -if minetest.global_exists("stairs") then - - if stairs.mod and stairs.mod == "redo" then - - stairs.register_all("straw", "farming:straw", - {snappy = 3, flammable = 4}, - {"farming_straw.png"}, - "Straw", - farming.sounds.node_sound_leaves_defaults()) - else - - stairs.register_stair_and_slab("straw", "farming:straw", - {snappy = 3, flammable = 4}, - {"farming_straw.png"}, - "Straw Stair", - "Straw Slab", - farming.sounds.node_sound_leaves_defaults()) - end -end - --- flour -minetest.register_craftitem("farming:flour", { - description = S("Flour"), - inventory_image = "farming_flour.png", - groups = {food_flour = 1, flammable = 1} -}) - -minetest.register_craft({ - output = "farming:flour", - recipe = { - {"farming:wheat", "farming:wheat", "farming:wheat"}, - {"farming:wheat", a.mortar_pestle, ""} - }, - replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} -}) - --- bread -minetest.register_craftitem("farming:bread", { - description = S("Bread"), - inventory_image = "farming_bread.png", - on_use = minetest.item_eat(5), - groups = {food_bread = 1, flammable = 2} -}) - -minetest.register_craft({ - type = "cooking", - cooktime = 15, - output = "farming:bread", - recipe = "farming:flour" -}) - --- wheat definition local def = { + description = S("Wheat") .. S(" Crop"), drawtype = "plantlike", tiles = {"farming_wheat_1.png"}, paramtype = "light", @@ -127,25 +57,32 @@ local def = { snappy = 3, flammable = 4, plant = 1, attached_node = 1, not_in_creative_inventory = 1, growing = 1 }, - sounds = farming.sounds.node_sound_leaves_defaults() + _mcl_hardness = farming.mcl_hardness, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults() } -- stage 1 + minetest.register_node("farming:wheat_1", table.copy(def)) -- stage 2 + def.tiles = {"farming_wheat_2.png"} minetest.register_node("farming:wheat_2", table.copy(def)) -- stage 3 + def.tiles = {"farming_wheat_3.png"} minetest.register_node("farming:wheat_3", table.copy(def)) -- stage 4 + def.tiles = {"farming_wheat_4.png"} minetest.register_node("farming:wheat_4", table.copy(def)) -- stage 5 + def.tiles = {"farming_wheat_5.png"} def.drop = { items = { @@ -156,6 +93,7 @@ def.drop = { minetest.register_node("farming:wheat_5", table.copy(def)) -- stage 6 + def.tiles = {"farming_wheat_6.png"} def.drop = { items = { @@ -166,6 +104,7 @@ def.drop = { minetest.register_node("farming:wheat_6", table.copy(def)) -- stage 7 + def.tiles = {"farming_wheat_7.png"} def.drop = { items = { @@ -178,6 +117,7 @@ def.drop = { minetest.register_node("farming:wheat_7", table.copy(def)) -- stage 8 (final) + def.tiles = {"farming_wheat_8.png"} def.groups.growing = nil def.selection_box = farming.select_final @@ -192,6 +132,7 @@ def.drop = { minetest.register_node("farming:wheat_8", table.copy(def)) -- add to registered_plants + farming.registered_plants["farming:wheat"] = { crop = "farming:wheat", seed = "farming:seed_wheat", @@ -199,16 +140,3 @@ farming.registered_plants["farming:wheat"] = { maxlight = farming.max_light, steps = 8 } - --- fuels -minetest.register_craft({ - type = "fuel", - recipe = "farming:straw", - burntime = 3 -}) - -minetest.register_craft({ - type = "fuel", - recipe = "farming:wheat", - burntime = 1 -}) diff --git a/food.lua b/food.lua deleted file mode 100644 index 9e8c523..0000000 --- a/food.lua +++ /dev/null @@ -1,864 +0,0 @@ - -local S = farming.translate -local a = farming.recipe_items - --- sliced bread - -minetest.register_craftitem("farming:bread_slice", { - description = S("Sliced Bread"), - inventory_image = "farming_bread_slice.png", - on_use = minetest.item_eat(1), - groups = {food_bread_slice = 1, flammable = 2, compostability = 65} -}) - -minetest.register_craft({ - output = "farming:bread_slice 5", - recipe = {{"group:food_bread", a.cutting_board}}, - replacements = {{"group:food_cutting_board", "farming:cutting_board"}} -}) - --- toast - -minetest.register_craftitem("farming:toast", { - description = S("Toast"), - inventory_image = "farming_toast.png", - on_use = minetest.item_eat(1), - groups = {food_toast = 1, flammable = 2, compostability = 65} -}) - -minetest.register_craft({ - type = "cooking", - cooktime = 3, - output = "farming:toast", - recipe = "farming:bread_slice" -}) - --- toast sandwich - -minetest.register_craftitem("farming:toast_sandwich", { - description = S("Toast Sandwich"), - inventory_image = "farming_toast_sandwich.png", - on_use = minetest.item_eat(4), - groups = {flammable = 2, compostability = 85} -}) - -minetest.register_craft({ - output = "farming:toast_sandwich", - recipe = { - {"farming:bread_slice"}, - {"farming:toast"}, - {"farming:bread_slice"} - } -}) - --- filter sea water into river water - -minetest.register_craft({ - output = a.bucket_river_water, - recipe = { - {"farming:hemp_fibre"}, - {"farming:hemp_fibre"}, - {a.bucket_water} - } -}) - -if farming.mcl then - - minetest.register_craft({ - output = "mcl_potions:river_water", - recipe = { - {"farming:hemp_fibre"}, - {"mcl_potions:water"} - } - }) -end - --- glass of water - -minetest.register_craftitem("farming:glass_water", { - description = S("Glass of Water"), - inventory_image = "farming_water_glass.png", - groups = {food_glass_water = 1, flammable = 3, vessel = 1} -}) - -minetest.register_craft({ - output = "farming:glass_water 4", - recipe = { - {a.drinking_glass, a.drinking_glass}, - {a.drinking_glass, a.drinking_glass}, - {a.bucket_river_water, ""} - }, - replacements = {{a.bucket_river_water, a.bucket_empty}} -}) - -minetest.register_craft({ - output = "farming:glass_water 4", - recipe = { - {a.drinking_glass, a.drinking_glass}, - {a.drinking_glass, a.drinking_glass}, - {a.bucket_water, "farming:hemp_fibre"} - }, - replacements = {{a.bucket_water, a.bucket_empty}} -}) - -if minetest.get_modpath("bucket_wooden") then - - minetest.register_craft({ - output = "farming:glass_water 4", - recipe = { - {a.drinking_glass, a.drinking_glass}, - {a.drinking_glass, a.drinking_glass}, - {"group:water_bucket_wooden", "farming:hemp_fibre"} - }, - replacements = {{"group:water_bucket_wooden", "bucket_wooden:bucket_empty"}} - }) -end - --- Sugar - -if not farming.mcl then - - minetest.register_craftitem("farming:sugar", { - description = S("Sugar"), - inventory_image = "farming_sugar.png", - groups = {food_sugar = 1, flammable = 3} - }) - - minetest.register_craft({ - type = "cooking", - cooktime = 3, - output = "farming:sugar 2", - recipe = "default:papyrus" - }) -end - -minetest.register_node("farming:sugar_cube", { - description = S("Sugar Cube"), - tiles = {"farming_sugar_cube.png"}, - groups = {shovely = 1, handy = 1, crumbly = 2}, - floodable = true, - sounds = farming.sounds.node_sound_gravel_defaults(), - _mcl_hardness = 0.8, - _mcl_blast_resistance = 1 -}) - -minetest.register_craft({ - output = "farming:sugar_cube", - recipe = { - {a.sugar, a.sugar, a.sugar}, - {a.sugar, a.sugar, a.sugar}, - {a.sugar, a.sugar, a.sugar} - } -}) - -minetest.register_craft({ - output = a.sugar .. " 9", - recipe = {{"farming:sugar_cube"}} -}) - --- Sugar caramel - -minetest.register_craftitem("farming:caramel", { - description = S("Caramel"), - inventory_image = "farming_caramel.png", - groups = {compostability = 40} -}) - -minetest.register_craft({ - type = "cooking", - cooktime = 6, - output = "farming:caramel", - recipe = "group:food_sugar" -}) - --- Salt - -minetest.register_node("farming:salt", { - description = S("Salt"), - inventory_image = "farming_salt.png", - wield_image = "farming_salt.png", - drawtype = "plantlike", - visual_scale = 0.8, - paramtype = "light", - tiles = {"farming_salt.png"}, - groups = {food_salt = 1, vessel = 1, dig_immediate = 3, - attached_node = 1}, - sounds = farming.sounds.node_sound_defaults(), - selection_box = { - type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} - }, - -- special function to make salt crystals form inside water - dropped_step = function(self, pos, dtime) - - self.ctimer = (self.ctimer or 0) + dtime - if self.ctimer < 15.0 then return end - self.ctimer = 0 - - local needed - - if self.node_inside - and self.node_inside.name == a.water_source then - needed = 8 - - elseif self.node_inside - and self.node_inside.name == a.river_water_source then - needed = 9 - end - - if not needed then return end - - local objs = core.get_objects_inside_radius(pos, 0.5) - - if not objs or #objs ~= 1 then return end - - local salt, ent = nil, nil - - for k, obj in pairs(objs) do - - ent = obj:get_luaentity() - - if ent and ent.name == "__builtin:item" - and ent.itemstring == "farming:salt " .. needed then - - obj:remove() - - core.add_item(pos, "farming:salt_crystal") - - return false -- return with no further action - end - end - end -}) - -minetest.register_craft({ - type = "cooking", - cooktime = 15, - output = "farming:salt", - recipe = a.bucket_water, - replacements = {{a.bucket_water, a.bucket_empty}} -}) - --- Salt Crystal - -minetest.register_node("farming:salt_crystal", { - description = S("Salt crystal"), - inventory_image = "farming_salt_crystal.png", - wield_image = "farming_salt_crystal.png", - drawtype = "plantlike", - visual_scale = 0.8, - paramtype = "light", - light_source = 1, - tiles = {"farming_salt_crystal.png"}, - groups = {dig_immediate = 3, attached_node = 1}, - sounds = farming.sounds.node_sound_defaults(), - selection_box = { - type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} - }, - _mcl_hardness = 0.8, - _mcl_blast_resistance = 1 -}) - -minetest.register_craft({ - output = "farming:salt 9", - recipe = { - {"farming:salt_crystal", a.mortar_pestle} - }, - replacements = {{"farming:mortar_pestle", "farming:mortar_pestle"}} -}) - -minetest.register_craft({ - output = "farming:salt_crystal", - recipe = { - {"farming:salt", "farming:salt", "farming:salt"}, - {"farming:salt", "farming:salt", "farming:salt"}, - {"farming:salt", "farming:salt", "farming:salt"} - } -}) - --- Mayonnaise - -minetest.register_node("farming:mayonnaise", { - description = S("Mayonnaise"), - drawtype = "plantlike", - tiles = {"farming_mayo.png"}, - inventory_image = "farming_mayo.png", - wield_image = "farming_mayo.png", - paramtype = "light", - is_ground_content = false, - walkable = false, - on_use = minetest.item_eat(3), - selection_box = { - type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 0.45, 0.25} - }, - groups = { - compostability = 65, food_mayonnaise = 1, vessel = 1, dig_immediate = 3, - attached_node = 1 - }, - sounds = farming.sounds.node_sound_glass_defaults() -}) - -minetest.register_craft({ - output = "farming:mayonnaise", - recipe = { - {"group:food_olive_oil", "group:food_lemon"}, - {"group:food_egg", "farming:salt"} - }, - replacements = {{"farming:olive_oil", a.glass_bottle}} -}) - --- Rose Water - -minetest.register_node("farming:rose_water", { - description = S("Rose Water"), - inventory_image = "farming_rose_water.png", - wield_image = "farming_rose_water.png", - drawtype = "plantlike", - visual_scale = 0.8, - paramtype = "light", - tiles = {"farming_rose_water.png"}, - groups = { - food_rose_water = 1, vessel = 1, dig_immediate = 3, attached_node = 1 - }, - sounds = farming.sounds.node_sound_defaults(), - selection_box = { - type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} - } -}) - -minetest.register_craft({ - output = "farming:rose_water", - recipe = { - {a.rose, a.rose, a.rose}, - {a.rose, a.rose, a.rose}, - {"group:food_glass_water", a.pot, a.glass_bottle} - }, - replacements = { - {"group:food_glass_water", a.drinking_glass}, - {"group:food_pot", "farming:pot"} - } -}) - --- Turkish Delight - -minetest.register_craftitem("farming:turkish_delight", { - description = S("Turkish Delight"), - inventory_image = "farming_turkish_delight.png", - groups = {flammable = 3, compostability = 85}, - on_use = minetest.item_eat(2) -}) - -minetest.register_craft({ - output = "farming:turkish_delight 4", - recipe = { - {"group:food_gelatin", "group:food_sugar", "group:food_gelatin"}, - {"group:food_sugar", "group:food_rose_water", "group:food_sugar"}, - {"group:food_sugar", a.dye_pink, "group:food_sugar"} - }, - replacements = { - {"group:food_cornstarch", a.bowl}, - {"group:food_cornstarch", a.bowl}, - {"group:food_rose_water", a.glass_bottle} - } -}) - --- Garlic Bread - -minetest.register_craftitem("farming:garlic_bread", { - description = S("Garlic Bread"), - inventory_image = "farming_garlic_bread.png", - groups = {flammable = 3, compostability = 65}, - on_use = minetest.item_eat(2) -}) - -minetest.register_craft({ - output = "farming:garlic_bread", - recipe = { - {"group:food_toast", "group:food_garlic_clove", "group:food_garlic_clove"} - } -}) - --- Donuts (thanks to Bockwurst for making the donut images) - -minetest.register_craftitem("farming:donut", { - description = S("Donut"), - inventory_image = "farming_donut.png", - on_use = minetest.item_eat(4), - groups = {compostability = 65} -}) - -minetest.register_craft({ - output = "farming:donut 3", - recipe = { - {"", "group:food_wheat", ""}, - {"group:food_wheat", "group:food_sugar", "group:food_wheat"}, - {"", "group:food_wheat", ""} - } -}) - -minetest.register_craftitem("farming:donut_chocolate", { - description = S("Chocolate Donut"), - inventory_image = "farming_donut_chocolate.png", - on_use = minetest.item_eat(6), - groups = {compostability = 65} -}) - -minetest.register_craft({ - output = "farming:donut_chocolate", - recipe = { - {"group:food_cocoa"}, - {"farming:donut"} - } -}) - -minetest.register_craftitem("farming:donut_apple", { - description = S("Apple Donut"), - inventory_image = "farming_donut_apple.png", - on_use = minetest.item_eat(6), - groups = {compostability = 65} -}) - -minetest.register_craft({ - output = "farming:donut_apple", - recipe = { - {"group:food_apple"}, - {"farming:donut"} - } -}) - --- Porridge Oats - -minetest.register_craftitem("farming:porridge", { - description = S("Porridge"), - inventory_image = "farming_porridge.png", - on_use = minetest.item_eat(6, a.bowl), - groups = {compostability = 65} -}) - -minetest.register_craft({ - output = "farming:porridge", - recipe = { - {"group:food_oats", "group:food_oats", "group:food_oats"}, - {"group:food_oats", "group:food_bowl", "group:food_milk_glass"} - }, - replacements = { - {"mobs:glass_milk", a.drinking_glass}, - {"farming:soy_milk", a.drinking_glass} - } -}) - --- Jaffa Cake - -minetest.register_craftitem("farming:jaffa_cake", { - description = S("Jaffa Cake"), - inventory_image = "farming_jaffa_cake.png", - on_use = minetest.item_eat(6), - groups = {compostability = 65} -}) - -minetest.register_craft({ - output = "farming:jaffa_cake 3", - recipe = { - {a.baking_tray, "group:food_egg", "group:food_sugar"}, - {a.flour, "group:food_cocoa", "group:food_orange"}, - {"group:food_milk", "", ""} - }, - replacements = { - {"farming:baking_tray", "farming:baking_tray"}, - {"mobs:bucket_milk", a.bucket_empty}, - {"mobs:wooden_bucket_milk", "wooden_bucket:bucket_wood_empty"}, - {"farming:soy_milk", a.drinking_glass} - } -}) - --- Apple Pie - -minetest.register_craftitem("farming:apple_pie", { - description = S("Apple Pie"), - inventory_image = "farming_apple_pie.png", - on_use = minetest.item_eat(6), - groups = {compostability = 75} -}) - -minetest.register_craft({ - output = "farming:apple_pie", - recipe = { - {a.flour, "group:food_sugar", "group:food_apple"}, - {"", a.baking_tray, ""} - }, - replacements = {{"group:food_baking_tray", "farming:baking_tray"}} -}) - --- Cactus Juice - -minetest.register_craftitem("farming:cactus_juice", { - description = S("Cactus Juice"), - inventory_image = "farming_cactus_juice.png", - groups = {vessel = 1, drink = 1, compostability = 55}, - - on_use = function(itemstack, user, pointed_thing) - - if user then - - local num = math.random(5) == 1 and -1 or 2 - - return minetest.do_item_eat(num, "vessels:drinking_glass", - itemstack, user, pointed_thing) - end - end -}) - -minetest.register_craft({ - output = "farming:cactus_juice", - recipe = { - {a.juicer}, - {a.cactus}, - {a.drinking_glass} - }, - replacements = { - {"group:food_juicer", "farming:juicer"} - } -}) - --- Pasta - -minetest.register_craftitem("farming:pasta", { - description = S("Pasta"), - inventory_image = "farming_pasta.png", - groups = {compostability = 65, food_pasta = 1} -}) - -minetest.register_craft({ - output = "farming:pasta", - recipe = { - {a.flour, "group:food_butter", a.mixing_bowl} - }, - replacements = {{"group:food_mixing_bowl", "farming:mixing_bowl"}} -}) - -minetest.register_craft({ - output = "farming:pasta", - recipe = { - {a.flour, "group:food_oil", a.mixing_bowl} - }, - replacements = { - {"group:food_mixing_bowl", "farming:mixing_bowl"}, - {"group:food_oil", a.glass_bottle} - } -}) - --- Mac & Cheese - -minetest.register_craftitem("farming:mac_and_cheese", { - description = S("Mac & Cheese"), - inventory_image = "farming_mac_and_cheese.png", - on_use = minetest.item_eat(6, a.bowl), - groups = {compostability = 65} -}) - -minetest.register_craft({ - output = "farming:mac_and_cheese", - recipe = { - {"group:food_pasta", "group:food_cheese", "group:food_bowl"} - } -}) - --- Spaghetti - -minetest.register_craftitem("farming:spaghetti", { - description = S("Spaghetti"), - inventory_image = "farming_spaghetti.png", - on_use = minetest.item_eat(8), - groups = {compostability = 65} -}) - -minetest.register_craft({ - output = "farming:spaghetti", - recipe = { - {"group:food_pasta", "group:food_tomato", a.saucepan}, - {"group:food_garlic_clove", "group:food_garlic_clove", ""} - }, - replacements = {{"group:food_saucepan", "farming:saucepan"}} -}) - --- Korean Bibimbap - -minetest.register_craftitem("farming:bibimbap", { - description = S("Bibimbap"), - inventory_image = "farming_bibimbap.png", - on_use = minetest.item_eat(8, a.bowl), - groups = {compostability = 65} -}) - -minetest.register_craft({ - output = "farming:bibimbap", - recipe = { - {a.skillet, "group:food_bowl", "group:food_egg"}, - {"group:food_rice", "group:food_chicken_raw", "group:food_cabbage"}, - {"group:food_carrot", "group:food_chili_pepper", ""} - }, - replacements = {{"group:food_skillet", "farming:skillet"}} -}) - -minetest.register_craft({ - output = "farming:bibimbap", - type = "shapeless", - recipe = { - a.skillet, "group:food_bowl", "group:food_mushroom", - "group:food_rice", "group:food_cabbage", "group:food_carrot", - "group:food_mushroom", "group:food_chili_pepper" - }, - replacements = {{"group:food_skillet", "farming:skillet"}} -}) - --- Burger - -minetest.register_craftitem("farming:burger", { - description = S("Burger"), - inventory_image = "farming_burger.png", - on_use = minetest.item_eat(16), - groups = {compostability = 95} -}) - -minetest.register_craft({ - output = "farming:burger", - recipe = { - {a.bread, "group:food_meat", "group:food_cheese"}, - {"group:food_tomato", "group:food_cucumber", "group:food_onion"}, - {"group:food_lettuce", "", ""} - } -}) - --- Salad - -minetest.register_craftitem("farming:salad", { - description = S("Salad"), - inventory_image = "farming_salad.png", - on_use = minetest.item_eat(8, a.bowl), - groups = {compostability = 45} -}) - -minetest.register_craft({ - output = "farming:salad", - type = "shapeless", - recipe = { - "group:food_bowl", "group:food_tomato", "group:food_cucumber", - "group:food_lettuce", "group:food_oil" - } -}) - --- Triple Berry Smoothie - -minetest.register_craftitem("farming:smoothie_berry", { - description = S("Triple Berry Smoothie"), - inventory_image = "farming_berry_smoothie.png", - on_use = minetest.item_eat(6, "vessels:drinking_glass"), - groups = {vessel = 1, drink = 1, compostability = 65} -}) - -minetest.register_craft({ - output = "farming:smoothie_berry", - type = "shapeless", - recipe = { - "group:food_raspberries", "group:food_blackberries", - "group:food_strawberry", "group:food_banana", - a.drinking_glass - } -}) - --- Patatas a la importancia - -minetest.register_craftitem("farming:spanish_potatoes", { - description = S("Spanish Potatoes"), - inventory_image = "farming_spanish_potatoes.png", - on_use = minetest.item_eat(8, a.bowl), - groups = {compostability = 65} -}) - -minetest.register_craft({ - output = "farming:spanish_potatoes", - recipe = { - {"group:food_potato", "group:food_parsley", "group:food_potato"}, - {"group:food_egg", a.flour, "group:food_onion"}, - {"farming:garlic_clove", "group:food_bowl", a.skillet} - }, - replacements = {{"group:food_skillet", "farming:skillet"}} -}) - --- Potato omelet - -minetest.register_craftitem("farming:potato_omelet", { - description = S("Potato omelet"), - inventory_image = "farming_potato_omelet.png", - on_use = minetest.item_eat(6, a.bowl), - groups = {compostability = 65} -}) - -minetest.register_craft({ - output = "farming:potato_omelet", - recipe = { - {"group:food_egg", "group:food_potato", "group:food_onion"}, - {a.skillet, "group:food_bowl", ""} - }, - replacements = {{"group:food_skillet", "farming:skillet"}} -}) - --- Paella - -minetest.register_craftitem("farming:paella", { - description = S("Paella"), - inventory_image = "farming_paella.png", - on_use = minetest.item_eat(8, a.bowl), - groups = {compostability = 65} -}) - -minetest.register_craft({ - output = "farming:paella", - recipe = { - {"group:food_rice", a.dye_orange, "farming:pepper_red"}, - {"group:food_peas", "group:food_chicken", "group:food_bowl"}, - {"", a.skillet, ""} - }, - replacements = {{"group:food_skillet", "farming:skillet"}} -}) - --- Flan - -minetest.register_craftitem("farming:flan", { - description = S("Vanilla Flan"), - inventory_image = "farming_vanilla_flan.png", - on_use = minetest.item_eat(6), - groups = {compostability = 65} -}) - -minetest.register_craft({ - output = "farming:flan", - recipe = { - {"group:food_sugar", "group:food_milk", "farming:caramel"}, - {"group:food_egg", "group:food_egg", "farming:vanilla_extract"} - }, - replacements = { - {"cucina_vegana:soy_milk", a.drinking_glass}, - {"mobs:bucket_milk", "bucket:bucket_empty"}, - {"mobs:wooden_bucket_milk", "wooden_bucket:bucket_wood_empty"}, - {"farming:vanilla_extract", a.glass_bottle} - } -}) - --- Vegan Cheese - -minetest.register_craftitem("farming:cheese_vegan", { - description = S("Vegan Cheese"), - inventory_image = "farming_cheese_vegan.png", - on_use = minetest.item_eat(2), - groups = {compostability = 65, food_cheese = 1, flammable = 2} -}) - -minetest.register_craft({ - output = "farming:cheese_vegan", - recipe = { - {"farming:soy_milk", "farming:soy_milk", "farming:soy_milk"}, - {"group:food_salt", "group:food_peppercorn", "farming:bottle_ethanol"}, - {"group:food_gelatin", a.pot, ""} - }, - replacements = { - {"farming:soy_milk", a.drinking_glass .. " 3"}, - {"farming:pot", "farming:pot"}, - {"farming:bottle_ethanol", a.glass_bottle} - } -}) - -minetest.register_craft({ - output = "farming:cheese_vegan", - recipe = { - {"farming:soy_milk", "farming:soy_milk", "farming:soy_milk"}, - {"group:food_salt", "group:food_peppercorn", "group:food_lemon"}, - {"group:food_gelatin", a.pot, ""} - }, - replacements = { - {"farming:soy_milk", a.drinking_glass .. " 3"}, - {"farming:pot", "farming:pot"} - } -}) - --- Onigiri - -minetest.register_craftitem("farming:onigiri", { - description = S("Onigiri"), - inventory_image = "farming_onigiri.png", - on_use = minetest.item_eat(2), - groups = {flammable = 2, compostability = 65} -}) - -minetest.register_craft({ - output = "farming:onigiri", - recipe = { - {"group:food_rice", "group:food_salt", "group:food_rice"}, - {"", "group:food_seaweed", ""} - } -}) - --- Gyoza - -minetest.register_craftitem("farming:gyoza", { - description = S("Gyoza"), - inventory_image = "farming_gyoza.png", - on_use = minetest.item_eat(4), - groups = {flammable = 2, compostability = 65} -}) - -minetest.register_craft({ - output = "farming:gyoza 4", - recipe = { - {"group:food_cabbage", "group:food_garlic_clove", "group:food_onion"}, - {"group:food_meat_raw", "group:food_salt", a.flour}, - {"", a.skillet, ""} - - }, - replacements = { - {"group:food_skillet", "farming:skillet"} - } -}) - --- Mochi - -minetest.register_craftitem("farming:mochi", { - description = S("Mochi"), - inventory_image = "farming_mochi.png", - on_use = minetest.item_eat(3), - groups = {flammable = 2, compostability = 65} -}) - -minetest.register_craft({ - output = "farming:mochi", - recipe = { - {"", a.mortar_pestle, ""}, - {"group:food_rice", "group:food_sugar", "group:food_rice"}, - {"", "group:food_glass_water", ""} - }, - replacements = { - {"group:food_mortar_pestle", "farming:mortar_pestle"}, - {"group:food_glass_water", a.drinking_glass} - } -}) - --- Gingerbread Man - -minetest.register_craftitem("farming:gingerbread_man", { - description = S("Gingerbread Man"), - inventory_image = "farming_gingerbread_man.png", - on_use = minetest.item_eat(2), - groups = {compostability = 85} -}) - -minetest.register_craft({ - output = "farming:gingerbread_man 3", - recipe = { - {"", "group:food_egg", ""}, - {"group:food_wheat", "group:food_ginger", "group:food_wheat"}, - {"group:food_sugar", "", "group:food_sugar"} - } -}) diff --git a/grass.lua b/grass.lua index 21c424c..2e607c2 100644 --- a/grass.lua +++ b/grass.lua @@ -1,16 +1,18 @@ --- Override grasses to drop seeds +-- Override grass to drop wheat and oat seeds + +local rarity_lookup = {[1] = 50, [2] = 50, [3] = 50, [4] = 5, [5] = 5} if minetest.registered_nodes["default:grass_1"] then - for i = 4, 5 do + for i = 1, 5 do minetest.override_item("default:grass_" .. i, { drop = { max_items = 1, items = { - {items = {"farming:seed_wheat"}, rarity = 5}, - {items = {"farming:seed_oat"},rarity = 5}, + {items = {"farming:seed_wheat"}, rarity = rarity_lookup[i]}, + {items = {"farming:seed_oat"},rarity = rarity_lookup[i]}, {items = {"default:grass_1"}} } } @@ -18,16 +20,18 @@ if minetest.registered_nodes["default:grass_1"] then end end +-- override dry grass to drop barley and rye seeds + if minetest.registered_nodes["default:dry_grass_1"] then - for i = 4, 5 do + for i = 1, 5 do minetest.override_item("default:dry_grass_" .. i, { drop = { max_items = 1, items = { - {items = {"farming:seed_barley"}, rarity = 5}, - {items = {"farming:seed_rye"}, rarity = 5}, + {items = {"farming:seed_barley"}, rarity = rarity_lookup[i]}, + {items = {"farming:seed_rye"}, rarity = rarity_lookup[i]}, {items = {"default:dry_grass_1"}} } } @@ -35,6 +39,8 @@ if minetest.registered_nodes["default:dry_grass_1"] then end end +-- override jungle grass to drop cotton and rice seeds + if minetest.registered_nodes["default:junglegrass"] then minetest.override_item("default:junglegrass", { @@ -49,6 +55,8 @@ if minetest.registered_nodes["default:junglegrass"] then }) end +-- override mineclone tallgrass to drop all sof the above seeds + if farming.mcl then minetest.override_item("mcl_flowers:tallgrass", { @@ -65,3 +73,4 @@ if farming.mcl then } }) end + diff --git a/hoes.lua b/hoes.lua index 9dc8d2f..e686575 100644 --- a/hoes.lua +++ b/hoes.lua @@ -1,28 +1,22 @@ -local S = farming.translate -local tr = minetest.get_modpath("toolranks") +-- translation and mod check + +local S = minetest.get_translator("farming") +local mod_tr = minetest.get_modpath("toolranks") -- Hoe registration function farming.register_hoe = function(name, def) -- Check for : prefix (register new hoes in your mod's namespace) - if name:sub(1,1) ~= ":" then - name = ":" .. name - end + if name:sub(1,1) ~= ":" then name = ":" .. name end -- Check def table - if def.description == nil then - def.description = S("Hoe") - end + if def.description == nil then def.description = S("Hoe") end - if def.inventory_image == nil then - def.inventory_image = "unknown_item.png" - end + if def.inventory_image == nil then def.inventory_image = "unknown_item.png" end - if def.max_uses == nil then - def.max_uses = 30 - end + if def.max_uses == nil then def.max_uses = 30 end -- add hoe group def.groups = def.groups or {} @@ -32,20 +26,24 @@ farming.register_hoe = function(name, def) minetest.register_tool(name, { description = def.description, inventory_image = def.inventory_image, + groups = def.groups, + sound = {breaks = "default_tool_breaks"}, + damage_groups = def.damage_groups or {fleshy = 1}, + on_use = function(itemstack, user, pointed_thing) return farming.hoe_on_use(itemstack, user, pointed_thing, def.max_uses) - end, - groups = def.groups, - sound = {breaks = "default_tool_breaks"} + end }) -- Register its recipe if def.recipe then + minetest.register_craft({ output = name:sub(2), recipe = def.recipe }) elseif def.material then + minetest.register_craft({ output = name:sub(2), recipe = { @@ -61,76 +59,87 @@ end function farming.hoe_on_use(itemstack, user, pointed_thing, uses) - local pt = pointed_thing + local pt = pointed_thing or {} + local is_used = false -- am I going to hoe the top of a dirt node? - if not pt or pt.type ~= "node" - or pt.above.y ~= pt.under.y + 1 then - return + if pt.type == "node" and pt.above.y == pt.under.y + 1 then + + local under = minetest.get_node(pt.under) + local upos = pointed_thing.under + + if minetest.is_protected(upos, user:get_player_name()) then + minetest.record_protection_violation(upos, user:get_player_name()) + return + end + + local p = {x = pt.under.x, y = pt.under.y + 1, z = pt.under.z} + local above = minetest.get_node(p) + + -- return if any of the nodes is not registered + if not minetest.registered_nodes[under.name] + or not minetest.registered_nodes[above.name] then return end + + -- check if the node above the pointed thing is air + if above.name ~= "air" then return end + + -- check if pointing at dirt + if minetest.get_item_group(under.name, "soil") ~= 1 then return end + + -- check if (wet) soil defined + local ndef = minetest.registered_nodes[under.name] + + if ndef.soil == nil or ndef.soil.wet == nil or ndef.soil.dry == nil then + return + end + + if minetest.is_protected(pt.under, user:get_player_name()) then + minetest.record_protection_violation(pt.under, user:get_player_name()) + return + end + + -- turn the node into soil, wear out item and play sound + minetest.set_node(pt.under, {name = ndef.soil.dry}) ; is_used = true + + minetest.sound_play("default_dig_crumbly", {pos = pt.under, gain = 0.5}, true) end - local under = minetest.get_node(pt.under) - local upos = pointed_thing.under - - if minetest.is_protected(upos, user:get_player_name()) then - minetest.record_protection_violation(upos, user:get_player_name()) - return - end - - local p = {x = pt.under.x, y = pt.under.y + 1, z = pt.under.z} - local above = minetest.get_node(p) - - -- return if any of the nodes is not registered - if not minetest.registered_nodes[under.name] - or not minetest.registered_nodes[above.name] then - return - end - - -- check if the node above the pointed thing is air - if above.name ~= "air" then - return - end - - -- check if pointing at dirt - if minetest.get_item_group(under.name, "soil") ~= 1 then - return - end - - -- check if (wet) soil defined - local ndef = minetest.registered_nodes[under.name] - if ndef.soil == nil or ndef.soil.wet == nil or ndef.soil.dry == nil then - return - end - - if minetest.is_protected(pt.under, user:get_player_name()) then - minetest.record_protection_violation(pt.under, user:get_player_name()) - return - end - - -- turn the node into soil, wear out item and play sound - minetest.set_node(pt.under, {name = ndef.soil.dry}) - - minetest.sound_play("default_dig_crumbly", {pos = pt.under, gain = 0.5}, true) - local wdef = itemstack:get_definition() local wear = 65535 / (uses - 1) - if farming.is_creative(user:get_player_name()) then - if tr then - wear = 1 - else - wear = 0 + -- 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 tr then - itemstack = toolranks.new_afteruse(itemstack, user, under, {wear = wear}) - else - itemstack:add_wear(wear) - end + -- only when used on soil top or external entity + if is_used then - if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then - minetest.sound_play(wdef.sound.breaks, {pos = pt.above, gain = 0.5}, true) + -- cretive doesnt wear tools but toolranks registers uses with wear so set to 1 + if farming.is_creative(user:get_player_name()) then + if mod_tr then wear = 1 else wear = 0 end + end + + if mod_tr then + itemstack = toolranks.new_afteruse(itemstack, user, under, {wear = wear}) + else + itemstack:add_wear(wear) + end + + if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then + minetest.sound_play(wdef.sound.breaks, {pos = pt.above, gain = 0.5}, true) + end end return itemstack @@ -162,14 +171,17 @@ farming.register_hoe(":farming:hoe_steel", { description = S("Steel Hoe"), inventory_image = "farming_tool_steelhoe.png", max_uses = 200, - material = "default:steel_ingot" + 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 = 500, - groups = {not_in_creative_inventory = 1} + max_uses = 250, + groups = {not_in_creative_inventory = 1}, + material = "default:bronze_ingot", + damage_groups = {fleshy = 2} }) farming.register_hoe(":farming:hoe_mese", { @@ -177,17 +189,20 @@ farming.register_hoe(":farming:hoe_mese", { inventory_image = "farming_tool_mesehoe.png", max_uses = 350, groups = {not_in_creative_inventory = 1}, + damage_groups = {fleshy = 3} }) farming.register_hoe(":farming:hoe_diamond", { description = S("Diamond Hoe"), inventory_image = "farming_tool_diamondhoe.png", max_uses = 500, - groups = {not_in_creative_inventory = 1} + groups = {not_in_creative_inventory = 1}, + damage_groups = {fleshy = 3} }) -- Toolranks support -if tr then + +if mod_tr then minetest.override_item("farming:hoe_wood", { original_description = S("Wood Hoe"), @@ -214,8 +229,8 @@ if tr then description = toolranks.create_description(S("Diamond Hoe"))}) end - -- hoe bomb function + local function hoe_area(pos, player) -- check for protection @@ -228,16 +243,14 @@ local function hoe_area(pos, player) -- remove flora (grass, flowers etc.) local res = minetest.find_nodes_in_area( - {x = pos.x - r, y = pos.y - 1, z = pos.z - r}, - {x = pos.x + r, y = pos.y + 2, z = pos.z + r}, - {"group:flora"}) + {x = pos.x - r, y = pos.y - 1, z = pos.z - r}, + {x = pos.x + r, y = pos.y + 2, z = pos.z + r}, {"group:flora"}) for n = 1, #res do minetest.swap_node(res[n], {name = "air"}) end -- replace dirt with tilled soil - res = nil res = minetest.find_nodes_in_area_under_air( {x = pos.x - r, y = pos.y - 1, z = pos.z - r}, {x = pos.x + r, y = pos.y + 2, z = pos.z + r}, @@ -248,8 +261,8 @@ local function hoe_area(pos, player) end end +-- throwable hoe bomb entity --- throwable hoe bomb minetest.register_entity("farming:hoebomb_entity", { initial_properties = { @@ -279,9 +292,7 @@ minetest.register_entity("farming:hoebomb_entity", { local vel = self.object:get_velocity() -- only when potion hits something physical - if vel.x == 0 - or vel.y == 0 - or vel.z == 0 then + if vel.x == 0 or vel.y == 0 or vel.z == 0 then if self.player ~= "" then @@ -302,17 +313,14 @@ minetest.register_entity("farming:hoebomb_entity", { end }) - -- actual throwing function + local function throw_potion(itemstack, player) - local playerpos = player:get_pos() + local pos = player:get_pos() local obj = minetest.add_entity({ - x = playerpos.x, - y = playerpos.y + 1.5, - z = playerpos.z - }, "farming:hoebomb_entity") + x = pos.x, y = pos.y + 1.5, z = pos.z}, "farming:hoebomb_entity") if not obj then return end @@ -326,12 +334,13 @@ local function throw_potion(itemstack, player) obj:get_luaentity().player = player end - -- hoe bomb item + minetest.register_craftitem("farming:hoe_bomb", { description = S("Hoe Bomb (use or throw on grassy areas to hoe land)"), inventory_image = "farming_hoe_bomb.png", groups = {flammable = 2, not_in_creative_inventory = 1}, + on_use = function(itemstack, user, pointed_thing) if pointed_thing.type == "node" then @@ -349,7 +358,21 @@ minetest.register_craftitem("farming:hoe_bomb", { end, }) --- Mithril Scythe (special item) +-- helper function + +local function node_not_num(nodename) + + local num = #nodename:split("_") + local str = "" + + if not num or num == 1 then return end + + for v = 1, (num - 1) do + str = str .. nodename:split("_")[v] .. "_" + end + + return str +end farming.scythe_not_drops = {"farming:trellis", "farming:beanpole"} @@ -357,6 +380,8 @@ farming.add_to_scythe_not_drops = function(item) table.insert(farming.scythe_not_drops, item) end +-- Mithril Scythe (special item) + minetest.register_tool("farming:scythe_mithril", { description = S("Mithril Scythe (Use to harvest and replant crops)"), inventory_image = "farming_scythe_mithril.png", @@ -364,22 +389,16 @@ minetest.register_tool("farming:scythe_mithril", { on_use = function(itemstack, placer, pointed_thing) - if pointed_thing.type ~= "node" then - return - end + if pointed_thing.type ~= "node" then return end local pos = pointed_thing.under local name = placer:get_player_name() - if minetest.is_protected(pos, name) then - return - end + if minetest.is_protected(pos, name) then return end local node = minetest.get_node_or_nil(pos) - if not node then - return - end + if not node then return end local def = minetest.registered_nodes[node.name] @@ -395,14 +414,9 @@ minetest.register_tool("farming:scythe_mithril", { -- get crop name local mname = node.name:split(":")[1] - local pname = node.name:split(":")[2] - local sname = tonumber(pname:split("_")[2]) + local pname = node_not_num(node.name:split(":")[2]) - pname = pname:split("_")[1] - - if not sname then - return - end + if not pname then return end -- add dropped items for _, dropped_item in pairs(drops) do @@ -422,10 +436,7 @@ minetest.register_tool("farming:scythe_mithril", { if obj then obj:set_velocity({ - x = math.random(-10, 10) / 9, - y = 3, - z = math.random(-10, 10) / 9 - }) + x = math.random() - 0.5, y = 3, z = math.random() - 0.5}) end end end @@ -438,7 +449,8 @@ minetest.register_tool("farming:scythe_mithril", { -- play sound minetest.sound_play("default_grass_footstep", {pos = pos, gain = 1.0}, true) - local replace = mname .. ":" .. pname .. "_1" + -- replace with seed or crop_1 + local replace = mname .. ":" .. pname .. "1" if minetest.registered_nodes[replace] then @@ -455,9 +467,11 @@ minetest.register_tool("farming:scythe_mithril", { return itemstack end - end, + end }) +-- if moreores found add mithril scythe recipe + if minetest.get_modpath("moreores") then minetest.register_craft({ diff --git a/init.lua b/init.lua index 689dff6..a562edc 100644 --- a/init.lua +++ b/init.lua @@ -1,73 +1,71 @@ --[[ - Farming Redo Mod - by TenPlus1 + Farming Redo Mod by TenPlus1 NEW growing routine by prestidigitator auto-refill by crabman77 ]] +-- Translation support + +local S = minetest.get_translator("farming") + +-- global + farming = { mod = "redo", - version = "20231206", + version = "20240912", path = minetest.get_modpath("farming"), - select = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5} - }, - select_final = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -2.5/16, 0.5} - }, + 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, + min_light = 12, max_light = 15, mapgen = minetest.get_mapgen_setting("mg_name"), use_utensils = minetest.settings:get_bool("farming_use_utensils") ~= false, mtg = minetest.get_modpath("default"), mcl = minetest.get_modpath("mcl_core"), - sounds = {} + mcl_hardness = 0.01, + translate = S } --- default sound functions just incase -function farming.sounds.node_sound_defaults() end -function farming.sounds.node_sound_glass_defaults() end -function farming.sounds.node_sound_gravel_defaults() end -function farming.sounds.node_sound_leaves_defaults() end -function farming.sounds.node_sound_stone_defaults() end -function farming.sounds.node_sound_wood_defaults() end +-- determine which sounds to use, default or mcl_sounds --- sounds check -if farming.mtg then farming.sounds = default end -if farming.mcl then farming.sounds = mcl_sounds end +local function sound_helper(snd) + + farming[snd] = (farming.mtg and default[snd]) or (farming.mcl and mcl_sounds[snd]) + or function() return {} end +end + +sound_helper("node_sound_defaults") +sound_helper("node_sound_stone_defaults") +sound_helper("node_sound_dirt_defaults") +sound_helper("node_sound_sand_defaults") +sound_helper("node_sound_gravel_defaults") +sound_helper("node_sound_wood_defaults") +sound_helper("node_sound_leaves_defaults") +sound_helper("node_sound_ice_defaults") +sound_helper("node_sound_metal_defaults") +sound_helper("node_sound_water_defaults") +sound_helper("node_sound_snow_defaults") +sound_helper("node_sound_glass_defaults") -- check for creative mode or priv + local creative_mode_cache = minetest.settings:get_bool("creative_mode") function farming.is_creative(name) return creative_mode_cache or minetest.check_player_privs(name, {creative = true}) end +-- stats, locals, settings, function helper local statistics = dofile(farming.path .. "/statistics.lua") - --- Translation support -local S = minetest.get_translator("farming") - -farming.translate = S - --- localise -local random = math.random -local floor = math.floor - --- Utility Function +local random, floor = math.random, math.floor local time_speed = tonumber(minetest.settings:get("time_speed")) or 72 local SECS_PER_CYCLE = (time_speed > 0 and (24 * 60 * 60) / time_speed) or 0 -local function clamp(x, min, max) - return (x < min and min) or (x > max and max) or x -end - +local function clamp(x, min, max) return (x < min and min) or (x > max and max) or x end -- return amount of day or night that has elapsed -- dt is time elapsed, count_day if true counts day, otherwise night + local function day_or_night_time(dt, count_day) local t_day = minetest.get_timeofday() @@ -96,7 +94,9 @@ local function day_or_night_time(dt, count_day) local dt_c = clamp(t2_c, 0, 0.5) - clamp(t1_c, 0, 0.5) -- this cycle if t1_c < -0.5 then + local nc = floor(-t1_c) + t1_c = t1_c + nc dt_c = dt_c + 0.5 * nc + clamp(-t1_c - 0.5, 0, 0.5) end @@ -104,14 +104,13 @@ local function day_or_night_time(dt, count_day) return dt_c * SECS_PER_CYCLE end - -- Growth Logic -local STAGE_LENGTH_AVG = tonumber( - minetest.settings:get("farming_stage_length")) or 200 + +local STAGE_LENGTH_AVG = tonumber(minetest.settings:get("farming_stage_length")) or 200 local STAGE_LENGTH_DEV = STAGE_LENGTH_AVG / 6 - -- quick start seed timer + farming.start_seed_timer = function(pos) local timer = minetest.get_node_timer(pos) @@ -120,16 +119,15 @@ farming.start_seed_timer = function(pos) 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 + if node.name then name = node.name elseif node.x and node.y and node.z then node = minetest.get_node_or_nil(node) name = node and node.name @@ -138,9 +136,7 @@ local function plant_name_stage(node) name = tostring(node) end - if not name or name == "ignore" then - return nil - end + if not name or name == "ignore" then return nil end local sep_pos = name:find("_[^_]+$") @@ -156,7 +152,6 @@ local function plant_name_stage(node) return name, 0 end - -- Map from node name to -- { plant_name = ..., name = ..., stage = n, stages_left = { node_name, ... } } @@ -165,30 +160,22 @@ 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. - -local register_plant_node + -- @param node - Node or position table, or node name. + -- @return - The (possibly zero) number of stages of growth the plant will go through + -- before being fully grown, or nil if not a plant. -- Recursive helper + local function reg_plant_stages(plant_name, stage, force_last) local node_name = plant_name and plant_name .. "_" .. stage local node_def = node_name and minetest.registered_nodes[node_name] - if not node_def then - return nil - end + if not node_def then return nil end local stages = plant_stages[node_name] - if stages then - return stages - end + if stages then return stages end if minetest.get_item_group(node_name, "growing") > 0 then @@ -211,9 +198,7 @@ local function reg_plant_stages(plant_name, stage, force_last) on_construct = function(pos) - if old_constr then - old_constr(pos) - end + if old_constr then old_constr(pos) end farming.handle_growth(pos) end, @@ -222,9 +207,7 @@ local function reg_plant_stages(plant_name, stage, force_last) minetest.get_node_timer(pos):stop() - if old_destr then - old_destr(pos) - end + if old_destr then old_destr(pos) end end, on_timer = function(pos, elapsed) @@ -250,26 +233,25 @@ local function reg_plant_stages(plant_name, stage, force_last) return stages end +-- split name and stage and register crop -local register_plant_node = function(node) +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 - else - return nil end end +-- check for further growth and set or stop timer local function set_growing(pos, stages_left) - if not stages_left then - return - end + if not stages_left then return end local timer = minetest.get_node_timer(pos) @@ -289,21 +271,18 @@ local function set_growing(pos, stages_left) 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 + if not pos then return end local stages_left = register_plant_node(node or pos) - if stages_left then - set_growing(pos, stages_left) - end + if stages_left then set_growing(pos, stages_left) end end +-- register crops nodes and add timer functions minetest.after(0, function() @@ -312,29 +291,27 @@ minetest.after(0, function() end end) - -- Just in case a growing type or added node is missed (also catches existing -- nodes added to map before timers were incorporated). + minetest.register_abm({ label = "Start crop timer", nodenames = {"group:growing"}, interval = 300, chance = 1, catch_up = false, + action = function(pos, node) -- skip if node timer already active - if minetest.get_node_timer(pos):is_started() then - return - end + if minetest.get_node_timer(pos):is_started() then return end -- check if group:growing node is a seed local def = minetest.registered_nodes[node.name] if def and def.groups and def.groups.seed then - -- start node timer if found - if def.on_timer then + if def.on_timer then -- start node timer if found farming.start_seed_timer(pos) @@ -345,61 +322,58 @@ minetest.register_abm({ def = minetest.registered_nodes[next_stage] - -- switch seed without timer to stage_1 of crop - if def then + if def then -- switch seed without timer to stage_1 of crop local p2 = def.place_param2 or 1 minetest.set_node(pos, {name = next_stage, param2 = p2}) end else - -- start normal crop timer - farming.handle_growth(pos, node) + farming.handle_growth(pos, node) -- start normal crop timer end end }) +-- default check crop is on wet soil + +farming.can_grow = function(pos) + + local below = minetest.get_node({x = pos.x, y = pos.y -1, z = pos.z}) + + return minetest.get_item_group(below.name, "soil") >= 3 +end -- Plant timer function that grows plants under the right conditions. + function farming.plant_growth_timer(pos, elapsed, node_name) local stages = plant_stages[node_name] - if not stages then - return false - end + if not stages then return false end local max_growth = #stages.stages_left - if max_growth <= 0 then - return false - end + if max_growth <= 0 then return false end - -- custom growth check - local chk = minetest.registered_nodes[node_name].growth_check + local chk1 = minetest.registered_nodes[node_name].growth_check -- old + local chk2 = minetest.registered_nodes[node_name].can_grow -- new - if chk then + if chk1 then -- custom farming redo growth_check function - if not chk(pos, node_name) then - return true - end + if not chk1(pos, node_name) then return true end - -- otherwise check for wet soil beneath crop - else - local under = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}) + elseif chk2 then -- custom mt 5.9x farming can_grow function - if minetest.get_item_group(under.name, "soil") < 3 then - return true - end - end + 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 + if lambda < 0.1 then return true end local MIN_LIGHT = minetest.registered_nodes[node_name].minlight or farming.min_light local MAX_LIGHT = minetest.registered_nodes[node_name].maxlight or farming.max_light @@ -408,9 +382,7 @@ function farming.plant_growth_timer(pos, elapsed, node_name) local light = (minetest.get_node_light(light_pos) or 0) - if light < MIN_LIGHT or light > MAX_LIGHT then - return true - end + if light < MIN_LIGHT or light > MAX_LIGHT then return true end growth = 1 else @@ -421,9 +393,7 @@ function farming.plant_growth_timer(pos, elapsed, node_name) if not night_growth then - if not day_growth then - return true - end + if not day_growth then return true end lambda = day_or_night_time(elapsed, true) / STAGE_LENGTH_AVG @@ -434,9 +404,7 @@ function farming.plant_growth_timer(pos, elapsed, node_name) growth = statistics.poisson(lambda, max_growth) - if growth < 1 then - return true - end + if growth < 1 then return true end end if minetest.registered_nodes[stages.stages_left[growth]] then @@ -451,21 +419,15 @@ function farming.plant_growth_timer(pos, elapsed, node_name) return growth ~= max_growth end - -- refill placed plant by crabman (26/08/2015) updated by TenPlus1 + function farming.refill_plant(player, plantname, index) - if not player then return end - - local inv = player:get_inventory() - - if not inv then return end + 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 + if old_stack:get_name() ~= "" then return end for i, stack in ipairs(inv:get_list("main")) do @@ -480,22 +442,21 @@ function farming.refill_plant(player, plantname, index) 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 pt or pt.type ~= "node" then - return - end + if not itemstack or not pt or pt.type ~= "node" then return end local under = minetest.get_node(pt.under) -- am I right-clicking on something that has a custom on_place set? -- thanks to Krock for helping with this issue :) local def = minetest.registered_nodes[under.name] + if placer and itemstack and def and def.on_rightclick then return def.on_rightclick(pt.under, under, placer, itemstack, pt) end @@ -503,23 +464,16 @@ function farming.place_seed(itemstack, placer, pointed_thing, plantname) local above = minetest.get_node(pt.above) -- check if pointing at the top of the node - if pt.above.y ~= pt.under.y + 1 then - return - end + if pt.above.y ~= pt.under.y + 1 then return end -- return if any of the nodes is not registered if not minetest.registered_nodes[under.name] - or not minetest.registered_nodes[above.name] then - return - end + or not minetest.registered_nodes[above.name] then return end - -- can I replace above node, and am I pointing at soil + -- can I replace above node, and am I pointing directly at soil if not minetest.registered_nodes[above.name].buildable_to or minetest.get_item_group(under.name, "soil") < 2 - -- avoid multiple seed placement bug - or minetest.get_item_group(above.name, "plant") ~= 0 then - return - end + or minetest.get_item_group(above.name, "plant") ~= 0 then return end -- is player planting seed? local name = placer and placer:get_player_name() or "" @@ -531,12 +485,15 @@ function farming.place_seed(itemstack, placer, pointed_thing, plantname) minetest.set_node(pt.above, {name = plantname, param2 = p2}) -farming.start_seed_timer(pt.above) ---minetest.get_node_timer(pt.above):start(1) ---farming.handle_growth(pt.above)--, node) + farming.start_seed_timer(pt.above) minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0}) + minetest.log("action", string.format("%s planted %s at %s", + (placer and placer:is_player() and placer:get_player_name() or "A mod"), + itemstack:get_name(), minetest.pos_to_string(pt.above) + )) + if placer and itemstack and not farming.is_creative(placer:get_player_name()) then @@ -547,12 +504,8 @@ farming.start_seed_timer(pt.above) -- check for refill if itemstack:get_count() == 0 then - minetest.after(0.2, - farming.refill_plant, - placer, - name, - placer:get_wield_index() - ) + minetest.after(0.2, farming.refill_plant, + placer, name, placer:get_wield_index()) end end @@ -560,13 +513,11 @@ farming.start_seed_timer(pt.above) end end - -- Function to register plants (default farming compatibility) + farming.register_plant = function(name, def) - if not def.steps then - return nil - end + if not def.steps then return nil end local mname = name:split(":")[1] local pname = name:split(":")[2] @@ -589,6 +540,8 @@ farming.register_plant = function(name, def) 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, @@ -602,14 +555,12 @@ farming.register_plant = function(name, def) local def = minetest.registered_nodes[mname .. ":" .. pname .. "_1"] if def then - minetest.swap_node(pos, { - name = def.next_plant, - param2 = def.place_param2 - }) + minetest.swap_node(pos, {name = def.next_plant, param2 = def.place_param2}) end end, on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, mname .. ":seed_" .. pname) end @@ -661,7 +612,10 @@ farming.register_plant = function(name, def) next_plant = mname .. ":" .. pname .. "_" .. (i + 1) end + local desc = pname:gsub("^%l", string.upper) + minetest.register_node(node_name, { + description = S(desc) .. S(" Crop"), drawtype = "plantlike", waving = 1, tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"}, @@ -674,28 +628,30 @@ farming.register_plant = function(name, def) drop = drop, selection_box = sel, groups = g, - sounds = farming.sounds.node_sound_leaves_defaults(), + _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 info + -- 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 @@ -732,46 +688,55 @@ farming.artichoke = 0.001 farming.parsley = 0.002 farming.sunflower = 0.001 farming.ginger = 0.002 -farming.strawberry = not minetest.get_modpath("ethereal") and 0.002 +farming.strawberry = 0.002 farming.grains = true farming.rice = true - -- Load new global settings if found inside mod folder + local input = io.open(farming.path .. "/farming.conf", "r") -if input then - dofile(farming.path .. "/farming.conf") - input:close() -end + +if input then dofile(farming.path .. "/farming.conf") ; input:close() end -- load new world-specific settings if found inside world folder + local worldpath = minetest.get_worldpath() + input = io.open(worldpath .. "/farming.conf", "r") -if input then - dofile(worldpath .. "/farming.conf") - input:close() + +if input then dofile(worldpath .. "/farming.conf") ; input:close() end + +-- helper function to add {eatable} group to food items, also {flammable} + +function farming.add_eatable(item, hp) + + local def = minetest.registered_items[item] + + if def then + + local groups = table.copy(def.groups) or {} + + groups.eatable = hp ; groups.flammable = 2 + + minetest.override_item(item, {groups = groups}) + end end --- recipe items -dofile(farming.path .. "/items.lua") +-- recipe item list and alternatives + +dofile(farming.path .. "/item_list.lua") + +-- setup soil, register hoes, override grass --- important items if minetest.get_modpath("default") then dofile(farming.path .. "/soil.lua") dofile(farming.path .. "/hoes.lua") end dofile(farming.path.."/grass.lua") -dofile(farming.path.."/utensils.lua") - --- default crops -if not farming.mcl then - dofile(farming.path.."/crops/wheat.lua") -end - -dofile(farming.path.."/crops/cotton.lua") -- disable crops Mineclone already has + if farming.mcl then farming.carrot = nil farming.potato = nil @@ -780,14 +745,17 @@ if farming.mcl then farming.beetroot = nil farming.sunflower = nil farming.pumpkin = nil +else + dofile(farming.path.."/crops/wheat.lua") -- default crop outwith mineclone end +dofile(farming.path.."/crops/cotton.lua") -- default crop + -- helper function + local function ddoo(file, check) - if check then - dofile(farming.path .. "/crops/" .. file) - end + if check then dofile(farming.path .. "/crops/" .. file) end end -- add additional crops and food (if enabled) @@ -814,7 +782,7 @@ ddoo("pineapple.lua", farming.pineapple) ddoo("peas.lua", farming.peas) ddoo("beetroot.lua", farming.beetroot) ddoo("chili.lua", farming.chili) -ddoo("ryeoatrice.lua", farming.grains) +ddoo("rye_oat.lua", farming.grains) ddoo("rice.lua", farming.rice) ddoo("mint.lua", farming.mint) ddoo("cabbage.lua", farming.cabbage) @@ -831,7 +799,13 @@ ddoo("eggplant.lua", farming.eggplant) ddoo("spinach.lua", farming.eggplant) ddoo("ginger.lua", farming.ginger) -dofile(farming.path .. "/food.lua") +-- 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 diff --git a/item_food.lua b/item_food.lua new file mode 100644 index 0000000..c7f7f19 --- /dev/null +++ b/item_food.lua @@ -0,0 +1,1033 @@ + +local S = minetest.get_translator("farming") +local a = farming.recipe_items + +-- Flour + +minetest.register_craftitem("farming:flour", { + description = S("Flour"), + inventory_image = "farming_flour.png", + groups = {food_flour = 1, flammable = 1} +}) + +-- Garlic bulb + +minetest.register_craftitem("farming:garlic", { + description = S("Garlic"), + inventory_image = "crops_garlic.png", + on_use = minetest.item_eat(1), + groups = {food_garlic = 1, compostability = 55} +}) + +farming.add_eatable("farming:garlic", 1) + +-- Garlic braid + +minetest.register_node("farming:garlic_braid", { + description = S("Garlic Braid"), + inventory_image = "crops_garlic_braid.png", + wield_image = "crops_garlic_braid.png", + drawtype = "nodebox", + use_texture_alpha = "clip", + paramtype = "light", + paramtype2 = "facedir", + tiles = { + "crops_garlic_braid_top.png", + "crops_garlic_braid.png", + "crops_garlic_braid_side.png^[transformFx", + "crops_garlic_braid_side.png", + "crops_garlic_braid.png", + "crops_garlic_braid.png" + }, + groups = {vessel = 1, dig_immediate = 3, flammable = 3, compostability = 65, handy = 1}, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults(), + node_box = { + type = "fixed", fixed = {{-0.1875, -0.5, 0.5, 0.1875, 0.5, 0.125}} + } +}) + +-- Corn on the cob (texture by TenPlus1) + +minetest.register_craftitem("farming:corn_cob", { + description = S("Corn on the Cob"), + inventory_image = "farming_corn_cob.png", + groups = {compostability = 65, food_corn_cooked = 1}, + on_use = minetest.item_eat(5) +}) + +farming.add_eatable("farming:corn_cob", 5) + +-- Popcorn + +minetest.register_craftitem("farming:popcorn", { + description = S("Popcorn"), + inventory_image = "farming_popcorn.png", + groups = {compostability = 55, food_popcorn = 1}, + on_use = minetest.item_eat(4) +}) + +farming.add_eatable("farming:popcorn", 4) + +-- Cornstarch + +minetest.register_craftitem("farming:cornstarch", { + description = S("Cornstarch"), + inventory_image = "farming_cornstarch.png", + groups = {food_cornstarch = 1, food_gelatin = 1, flammable = 2, compostability = 65} +}) + +-- Cup of coffee + +minetest.register_node("farming:coffee_cup", { + description = S("Cup of Coffee"), + drawtype = "torchlike", + tiles = {"farming_coffee_cup.png"}, + inventory_image = "farming_coffee_cup.png", + wield_image = "farming_coffee_cup.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1, drink = 1, handy = 1}, + is_ground_content = false, + on_use = minetest.item_eat(2, "vessels:drinking_glass"), + sounds = farming.node_sound_glass_defaults() +}) + +farming.add_eatable("farming:coffee_cup", 2) + +minetest.register_alias("farming:coffee_cup_hot", "farming:coffee_cup") +minetest.register_alias("farming:drinking_cup", "vessels:drinking_glass") + +-- Bar of of dark chocolate (thx to Ice Pandora for her deviantart.com chocolate tutorial) + +minetest.register_craftitem("farming:chocolate_dark", { + description = S("Bar of Dark Chocolate"), + inventory_image = "farming_chocolate_dark.png", + on_use = minetest.item_eat(3) +}) + +farming.add_eatable("farming:chocolate_dark", 3) + +-- Chocolate block (not edible) + +minetest.register_node("farming:chocolate_block", { + description = S("Chocolate Block"), + tiles = {"farming_chocolate_block.png"}, + is_ground_content = false, + groups = {cracky = 2, oddly_breakable_by_hand = 2, handy = 1}, + sounds = farming.node_sound_stone_defaults() +}) + +-- Bowl of chili + +minetest.register_craftitem("farming:chili_bowl", { + description = S("Bowl of Chili"), + inventory_image = "farming_chili_bowl.png", + on_use = minetest.item_eat(8, a.bowl), + groups = {compostability = 65} +}) + +farming.add_eatable("farming:chili_bowl", 8) + +-- Chili powder + +minetest.register_craftitem("farming:chili_powder", { + description = S("Chili Powder"), + on_use = minetest.item_eat(-1), + inventory_image = "farming_chili_powder.png", + groups = {compostability = 45} +}) + +-- Carrot juice + +minetest.register_craftitem("farming:carrot_juice", { + description = S("Carrot Juice"), + inventory_image = "farming_carrot_juice.png", + on_use = minetest.item_eat(4, "vessels:drinking_glass"), + groups = {vessel = 1, drink = 1} +}) + +farming.add_eatable("farming:carrot_juice", 4) + +-- Blueberry Pie + +minetest.register_craftitem("farming:blueberry_pie", { + description = S("Blueberry Pie"), + inventory_image = "farming_blueberry_pie.png", + on_use = minetest.item_eat(6), + groups = {compostability = 75} +}) + +farming.add_eatable("farming:blueberry_pie", 6) + +-- Blueberry muffin (thanks to sosogirl123 @ deviantart.com for muffin image) + +minetest.register_craftitem("farming:muffin_blueberry", { + description = S("Blueberry Muffin"), + inventory_image = "farming_blueberry_muffin.png", + on_use = minetest.item_eat(2), + groups = {compostability = 65} +}) + +farming.add_eatable("farming:muffin_blueberry", 2) + +-- Tomato soup + +minetest.register_craftitem("farming:tomato_soup", { + description = S("Tomato Soup"), + inventory_image = "farming_tomato_soup.png", + groups = {compostability = 65}, + on_use = minetest.item_eat(8, "farming:bowl") +}) + +farming.add_eatable("farming:tomato_soup", 8) + +-- sliced bread + +minetest.register_craftitem("farming:bread_slice", { + description = S("Sliced Bread"), + inventory_image = "farming_bread_slice.png", + on_use = minetest.item_eat(1), + groups = {food_bread_slice = 1, compostability = 65} +}) + +farming.add_eatable("farming:bread_slice", 1) + +-- toast + +minetest.register_craftitem("farming:toast", { + description = S("Toast"), + inventory_image = "farming_toast.png", + on_use = minetest.item_eat(1), + groups = {food_toast = 1, compostability = 65} +}) + +farming.add_eatable("farming:toast", 1) + +-- toast sandwich + +minetest.register_craftitem("farming:toast_sandwich", { + description = S("Toast Sandwich"), + inventory_image = "farming_toast_sandwich.png", + on_use = minetest.item_eat(4), + groups = {compostability = 85} +}) + +farming.add_eatable("farming:toast_sandwich", 4) + +-- glass of water + +minetest.register_craftitem("farming:glass_water", { + description = S("Glass of Water"), + inventory_image = "farming_water_glass.png", + groups = {food_glass_water = 1, flammable = 3, vessel = 1} +}) + +-- Sugar cube + +minetest.register_node("farming:sugar_cube", { + description = S("Sugar Cube"), + tiles = {"farming_sugar_cube.png"}, + groups = {shovely = 1, handy = 1, crumbly = 2}, + is_ground_content = false, + floodable = true, + sounds = farming.node_sound_gravel_defaults(), + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 +}) + +-- Sugar caramel + +minetest.register_craftitem("farming:caramel", { + description = S("Caramel"), + inventory_image = "farming_caramel.png", + groups = {compostability = 40} +}) + +-- Salt + +minetest.register_node("farming:salt", { + description = S("Salt"), + inventory_image = "farming_salt.png", + wield_image = "farming_salt.png", + drawtype = "plantlike", + visual_scale = 0.8, + paramtype = "light", + tiles = {"farming_salt.png"}, + groups = {food_salt = 1, vessel = 1, dig_immediate = 3, attached_node = 1, handy = 1}, + is_ground_content = false, + sounds = farming.node_sound_defaults(), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + -- special function to make salt crystals form inside water + dropped_step = function(self, pos, dtime) + + self.ctimer = (self.ctimer or 0) + dtime + if self.ctimer < 15.0 then return end + self.ctimer = 0 + + local needed + + if self.node_inside and self.node_inside.name == a.water_source then + needed = 8 + + elseif self.node_inside and self.node_inside.name == a.river_water_source then + needed = 9 + end + + if not needed then return end + + local objs = core.get_objects_inside_radius(pos, 0.5) + + if not objs or #objs ~= 1 then return end + + local salt, ent = nil, nil + + for k, obj in pairs(objs) do + + ent = obj:get_luaentity() + + if ent and ent.name == "__builtin:item" + and ent.itemstring == "farming:salt " .. needed then + + obj:remove() + + core.add_item(pos, "farming:salt_crystal") + + return false -- return with no further action + end + end + end +}) + +-- Salt Crystal + +minetest.register_node("farming:salt_crystal", { + description = S("Salt crystal"), + inventory_image = "farming_salt_crystal.png", + wield_image = "farming_salt_crystal.png", + drawtype = "plantlike", + visual_scale = 0.8, + paramtype = "light", + light_source = 1, + tiles = {"farming_salt_crystal.png"}, + groups = {dig_immediate = 3, attached_node = 1, handy = 1}, + is_ground_content = false, + sounds = farming.node_sound_defaults(), + selection_box = { + type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 +}) + +-- Mayonnaise + +minetest.register_node("farming:mayonnaise", { + description = S("Mayonnaise"), + drawtype = "plantlike", + tiles = {"farming_mayo.png"}, + inventory_image = "farming_mayo.png", + wield_image = "farming_mayo.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + on_use = minetest.item_eat(3), + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.45, 0.25} + }, + groups = { + compostability = 65, food_mayonnaise = 1, vessel = 1, dig_immediate = 3, + attached_node = 1, handy = 1 + }, + sounds = farming.node_sound_glass_defaults() +}) + +farming.add_eatable("farming:mayonnaise", 3) + +-- Rose Water + +minetest.register_node("farming:rose_water", { + description = S("Rose Water"), + inventory_image = "farming_rose_water.png", + wield_image = "farming_rose_water.png", + drawtype = "plantlike", + visual_scale = 0.8, + paramtype = "light", + tiles = {"farming_rose_water.png"}, + groups = { + food_rose_water = 1, vessel = 1, dig_immediate = 3, attached_node = 1, handy = 1 + }, + is_ground_content = false, + sounds = farming.node_sound_defaults(), + selection_box = { + type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + } +}) + +-- Turkish Delight + +minetest.register_craftitem("farming:turkish_delight", { + description = S("Turkish Delight"), + inventory_image = "farming_turkish_delight.png", + groups = {compostability = 85}, + on_use = minetest.item_eat(2) +}) + +farming.add_eatable("farming:turkish_delight", 2) + +-- Garlic Bread + +minetest.register_craftitem("farming:garlic_bread", { + description = S("Garlic Bread"), + inventory_image = "farming_garlic_bread.png", + groups = {compostability = 65}, + on_use = minetest.item_eat(2) +}) + +farming.add_eatable("farming:garlic_bread", 2) + +-- Donuts (thanks to Bockwurst for making the donut images) + +minetest.register_craftitem("farming:donut", { + description = S("Donut"), + inventory_image = "farming_donut.png", + on_use = minetest.item_eat(4), + groups = {compostability = 65} +}) + +farming.add_eatable("farming:donut", 4) + +minetest.register_craftitem("farming:donut_chocolate", { + description = S("Chocolate Donut"), + inventory_image = "farming_donut_chocolate.png", + on_use = minetest.item_eat(6), + groups = {compostability = 65} +}) + +farming.add_eatable("farming:donut_chocolate", 6) + +minetest.register_craftitem("farming:donut_apple", { + description = S("Apple Donut"), + inventory_image = "farming_donut_apple.png", + on_use = minetest.item_eat(6), + groups = {compostability = 65} +}) + +farming.add_eatable("farming:donut_apple", 6) + +-- Porridge Oats + +minetest.register_craftitem("farming:porridge", { + description = S("Porridge"), + inventory_image = "farming_porridge.png", + on_use = minetest.item_eat(6, a.bowl), + groups = {compostability = 65} +}) + +farming.add_eatable("farming:porridge", 6) + +-- Jaffa Cake + +minetest.register_craftitem("farming:jaffa_cake", { + description = S("Jaffa Cake"), + inventory_image = "farming_jaffa_cake.png", + on_use = minetest.item_eat(6), + groups = {compostability = 65} +}) + +farming.add_eatable("farming:jaffa_cake", 6) + +-- Apple Pie + +minetest.register_craftitem("farming:apple_pie", { + description = S("Apple Pie"), + inventory_image = "farming_apple_pie.png", + on_use = minetest.item_eat(6), + groups = {compostability = 75} +}) + +farming.add_eatable("farming:apple_pie", 6) + +-- Cactus Juice + +minetest.register_craftitem("farming:cactus_juice", { + description = S("Cactus Juice"), + inventory_image = "farming_cactus_juice.png", + groups = {vessel = 1, drink = 1, compostability = 55}, + + on_use = function(itemstack, user, pointed_thing) + + if user then + + local num = math.random(5) == 1 and -1 or 2 + + return minetest.do_item_eat(num, "vessels:drinking_glass", + itemstack, user, pointed_thing) + end + end +}) + +farming.add_eatable("farming:cactus_juice", 1) + +-- Pasta + +minetest.register_craftitem("farming:pasta", { + description = S("Pasta"), + inventory_image = "farming_pasta.png", + groups = {compostability = 65, food_pasta = 1} +}) + +-- Mac & Cheese + +minetest.register_craftitem("farming:mac_and_cheese", { + description = S("Mac & Cheese"), + inventory_image = "farming_mac_and_cheese.png", + on_use = minetest.item_eat(6, a.bowl), + groups = {compostability = 65} +}) + +farming.add_eatable("farming:mac_and_cheese", 6) + +-- Spaghetti + +minetest.register_craftitem("farming:spaghetti", { + description = S("Spaghetti"), + inventory_image = "farming_spaghetti.png", + on_use = minetest.item_eat(8), + groups = {compostability = 65} +}) + +farming.add_eatable("farming:spaghetti", 8) + +-- Korean Bibimbap + +minetest.register_craftitem("farming:bibimbap", { + description = S("Bibimbap"), + inventory_image = "farming_bibimbap.png", + on_use = minetest.item_eat(8, a.bowl), + groups = {compostability = 65} +}) + +farming.add_eatable("farming:bibimbap", 8) + +-- Burger + +minetest.register_craftitem("farming:burger", { + description = S("Burger"), + inventory_image = "farming_burger.png", + on_use = minetest.item_eat(16), + groups = {compostability = 95} +}) + +farming.add_eatable("farming:burger", 16) + +-- Salad + +minetest.register_craftitem("farming:salad", { + description = S("Salad"), + inventory_image = "farming_salad.png", + on_use = minetest.item_eat(8, a.bowl), + groups = {compostability = 45} +}) + +farming.add_eatable("farming:salad", 8) + +-- Triple Berry Smoothie + +minetest.register_craftitem("farming:smoothie_berry", { + description = S("Triple Berry Smoothie"), + inventory_image = "farming_berry_smoothie.png", + on_use = minetest.item_eat(6, "vessels:drinking_glass"), + groups = {vessel = 1, drink = 1, compostability = 65} +}) + +farming.add_eatable("farming:smoothie_berry", 6) + +-- Patatas a la importancia + +minetest.register_craftitem("farming:spanish_potatoes", { + description = S("Spanish Potatoes"), + inventory_image = "farming_spanish_potatoes.png", + on_use = minetest.item_eat(8, a.bowl), + groups = {compostability = 65} +}) + +farming.add_eatable("farming:spanish_potatoes", 8) + +-- Potato omelette + +minetest.register_craftitem("farming:potato_omelet", { + description = S("Potato omelette"), + inventory_image = "farming_potato_omelet.png", + on_use = minetest.item_eat(6, a.bowl), + groups = {compostability = 65} +}) + +farming.add_eatable("farming:potato_omelet", 6) + +-- Paella + +minetest.register_craftitem("farming:paella", { + description = S("Paella"), + inventory_image = "farming_paella.png", + on_use = minetest.item_eat(8, a.bowl), + groups = {compostability = 65} +}) + +farming.add_eatable("farming:paella", 8) + +-- Vanilla Flan + +minetest.register_craftitem("farming:flan", { + description = S("Vanilla Flan"), + inventory_image = "farming_vanilla_flan.png", + on_use = minetest.item_eat(6), + groups = {compostability = 65} +}) + +farming.add_eatable("farming:flan", 6) + +-- Vegan Cheese + +minetest.register_craftitem("farming:cheese_vegan", { + description = S("Vegan Cheese"), + inventory_image = "farming_cheese_vegan.png", + on_use = minetest.item_eat(2), + groups = {compostability = 65, food_cheese = 1} +}) + +farming.add_eatable("farming:cheese_vegan", 2) + +-- Vegan Butter + +minetest.register_craftitem("farming:butter_vegan", { + description = S("Vegan Butter"), + inventory_image = "farming_vegan_butter.png", + groups = {food_butter = 1} +}) + +-- Onigiri + +minetest.register_craftitem("farming:onigiri", { + description = S("Onigiri"), + inventory_image = "farming_onigiri.png", + on_use = minetest.item_eat(2), + groups = {compostability = 65} +}) + +farming.add_eatable("farming:onigiri", 2) + +-- Gyoza + +minetest.register_craftitem("farming:gyoza", { + description = S("Gyoza"), + inventory_image = "farming_gyoza.png", + on_use = minetest.item_eat(4), + groups = {compostability = 65} +}) + +farming.add_eatable("farming:gyoza", 4) + +-- Mochi + +minetest.register_craftitem("farming:mochi", { + description = S("Mochi"), + inventory_image = "farming_mochi.png", + on_use = minetest.item_eat(3), + groups = {compostability = 65} +}) + +farming.add_eatable("farming:mochi", 3) + +-- Gingerbread Man + +minetest.register_craftitem("farming:gingerbread_man", { + description = S("Gingerbread Man"), + inventory_image = "farming_gingerbread_man.png", + on_use = minetest.item_eat(2), + groups = {compostability = 85} +}) + +farming.add_eatable("farming:gingerbread_man", 2) + +-- Mint tea +minetest.register_craftitem("farming:mint_tea", { + description = S("Mint Tea"), + inventory_image = "farming_mint_tea.png", + on_use = minetest.item_eat(2, a.drinking_glass) +}) + +farming.add_eatable("farming:mint_tea", 2) + +-- Onion soup +minetest.register_craftitem("farming:onion_soup", { + description = S("Onion Soup"), + inventory_image = "farming_onion_soup.png", + groups = {compostability = 65}, + on_use = minetest.item_eat(6, a.bowl) +}) + +farming.add_eatable("farming:onion_soup", 6) + +-- Pea soup + +minetest.register_craftitem("farming:pea_soup", { + description = S("Pea Soup"), + inventory_image = "farming_pea_soup.png", + groups = {compostability = 65}, + on_use = minetest.item_eat(4, a.bowl) +}) + +farming.add_eatable("farming:pea_soup", 4) + +-- Ground pepper + +minetest.register_node("farming:pepper_ground", { + description = S("Ground Pepper"), + inventory_image = "crops_pepper_ground.png", + wield_image = "crops_pepper_ground.png", + drawtype = "plantlike", + visual_scale = 0.8, + paramtype = "light", + tiles = {"crops_pepper_ground.png"}, + groups = { + vessel = 1, food_pepper_ground = 1, handy = 1, + dig_immediate = 3, attached_node = 1, compostability = 30 + }, + is_ground_content = false, + sounds = farming.node_sound_defaults(), + selection_box = { + type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + } +}) + +-- pineapple ring + +minetest.register_craftitem("farming:pineapple_ring", { + description = S("Pineapple Ring"), + inventory_image = "farming_pineapple_ring.png", + groups = {food_pineapple_ring = 1, compostability = 45}, + on_use = minetest.item_eat(1) +}) + +farming.add_eatable("farming:pineapple_ring", 1) + +-- Pineapple juice + +minetest.register_craftitem("farming:pineapple_juice", { + description = S("Pineapple Juice"), + inventory_image = "farming_pineapple_juice.png", + on_use = minetest.item_eat(4, "vessels:drinking_glass"), + groups = {vessel = 1, drink = 1, compostability = 35} +}) + +farming.add_eatable("farming:pineapple_juice", 4) + +-- Potato & cucumber Salad + +minetest.register_craftitem("farming:potato_salad", { + description = S("Cucumber and Potato Salad"), + inventory_image = "farming_potato_salad.png", + on_use = minetest.item_eat(10, "farming:bowl") +}) + +farming.add_eatable("farming:potato_salad", 10) + +-- Pumpkin dough + +minetest.register_craftitem("farming:pumpkin_dough", { + description = S("Pumpkin Dough"), + inventory_image = "farming_pumpkin_dough.png" +}) + +-- Pumpkin bread + +minetest.register_craftitem("farming:pumpkin_bread", { + description = S("Pumpkin Bread"), + inventory_image = "farming_pumpkin_bread.png", + on_use = minetest.item_eat(8), + groups = {food_bread = 1} +}) + +farming.add_eatable("farming:pumpkin_bread", 8) + +-- Raspberry smoothie + +minetest.register_craftitem("farming:smoothie_raspberry", { + description = S("Raspberry Smoothie"), + inventory_image = "farming_raspberry_smoothie.png", + on_use = minetest.item_eat(2, "vessels:drinking_glass"), + groups = {vessel = 1, drink = 1, compostability = 65} +}) + +farming.add_eatable("farming:smoothie_raspberry", 2) + +-- Rhubarb pie + +minetest.register_craftitem("farming:rhubarb_pie", { + description = S("Rhubarb Pie"), + inventory_image = "farming_rhubarb_pie.png", + on_use = minetest.item_eat(6), + groups = {compostability = 65} +}) + +farming.add_eatable("farming:rhubarb_pie", 6) + +-- Rice flour + +minetest.register_craftitem("farming:rice_flour", { + description = S("Rice Flour"), + inventory_image = "farming_rice_flour.png", + groups = {food_rice_flour = 1, flammable = 1, compostability = 65} +}) + +-- Rice bread + +minetest.register_craftitem("farming:rice_bread", { + description = S("Rice Bread"), + inventory_image = "farming_rice_bread.png", + on_use = minetest.item_eat(5), + groups = {food_rice_bread = 1, compostability = 65} +}) + +farming.add_eatable("farming:rice_bread", 5) + +-- Multigrain flour + +minetest.register_craftitem("farming:flour_multigrain", { + description = S("Multigrain Flour"), + inventory_image = "farming_flour_multigrain.png", + groups = {food_flour = 1, flammable = 1}, +}) + + +-- Multigrain bread + +minetest.register_craftitem("farming:bread_multigrain", { + description = S("Multigrain Bread"), + inventory_image = "farming_bread_multigrain.png", + on_use = minetest.item_eat(7), + groups = {food_bread = 1, compostability = 65} +}) + +farming.add_eatable("farming:bread_multigrain", 7) + +-- Soy sauce + +minetest.register_node("farming:soy_sauce", { + description = S("Soy Sauce"), + drawtype = "plantlike", + tiles = {"farming_soy_sauce.png"}, + inventory_image = "farming_soy_sauce.png", + wield_image = "farming_soy_sauce.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} + }, + groups = { + vessel = 1, food_soy_sauce = 1, dig_immediate = 3, attached_node = 1, + compostability = 65, handy = 1 + }, + is_ground_content = false, + sounds = farming.node_sound_glass_defaults() +}) + +-- Soy milk + +minetest.register_node("farming:soy_milk", { + description = S("Soy Milk"), + drawtype = "plantlike", + tiles = {"farming_soy_milk_glass.png"}, + inventory_image = "farming_soy_milk_glass.png", + wield_image = "farming_soy_milk_glass.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} + }, + on_use = minetest.item_eat(2, "vessels:drinking_glass"), + groups = { + vessel = 1, food_milk_glass = 1, dig_immediate = 3, handy = 1, + attached_node = 1, drink = 1, compostability = 65 + }, + is_ground_content = false, + sounds = farming.node_sound_glass_defaults() +}) + +farming.add_eatable("farming:soy_milk", 2) + +-- Tofu + +minetest.register_craftitem("farming:tofu", { + description = S("Tofu"), + inventory_image = "farming_tofu.png", + groups = { + food_tofu = 1, food_meat_raw = 1, compostability = 65, + }, + on_use = minetest.item_eat(3) +}) + +farming.add_eatable("farming:tofu", 3) + +-- Cooked tofu + +minetest.register_craftitem("farming:tofu_cooked", { + description = S("Cooked Tofu"), + inventory_image = "farming_tofu_cooked.png", + groups = {food_meat = 1, compostability = 65}, + on_use = minetest.item_eat(6) +}) + +farming.add_eatable("farming:tofu_cooked", 6) + +-- Toasted sunflower seeds + +minetest.register_craftitem("farming:sunflower_seeds_toasted", { + description = S("Toasted Sunflower Seeds"), + inventory_image = "farming_sunflower_seeds_toasted.png", + groups = {food_sunflower_seeds_toasted = 1, compostability = 65}, + on_use = minetest.item_eat(1) +}) + +farming.add_eatable("farming:sunflower_seeds_toasted", 1) + +-- Sunflower oil + +minetest.register_node("farming:sunflower_oil", { + description = S("Bottle of Sunflower Oil"), + drawtype = "plantlike", + tiles = {"farming_sunflower_oil.png"}, + inventory_image = "farming_sunflower_oil.png", + wield_image = "farming_sunflower_oil.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = { + food_oil = 1, vessel = 1, dig_immediate = 3, attached_node = 1, + flammable = 2, compostability = 65, handy = 1 + }, + sounds = farming.node_sound_glass_defaults() +}) + +-- Sunflower seed bread + +minetest.register_craftitem("farming:sunflower_bread", { + description = S("Sunflower Seed Bread"), + inventory_image = "farming_sunflower_bread.png", + on_use = minetest.item_eat(8), + groups = {food_bread = 1} +}) + +farming.add_eatable("farming:sunflower_bread", 8) + +-- Vanilla extract + +minetest.register_node("farming:vanilla_extract", { + description = S("Vanilla Extract"), + drawtype = "plantlike", + tiles = {"farming_vanilla_extract.png"}, + inventory_image = "farming_vanilla_extract.png", + wield_image = "farming_vanilla_extract.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1, handy = 1}, + sounds = farming.node_sound_glass_defaults(), +}) + +-- Jerusalem Artichokes with miso butter + +minetest.register_craftitem("farming:jerusalem_artichokes", { + description = S("Jerusalem Artichokes"), + inventory_image = "farming_jerusalem_artichokes.png", + on_use = minetest.item_eat(11, a.bowl) +}) + +farming.add_eatable("ethereal:jerusalem_artichokes", 11) + +--= Foods we shouldn't add when using Mineclonia/VoxeLibre + +if not farming.mcl then + + -- Bread + + minetest.register_craftitem("farming:bread", { + description = S("Bread"), + inventory_image = "farming_bread.png", + on_use = minetest.item_eat(5), + groups = {food_bread = 1} + }) + + farming.add_eatable("farming:bread", 5) + + -- Cocoa beans + + minetest.register_craftitem("farming:cocoa_beans", { + description = S("Cocoa Beans"), + inventory_image = "farming_cocoa_beans.png", + groups = {compostability = 65, food_cocoa = 1, flammable = 2} + }) + + -- Chocolate cookie + + minetest.register_craftitem("farming:cookie", { + description = S("Cookie"), + inventory_image = "farming_cookie.png", + on_use = minetest.item_eat(2) + }) + + farming.add_eatable("farming:cookie", 2) + + -- Golden carrot + + minetest.register_craftitem("farming:carrot_gold", { + description = S("Golden Carrot"), + inventory_image = "farming_carrot_gold.png", + on_use = minetest.item_eat(10) + }) + + farming.add_eatable("farming:carrot_gold", 10) + + -- Beetroot soup + + minetest.register_craftitem("farming:beetroot_soup", { + description = S("Beetroot Soup"), + inventory_image = "farming_beetroot_soup.png", + on_use = minetest.item_eat(6, "farming:bowl") + }) + + farming.add_eatable("farming:beetroot_soup", 6) + + -- Sugar + + minetest.register_craftitem("farming:sugar", { + description = S("Sugar"), + inventory_image = "farming_sugar.png", + groups = {food_sugar = 1, flammable = 3} + }) + + -- Baked potato + + minetest.register_craftitem("farming:baked_potato", { + description = S("Baked Potato"), + inventory_image = "farming_baked_potato.png", + on_use = minetest.item_eat(6) + }) + + farming.add_eatable("farming:baked_potato", 6) +end diff --git a/items.lua b/item_list.lua similarity index 93% rename from items.lua rename to item_list.lua index b8c1c14..078c440 100644 --- a/items.lua +++ b/item_list.lua @@ -1,21 +1,24 @@ --- add group function +-- add group helper + local function add_groups(item, groups) local def = minetest.registered_items[item] - if not def then return end + if def then - local grp = def.groups + local grps = table.copy(def.groups) or {} - for k, v in pairs(groups) do - grp[k] = v + for k, v in pairs(groups) do + grps[k] = v + end + + minetest.override_item(item, {groups = grps}) end - - minetest.override_item(item, {groups = grp}) end -- default recipe items + farming.recipe_items = { -- if utensils are disabled then use blank item @@ -62,7 +65,8 @@ farming.recipe_items = { add_groups("default:apple", {food_apple = 1}) --- change recipe items to mineclone variations +-- if mineclone found then change recipe items + if farming.mcl then local a = farming.recipe_items @@ -97,6 +101,8 @@ if farming.mcl then a.stone = "mcl_core:stone" a.glass = "mcl_core:glass" + -- add missing groups for recipes to work properly + add_groups("mcl_core:sugar", {food_sugar = 1}) add_groups("mcl_throwing:egg", {food_egg = 1}) add_groups("mcl_farming:wheat_item", {food_wheat = 1}) @@ -114,8 +120,6 @@ if farming.mcl then add_groups("mcl_mobitems:milk_bucket", {food_milk = 1}) add_groups("mcl_ocean:dried_kelp", {food_seaweed = 1}) add_groups("mcl_potions:river_water", {food_glass_water = 1}) - - -- add missing food groups to current items so recipes work add_groups("mcl_dye:yellow", {food_lemon = 1, food_banana = 1}) add_groups("mcl_dye:orange", {food_orange = 1}) add_groups("mcl_flowers:sunflower", {food_olive_oil = 1, food_butter = 1}) diff --git a/item_non_food.lua b/item_non_food.lua new file mode 100644 index 0000000..99b4f3a --- /dev/null +++ b/item_non_food.lua @@ -0,0 +1,270 @@ + +local S = minetest.get_translator("farming") + +-- saucepan + +minetest.register_craftitem("farming:saucepan", { + description = S("Saucepan"), + inventory_image = "farming_saucepan.png", + groups = {food_saucepan = 1, flammable = 2} +}) + +-- cooking pot + +minetest.register_craftitem("farming:pot", { + description = S("Cooking Pot"), + inventory_image = "farming_pot.png", + groups = {food_pot = 1, flammable = 2} +}) + +-- baking tray + +minetest.register_craftitem("farming:baking_tray", { + description = S("Baking Tray"), + inventory_image = "farming_baking_tray.png", + groups = {food_baking_tray = 1, flammable = 2} +}) + +-- skillet + +minetest.register_craftitem("farming:skillet", { + description = S("Skillet"), + inventory_image = "farming_skillet.png", + groups = {food_skillet = 1, flammable = 2} +}) + +-- mortar & pestle + +minetest.register_craftitem("farming:mortar_pestle", { + description = S("Mortar and Pestle"), + inventory_image = "farming_mortar_pestle.png", + groups = {food_mortar_pestle = 1, flammable = 2} +}) + +-- cutting board + +minetest.register_craftitem("farming:cutting_board", { + description = S("Cutting Board"), + inventory_image = "farming_cutting_board.png", + groups = {food_cutting_board = 1, flammable = 2} +}) + +-- juicer + +minetest.register_craftitem("farming:juicer", { + description = S("Juicer"), + inventory_image = "farming_juicer.png", + groups = {food_juicer = 1, flammable = 2} +}) + +-- glass mixing bowl + +minetest.register_craftitem("farming:mixing_bowl", { + description = S("Glass Mixing Bowl"), + inventory_image = "farming_mixing_bowl.png", + groups = {food_mixing_bowl = 1, flammable = 2} +}) + +-- Ethanol (thanks to JKMurray for this idea) + +minetest.register_node("farming:bottle_ethanol", { + description = S("Bottle of Ethanol"), + drawtype = "plantlike", + tiles = {"farming_bottle_ethanol.png"}, + inventory_image = "farming_bottle_ethanol.png", + wield_image = "farming_bottle_ethanol.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1, handy = 1}, + sounds = farming.node_sound_glass_defaults() +}) + +-- straw + +minetest.register_node("farming:straw", { + description = S("Straw"), + tiles = {"farming_straw.png"}, + is_ground_content = false, + groups = {handy = 1, snappy = 3, flammable = 4, fall_damage_add_percent = -30}, + sounds = farming.node_sound_leaves_defaults(), + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 +}) + +-- hemp oil + +minetest.register_node("farming:hemp_oil", { + description = S("Bottle of Hemp Oil"), + drawtype = "plantlike", + tiles = {"farming_hemp_oil.png"}, + inventory_image = "farming_hemp_oil.png", + wield_image = "farming_hemp_oil.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = { + food_oil = 1, vessel = 1, dig_immediate = 3, attached_node = 1, + compostability = 45, handy = 1 + }, + sounds = farming.node_sound_glass_defaults() +}) + +-- hemp fibre + +minetest.register_craftitem("farming:hemp_fibre", { + description = S("Hemp Fibre"), + inventory_image = "farming_hemp_fibre.png", + groups = {compostability = 55} +}) + +-- hemp block + +minetest.register_node("farming:hemp_block", { + description = S("Hemp Block"), + tiles = {"farming_hemp_block.png"}, + paramtype = "light", + groups = { + axey = 1, handy = 1, snappy = 2, oddly_breakable_by_hand = 1, flammable = 2, + compostability = 85 + }, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults(), + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 +}) + +-- hemp rope + +minetest.register_node("farming:hemp_rope", { + description = S("Hemp Rope"), + walkable = false, + climbable = true, + sunlight_propagates = true, + paramtype = "light", + tiles = {"farming_hemp_rope.png"}, + wield_image = "farming_hemp_rope.png", + inventory_image = "farming_hemp_rope.png", + drawtype = "plantlike", + groups = { + handy = 1, axey = 1, swordy = 1, flammable = 2, choppy = 3, + oddly_breakable_by_hand = 3, compostability = 55 + }, + is_ground_content = false, + sounds = farming.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7} + }, + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 +}) + +--- Wooden scarecrow base + +minetest.register_node("farming:scarecrow_bottom", { + description = S("Scarecrow Bottom"), + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + tiles = {"default_wood.png"}, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-1/16, -8/16, -1/16, 1/16, 8/16, 1/16}, + {-12/16, 4/16, -1/16, 12/16, 2/16, 1/16}, + } + }, + groups = {axey = 1, handy = 1, snappy = 3, flammable = 2}, + is_ground_content = false, + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 +}) + +--= Items we shouldn't add when using Mineclonia/VoxeLibre + +if not farming.mcl then + + -- Wooden bowl + + minetest.register_craftitem("farming:bowl", { + description = S("Wooden Bowl"), + inventory_image = "farming_bowl.png", + groups = {food_bowl = 1, flammable = 2} + }) + + -- String + + minetest.register_craftitem("farming:string", { + description = S("String"), + inventory_image = "farming_string.png", + groups = {flammable = 2} + }) + + -- Jack 'O Lantern + + minetest.register_node("farming:jackolantern", { + description = S("Jack 'O Lantern (punch to turn on and off)"), + tiles = { + "farming_pumpkin_bottom.png^farming_pumpkin_top.png", + "farming_pumpkin_bottom.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png^farming_pumpkin_face_off.png" + }, + paramtype2 = "facedir", + groups = { + handy = 1, snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2 + }, + is_ground_content = false, + sounds = farming.node_sound_wood_defaults(), + + on_punch = function(pos, node, puncher) + local name = puncher:get_player_name() or "" + if minetest.is_protected(pos, name) then return end + node.name = "farming:jackolantern_on" + minetest.swap_node(pos, node) + end, + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 + }) + + minetest.register_node("farming:jackolantern_on", { + tiles = { + "farming_pumpkin_bottom.png^farming_pumpkin_top.png", + "farming_pumpkin_bottom.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png^farming_pumpkin_face_on.png" + }, + light_source = minetest.LIGHT_MAX - 1, + paramtype2 = "facedir", + groups = { + handy = 1, snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, + not_in_creative_inventory = 1 + }, + is_ground_content = false, + sounds = farming.node_sound_wood_defaults(), + drop = "farming:jackolantern", + + on_punch = function(pos, node, puncher) + local name = puncher:get_player_name() or "" + if minetest.is_protected(pos, name) then return end + node.name = "farming:jackolantern" + minetest.swap_node(pos, node) + end, + _mcl_hardness = 0.8, + _mcl_blast_resistance = 1 + }) +end diff --git a/item_recipes.lua b/item_recipes.lua new file mode 100644 index 0000000..6b8d265 --- /dev/null +++ b/item_recipes.lua @@ -0,0 +1,1421 @@ + +local a = farming.recipe_items + +-- flour recipes + +minetest.register_craft({ + output = "farming:flour", + recipe = { + {"farming:rye", "farming:rye", "farming:rye"}, + {"farming:rye", a.mortar_pestle, ""} + }, + replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} +}) + +minetest.register_craft({ + output = "farming:flour", + recipe = { + {"farming:barley", "farming:barley", "farming:barley"}, + {"farming:barley", a.mortar_pestle, ""} + }, + replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} +}) + +minetest.register_craft({ + output = "farming:flour", + recipe = { + {"farming:oat", "farming:oat", "farming:oat"}, + {"farming:oat", a.mortar_pestle, ""} + }, + replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} +}) + +-- multigrain flour + +minetest.register_craft({ + type = "shapeless", + output = "farming:flour_multigrain", + recipe = { + "group:food_wheat", "group:food_barley", "group:food_oats", + "group:food_rye", a.mortar_pestle + }, + replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} +}) + +-- multigrain bread + +minetest.register_craft({ + type = "cooking", + cooktime = 15, + output = "farming:bread_multigrain", + recipe = "farming:flour_multigrain" +}) + +-- sliced bread + +minetest.register_craft({ + output = "farming:bread_slice 5", + recipe = {{"group:food_bread", a.cutting_board}}, + replacements = {{"group:food_cutting_board", "farming:cutting_board"}} +}) + +-- toast + +minetest.register_craft({ + type = "cooking", + cooktime = 3, + output = "farming:toast", + recipe = "farming:bread_slice" +}) + +-- toast sandwich + +minetest.register_craft({ + output = "farming:toast_sandwich", + recipe = { + {"farming:bread_slice"}, + {"farming:toast"}, + {"farming:bread_slice"} + } +}) + +-- garlic bulb + +minetest.register_craft({ + output = "farming:garlic_clove 8", + recipe = {{"farming:garlic"}} +}) + +minetest.register_craft({ + output = "farming:garlic", + recipe = { + {"farming:garlic_clove", "farming:garlic_clove", "farming:garlic_clove"}, + {"farming:garlic_clove", "", "farming:garlic_clove"}, + {"farming:garlic_clove", "farming:garlic_clove", "farming:garlic_clove"} + } +}) + +-- garlic braid + +minetest.register_craft({ + output = "farming:garlic_braid", + recipe = { + {"farming:garlic", "farming:garlic", "farming:garlic"}, + {"farming:garlic", "farming:garlic", "farming:garlic"}, + {"farming:garlic", "farming:garlic", "farming:garlic"} + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "farming:garlic 9", + recipe = {"farming:garlic_braid"} +}) + +-- corn on the cob + +minetest.register_craft({ + type = "cooking", + cooktime = 10, + output = "farming:corn_cob", + recipe = "group:food_corn" +}) + +-- popcorn + +minetest.register_craft({ + output = "farming:popcorn", + recipe = { + {"group:food_oil", "group:food_corn", a.pot} + }, + replacements = { + {"group:food_pot", "farming:pot"}, + {"group:food_oil", "vessels:glass_bottle"} + } +}) + +-- cornstarch + +minetest.register_craft({ + output = "farming:cornstarch", + recipe = { + {a.mortar_pestle, "group:food_corn_cooked", a.baking_tray}, + {"", "group:food_bowl", ""}, + }, + replacements = { + {"group:food_mortar_pestle", "farming:mortar_pestle"}, + {"group:food_baking_tray", "farming:baking_tray"} + } +}) + +-- ethanol + +minetest.register_craft( { + output = "farming:bottle_ethanol", + recipe = { + {"group:food_corn", "group:food_corn", "group:food_corn"}, + {"group:food_corn", a.glass_bottle, "group:food_corn"}, + {"group:food_corn", "group:food_corn", "group:food_corn"} + } +}) + +-- cup of coffee + +minetest.register_craft( { + output = "farming:coffee_cup", + recipe = { + {"group:food_coffee", "group:food_glass_water", a.saucepan} + }, + replacements = { + {"group:food_saucepan", "farming:saucepan"} + } +}) + +-- bar of dark chocolate + +minetest.register_craft( { + output = "farming:chocolate_dark", + recipe = { + {"group:food_cocoa", "group:food_cocoa", "group:food_cocoa"} + } +}) + +-- chocolate block + +minetest.register_craft({ + output = "farming:chocolate_block", + recipe = { + {"farming:chocolate_dark", "farming:chocolate_dark", "farming:chocolate_dark"}, + {"farming:chocolate_dark", "farming:chocolate_dark", "farming:chocolate_dark"}, + {"farming:chocolate_dark", "farming:chocolate_dark", "farming:chocolate_dark"} + } +}) + +minetest.register_craft({ + output = "farming:chocolate_dark 9", + recipe = {{"farming:chocolate_block"}} +}) + +-- chili powder + +minetest.register_craft({ + output = "farming:chili_powder", + recipe = { + {"farming:chili_pepper", a.mortar_pestle} + }, + replacements = {{"farming:mortar_pestle", "farming:mortar_pestle"}} +}) + +-- bowl of chili + +minetest.register_craft({ + output = "farming:chili_bowl", + recipe = { + {"group:food_chili_pepper", "group:food_rice", "group:food_tomato"}, + {"group:food_beans", "group:food_bowl", ""} + } +}) + +-- carrot juice + +minetest.register_craft({ + output = "farming:carrot_juice", + recipe = { + {a.juicer}, + {"group:food_carrot"}, + {"vessels:drinking_glass"} + }, + replacements = { + {"group:food_juicer", "farming:juicer"} + } +}) + +-- blueberry pie + +minetest.register_craft({ + output = "farming:blueberry_pie", + recipe = { + {"group:food_flour", "group:food_sugar", "group:food_blueberries"}, + {"", a.baking_tray, ""} + }, + replacements = {{"group:food_baking_tray", "farming:baking_tray"}} +}) + +-- blueberry muffin + +minetest.register_craft({ + output = "farming:muffin_blueberry 2", + recipe = { + {"group:food_blueberries", "group:food_bread", "group:food_blueberries"} + } +}) + +-- tomato soup + +minetest.register_craft({ + output = "farming:tomato_soup", + recipe = { + {"group:food_tomato"}, + {"group:food_tomato"}, + {"group:food_bowl"} + } +}) + +-- filter sea water into river water + +minetest.register_craft({ + output = a.bucket_river_water, + recipe = { + {"farming:hemp_fibre"}, + {"farming:hemp_fibre"}, + {a.bucket_water} + } +}) + +if farming.mcl then + + minetest.register_craft({ + output = "mcl_potions:river_water", + recipe = { + {"farming:hemp_fibre"}, + {"mcl_potions:water"} + } + }) +end + +-- glass of water + +minetest.register_craft({ + output = "farming:glass_water 4", + recipe = { + {a.drinking_glass, a.drinking_glass}, + {a.drinking_glass, a.drinking_glass}, + {a.bucket_river_water, ""} + }, + replacements = {{a.bucket_river_water, a.bucket_empty}} +}) + +minetest.register_craft({ + output = "farming:glass_water 4", + recipe = { + {a.drinking_glass, a.drinking_glass}, + {a.drinking_glass, a.drinking_glass}, + {a.bucket_water, "farming:hemp_fibre"} + }, + replacements = {{a.bucket_water, a.bucket_empty}} +}) + +if minetest.get_modpath("bucket_wooden") then + + minetest.register_craft({ + output = "farming:glass_water 4", + recipe = { + {a.drinking_glass, a.drinking_glass}, + {a.drinking_glass, a.drinking_glass}, + {"group:water_bucket_wooden", "farming:hemp_fibre"} + }, + replacements = {{"group:water_bucket_wooden", "bucket_wooden:bucket_empty"}} + }) +end + +-- sugar cube + +minetest.register_craft({ + output = "farming:sugar_cube", + recipe = { + {a.sugar, a.sugar, a.sugar}, + {a.sugar, a.sugar, a.sugar}, + {a.sugar, a.sugar, a.sugar} + } +}) + +minetest.register_craft({ + output = a.sugar .. " 9", + recipe = {{"farming:sugar_cube"}} +}) + +-- caramel + +minetest.register_craft({ + type = "cooking", + cooktime = 6, + output = "farming:caramel", + recipe = "group:food_sugar" +}) + +-- salt + +minetest.register_craft({ + type = "cooking", + cooktime = 15, + output = "farming:salt", + recipe = a.bucket_water, + replacements = {{a.bucket_water, a.bucket_empty}} +}) + +-- salt crystal + +minetest.register_craft({ + output = "farming:salt 9", + recipe = { + {"farming:salt_crystal", a.mortar_pestle} + }, + replacements = {{"farming:mortar_pestle", "farming:mortar_pestle"}} +}) + +minetest.register_craft({ + output = "farming:salt_crystal", + recipe = { + {"farming:salt", "farming:salt", "farming:salt"}, + {"farming:salt", "farming:salt", "farming:salt"}, + {"farming:salt", "farming:salt", "farming:salt"} + } +}) + +-- mayonnaise + +minetest.register_craft({ + output = "farming:mayonnaise", + recipe = { + {"group:food_olive_oil", "group:food_lemon"}, + {"group:food_egg", "farming:salt"} + }, + replacements = {{"farming:olive_oil", a.glass_bottle}} +}) + +-- rose water + +minetest.register_craft({ + output = "farming:rose_water", + recipe = { + {a.rose, a.rose, a.rose}, + {a.rose, a.rose, a.rose}, + {"group:food_glass_water", a.pot, a.glass_bottle} + }, + replacements = { + {"group:food_glass_water", a.drinking_glass}, + {"group:food_pot", "farming:pot"} + } +}) + +-- turkish delight + +minetest.register_craft({ + output = "farming:turkish_delight 4", + recipe = { + {"group:food_gelatin", "group:food_sugar", "group:food_gelatin"}, + {"group:food_sugar", "group:food_rose_water", "group:food_sugar"}, + {"group:food_sugar", a.dye_pink, "group:food_sugar"} + }, + replacements = { + {"group:food_cornstarch", a.bowl}, + {"group:food_cornstarch", a.bowl}, + {"group:food_rose_water", a.glass_bottle} + } +}) + +-- garlic bread + +minetest.register_craft({ + output = "farming:garlic_bread", + recipe = { + {"group:food_toast", "group:food_garlic_clove", "group:food_garlic_clove"} + } +}) + +-- donuts + +minetest.register_craft({ + output = "farming:donut 3", + recipe = { + {"", "group:food_wheat", ""}, + {"group:food_wheat", "group:food_sugar", "group:food_wheat"}, + {"", "group:food_wheat", ""} + } +}) + +minetest.register_craft({ + output = "farming:donut_chocolate", + recipe = { + {"group:food_cocoa"}, + {"farming:donut"} + } +}) + +minetest.register_craft({ + output = "farming:donut_apple", + recipe = { + {"group:food_apple"}, + {"farming:donut"} + } +}) + +-- porridge oats + +minetest.register_craft({ + output = "farming:porridge", + recipe = { + {"group:food_oats", "group:food_oats", "group:food_oats"}, + {"group:food_oats", "group:food_bowl", "group:food_milk_glass"} + }, + replacements = { + {"mobs:glass_milk", a.drinking_glass}, + {"farming:soy_milk", a.drinking_glass} + } +}) + +-- jaffa cake + +minetest.register_craft({ + output = "farming:jaffa_cake 3", + recipe = { + {a.baking_tray, "group:food_egg", "group:food_sugar"}, + {a.flour, "group:food_cocoa", "group:food_orange"}, + {"group:food_milk", "", ""} + }, + replacements = { + {"farming:baking_tray", "farming:baking_tray"}, + {"mobs:bucket_milk", a.bucket_empty}, + {"mobs:wooden_bucket_milk", "wooden_bucket:bucket_wood_empty"}, + {"farming:soy_milk", a.drinking_glass} + } +}) + +-- apple pie + +minetest.register_craft({ + output = "farming:apple_pie", + recipe = { + {a.flour, "group:food_sugar", "group:food_apple"}, + {"", a.baking_tray, ""} + }, + replacements = {{"group:food_baking_tray", "farming:baking_tray"}} +}) + +-- cactus juice + +minetest.register_craft({ + output = "farming:cactus_juice", + recipe = { + {a.juicer}, + {a.cactus}, + {a.drinking_glass} + }, + replacements = { + {"group:food_juicer", "farming:juicer"} + } +}) + +-- pasta + +minetest.register_craft({ + output = "farming:pasta", + recipe = { + {a.flour, "group:food_butter", a.mixing_bowl} + }, + replacements = {{"group:food_mixing_bowl", "farming:mixing_bowl"}} +}) + +minetest.register_craft({ + output = "farming:pasta", + recipe = { + {a.flour, "group:food_oil", a.mixing_bowl} + }, + replacements = { + {"group:food_mixing_bowl", "farming:mixing_bowl"}, + {"group:food_oil", a.glass_bottle} + } +}) + +-- mac & cheese + +minetest.register_craft({ + output = "farming:mac_and_cheese", + recipe = { + {"group:food_pasta", "group:food_cheese", "group:food_bowl"} + } +}) + +-- spaghetti + +minetest.register_craft({ + output = "farming:spaghetti", + recipe = { + {"group:food_pasta", "group:food_tomato", a.saucepan}, + {"group:food_garlic_clove", "group:food_garlic_clove", ""} + }, + replacements = {{"group:food_saucepan", "farming:saucepan"}} +}) + +-- korean bibimbap + +minetest.register_craft({ + output = "farming:bibimbap", + recipe = { + {a.skillet, "group:food_bowl", "group:food_egg"}, + {"group:food_rice", "group:food_chicken_raw", "group:food_cabbage"}, + {"group:food_carrot", "group:food_chili_pepper", ""} + }, + replacements = {{"group:food_skillet", "farming:skillet"}} +}) + +minetest.register_craft({ + output = "farming:bibimbap", + type = "shapeless", + recipe = { + a.skillet, "group:food_bowl", "group:food_mushroom", + "group:food_rice", "group:food_cabbage", "group:food_carrot", + "group:food_mushroom", "group:food_chili_pepper" + }, + replacements = {{"group:food_skillet", "farming:skillet"}} +}) + +-- burger + +minetest.register_craft({ + output = "farming:burger", + recipe = { + {a.bread, "group:food_meat", "group:food_cheese"}, + {"group:food_tomato", "group:food_cucumber", "group:food_onion"}, + {"group:food_lettuce", "", ""} + } +}) + +-- salad + +minetest.register_craft({ + output = "farming:salad", + type = "shapeless", + recipe = { + "group:food_bowl", "group:food_tomato", "group:food_cucumber", + "group:food_lettuce", "group:food_oil" + } +}) + +-- triple berry smoothie + +minetest.register_craft({ + output = "farming:smoothie_berry", + type = "shapeless", + recipe = { + "group:food_raspberries", "group:food_blackberries", + "group:food_strawberry", "group:food_banana", + a.drinking_glass + } +}) + +-- patatas a la importancia + +minetest.register_craft({ + output = "farming:spanish_potatoes", + recipe = { + {"group:food_potato", "group:food_parsley", "group:food_potato"}, + {"group:food_egg", a.flour, "group:food_onion"}, + {"farming:garlic_clove", "group:food_bowl", a.skillet} + }, + replacements = {{"group:food_skillet", "farming:skillet"}} +}) + +-- potato omelette + +minetest.register_craft({ + output = "farming:potato_omelet", + recipe = { + {"group:food_egg", "group:food_potato", "group:food_onion"}, + {a.skillet, "group:food_bowl", ""} + }, + replacements = {{"group:food_skillet", "farming:skillet"}} +}) + +-- paella + +minetest.register_craft({ + output = "farming:paella", + recipe = { + {"group:food_rice", a.dye_orange, "farming:pepper_red"}, + {"group:food_peas", "group:food_chicken", "group:food_bowl"}, + {"", a.skillet, ""} + }, + replacements = {{"group:food_skillet", "farming:skillet"}} +}) + +-- vanilla flan + +minetest.register_craft({ + output = "farming:flan", + recipe = { + {"group:food_sugar", "group:food_milk", "farming:caramel"}, + {"group:food_egg", "group:food_egg", "farming:vanilla_extract"} + }, + replacements = { + {"cucina_vegana:soy_milk", a.drinking_glass}, + {"mobs:bucket_milk", "bucket:bucket_empty"}, + {"mobs:wooden_bucket_milk", "wooden_bucket:bucket_wood_empty"}, + {"farming:vanilla_extract", a.glass_bottle} + } +}) + +-- vegan cheese + +minetest.register_craft({ + output = "farming:cheese_vegan", + recipe = { + {"farming:soy_milk", "farming:soy_milk", "farming:soy_milk"}, + {"group:food_salt", "group:food_peppercorn", "farming:bottle_ethanol"}, + {"group:food_gelatin", a.pot, ""} + }, + replacements = { + {"farming:soy_milk", a.drinking_glass .. " 3"}, + {"farming:pot", "farming:pot"}, + {"farming:bottle_ethanol", a.glass_bottle} + } +}) + +minetest.register_craft({ + output = "farming:cheese_vegan", + recipe = { + {"farming:soy_milk", "farming:soy_milk", "farming:soy_milk"}, + {"group:food_salt", "group:food_peppercorn", "group:food_lemon"}, + {"group:food_gelatin", a.pot, ""} + }, + replacements = { + {"farming:soy_milk", a.drinking_glass .. " 3"}, + {"farming:pot", "farming:pot"} + } +}) + +-- vegan butter + +minetest.register_craft({ + output = "farming:butter_vegan", + recipe = { + {"farming:soy_milk", "farming:sunflower_oil", "farming:soy_milk"}, + {"group:food_salt", a.dye_yellow, "farming:mixing_bowl"} + }, + replacements = { + {"farming:soy_milk", a.drinking_glass .. " 2"}, + {"farming:sunflower_oil", a.glass_bottle}, + {"farming:mixing_bowl", "farming:mixing_bowl"} + } +}) + +-- onigiri + +minetest.register_craft({ + output = "farming:onigiri", + recipe = { + {"group:food_rice", "group:food_salt", "group:food_rice"}, + {"", "group:food_seaweed", ""} + } +}) + +-- gyoza + +minetest.register_craft({ + output = "farming:gyoza 4", + recipe = { + {"group:food_cabbage", "group:food_garlic_clove", "group:food_onion"}, + {"group:food_meat_raw", "group:food_salt", a.flour}, + {"", a.skillet, ""} + + }, + replacements = { + {"group:food_skillet", "farming:skillet"} + } +}) + +-- mochi + +minetest.register_craft({ + output = "farming:mochi", + recipe = { + {"", a.mortar_pestle, ""}, + {"group:food_rice", "group:food_sugar", "group:food_rice"}, + {"", "group:food_glass_water", ""} + }, + replacements = { + {"group:food_mortar_pestle", "farming:mortar_pestle"}, + {"group:food_glass_water", a.drinking_glass} + } +}) + +-- gingerbread man + +minetest.register_craft({ + output = "farming:gingerbread_man 3", + recipe = { + {"", "group:food_egg", ""}, + {"group:food_wheat", "group:food_ginger", "group:food_wheat"}, + {"group:food_sugar", "", "group:food_sugar"} + } +}) + +-- mint tea + +minetest.register_craft({ + output = "farming:mint_tea", + recipe = { + {"group:food_mint", "group:food_mint", "group:food_mint"}, + {"group:food_glass_water", a.juicer, ""} + }, + replacements = { + {"group:food_juicer", "farming:juicer"} + } +}) + +-- onion soup + +minetest.register_craft({ + output = "farming:onion_soup", + recipe = { + {"group:food_onion", "group:food_onion", "group:food_onion"}, + {"group:food_onion", "group:food_bowl", "group:food_onion"}, + {"", a.pot, ""} + }, + replacements = {{"farming:pot", "farming:pot"}} +}) + +-- pea soup + +minetest.register_craft({ + output = "farming:pea_soup", + recipe = { + {"group:food_peas"}, + {"group:food_peas"}, + {"group:food_bowl"} + } +}) + +-- ground pepper + +minetest.register_craft( { + output = "farming:pepper_ground", + recipe = { + {"group:food_peppercorn"}, + {a.glass_bottle}, + {a.mortar_pestle} + }, + replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} +}) + +-- pineapple ring + +minetest.register_craft( { + output = "farming:pineapple_ring 5", + recipe = {{"group:food_pineapple"}}, + replacements = {{"farming:pineapple", "farming:pineapple_top"}} +}) + +-- pineapple juice + +minetest.register_craft({ + output = "farming:pineapple_juice", + recipe = { + {"group:food_pineapple_ring", "group:food_pineapple_ring", + "group:food_pineapple_ring"}, + {"", a.drinking_glass, ""}, + {"", a.juicer, ""} + }, + replacements = { + {"group:food_juicer", "farming:juicer"} + } +}) + +minetest.register_craft({ + output = "farming:pineapple_juice 2", + recipe = { + {a.drinking_glass, "group:food_pineapple", a.drinking_glass}, + {"", a.juicer, ""} + }, + replacements = { + {"group:food_juicer", "farming:juicer"} + } +}) + +-- potato & cucumber salad + +minetest.register_craft({ + output = "farming:potato_salad", + recipe = { + {"group:food_cucumber"}, + {"farming:baked_potato"}, + {"group:food_bowl"} + } +}) + +-- melon slice / block + +minetest.register_craft({ + output = "farming:melon_8", + recipe = { + {"farming:melon_slice", "farming:melon_slice"}, + {"farming:melon_slice", "farming:melon_slice"} + } +}) + +minetest.register_craft({ + output = "farming:melon_slice 4", + recipe = {{"farming:melon_8", a.cutting_board}}, + replacements = {{"farming:cutting_board", "farming:cutting_board"}} +}) + +-- pumpkin slice / block + +minetest.register_craft({ + output = "farming:pumpkin", + recipe = { + {"farming:pumpkin_slice", "farming:pumpkin_slice"}, + {"farming:pumpkin_slice", "farming:pumpkin_slice"} + } +}) + +minetest.register_craft({ + output = "farming:pumpkin_slice 4", + recipe = {{"farming:pumpkin", a.cutting_board}}, + replacements = {{"farming:cutting_board", "farming:cutting_board"}} +}) + +-- pumpkin dough + +minetest.register_craft({ + output = "farming:pumpkin_dough", + recipe = { + {"group:food_pumpkin_slice", "group:food_flour", "group:food_pumpkin_slice"} + } +}) + +-- pumpkin bread + +minetest.register_craft({ + type = "cooking", + output = "farming:pumpkin_bread", + recipe = "farming:pumpkin_dough", + cooktime = 10 +}) + +-- raspberry smoothie + +minetest.register_craft({ + output = "farming:smoothie_raspberry", + recipe = { + {a.snow}, + {"group:food_raspberries"}, + {a.drinking_glass} + } +}) + +-- rhubarb pie + +minetest.register_craft({ + output = "farming:rhubarb_pie", + recipe = { + {a.baking_tray, "group:food_sugar", ""}, + {"group:food_rhubarb", "group:food_rhubarb", "group:food_rhubarb"}, + {"group:food_wheat", "group:food_wheat", "group:food_wheat"} + }, + replacements = {{"group:food_baking_tray", "farming:baking_tray"}} +}) + +-- rice flour + +minetest.register_craft({ + output = "farming:rice_flour", + recipe = { + {"farming:rice", "farming:rice", "farming:rice"}, + {"farming:rice", a.mortar_pestle, ""} + }, + replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} +}) + +-- rice bread + +minetest.register_craft({ + type = "cooking", + cooktime = 15, + output = "farming:rice_bread", + recipe = "farming:rice_flour" +}) + +-- soy sauce + +minetest.register_craft( { + output = "farming:soy_sauce", + recipe = { + {"group:food_soy", "group:food_salt", "group:food_soy"}, + {a.juicer, a.bucket_water, a.glass_bottle} + }, + replacements = { + {a.bucket_water, a.bucket_empty}, + {"group:food_juicer", "farming:juicer"} + } +}) + +-- soy milk + +minetest.register_craft( { + output = "farming:soy_milk", + recipe = { + {"group:food_soy", "group:food_soy", "group:food_soy"}, + {"farming:vanilla_extract", "bucket:bucket_water", a.drinking_glass} + }, + replacements = { + {a.bucket_water, a.bucket_empty}, + {"farming:vanilla_extract", a.glass_bottle} + } +}) + +-- tofu + +minetest.register_craft({ + output = "farming:tofu", + recipe = { + {"group:food_soy", "group:food_soy", "group:food_soy"}, + {"group:food_soy", "group:food_soy", a.baking_tray} + }, + replacements = {{"farming:baking_tray", "farming:baking_tray"}} +}) + +-- cooked tofu + +minetest.register_craft({ + type = "cooking", + output = "farming:tofu_cooked", + recipe = "farming:tofu", + cooktime = 5 +}) + +-- vanilla extract + +minetest.register_craft( { + output = "farming:vanilla_extract", + recipe = { + {"group:food_vanilla", "group:food_vanilla", "group:food_vanilla"}, + {"group:food_vanilla", "farming:bottle_ethanol", "group:food_glass_water"}, + }, + replacements = { + {"group:food_glass_water", a.drinking_glass} + } +}) + +-- jerusalem artichokes + +minetest.register_craft({ + output = "farming:jerusalem_artichokes", + recipe = { + {"group:food_artichoke", "group:food_garlic_clove", "group:food_artichoke"}, + {"group:food_soy", "group:food_salt", "group:food_soy"}, + {"group:food_butter", "group:food_skillet", "group:food_bowl"} + }, + replacements = {{"group:food_skillet", "farming:skillet"}} +}) + +-- wooden scarecrow base + +minetest.register_craft({ + output = "farming:scarecrow_bottom", + recipe = { + {"", "group:stick", ""}, + {"group:stick", "group:stick", "group:stick"}, + {"", "group:stick", ""} + } +}) + +-- beanpole + +minetest.register_craft({ + output = "farming:beanpole", + recipe = { + {"", "", ""}, + {"group:stick", "", "group:stick"}, + {"group:stick", "", "group:stick"} + } +}) + +-- trellis + +minetest.register_craft({ + output = "farming:trellis", + recipe = { + {"group:stick", "group:stick", "group:stick"}, + {"group:stick", "group:stick", "group:stick"}, + {"group:stick", "group:stick", "group:stick"} + } +}) + +-- cotton to wool + +minetest.register_craft({ + output = a.wool, + recipe = { + {"farming:cotton", "farming:cotton"}, + {"farming:cotton", "farming:cotton"} + } +}) + +-- string + +minetest.register_craft({ + output = a.string .. " 2", + recipe = { + {"farming:cotton"}, + {"farming:cotton"} + } +}) + +minetest.register_craft( { + output = "farming:cotton 3", + recipe = { + {"farming:hemp_fibre"}, + {"farming:hemp_fibre"}, + {"farming:hemp_fibre"} + } +}) + +-- saucepan + +minetest.register_craft({ + output = "farming:saucepan", + recipe = { + {a.steel_ingot, "", ""}, + {"", "group:stick", ""} + } +}) + +-- cooking pot + +minetest.register_craft({ + output = "farming:pot", + recipe = { + {"group:stick", a.steel_ingot, a.steel_ingot}, + {"", a.steel_ingot, a.steel_ingot} + } +}) + +-- baking tray + +minetest.register_craft({ + output = "farming:baking_tray", + recipe = { + {a.clay_brick, a.clay_brick, a.clay_brick}, + {a.clay_brick, "", a.clay_brick}, + {a.clay_brick, a.clay_brick, a.clay_brick} + } +}) + +-- skillet + +minetest.register_craft({ + output = "farming:skillet", + recipe = { + {a.steel_ingot, "", ""}, + {"", a.steel_ingot, ""}, + {"", "", "group:stick"} + } +}) + +-- mortar & pestle + +minetest.register_craft({ + output = "farming:mortar_pestle", + recipe = { + {a.stone, "group:stick", a.stone}, + {"", a.stone, ""} + } +}) + +-- cutting board + +minetest.register_craft({ + output = "farming:cutting_board", + recipe = { + {a.steel_ingot, "", ""}, + {"", "group:stick", ""}, + {"", "", "group:wood"} + } +}) + +-- juicer + +minetest.register_craft({ + output = "farming:juicer", + recipe = { + {"", a.stone, ""}, + {a.stone, "", a.stone} + } +}) + +-- glass mixing bowl + +minetest.register_craft({ + output = "farming:mixing_bowl", + recipe = { + {a.glass, "group:stick", a.glass}, + {"", a.glass, ""} + } +}) + +minetest.register_craft( { + output = "vessels:glass_fragments", + recipe = {{"farming:mixing_bowl"}} +}) + +-- hemp oil + +minetest.register_craft( { + output = "farming:hemp_oil", + recipe = { + {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}, + {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}, + {"", a.glass_bottle, ""} + } +}) + +minetest.register_craft( { + output = "farming:hemp_oil", + recipe = { + {"farming:seed_hemp", "farming:seed_hemp", "farming:seed_hemp"}, + {"farming:seed_hemp", "farming:seed_hemp", "farming:seed_hemp"}, + {"farming:seed_hemp", a.glass_bottle, "farming:seed_hemp"} + } +}) + +-- hemp fibre + +minetest.register_craft( { + output = "farming:hemp_fibre 8", + recipe = { + {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}, + {"farming:hemp_leaf", "group:water_bucket", "farming:hemp_leaf"}, + {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"} + }, + replacements = {{"group:water_bucket", a.bucket_empty}} +}) + +if minetest.get_modpath("bucket_wooden") then + + minetest.register_craft( { + output = "farming:hemp_fibre 8", + recipe = { + {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}, + {"farming:hemp_leaf", "group:water_bucket_wooden", "farming:hemp_leaf"}, + {"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"} + }, + replacements = {{"group:water_bucket_wooden", "bucket_wooden:bucket_empty"}} + }) +end + +-- hemp block + +minetest.register_craft( { + output = "farming:hemp_block", + recipe = { + {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"}, + {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"}, + {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"} + } +}) + +-- hemp rope + +minetest.register_craft( { + output = "farming:hemp_rope 6", + recipe = { + {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"}, + {"farming:cotton", "farming:cotton", "farming:cotton"}, + {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"} + } +}) + +-- paper + +minetest.register_craft( { + output = a.paper .. " 3", + recipe = { + {"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"} + } +}) + +-- straw + +local tmp = farming.mcl and "farming:rye" or "farming:wheat" + +minetest.register_craft({ + output = "farming:straw 3", + recipe = { + {tmp, tmp, tmp}, + {tmp, tmp, tmp}, + {tmp, tmp, tmp} + } +}) + +minetest.register_craft({ + output = tmp .. " 3", + recipe = {{"farming:straw"}} +}) + +--= Recipes we shouldn't add when using Mineclonia/VoxeLibre + +if not farming.mcl then + + -- Wheat flour + + minetest.register_craft({ + output = "farming:flour", + recipe = { + {"farming:wheat", "farming:wheat", "farming:wheat"}, + {"farming:wheat", a.mortar_pestle, ""} + }, + replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}} + }) + + -- Bread + + minetest.register_craft({ + type = "cooking", + cooktime = 15, + output = "farming:bread", + recipe = "farming:flour" + }) + + -- Cocoa beans + + minetest.register_craft({ + type = "cooking", + cooktime = 5, + output = "farming:cocoa_beans", + recipe = "farming:cocoa_beans_raw" + }) + + -- Chocolate cookie + + minetest.register_craft( { + output = "farming:cookie 8", + recipe = { + {"group:food_wheat", "group:food_cocoa", "group:food_wheat" } + } + }) + + -- Golden carrot + + minetest.register_craft({ + output = "farming:carrot_gold", + recipe = {{"group:food_carrot", "default:gold_lump"}} + }) + + -- Beetroot soup + + minetest.register_craft({ + output = "farming:beetroot_soup", + recipe = { + {"group:food_beetroot", "group:food_beetroot", "group:food_beetroot"}, + {"group:food_beetroot", "group:food_bowl", "group:food_beetroot"} + } + }) + + -- Sugar + + minetest.register_craft({ + type = "cooking", + cooktime = 3, + output = "farming:sugar 2", + recipe = "default:papyrus" + }) + + -- Baked potato + + minetest.register_craft({ + type = "cooking", + cooktime = 10, + output = "farming:baked_potato", + recipe = "group:food_potato" + }) + + -- Toasted sunflower seeds + + minetest.register_craft({ + type = "cooking", + cooktime = 10, + output = "farming:sunflower_seeds_toasted", + recipe = "farming:seed_sunflower" + }) + + -- Sunflower oil + + local tmp = "group:food_sunflower_seeds" + + minetest.register_craft( { + output = "farming:sunflower_oil", + recipe = { + {tmp, tmp, tmp}, + {tmp, tmp, tmp}, + {tmp, a.glass_bottle, tmp} + } + }) + + -- Sunflower seed bread + + minetest.register_craft({ + output = "farming:sunflower_bread", + recipe = { + { + "group:food_sunflower_seeds_toasted", + "group:food_bread", + "group:food_sunflower_seeds_toasted" + } + } + }) + + -- Jack 'o lantern + + minetest.register_craft({ + output = "farming:jackolantern", + recipe = { + {"default:torch"}, + {"group:food_pumpkin"} + } + }) + + -- Wooden bowl + + minetest.register_craft({ + output = "farming:bowl 4", + recipe = { + {"group:wood", "", "group:wood"}, + {"", "group:wood", ""} + } + }) +end + +-- dye recipes + +minetest.register_craft({output = a.dye_green, recipe = {{"farming:beans"}}}) +minetest.register_craft({output = a.dye_red, recipe = {{"group:food_beetroot"}}}) +minetest.register_craft({output = a.dye_blue, recipe = {{"farming:blueberries"}}}) +minetest.register_craft({output = a.dye_red, recipe = {{"farming:chili_pepper"}}}) +minetest.register_craft({output = a.dye_brown, recipe = {{"farming:cocoa_beans"}}}) +minetest.register_craft({output = a.dye_violet, recipe = {{"farming:grapes"}}}) +minetest.register_craft({output = a.dye_yellow, recipe = {{"group:food_onion"}}}) + +-- fuel items + +minetest.register_craft({type = "fuel", recipe = "farming:straw", burntime = 3}) +minetest.register_craft({type = "fuel", recipe = "farming:wheat", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:bowl",burntime = 10}) +minetest.register_craft({type = "fuel", recipe = "farming:string", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:cotton", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:barley", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:beanpole", burntime = 10}) +minetest.register_craft({type = "fuel", recipe = "farming:trellis", burntime = 15}) +minetest.register_craft({type = "fuel", recipe = "farming:rice", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:rice_bread", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:bread_multigrain", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:rye", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:oat", burntime = 1}) +minetest.register_craft({type = "fuel", recipe = "farming:hemp_oil", + burntime = 20, replacements = {{"farming:hemp_oil", a.glass_bottle}}}) +minetest.register_craft({type = "fuel", recipe = "farming:bottle_ethanol", + burntime = 80, replacements = {{"farming:bottle_ethanol", a.glass_bottle}}}) +minetest.register_craft({type = "fuel", recipe = "farming:sunflower_oil", + burntime = 30, replacements = {{"farming:sunflower_oil", a.glass_bottle}}}) +minetest.register_craft({type = "fuel", recipe = "farming:vanilla_extract", + burntime = 25, replacements = {{"farming:vanilla_extract", a.glass_bottle}}}) diff --git a/item_stairs.lua b/item_stairs.lua new file mode 100644 index 0000000..6bfe624 --- /dev/null +++ b/item_stairs.lua @@ -0,0 +1,35 @@ + +-- check and register stairs + +if minetest.global_exists("stairs") then + + if stairs.mod and stairs.mod == "redo" then + + stairs.register_all("straw", "farming:straw", + {snappy = 3, flammable = 4}, + {"farming_straw.png"}, + "Straw", + farming.node_sound_leaves_defaults()) + + stairs.register_all("hemp_block", "farming:hemp_block", + {snappy = 2, oddly_breakable_by_hand = 1, flammable = 2}, + {"farming_hemp_block.png"}, + "Hemp Block", + farming.node_sound_leaves_defaults()) + else + + stairs.register_stair_and_slab("straw", "farming:straw", + {snappy = 3, flammable = 4}, + {"farming_straw.png"}, + "Straw Stair", + "Straw Slab", + farming.node_sound_leaves_defaults()) + + stairs.register_stair_and_slab("hemp_block", "farming:hemp_block", + {snappy = 2, oddly_breakable_by_hand = 1, flammable = 2}, + {"farming_hemp_block.png"}, + "Hemp Block Stair", + "Hemp Block Slab", + farming.node_sound_leaves_defaults()) + end +end diff --git a/license.txt b/license.txt index 3abacbc..b3e9b07 100644 --- a/license.txt +++ b/license.txt @@ -24,6 +24,17 @@ THE SOFTWARE. License of media (textures): ---------------------------- +Created by TenPlus1 (CC0): + alt_textures/ethereal_strawberry*.png + farming_spanish_potatoes.png + +Created by Hugues Ross (CC BY-SA 4.0): + ethereal_strawberry*.png + +Created by NameNotQuality (CC0): + farming_vanilla_flan.png + farming_spaghetti.png + Created by Oz-tal (license: CC BY-SA 3.0): crops_garlic_*.png crops_onion.png @@ -164,11 +175,14 @@ Created by VanessaE and edited by SpaghettiToastBook (CC0): Created by mDiyo (Natura), modified by TenPlus1 (License: CC BY-SA 3.0): farming_barley.png -Created by OgelGames (CC BY-SA 4.0) +Created by OgelGames (CC BY-SA 4.0): farming_berry_smoothie.png farming_cactus_juice.png farming_salad.png +Created by Huhues Ross (CC BY-SA 4.0): + farming_sunflower_bread.png + Created by Felfa (CC0) farming_blackberry*.png farming_lettuce*.png @@ -176,12 +190,12 @@ Created by Felfa (CC0) farming_vanilla_*.png farming_artichoke*.png farming_parsley*.png - farming_paella.png + farming_paella*.png farming_potato_omelette.png - farming_spanish_potatoes.png - farming_vanilla_flan.png - farming_sunflower*.png - farming_mayo.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 @@ -191,7 +205,8 @@ Created by sirrobzeroone (CC0) farming_pineapple_ring.png Created by smoke_th (CC0 - https://opengameart.org/content/popcorn-icon) - farming_popcorn.png + 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 diff --git a/locale/farming.en.tr b/locale/farming.en.tr index 746a41e..6f83b3e 100644 --- a/locale/farming.en.tr +++ b/locale/farming.en.tr @@ -1,4 +1,5 @@ # textdomain: farming + Crop= Artichoke= Asparagus= Barley Seed= @@ -7,8 +8,10 @@ Green Beans= Bean Pole (place on soil before planting beans)= Beetroot= Beetroot Soup= +Blackberry= Blackberries= Wild Blueberries= +Blueberry= Blueberry Muffin= Blueberry Pie= Cabbage= @@ -23,6 +26,7 @@ Cocoa Beans= Cookie= Bar of Dark Chocolate= Chocolate Block= +Coffee= Coffee Beans= Cup of Coffee= Banana= @@ -77,6 +81,7 @@ Garlic Braid= Ginger= Grapes= Trellis (place on soil before planting grapes)= +Hemp= Hemp Seed= Hemp Leaf= Bottle of Hemp Oil= @@ -97,14 +102,17 @@ 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= @@ -123,6 +131,7 @@ Scarecrow Bottom= Pumpkin Bread= Pumpkin Dough= Pumpkin= +Raspberry= Raspberries= Raspberry Smoothie= Rhubarb= @@ -141,6 +150,7 @@ Savanna Soil= Wet Savanna Soil= Soil= Wet Soil= +Soy= Soy Pod= Soy Sauce= Soy Milk= diff --git a/locale/farming.hu.tr b/locale/farming.hu.tr new file mode 100644 index 0000000..9cf75c9 --- /dev/null +++ b/locale/farming.hu.tr @@ -0,0 +1,176 @@ +# textdomain: farming +Artichoke=Articsóka +Asparagus=Spárga +Barley Seed=Árpamag +Barley=Árpa +Green Beans=Zöldbab +Bean Pole (place on soil before planting beans)=Karó babhoz (szúrd a földbe és oda vess babot) +Beetroot=cékla +Beetroot Soup=céklaleves +Blackberries=Szeder +Wild Blueberries=Vadáfonya +Blueberry Muffin=Áfonyamuffin +Blueberry Pie=Áfonyatorta +Cabbage=Káposzta +Carrot=Répa +Carrot Juice=Répalé +Golden Carrot=Aranyrépa +Chili Pepper=Chilipaprika +Bowl of Chili=Chilis tál +Chili Powder=Chilipor +Raw Cocoa Beans=Nyers kakaóbab +Cocoa Beans=Kakaóbab +Cookie=Süti +Bar of Dark Chocolate=Rúd étcsoki +Chocolate Block=Csokiblokk +Coffee Beans=Kávébab +Cup of Coffee=Csésze kávé +Banana=Banán +Banana Leaves=Banánlevél +Orange=Narancs +Corn=Kukorica +Corn on the Cob=Főtt kukorica +Popcorn=Pattogatott kukorica +Cornstarch=Keményítő +Bottle of Ethanol=Üveg etanol +Wild Cotton=Vadgyapot +Cotton Seed=Gyapotmag +Cotton=Gyapot +String=Madzag +Cucumber=Uborka +Eggplant=Padlizsán +Glass of Water=Pohár víz +Sugar=Cukor +Sugar Cube=Kockacukor +Caramel=Karamell +Salt=Só +Mayonnaise=Majonéz +Rose Water=Rózsavíz +Turkish Delight=Török desszert +Garlic Bread=Fokhagymás kenyér +Donut=Fánk +Chocolate Donut=Csokis fánk +Apple Donut=Almás fánk +Porridge=Zabkása +Jaffa Cake=Jaffatorta +Apple Pie=Almáspita +Cactus Juice=Kaktuszlé +Pasta=Tészta +Mac & Cheese=Sajtos makaróni +Spaghetti=Spagetti +Bibimbap=Bibimbap +Burger=Burger +Salad=Saláta +Triple Berry Smoothie=Hárombogyós smoothie +Spanish Potatoes=Tepsis krumpli +Potato omelet=Krumplis rántotta +Paella=Paella +Vanilla Flan=Vaníliás gyümölcstorta +Vegan Cheese=Vegán sajt +Onigiri=Onigiri +Gyoza=Gyoza +Mochi=Mochi +Gingerbread Man=Mézeskalács-emberke +Garlic clove=Gerezd fokhagyma +Garlic=Fokhagyma +Garlic Braid=Fokhagymafüzér +Ginger=Gyömbér +Grapes=Szőlő +Trellis (place on soil before planting grapes)=Karó szőlőhöz (szúrd a földbe és oda vess babot) +Hemp Seed=Kendermag +Hemp Leaf=Kenderlevél +Bottle of Hemp Oil=Üveg kenderolaj +Hemp Fibre=Kenderrost +Hemp Block=Kenderblokk +Hemp Rope=Kenderkötél +Hoe=Kapa +Wooden Hoe=Fakapa +Stone Hoe=Kőkapa +Steel Hoe=Acélkapa +Bronze Hoe=Bronzkapa +Mese Hoe=Mesekapa +Diamond Hoe=Gyémántkapa +Wood Hoe=Fakapa (2) +Hoe Bomb (use or throw on grassy areas to hoe land)=Kapabomba (használd vagy dobd füves területre) +Mithril Scythe (Use to harvest and replant crops)=Mithrilkasza (használd termények begyűjtéséhez és újravetéséhez) +Seed=Mag +Lettuce=Saláta +Melon Slice=Szelet dinnye +Melon=Dinnye +Mint Seeds=Mentamag +Mint Leaf=Mentalevél +Mint Tea=Mentatea +Onion=Hagyma +Onion Soup=Hagymaleves +Parsley=Petrezselyem +Pea Pod=Hüvelyes borsó +Pea Soup=Borsóleves +Peppercorn=Borsszemek +Green Pepper=Zöldpaprika +Yellow Pepper=Sárga paprika +Red Pepper=Pirospaprika +Ground Pepper=Őrölt bors +Pineapple Top=Ananászüstök +Pineapple=Ananász +Pineapple Ring=Szelet ananász +Pineapple Juice=Ananászlé +Potato=Krumpli +Baked Potato=Sült krumpli +Cucumber and Potato Salad=Uborkás krumplisaláta +Pumpkin Slice=Szelet tök +Jack 'O Lantern (punch to turn on and off)=Töklámpás (ütéssel kapcsold ki és be) +Scarecrow Bottom=Madárijesztő alja +Pumpkin Bread=Tökkenyér +Pumpkin Dough=Töktészta +Pumpkin=Tök +Raspberries=Málna +Raspberry Smoothie=Málnasmoothie +Rhubarb=Rebarbara +Rhubarb Pie=Rebarbaratorta +Rice Seed=Rizsmag +Rice=Rizs +Rice Bread=Rizskenyér +Rice Flour=Rizsliszt +Rye seed=Rozsmag +Rye=Rozs +Oat seed=Zabmag +Oats=Zab +Multigrain Flour=Vegyesliszt +Multigrain Bread=Vegyesliszt-kenyér +Savanna Soil=Szavannatalaj +Wet Savanna Soil=Nedves szavannatalaj +Soil=Talaj +Wet Soil=Nedves talaj +Soy Pod=Hüvelyes szója +Soy Sauce=Szójaszósz +Soy Milk=Szójatej +Tofu=Tofu +Cooked Tofu=Főtt tofu +Spinach=Spenót +Strawberry=Eper +Sunflower=Napraforgó +Sunflower Seeds=Napraforgómag +Toasted Sunflower Seeds=Szotyi +Bottle of Sunflower Oil=Üveg napraforgó-olaj +Sunflower Seed Bread=Napraforgómagos kenyér +Tomato=Paradicsom +Tomato Soup=Paradicsomleves +Wooden Bowl=Fatál +Saucepan=Szószostál +Cooking Pot=Főzőedény +Baking Tray=Sütőtál +Skillet=Serpenyő +Mortar and Pestle=Mozsár +Cutting Board=Vágódeszka +Juicer=Facsaró +Glass Mixing Bowl=Üver keverőedény +Vanilla=Vanília +Vanilla Extract=Vaníliakivonat +Wheat Seed=Búzamag +Wheat=Búza +Straw=Szívószál +Flour=Liszt +Bread=Kenyér +Sliced Bread=Szeletelt kenyér +Toast=Pirítós +Toast Sandwich=Pirítósszendvics diff --git a/locale/farming.ru.tr b/locale/farming.ru.tr index d7403e6..e78e043 100644 --- a/locale/farming.ru.tr +++ b/locale/farming.ru.tr @@ -1,28 +1,32 @@ # textdomain: farming -Artichoke= -Asparagus= + Crop=. +Artichoke=Артишок +Asparagus=Спаржа Barley Seed=Семена ячменя Barley=Ячмень Green Beans=Зеленая фасоль Bean Pole (place on soil before planting beans)=Жердь для бобовых (установите на почву перед посадкой бобовых) Beetroot=Свекла Beetroot Soup=Борщ -Blackberries= +Blackberry=Ежевика +Blackberries=Ежевика Wild Blueberries=Голубика +Blueberry=Голубика Blueberry Muffin=Кекс с голубикой Blueberry Pie=Пирог с голубикой -Cabbage= +Cabbage=Капуста Carrot=Морковь Carrot Juice=Морковный сок Golden Carrot=Золотая морковь Chili Pepper=Перец чили Bowl of Chili=Миска чили -Chili Powder= -Raw Cocoa Beans= +Chili Powder=Порошок чили +Raw Cocoa Beans=Сырые какао-бобы Cocoa Beans=Какао-бобы Cookie=Печенье Bar of Dark Chocolate=Плитка темного шоколада Chocolate Block=Шоколадный блок +Coffee=Кофе Coffee Beans=Кофейные зерна Cup of Coffee=Чашка кофе Banana=Банан @@ -30,7 +34,7 @@ Banana Leaves=Листья банана Orange=Апельсин Corn=Кукуруза Corn on the Cob=Початок кукурузы -Popcorn= +Popcorn=Попкорн Cornstarch=Кукурузный крахмал Bottle of Ethanol=Бутылка спирта Wild Cotton=Дикорастущий хлопок @@ -38,13 +42,13 @@ Cotton Seed=Семена хлопка Cotton=Хлопок String=Нить Cucumber=Огурец -Eggplant= -Glass of Water= +Eggplant=Баклажан +Glass of Water=Стакан воды Sugar=Сахар -Sugar Cube= -Caramel= +Sugar Cube=Кусочек сахара +Caramel=Карамель Salt=Соль -Mayonnaise= +Mayonnaise=Майонез Rose Water=Розовая вода Turkish Delight=Рахат-лукум Garlic Bread=Чесночный хлеб @@ -55,28 +59,29 @@ Porridge=Каша Jaffa Cake=Яффский пирог Apple Pie=Яблочный пирог Cactus Juice=Кактусовый сок -Pasta= -Mac & Cheese= -Spaghetti= -Bibimbap= -Burger= -Salad= -Triple Berry Smoothie= -Spanish Potatoes= -Potato omelet= -Paella= -Vanilla Flan= -Vegan Cheese= -Onigiri= -Gyoza= -Mochi= -Gingerbread Man= +Pasta=Паста +Mac & Cheese=Макароны с сыром +Spaghetti=Спагетти +Bibimbap=Бибимпап +Burger=Бургер +Salad=Салат +Triple Berry Smoothie=Тройной ягодный смузи +Spanish Potatoes=Испанский картофель +Potato omelet=Картофельный омлет +Paella=Паэлья +Vanilla Flan=Ванильный флан +Vegan Cheese=Веганский сыр +Onigiri=Онигири +Gyoza=Гёдза +Mochi=Моти +Gingerbread Man=Пряничный человечек Garlic clove=Зубчик чеснока Garlic=Чеснок Garlic Braid=Связка чеснока -Ginger= +Ginger=Имбирь Grapes=Виноград Trellis (place on soil before planting grapes)=Решетка (поставьте на почву перед посадкой винограда) +Hemp=Конопля Hemp Seed=Семена конопли Hemp Leaf=Лист конопли Bottle of Hemp Oil=Бутылка конопляного масла @@ -90,25 +95,28 @@ Steel Hoe=Стальная мотыга Bronze Hoe=Бронзовая мотыга Mese Hoe=Магическая мотыга Diamond Hoe=Алмазная мотыга -Wood Hoe= +Wood Hoe=Деревянная мотыга Hoe Bomb (use or throw on grassy areas to hoe land)=Мотыгобомба (используйте или бросьте на траву для ее обработки) -Mithril Scythe (Use to harvest and replant crops)= +Mithril Scythe (Use to harvest and replant crops)=Мифриловая коса (используется для сбора и пересадки урожая) Seed=Семена -Lettuce= +Lettuce=Латук Melon Slice=Долька арбуза Melon=Арбуз +Mint=Мята Mint Seeds=Семена мяты Mint Leaf=Лист мяты Mint Tea=Чай с мятой Onion=Лук Onion Soup=Луковый суп -Parsley= +Parsley=Петрушка +Pea=Горох Pea Pod=Стручок гороха Pea Soup=Гороховый суп +Pepper=Перец Peppercorn=Перчинка -Green Pepper= -Yellow Pepper= -Red Pepper= +Green Pepper=Зеленый перец +Yellow Pepper=Желтый перец +Red Pepper=Красный перец Ground Pepper=Молотый перец Pineapple Top=Верхушка ананаса Pineapple=Ананас @@ -123,38 +131,40 @@ Scarecrow Bottom=Основание пугала Pumpkin Bread=Тыквенный хлеб Pumpkin Dough=Тыквенное тесто Pumpkin=Тыква +Raspberry=Малина Raspberries=Малина Raspberry Smoothie=Малиновый смузи Rhubarb=Ревень Rhubarb Pie=Пирог с ревенем -Rice Seed= +Rice Seed=Семена риса Rice=Рис Rice Bread=Рисовый хлеб Rice Flour=Рисовая мука Rye seed=Зёрна ржи Rye=Рожь Oat seed=Семена овса -Oats= +Oats=Овес Multigrain Flour=Мультизерновая мука Multigrain Bread=Мультизерновой хлеб Savanna Soil=Земля саванны Wet Savanna Soil=Увлажненная земля саванны Soil=Земля Wet Soil=Увлажненная земля -Soy Pod= -Soy Sauce= -Soy Milk= -Tofu= -Cooked Tofu= -Spinach= +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= +Sunflower=Подсолнечник +Sunflower Seeds=Семена подсолнечника +Toasted Sunflower Seeds=Жаренные семена подсолнечника +Bottle of Sunflower Oil=Бутылка подсолнечного масла +Sunflower Seed Bread=Хлеб из семян подсолнечника Tomato=Помидор -Tomato Soup= +Tomato Soup=Томатный суп Wooden Bowl=Деревянная миска Saucepan=Кастрюля Cooking Pot=Котел @@ -164,8 +174,8 @@ Mortar and Pestle=Ступка и пестик Cutting Board=Разделочная доска Juicer=Соковыжималка Glass Mixing Bowl=Стеклянная чаша -Vanilla= -Vanilla Extract= +Vanilla=Ваниль +Vanilla Extract=Экстракт ванили Wheat Seed=Зёрна пшеницы Wheat=Пшеница Straw=Солома diff --git a/locale/template.txt b/locale/template.txt deleted file mode 100644 index d5fa9b6..0000000 --- a/locale/template.txt +++ /dev/null @@ -1,177 +0,0 @@ -# textdomain: farming -Banana= -Banana Leaves= -Orange= -Artichoke= -Asparagus= -Barley Seed= -Barley= -Green Beans= -Bean Pole (place on soil before planting beans)= -Beetroot= -Beetroot Soup= -Blackberries= -Wild Blueberries= -Blueberry Muffin= -Blueberry Pie= -Cabbage= -Carrot= -Carrot Juice= -Golden Carrot= -Chili Pepper= -Bowl of Chili= -Chili Powder= -Raw Cocoa Beans= -Cocoa Beans= -Cookie= -Bar of Dark Chocolate= -Chocolate Block= -Coffee Beans= -Cup of Coffee= -Corn= -Corn on the Cob= -Popcorn= -Cornstarch= -Bottle of Ethanol= -Wild Cotton= -Cotton Seed= -Cotton= -String= -Cucumber= -Eggplant= -Garlic clove= -Garlic= -Garlic Braid= -Ginger= -Grapes= -Trellis (place on soil before planting grapes)= -Hemp Seed= -Hemp Leaf= -Bottle of Hemp Oil= -Hemp Fibre= -Hemp Block= -Hemp Rope= -Lettuce= -Melon Slice= -Melon= -Mint Seeds= -Mint Leaf= -Mint Tea= -Onion= -Onion Soup= -Parsley= -Pea Pod= -Pea Soup= -Peppercorn= -Green Pepper= -Yellow Pepper= -Red Pepper= -Ground Pepper= -Pineapple Top= -Pineapple= -Pineapple Ring= -Pineapple Juice= -Potato= -Baked Potato= -Cucumber and Potato Salad= -Pumpkin Slice= -Jack 'O Lantern (punch to turn on and off)= -Scarecrow Bottom= -Pumpkin Bread= -Pumpkin Dough= -Pumpkin= -Raspberries= -Raspberry Smoothie= -Rhubarb= -Rhubarb Pie= -Rice Seed= -Rice= -Rice Bread= -Rice Flour= -Rye seed= -Rye= -Oat seed= -Oats= -Multigrain Flour= -Multigrain Bread= -Soy Pod= -Soy Sauce= -Soy Milk= -Tofu= -Cooked Tofu= -Spinach= -Strawberry= -Sunflower= -Sunflower Seeds= -Toasted Sunflower Seeds= -Bottle of Sunflower Oil= -Sunflower Seed Bread= -Tomato= -Tomato Soup= -Vanilla= -Vanilla Extract= -Wheat Seed= -Wheat= -Straw= -Flour= -Bread= -Sliced Bread= -Toast= -Toast Sandwich= -Glass of Water= -Sugar= -Sugar Cube= -Caramel= -Salt= -Salt crystal= -Mayonnaise= -Rose Water= -Turkish Delight= -Garlic Bread= -Donut= -Chocolate Donut= -Apple Donut= -Porridge= -Jaffa Cake= -Apple Pie= -Cactus Juice= -Pasta= -Mac & Cheese= -Spaghetti= -Bibimbap= -Burger= -Salad= -Triple Berry Smoothie= -Spanish Potatoes= -Potato omelet= -Paella= -Vanilla Flan= -Vegan Cheese= -Onigiri= -Gyoza= -Mochi= -Gingerbread Man= -Hoe= -Wooden Hoe= -Stone Hoe= -Steel Hoe= -Bronze Hoe= -Mese Hoe= -Diamond Hoe= -Wood Hoe= -Hoe Bomb (use or throw on grassy areas to hoe land)= -Mithril Scythe (Use to harvest and replant crops)= -Seed= -Savanna Soil= -Wet Savanna Soil= -Soil= -Wet Soil= -Wooden Bowl= -Saucepan= -Cooking Pot= -Baking Tray= -Skillet= -Mortar and Pestle= -Cutting Board= -Juicer= -Glass Mixing Bowl= diff --git a/lucky_block.lua b/lucky_block.lua index 525ea36..5aa5f4c 100644 --- a/lucky_block.lua +++ b/lucky_block.lua @@ -1,19 +1,25 @@ + +local mcl = farming.mcl + +-- add lucky blocks + lucky_block:add_blocks({ + {"dro", {"farming:corn"}, 5}, {"dro", {"farming:coffee_cup_hot"}, 1}, - {"dro", {"farming:bread"}, 5}, - {"nod", "farming:jackolantern", 0}, - {"tro", "farming:jackolantern_on"}, - {"nod", "default:river_water_source", 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", "farming:melon", 0}, + {"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", "fire:permanent_flame", 1}, + {"nod", (mcl and "mcl_fire:fire" or "fire:permanent_flame"), 1}, {"dro", {"farming:chili_pepper", "farming:chili_bowl"}, 5}, - {"dro", {"farming:bowl"}, 3}, + {"dro", {(mcl and "mcl_core:bowl" or "farming:bowl")}, 3}, {"dro", {"farming:saucepan"}, 1}, {"dro", {"farming:pot"}, 1}, {"dro", {"farming:baking_tray"}, 1}, @@ -23,48 +29,72 @@ lucky_block:add_blocks({ {"dro", {"farming:cutting_board"}, 1}, {"dro", {"farming:juicer"}, 1}, {"dro", {"farming:mixing_bowl"}, 1}, - {"dro", {"farming:hoe_bronze"}, 1}, - {"dro", {"farming:hoe_mese"}, 1}, - {"dro", {"farming:hoe_diamond"}, 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", {"farming:scythe_mithril"}, 1}, + {"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", "farming:beetroot_5"}, + {"farming:wheat_8", (mcl and "mcl_farming:beetroot" or "farming:beetroot_5")}, {"farming:cotton_8", "farming:barley_7"}, + {"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")}, + {"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")}, + {"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")}, }}, {"sch", "instafarm", 0, true, { {"farming:wheat_8", "farming:corn_8"}, {"farming:cotton_8", "farming:grapes_8"}, + {"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")}, + {"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")}, + {"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")}, }}, {"sch", "instafarm", 0, true, { {"farming:wheat_8", "farming:pea_5"}, {"farming:cotton_8", "farming:coffee_5"}, + {"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")}, + {"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")}, + {"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")}, }}, {"sch", "instafarm", 0, true, { {"farming:wheat_8", "farming:raspberry_4"}, {"farming:cotton_8", "farming:tomato_8"}, + {"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")}, + {"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")}, + {"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")}, }}, {"sch", "instafarm", 0, true, { {"farming:wheat_8", "farming:chili_8"}, {"farming:cotton_8", "farming:cucumber_4"}, + {"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")}, + {"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")}, + {"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")}, }}, {"sch", "instafarm", 0, true, { {"farming:wheat_8", "farming:spinach_4"}, {"farming:cotton_8", "farming:eggplant_4"}, + {"farming:soil_wet", (mcl and "mcl_farming:soil_wet" or "farming:soil_wet")}, + {"default:dirt", (mcl and "mcl_core:dirt" or "default:dirt")}, + {"default:water_source", (mcl and "mcl_core:water_source" or "default:water_source")}, }}, {"nod", "default:chest", 0, { - {name = "farming:seed_wheat", max = 15}, - {name = "farming:seed_barley", max = 15}, + {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}, diff --git a/mod.conf b/mod.conf index c49972b..bcaba21 100644 --- a/mod.conf +++ b/mod.conf @@ -1,4 +1,4 @@ name = farming description = Adds many new plants and food into Minetest. -optional_depends = default, mcl_core, mcl_sounds, mcl_farming, mcl_stairs, stairs, lucky_block, toolranks +optional_depends = default, flowers, mcl_core, mcl_sounds, mcl_farming, mcl_stairs, mcl_flowers, stairs, lucky_block, toolranks min_minetest_version = 5.0 diff --git a/screenshot.jpg b/screenshot.jpg new file mode 100644 index 0000000..3fd5c34 Binary files /dev/null and b/screenshot.jpg differ diff --git a/screenshot.png b/screenshot.png deleted file mode 100644 index aba30f0..0000000 Binary files a/screenshot.png and /dev/null differ diff --git a/soil.lua b/soil.lua index d20cd57..7572d57 100644 --- a/soil.lua +++ b/soil.lua @@ -1,40 +1,37 @@ -local S = farming.translate - +local S = minetest.get_translator("farming") -- default dry soil node + local dry_soil = "farming:soil" - -- add soil types to existing dirt blocks + minetest.override_item("default:dirt", { soil = { - base = "default:dirt", - dry = "farming:soil", - wet = "farming:soil_wet" + base = "default:dirt", dry = "farming:soil", wet = "farming:soil_wet" } }) minetest.override_item("default:dirt_with_grass", { soil = { - base = "default:dirt_with_grass", - dry = "farming:soil", - wet = "farming:soil_wet" + base = "default:dirt_with_grass", dry = "farming:soil", wet = "farming:soil_wet" } }) -minetest.override_item("default:dirt_with_dry_grass", { - soil = { - base = "default:dirt_with_dry_grass", - dry = "farming:soil", - wet = "farming:soil_wet" - } -}) +if minetest.registered_nodes["default:dirt_with_dry_grass"] then + + minetest.override_item("default:dirt_with_dry_grass", { + soil = { + base = "default:dirt_with_dry_grass", dry = "farming:soil", + wet = "farming:soil_wet" + } + }) +end minetest.override_item("default:dirt_with_rainforest_litter", { soil = { - base = "default:dirt_with_rainforest_litter", - dry = "farming:soil", + base = "default:dirt_with_rainforest_litter", dry = "farming:soil", wet = "farming:soil_wet" } }) @@ -43,29 +40,26 @@ if minetest.registered_nodes["default:dirt_with_coniferous_litter"] then minetest.override_item("default:dirt_with_coniferous_litter", { soil = { - base = "default:dirt_with_coniferous_litter", - dry = "farming:soil", + base = "default:dirt_with_coniferous_litter", dry = "farming:soil", wet = "farming:soil_wet" } }) end - -- savanna soil + if minetest.registered_nodes["default:dry_dirt"] then minetest.override_item("default:dry_dirt", { soil = { - base = "default:dry_dirt", - dry = "farming:dry_soil", + base = "default:dry_dirt", dry = "farming:dry_soil", wet = "farming:dry_soil_wet" } }) minetest.override_item("default:dry_dirt_with_dry_grass", { soil = { - base = "default:dry_dirt_with_dry_grass", - dry = "farming:dry_soil", + base = "default:dry_dirt_with_dry_grass", dry = "farming:dry_soil", wet = "farming:dry_soil_wet" } }) @@ -77,11 +71,12 @@ if minetest.registered_nodes["default:dry_dirt"] then "default_dry_dirt.png" }, drop = "default:dry_dirt", - groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 2, field = 1}, + 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", + base = "default:dry_dirt", dry = "farming:dry_soil", wet = "farming:dry_soil_wet" } }) @@ -93,11 +88,12 @@ if minetest.registered_nodes["default:dry_dirt"] then "default_dry_dirt.png^farming_soil_wet_side.png" }, drop = "default:dry_dirt", - groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 3, field = 1}, + 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", + base = "default:dry_dirt", dry = "farming:dry_soil", wet = "farming:dry_soil_wet" } }) @@ -106,20 +102,22 @@ if minetest.registered_nodes["default:dry_dirt"] then end -- normal soil + minetest.register_node("farming:soil", { description = S("Soil"), tiles = {"default_dirt.png^farming_soil.png", "default_dirt.png"}, drop = "default:dirt", - groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 2, field = 1}, + 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" + base = "default:dirt", dry = "farming:soil", wet = "farming:soil_wet" } }) -- wet soil + minetest.register_node("farming:soil_wet", { description = S("Wet Soil"), tiles = { @@ -127,22 +125,22 @@ minetest.register_node("farming:soil_wet", { "default_dirt.png^farming_soil_wet_side.png" }, drop = "default:dirt", - groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 3, field = 1}, + 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" + base = "default:dirt", dry = "farming:soil", wet = "farming:soil_wet" } }) - -- sand is not soil, change existing sand-soil to use dry soil + minetest.register_alias("farming:desert_sand_soil", dry_soil) minetest.register_alias("farming:desert_sand_soil_wet", dry_soil .. "_wet") - -- if water near soil then change to wet soil + minetest.register_abm({ label = "Soil changes", nodenames = {"group:field"}, diff --git a/statistics.lua b/statistics.lua index 945d792..df12bd9 100644 --- a/statistics.lua +++ b/statistics.lua @@ -1,39 +1,38 @@ -local statistics = {} -local ROOT_2 = math.sqrt(2.0) -- Approximations for erf(x) and erfInv(x) from -- https://en.wikipedia.org/wiki/Error_function -local erf -local erf_inv - +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 -erf = function(x) +local function erf(x) - if x == 0 then return 0; end + if x == 0 then return 0 end local xSq = x * x local aXSq = A * xSq - local v = math.sqrt(1.0 - math.exp(-xSq * (B + aXSq) / (1.0 + aXSq))) + local v = sqrt(1.0 - exp(-xSq * (B + aXSq) / (1.0 + aXSq))) return (x > 0 and v) or -v end -erf_inv = function(x) +local function erf_inv(x) - if x == 0 then return 0; end + if x == 0 then return 0 end - if x <= -1 or x >= 1 then return nil; end + if x <= -1 or x >= 1 then return nil end - local y = math.log(1 - x * x) + local y = log(1 - x * x) local u = C + 0.5 * y - local v = math.sqrt(math.sqrt(u * u - D * y) - u) + local v = sqrt(sqrt(u * u - D * y) - u) return (x > 0 and v) or -v end @@ -44,14 +43,10 @@ local function std_normal(u) end -local poisson -local cdf_table = {} - - local function generate_cdf(lambda_index, lambda) - local max = math.ceil(4 * lambda) - local pdf = math.exp(-lambda) + local max = ceil(4 * lambda) + local pdf = exp(-lambda) local cdf = pdf local t = { [0] = pdf } @@ -65,30 +60,32 @@ local function generate_cdf(lambda_index, lambda) end +local cdf_table = {} + for li = 1, 100 do cdf_table[li] = generate_cdf(li, 0.25 * li) end -poisson = function(lambda, max) +local function poisson(lambda, max) if max < 2 then - return (math.random() < math.exp(-lambda) and 0) or 1 + return (random() < exp(-lambda) and 0) or 1 elseif lambda >= 2 * max then return max end - local u = math.random() - local lambda_index = math.floor(4 * lambda + 0.5) + 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 = math.floor(max); end - if u >= cdfs[max - 1] then return max; end + if u < cdfs[0] then return 0 end + if max > #cdfs then max = #cdfs + 1 else max = floor(max) end + if u >= cdfs[max - 1] then return max end if max > 4 then -- Binary search @@ -96,62 +93,49 @@ poisson = function(lambda, max) while s + 1 < max do - local m = math.floor(0.5 * (s + max)) + local m = floor(0.5 * (s + max)) - if u < cdfs[m] then max = m; else s = m; end + if u < cdfs[m] then max = m else s = m end end else for i = 1, max - 1 do - if u < cdfs[i] then return i; end + if u < cdfs[i] then return i end end end return max else - local x = lambda + math.sqrt(lambda) * std_normal(u) + local x = lambda + sqrt(lambda) * std_normal(u) - return (x < 0.5 and 0) or (x >= max - 0.5 and max) or math.floor(x + 0.5) + 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 --- Error function. statistics.erf = erf - --- Inverse error function. statistics.erf_inv = erf_inv --- Standard normal distribution function (mean 0, standard deviation 1). - -- - -- @return - -- Any real number (actually between -3.0 and 3.0). + -- @return - Any real number (actually between -3.0 and 3.0). statistics.std_normal = function() - local u = math.random() + local u = random() - if u < 0.001 then - return -3.0 - elseif u > 0.999 then - return 3.0 - end + if u < 0.001 then return -3.0 elseif u > 0.999 then return 3.0 end return std_normal(u) end - --- Standard normal distribution function (mean 0, standard deviation 1). - -- - -- @param mu - -- The distribution mean. - -- @param sigma - -- The distribution standard deviation. - -- @return - -- Any real number (actually between -3*sigma and 3*sigma). + -- @param mu - The distribution mean. + -- @param sigma - The distribution standard deviation. + -- @return - Any real number (actually between -3*sigma and 3*sigma). statistics.normal = function(mu, sigma) - local u = math.random() + local u = random() if u < 0.001 then return mu - 3.0 * sigma @@ -162,24 +146,18 @@ statistics.normal = function(mu, sigma) return mu + sigma * std_normal(u) end - --- Poisson distribution function. - -- - -- @param lambda - -- The distribution mean and variance. - -- @param max - -- The distribution maximum. - -- @return - -- An integer between 0 and max (both inclusive). + -- @param lambda - The distribution mean and variance. + -- @param max - The distribution maximum. + -- @return - An integer between 0 and max (both inclusive). statistics.poisson = function(lambda, max) lambda, max = tonumber(lambda), tonumber(max) - if not lambda or not max or lambda <= 0 or max < 1 then return 0; end + if not lambda or not max or lambda <= 0 or max < 1 then return 0 end return poisson(lambda, max) end - return statistics diff --git a/textures/ethereal_banana_leaf.png b/textures/ethereal_banana_leaf.png new file mode 100644 index 0000000..45770da Binary files /dev/null and b/textures/ethereal_banana_leaf.png differ diff --git a/textures/ethereal_strawberry.png b/textures/ethereal_strawberry.png index 5b43e6b..b085fd9 100644 Binary files a/textures/ethereal_strawberry.png and b/textures/ethereal_strawberry.png differ diff --git a/textures/ethereal_strawberry_1.png b/textures/ethereal_strawberry_1.png index 3fa21ed..531ff35 100644 Binary files a/textures/ethereal_strawberry_1.png and b/textures/ethereal_strawberry_1.png differ diff --git a/textures/ethereal_strawberry_2.png b/textures/ethereal_strawberry_2.png index 751115e..82fa672 100644 Binary files a/textures/ethereal_strawberry_2.png and b/textures/ethereal_strawberry_2.png differ diff --git a/textures/ethereal_strawberry_3.png b/textures/ethereal_strawberry_3.png index 8b7a7b8..950a57c 100644 Binary files a/textures/ethereal_strawberry_3.png and b/textures/ethereal_strawberry_3.png differ diff --git a/textures/ethereal_strawberry_4.png b/textures/ethereal_strawberry_4.png index dcf0017..ed09091 100644 Binary files a/textures/ethereal_strawberry_4.png and b/textures/ethereal_strawberry_4.png differ diff --git a/textures/ethereal_strawberry_5.png b/textures/ethereal_strawberry_5.png index a2decaa..8e6c0ac 100644 Binary files a/textures/ethereal_strawberry_5.png and b/textures/ethereal_strawberry_5.png differ diff --git a/textures/ethereal_strawberry_6.png b/textures/ethereal_strawberry_6.png index a4d0d60..c9e9766 100644 Binary files a/textures/ethereal_strawberry_6.png and b/textures/ethereal_strawberry_6.png differ diff --git a/textures/ethereal_strawberry_7.png b/textures/ethereal_strawberry_7.png index ace223c..e35830d 100644 Binary files a/textures/ethereal_strawberry_7.png and b/textures/ethereal_strawberry_7.png differ diff --git a/textures/ethereal_strawberry_8.png b/textures/ethereal_strawberry_8.png index 6d7280b..10ee97d 100644 Binary files a/textures/ethereal_strawberry_8.png and b/textures/ethereal_strawberry_8.png differ diff --git a/textures/farming_bowl.png b/textures/farming_bowl.png index 627c22e..c6b69ba 100644 Binary files a/textures/farming_bowl.png and b/textures/farming_bowl.png differ diff --git a/textures/farming_burger.png b/textures/farming_burger.png index 43ab6d4..59bc340 100644 Binary files a/textures/farming_burger.png and b/textures/farming_burger.png differ diff --git a/textures/farming_jerusalem_artichokes.png b/textures/farming_jerusalem_artichokes.png new file mode 100644 index 0000000..db87dbc Binary files /dev/null and b/textures/farming_jerusalem_artichokes.png differ diff --git a/textures/farming_mayo.png b/textures/farming_mayo.png index c8e773b..0178f14 100644 Binary files a/textures/farming_mayo.png and b/textures/farming_mayo.png differ diff --git a/textures/farming_paella.png b/textures/farming_paella.png index 1362ac7..e6bca52 100644 Binary files a/textures/farming_paella.png and b/textures/farming_paella.png differ diff --git a/textures/farming_popcorn.png b/textures/farming_popcorn.png index 846399e..9aa7580 100644 Binary files a/textures/farming_popcorn.png and b/textures/farming_popcorn.png differ diff --git a/textures/farming_porridge.png b/textures/farming_porridge.png index cd4466f..e31929b 100644 Binary files a/textures/farming_porridge.png and b/textures/farming_porridge.png differ diff --git a/textures/farming_potato_omelet.png b/textures/farming_potato_omelet.png index abdacad..aee3cfb 100644 Binary files a/textures/farming_potato_omelet.png and b/textures/farming_potato_omelet.png differ diff --git a/textures/farming_potato_salad.png b/textures/farming_potato_salad.png index 0028c91..ce148bb 100644 Binary files a/textures/farming_potato_salad.png and b/textures/farming_potato_salad.png differ diff --git a/textures/farming_spaghetti.png b/textures/farming_spaghetti.png index a401281..b18ee43 100644 Binary files a/textures/farming_spaghetti.png and b/textures/farming_spaghetti.png differ diff --git a/textures/farming_spanish_potatoes.png b/textures/farming_spanish_potatoes.png index 198b50e..8571b18 100644 Binary files a/textures/farming_spanish_potatoes.png and b/textures/farming_spanish_potatoes.png differ diff --git a/textures/farming_sunflower.png b/textures/farming_sunflower.png index 06b9387..17a91c9 100644 Binary files a/textures/farming_sunflower.png and b/textures/farming_sunflower.png differ diff --git a/textures/farming_sunflower_bread.png b/textures/farming_sunflower_bread.png index 112e8c6..4993870 100644 Binary files a/textures/farming_sunflower_bread.png and b/textures/farming_sunflower_bread.png differ diff --git a/textures/farming_vanilla_flan.png b/textures/farming_vanilla_flan.png index c8b9ff0..10008c4 100644 Binary files a/textures/farming_vanilla_flan.png and b/textures/farming_vanilla_flan.png differ diff --git a/textures/farming_vegan_butter.png b/textures/farming_vegan_butter.png new file mode 100644 index 0000000..2e84349 Binary files /dev/null and b/textures/farming_vegan_butter.png differ diff --git a/utensils.lua b/utensils.lua deleted file mode 100644 index 3fe3718..0000000 --- a/utensils.lua +++ /dev/null @@ -1,164 +0,0 @@ - -local S = farming.translate -local a = farming.recipe_items - --- wooden bowl - -minetest.register_craftitem("farming:bowl", { - description = S("Wooden Bowl"), - inventory_image = "farming_bowl.png", - groups = {food_bowl = 1, flammable = 2} -}) - -if not farming.mcl then - - minetest.register_craft({ - output = "farming:bowl 4", - recipe = { - {"group:wood", "", "group:wood"}, - {"", "group:wood", ""} - } - }) -end - -minetest.register_craft({ - type = "fuel", - recipe = "farming:bowl", - burntime = 10 -}) - --- saucepan - -minetest.register_craftitem("farming:saucepan", { - description = S("Saucepan"), - inventory_image = "farming_saucepan.png", - groups = {food_saucepan = 1, flammable = 2} -}) - -minetest.register_craft({ - output = "farming:saucepan", - recipe = { - {a.steel_ingot, "", ""}, - {"", "group:stick", ""} - } -}) - --- cooking pot - -minetest.register_craftitem("farming:pot", { - description = S("Cooking Pot"), - inventory_image = "farming_pot.png", - groups = {food_pot = 1, flammable = 2} -}) - -minetest.register_craft({ - output = "farming:pot", - recipe = { - {"group:stick", a.steel_ingot, a.steel_ingot}, - {"", a.steel_ingot, a.steel_ingot} - } -}) - --- baking tray - -minetest.register_craftitem("farming:baking_tray", { - description = S("Baking Tray"), - inventory_image = "farming_baking_tray.png", - groups = {food_baking_tray = 1, flammable = 2} -}) - -minetest.register_craft({ - output = "farming:baking_tray", - recipe = { - {a.clay_brick, a.clay_brick, a.clay_brick}, - {a.clay_brick, "", a.clay_brick}, - {a.clay_brick, a.clay_brick, a.clay_brick} - } -}) - --- skillet - -minetest.register_craftitem("farming:skillet", { - description = S("Skillet"), - inventory_image = "farming_skillet.png", - groups = {food_skillet = 1, flammable = 2} -}) - -minetest.register_craft({ - output = "farming:skillet", - recipe = { - {a.steel_ingot, "", ""}, - {"", a.steel_ingot, ""}, - {"", "", "group:stick"} - } -}) - --- mortar and pestle - -minetest.register_craftitem("farming:mortar_pestle", { - description = S("Mortar and Pestle"), - inventory_image = "farming_mortar_pestle.png", - groups = {food_mortar_pestle = 1, flammable = 2} -}) - -minetest.register_craft({ - output = "farming:mortar_pestle", - recipe = { - {a.stone, "group:stick", a.stone}, - {"", a.stone, ""} - } -}) - --- cutting board - -minetest.register_craftitem("farming:cutting_board", { - description = S("Cutting Board"), - inventory_image = "farming_cutting_board.png", - groups = {food_cutting_board = 1, flammable = 2} -}) - -minetest.register_craft({ - output = "farming:cutting_board", - recipe = { - {a.steel_ingot, "", ""}, - {"", "group:stick", ""}, - {"", "", "group:wood"} - } -}) - --- juicer - -minetest.register_craftitem("farming:juicer", { - description = S("Juicer"), - inventory_image = "farming_juicer.png", - groups = {food_juicer = 1, flammable = 2} -}) - -minetest.register_craft({ - output = "farming:juicer", - recipe = { - {"", a.stone, ""}, - {a.stone, "", a.stone} - } -}) - --- glass mixing bowl - -minetest.register_craftitem("farming:mixing_bowl", { - description = S("Glass Mixing Bowl"), - inventory_image = "farming_mixing_bowl.png", - groups = {food_mixing_bowl = 1, flammable = 2} -}) - -minetest.register_craft({ - output = "farming:mixing_bowl", - recipe = { - {a.glass, "group:stick", a.glass}, - {"", a.glass, ""} - } -}) - -minetest.register_craft( { - output = "vessels:glass_fragments", - recipe = {{"farming:mixing_bowl"}} -})