mirror of
				https://github.com/rubenwardy/food.git
				synced 2025-10-31 02:45:31 +01:00 
			
		
		
		
	Various changes to code & textures Implemented food.conf to control the crafting of ingredients
		
			
				
	
	
		
			991 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			991 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| -- FOOD MOD
 | |
| -- A mod written by rubenwardy that adds food to the minetest game
 | |
| --
 | |
| -- =========================================================================
 | |
| -- >> food/init.lua
 | |
| -- The support api for the mod, and some
 | |
| -- basic foods
 | |
| -- =========================================================================
 | |
| -- version 2.3
 | |
| -- sorting food definitions per module
 | |
| -- code sorting
 | |
| -- recipe conflicts solved (identical ingredients in other mods)
 | |
| -- recipe functions renamed to prevend conflicts (all start with food_)
 | |
| -- changed cocoa_powder in cocoa (too complex & intensive in farming)
 | |
| -- create functions for juices same way as soups
 | |
| -- =========================================================================
 | |
| 
 | |
| -- variables
 | |
| -------------------------------------------------------------------------------
 | |
| food = {
 | |
| 	supported = {},
 | |
| 	atsup = {},
 | |
| 	df = {},
 | |
| 	debug = false,
 | |
| 	version = 2.3
 | |
| }
 | |
| 
 | |
| print("Food version "..food.version.." loading...")
 | |
| 
 | |
| if food.debug then print "[Food] debug is ON" end
 | |
| 
 | |
| -- Boilerplate to support localized strings if intllib mod is installed.
 | |
| -------------------------------------------------------------------------------
 | |
| local S
 | |
| if (intllib) then
 | |
| 	dofile(minetest.get_modpath("intllib").."/intllib.lua")
 | |
| 	S = intllib.Getter(minetest.get_current_modname())
 | |
| else
 | |
| 	S = function ( s ) return s end
 | |
| end
 | |
| 
 | |
| -- Loading config file
 | |
| -------------------------------------------------------------------------------
 | |
| local modpath = minetest.get_modpath(minetest.get_current_modname())
 | |
| local input = io.open(modpath.."/food.conf", "r")
 | |
| if input then
 | |
| 	dofile(modpath.."/food.conf")
 | |
| 	input:close()
 | |
| 	input = nil
 | |
| end
 | |
| 
 | |
| -- Checks for external content, and adds support
 | |
| -------------------------------------------------------------------------------
 | |
| function food.support(group,mod,item)
 | |
| 	food.atsup[group] = true
 | |
| 	if not minetest.get_modpath(mod) then
 | |
| 		if food.debug then
 | |
| 			print("[Food] (debug) mod: '"..mod.."' is not installed")
 | |
| 		end
 | |
| 		return
 | |
| 	end
 | |
| 
 | |
| 	local data = minetest.registered_items[item]
 | |
| 	if not data then
 | |
| 		print("[Food] (Warning) item '"..item.."' not found")
 | |
| 		return
 | |
| 	end
 | |
| 
 | |
| 	-- Need to copy this table, not modify it in place, otherwise it can change
 | |
| 	-- the groups for ALL craftitems that use the default groups.
 | |
| 	g = {}
 | |
| 	if data.groups then
 | |
| 	for k, v in pairs(data.groups) do
 | |
| 		g[k] = v
 | |
| 	end
 | |
| 	end
 | |
| 	g["food_"..group] = 1
 | |
| 	minetest.override_item(item, {groups = g})
 | |
| 
 | |
| 	food.supported[group] = true
 | |
| end
 | |
| 
 | |
| -- Defines built in items if needed
 | |
| -------------------------------------------------------------------------------
 | |
| function food.asupport(group,add)
 | |
| 	food.df[group] = true
 | |
| 	if food.supported[group] then
 | |
| 		return
 | |
| 	end
 | |
| 
 | |
| 	for name, def in pairs(minetest.registered_items) do
 | |
| 		local g = def.groups and def.groups["food_"..group] or 0
 | |
| 		if g > 0 then
 | |
| 			return
 | |
| 		end
 | |
| 	end
 | |
| 
 | |
| 	if food.debug then
 | |
| 		print("registering "..group.." inbuilt definition")
 | |
| 	end
 | |
| 
 | |
| 	add()
 | |
| end
 | |
| 
 | |
| -- Deprecated. Not used in this module, but still used in food_sweet
 | |
| -------------------------------------------------------------------------------
 | |
| function food.craft(craft)
 | |
| 	minetest.register_craft(craft)
 | |
| end
 | |
| 
 | |
| -- Checks for hunger mods to register food on
 | |
| -------------------------------------------------------------------------------
 | |
| function food.item_eat(amt)
 | |
| 	if minetest.get_modpath("diet") then
 | |
| 		return diet.item_eat(amt)
 | |
| 	elseif minetest.get_modpath("hud") then
 | |
| 		return hud.item_eat(amt)
 | |
| 	else
 | |
| 		return minetest.item_eat(amt)
 | |
| 	end
 | |
| end
 | |
| 
 | |
| -- Registers craft item or node depending on settings
 | |
| -------------------------------------------------------------------------------
 | |
| function food.register(name,data,mod)
 | |
| 	if (minetest.setting_getbool("food_use_2d") or (mod ~= nil and minetest.setting_getbool("food_"..mod.."_use_2d"))) then
 | |
| 		minetest.register_craftitem(name,{
 | |
| 			description = data.description,
 | |
| 			inventory_image = data.inventory_image,
 | |
| 			groups = data.groups,
 | |
| 			on_use = data.on_use
 | |
| 		})
 | |
| 	else
 | |
| 		local newdata = {
 | |
| 			description = data.description,
 | |
| 			tiles = data.tiles,
 | |
| 			groups = data.groups,
 | |
| 			on_use = data.on_use,
 | |
| 			walkable = false,
 | |
| 			sunlight_propagates = true,
 | |
| 			drawtype = "nodebox",
 | |
| 			paramtype = "light",
 | |
| 			node_box = data.node_box
 | |
| 		}
 | |
| 		if (minetest.setting_getbool("food_2d_inv_image")) then
 | |
| 			newdata.inventory_image = data.inventory_image
 | |
| 		end
 | |
| 		minetest.register_node(name,newdata)
 | |
| 	end
 | |
| end
 | |
| 
 | |
| -- Debug to check all supports have in built version, etc
 | |
| -------------------------------------------------------------------------------
 | |
| if food.debug then
 | |
| minetest.after(0, function()
 | |
| 	for name, val in pairs(food.atsup) do
 | |
| 		if not food.df[name] then
 | |
| 			print("[Food] (debug) ingredient "..name.." has no built in equiv")
 | |
| 
 | |
| 		end
 | |
| 	end
 | |
| 
 | |
| 	for name, val in pairs(food.df) do
 | |
| 		if not food.atsup[name] then
 | |
| 			print("[Food] (debug) recipe "..name.." has no supported external equiv")
 | |
| 		end
 | |
| 	end
 | |
| end)
 | |
| end
 | |
| 
 | |
| -- Add support for other mods
 | |
| -------------------------------------------------------------------------------
 | |
| local function _meat(type,mod,item)
 | |
| 	food.support(type,mod,item)
 | |
| 	food.support("meat",mod,item)
 | |
| end
 | |
| 
 | |
| if minetest.get_modpath("animalmaterials") then
 | |
| 	print("  Adding animalmaterials items")
 | |
| 	food.support("meat_raw","animalmaterials","animalmaterials:meat_chicken")
 | |
| 	food.support("meat_raw","animalmaterials","animalmaterials:meat_lamb")
 | |
| 	food.support("meat_raw","animalmaterials","animalmaterials:meat_beef")
 | |
| 	food.support("meat_raw","animalmaterials","animalmaterials:meat_venison")
 | |
| 	food.support("fish_raw","animalmaterials","animalmaterials:fish_clownfish")
 | |
| 	food.support("fish_raw","animalmaterials","animalmaterials:fish_bluewhite")
 | |
| 	--food.support("fish_raw","animalmaterials","animalmaterials:fish_shark") -- doesn't work
 | |
| 	food.support("egg","animalmaterials","animalmaterials:egg")
 | |
| 	food.support("egg","animalmaterials","animalmaterials:egg_big")
 | |
| 	food.support("milk","animalmaterials","animalmaterials:milk")
 | |
| 	if FOOD_CRAFT_EGG  == 2 then FOOD_CRAFT_EGG  = 0 end
 | |
| 	if FOOD_CRAFT_FISH == 2 then FOOD_CRAFT_FISH = 0 end
 | |
| 	if FOOD_CRAFT_MEAT == 2 then FOOD_CRAFT_MEAT = 0 end
 | |
| 	if FOOD_CRAFT_MILK == 2 then FOOD_CRAFT_MILK = 0 end
 | |
| end
 | |
| 
 | |
| if minetest.get_modpath("bushes_classic") then
 | |
| 	print("  Adding bushes classic items")
 | |
| 	food.support("strawberry","bushes_classic","bushes:strawberry")
 | |
| 	food.support("sugar","bushes_classic","bushes:sugar")
 | |
| 	if FOOD_CRAFT_SBERRY == 2 then FOOD_CRAFT_SBERRY = 0 end
 | |
| 	if FOOD_CRAFT_SUGAR == 2  then FOOD_CRAFT_SUGAR = 0 end
 | |
| end
 | |
| 
 | |
| if minetest.get_modpath("docfarming") then
 | |
| 	food.support("carrot","docfarming","docfarming:carrot")
 | |
| 	food.support("potato","docfarming","docfarming:potato")
 | |
| 	if FOOD_CRAFT_CARROT == 2 then FOOD_CRAFT_CARROT = 0 end
 | |
| 	if FOOD_CRAFT_POTATO == 2 then FOOD_CRAFT_POTATO = 0 end
 | |
| end
 | |
| 
 | |
| if minetest.get_modpath("farming") then
 | |
| 	print("  Adding farming items")
 | |
| 	food.support("wheat","farming","farming:wheat")
 | |
| 	food.support("flour","farming","farming:flour")
 | |
| 	if FOOD_CRAFT_WHEAT == 2 then FOOD_CRAFT_WHEAT = 0 end
 | |
| 	if FOOD_CRAFT_FLOUR == 2 then FOOD_CRAFT_FLOUR = 0 end
 | |
| end
 | |
| 
 | |
| if minetest.get_modpath("farming_plus") then
 | |
| 	print("  Adding farming plus items")
 | |
| 	food.support("carrot","farming_plus","farming_plus:carrot_item")
 | |
| 	food.support("cocoa","farming_plus","farming_plus:cocoa_bean")
 | |
| 	food.support("potato","farming_plus","farming_plus:potato_item")
 | |
| 	food.support("rhubarb","farming_plus","farming_plus:rhubarb_item")
 | |
| 	food.support("strawberry","farming_plus","farming_plus:strawberry_item")
 | |
| 	food.support("tomato","farming_plus","farming_plus:tomato_item")
 | |
| 	if FOOD_CRAFT_CARROT  == 2 then FOOD_CRAFT_CARROT  = 0 end
 | |
| 	if FOOD_CRAFT_COCOA   == 2 then FOOD_CRAFT_COCOA   = 0 end
 | |
| 	if FOOD_CRAFT_POTATO  == 2 then FOOD_CRAFT_POTATO  = 0 end
 | |
| 	if FOOD_CRAFT_RHUBARB == 2 then FOOD_CRAFT_RHUBARB = 0 end
 | |
| 	if FOOD_CRAFT_SBERRY  == 2 then FOOD_CRAFT_SBERRY  = 0 end
 | |
| 	if FOOD_CRAFT_TOMATO  == 2 then FOOD_CRAFT_TOMATO  = 0 end
 | |
| end
 | |
| 
 | |
| if minetest.get_modpath("jkanimals") then
 | |
| 	print("  Adding jkanimals items")
 | |
| 	food.support("egg","jkanimals","jkanimals:egg")
 | |
| 	food.support("milk","jkanimals","jkanimals:bucket_milk")
 | |
| 	food.support("meat","jkanimals","jkanimals:meat")
 | |
| 	if FOOD_CRAFT_EGG  == 2 then FOOD_CRAFT_EGG  = 0 end
 | |
| 	if FOOD_CRAFT_MILK == 2 then FOOD_CRAFT_MILK = 0 end
 | |
| end
 | |
| 
 | |
| if minetest.get_modpath("jkfarming") then
 | |
| 	print("  Adding jkfarming items")
 | |
| 	food.support("carrot","jkfarming","jkfarming:carrot")
 | |
| 	food.support("sugar","jkfarming","jkfarming:sugar")
 | |
| 	if FOOD_CRAFT_CARROT == 2 then FOOD_CRAFT_CARROT = 0 end
 | |
| 	if FOOD_CRAFT_SUGAR  == 2 then FOOD_CRAFT_SUGAR  = 0 end
 | |
| end
 | |
| 
 | |
| if minetest.get_modpath("mobs") then
 | |
| 	print("  Adding mobs items")
 | |
| 	food.support("meat","mobs","mobs:meat")
 | |
| end
 | |
| 
 | |
| if minetest.get_modpath("mobf") then
 | |
| 	print("  Adding mobf items")
 | |
| 	_meat("pork","mobfcooking","mobfcooking:cooked_pork")
 | |
| 	_meat("beef","mobfcooking","mobfcooking:cooked_beef")
 | |
| 	_meat("chicken","mobfcooking","mobfcooking:cooked_chicken")
 | |
| 	_meat("lamb","mobfcooking","mobfcooking:cooked_lamb")
 | |
| 	_meat("venison","mobfcooking","mobfcooking:cooked_venison")
 | |
| end
 | |
| 
 | |
| if minetest.get_modpath("my_mobs") then
 | |
| 	print("  Adding my_mobs items")
 | |
| 	food.support("milk","my_mobs","my_mobs:milk_glass_cup")
 | |
| 	if FOOD_CRAFT_MILK == 2 then FOOD_CRAFT_MILK = 0 end
 | |
| end
 | |
| 
 | |
| if minetest.get_modpath("plantlib") then
 | |
| 	print("  Adding plantlib items")
 | |
| 	food.support("carrot","plantlib","plantlib:carrot")
 | |
| 	food.support("strawberry","plantlib","plantlib:strawberry")
 | |
| 	food.support("tomato","plantlib","plantlib:tomato")
 | |
| 	if FOOD_CRAFT_CARROT == 2 then FOOD_CRAFT_CARROT = 0 end
 | |
| 	if FOOD_CRAFT_SBERRY == 2 then FOOD_CRAFT_SBERRY = 0 end	
 | |
| 	if FOOD_CRAFT_TOMATO == 2 then FOOD_CRAFT_TOMATO = 0 end
 | |
| end
 | |
| 
 | |
| if minetest.get_modpath("veggies") then
 | |
| 	print("  Adding veggies items")
 | |
| 	food.support("potato","veggies","veggies:potato")
 | |
| 	if FOOD_CRAFT_POTATO == 2 then FOOD_CRAFT_POTATO = 0 end
 | |
| end
 | |
| 
 | |
| if minetest.get_modpath("vessels") then
 | |
|    print("  Adding vessels items")
 | |
|    food.support("cup","vessels","vessels:drinking_glass")
 | |
|    if FOOD_CRAFT_GLASS == 2 then FOOD_CRAFT_GLASS = 0 end
 | |
| end
 | |
| 
 | |
| -- Basic ingredients
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| -- carrot
 | |
| if FOOD_CRAFT_CARROT == 1 or FOOD_CRAFT_CARROT == 2 then
 | |
| 	food.asupport("food_carrot",function()
 | |
| 		minetest.register_craftitem("food:carrot", {
 | |
| 			description = S("Carrot"),
 | |
| 			inventory_image = "food_carrot.png",
 | |
| 			groups = {food_carrot=1},
 | |
| 			on_use = food.item_eat(3)
 | |
| 		})
 | |
| 		minetest.register_craft({
 | |
| 			output = "food:carrot",
 | |
| 			recipe = {
 | |
| 				{"default:grass_1"},
 | |
| 				{"group:food_potato"},
 | |
| 				{"group:food_potato"}
 | |
| 			}
 | |
| 		})
 | |
| 	end)
 | |
| 	print("  + Crafting carrot enabled")
 | |
| else
 | |
| 	print("  - Crafting carrot disabled")
 | |
| end
 | |
| 
 | |
| -- cocoa
 | |
| if FOOD_CRAFT_COCOA == 1 or FOOD_CRAFT_COCOA == 2 then
 | |
| 	food.asupport("food_cocoa",function()
 | |
| 		minetest.register_craftitem("food:cocoa", {
 | |
| 			description = S("Cocoa Bean"),
 | |
| 			inventory_image = "food_cocoa.png",
 | |
| 			groups = {food_cocoa=1}
 | |
| 		})
 | |
| 		minetest.register_craft({
 | |
| 			output = "food:cocoa",
 | |
| 			recipe = {
 | |
| 				{"","default:apple",""},
 | |
| 				{"default:apple","","default:apple"},
 | |
| 				{"","default:apple",""}
 | |
| 			}
 | |
| 		})
 | |
| 	end)
 | |
| 	print("  + Crafting cocoa enabled")
 | |
| else
 | |
| 	print("  - Crafting cocoa disabled")
 | |
| end
 | |
| 
 | |
| -- egg
 | |
| if FOOD_CRAFT_EGG == 1 or FOOD_CRAFT_EGG == 2 then
 | |
| 	food.asupport("food_egg",function()
 | |
| 		minetest.register_craftitem("food:egg",{
 | |
| 			description = S("Egg"),
 | |
| 			inventory_image = "food_egg.png",
 | |
| 			groups = {food_egg=1}
 | |
| 		})
 | |
| 		minetest.register_craft({
 | |
| 			output = "food:egg",
 | |
| 			recipe = {
 | |
| 				{"", "default:sand", ""},
 | |
| 				{"default:sand", "default:dirt", "default:sand"},
 | |
| 				{"", "default:sand", ""}
 | |
| 			}
 | |
| 		})
 | |
| 	end)
 | |
| 	print("  + Crafting egg enabled")
 | |
| else
 | |
| 	print("  - Crafting egg disabled")
 | |
| end
 | |
| 
 | |
| -- fish
 | |
| if FOOD_CRAFT_FISH == 1 or FOOD_CRAFT_FISH == 2 then
 | |
| 	food.asupport("food_fish_raw",function()
 | |
| 		minetest.register_craftitem("food:fish_raw", {
 | |
| 			description = S("Raw fish"),
 | |
| 			image = "food_fish_raw.png",
 | |
| 			on_use = food.item_eat(1),
 | |
| 			groups = { fish=1, eatable=1, food_fish_raw=1 },
 | |
| 			stack_max=25
 | |
| 		})
 | |
| 		minetest.register_craft({
 | |
| 			output = "food:fish_raw",
 | |
| 			recipe = {
 | |
| 				{"default:apple","default:apple","default:dirt"}
 | |
| 			}
 | |
| 		})
 | |
| 	end)
 | |
| 	print("  + Crafting raw fish enabled")
 | |
| else
 | |
| 	print("  - Crafting raw fish disabled")
 | |
| end
 | |
| 
 | |
| -- flour
 | |
| if FOOD_CRAFT_FLOUR == 1 or FOOD_CRAFT_FLOUR == 2 then
 | |
| 	food.asupport("food_flour",function()
 | |
| 		minetest.register_craftitem("food:flour", {
 | |
| 			description = S("Flour"),
 | |
| 			inventory_image = "food_flour.png",
 | |
| 			groups = {food_flour = 1}
 | |
| 		})
 | |
| 		minetest.register_craft({
 | |
| 			output = "food:flour",
 | |
| 			recipe = {
 | |
| 				{"group:food_wheat","group:food_wheat","group:food_wheat","group:food_wheat"}
 | |
| 			}
 | |
| 		})
 | |
| 	end)
 | |
| 	print("  + Crafting flour enabled")
 | |
| else
 | |
| 	print("  - Crafting flour disabled")
 | |
| end
 | |
| 
 | |
| -- meat
 | |
| if FOOD_CRAFT_MEAT == 1 or FOOD_CRAFT_MEAT == 2 then
 | |
| 	food.asupport("food_meat_raw",function()
 | |
| 		minetest.register_craftitem("food:meat_raw", {
 | |
| 			description = S("Raw meat"),
 | |
| 			image = "food_meat_raw.png",
 | |
| 			on_use = food.item_eat(1),
 | |
| 			groups = { meat=1, eatable=1, food_meat_raw=1 },
 | |
| 			stack_max=25
 | |
| 		})
 | |
| 		minetest.register_craft({
 | |
| 			output = "food:meat_raw",
 | |
| 			recipe = {
 | |
| 				{"default:dirt","default:apple","default:apple"}
 | |
| 			}
 | |
| 		})
 | |
| 	end)
 | |
| 	print("  + Crafting raw meat enabled")
 | |
| else
 | |
| 	print("  - Crafting raw meat disabled")
 | |
| end
 | |
| 
 | |
| -- milk
 | |
| if FOOD_CRAFT_MILK == 1 or FOOD_CRAFT_MILK == 2 then
 | |
| 	food.asupport("food_milk",function()
 | |
| 		minetest.register_craftitem("food:milk", {
 | |
| 			description = S("Milk"),
 | |
| 			image = "food_milk.png",
 | |
| 			on_use = food.item_eat(1),
 | |
| 			groups = { eatable=1, food_milk = 1 },
 | |
| 			stack_max=10
 | |
| 		})
 | |
| 		minetest.register_craft({
 | |
| 			output = "food:milk",
 | |
| 			recipe = {
 | |
| 				{"default:sand"},
 | |
| 				{"bucket:bucket_water"}
 | |
| 			},
 | |
| 			replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}},
 | |
| 		})
 | |
| 	end)
 | |
| 	print("  + Crafting milk enabled")
 | |
| else
 | |
| 	print("  - Crafting milk disabled")
 | |
| end
 | |
| 
 | |
| -- potato
 | |
| if FOOD_CRAFT_POTATO == 1 or FOOD_CRAFT_POTATO == 2 then
 | |
| 	food.asupport("food_potato",function()
 | |
| 		minetest.register_craftitem("food:potato", {
 | |
| 			description = S("Potato"),
 | |
| 			inventory_image = "food_potato.png",
 | |
| 			groups = {food_potato = 1}
 | |
| 		})
 | |
| 		minetest.register_craft({
 | |
| 			output = "food:potato",
 | |
| 			recipe = {
 | |
| 				{"default:dirt"},
 | |
| 				{"default:apple"},
 | |
| 				{"default:dirt"}
 | |
| 			}
 | |
| 		})
 | |
| 	end)
 | |
| 	print("  + Crafting potato enabled")
 | |
| else
 | |
| 	print("  - Crafting potato disabled")
 | |
| end
 | |
| 
 | |
| -- rhubarb
 | |
| if FOOD_CRAFT_RHUBARB == 1 or FOOD_CRAFT_RHUBARB == 2 then
 | |
| 	food.asupport("food_rhubarb",function()
 | |
| 		minetest.register_craftitem("food:rhubarb", {
 | |
| 			description = S("Rhubarb"),
 | |
| 			inventory_image = "food_rhubarb.png",
 | |
| 			groups = {food_rhubarb=1}
 | |
| 		})
 | |
| 		minetest.register_craft({
 | |
| 			output = "food:rhubarb 2",
 | |
| 			recipe = {
 | |
| 				{"default:grass_1"},
 | |
| 				{"default:apple"},
 | |
| 				{"default:apple"}
 | |
| 			}
 | |
| 		})
 | |
| 	end)
 | |
| 	print("  + Crafting rhubarb enabled")
 | |
| else
 | |
| 	print("  - Crafting rhubarb disabled")
 | |
| end
 | |
| 
 | |
| -- strawberry
 | |
| if FOOD_CRAFT_SBERRY == 1 or FOOD_CRAFT_SBERRY == 2 then
 | |
| 	food.asupport("food_strawberry",function()
 | |
| 		minetest.register_craftitem("food:strawberry", {
 | |
| 			description = S("Strawberry"),
 | |
| 			inventory_image = "food_strawberry.png",
 | |
| 			groups = {food_strawberry=1}
 | |
| 		})
 | |
| 		minetest.register_craft({
 | |
| 			output = "food:strawberry",
 | |
| 			recipe = {
 | |
| 				{"default:grass_1"},
 | |
| 				{"default:apple"}
 | |
| 			}
 | |
| 		})
 | |
| 	end)
 | |
| 	print("  + Crafting strawberry enabled")
 | |
| else
 | |
| 	print("  - Crafting strawberry disabled")
 | |
| end
 | |
| 
 | |
| -- sugar
 | |
| if FOOD_CRAFT_SUGAR == 1 or FOOD_CRAFT_SUGAR == 2 then
 | |
| 	food.asupport("food_sugar",function()
 | |
| 		minetest.register_craftitem("food:sugar", {
 | |
| 			description = S("Sugar"),
 | |
| 			inventory_image = "food_sugar.png",
 | |
| 			groups = {food_sugar=1}
 | |
| 		})
 | |
| 		minetest.register_craft({
 | |
| 			output = "food:sugar",
 | |
| 			recipe = {
 | |
| 				{"default:papyrus","default:papyrus"},
 | |
| 			}
 | |
| 		})
 | |
| 	end)
 | |
| 	print("  + Crafting sugar enabled")
 | |
| else
 | |
| 	print("  - Crafting sugar disabled")
 | |
| end
 | |
| 
 | |
| -- tomato
 | |
| if FOOD_CRAFT_TOMATO == 1 or FOOD_CRAFT_TOMATO == 2 then
 | |
| 	food.asupport("food_tomato",function()
 | |
| 		minetest.register_craftitem("food:tomato", {
 | |
| 			description = S("Tomato"),
 | |
| 			inventory_image = "food_tomato.png",
 | |
| 			groups = {food_tomato = 1}
 | |
| 		})
 | |
| 		minetest.register_craft({
 | |
| 			output = "food:tomato",
 | |
| 			recipe = {
 | |
| 				{"default:desert_sand"},
 | |
| 				{"default:apple"},
 | |
| 				{"default:desert_sand"}
 | |
| 			}
 | |
| 		})
 | |
| 	end)
 | |
| 	print("  + Crafting tomato enabled")
 | |
| else
 | |
| 	print("  - Crafting tomato disabled")
 | |
| end
 | |
| 
 | |
| -- wheat
 | |
| if FOOD_CRAFT_WHEAT == 1 or FOOD_CRAFT_WHEAT == 2 then
 | |
| 	food.asupport("food_wheat",function()
 | |
| 		minetest.register_craftitem("food:wheat", {
 | |
| 			description = S("Wheat"),
 | |
| 			inventory_image = "food_wheat.png",
 | |
| 			groups = {food_wheat = 1}
 | |
| 		})
 | |
| 		minetest.register_craft({
 | |
| 			output = "food:wheat 2",
 | |
| 			recipe = {
 | |
| 				{"default:dry_shrub"},
 | |
| 				{"default:dry_shrub"},
 | |
| 				{"default:dry_shrub"}
 | |
| 			}
 | |
| 		})
 | |
| 	end)
 | |
| 	print("  + Crafting wheat enabled")
 | |
| else
 | |
| 	print("  - Crafting wheat disabled")
 | |
| end
 | |
| 
 | |
| -- glass
 | |
| if FOOD_CRAFT_GLASS == 1 or FOOD_CRAFT_GLASS == 2 then
 | |
| 	food.asupport("food_cup",function()
 | |
| 		minetest.register_craftitem("food:cup", {
 | |
| 			description = S("Cup"),
 | |
| 			inventory_image = "food_cup.png",
 | |
| 			groups = {food_cup = 1}
 | |
| 		})
 | |
| 		minetest.register_craft({
 | |
| 			output = "food:cup",
 | |
| 			recipe = {
 | |
| 				{ "default:glass", "", "default:glass" },
 | |
| 				{ "default:glass", "", "default:glass" },
 | |
| 				{ "default:glass", "default:glass", "default:glass" }
 | |
| 			}
 | |
| 		})
 | |
| 	end)
 | |
| 	print("  + Crafting cup enabled")
 | |
| else
 | |
| 	print("  - Crafting cup disabled")
 | |
| end
 | |
| 
 | |
| 
 | |
| 
 | |
| -- Recipes & food
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| -- grilled meat
 | |
| food.asupport("food_meat",function()
 | |
| 	minetest.register_craftitem("food:meat", {
 | |
| 		description = S("Venison"),
 | |
| 		inventory_image = "food_meat.png",
 | |
| 		on_use = food.item_eat(3),
 | |
| 		groups = {food_meat=1,food_chicken=1}
 | |
| 	})
 | |
| 	minetest.register_craft({
 | |
| 		type = "cooking",
 | |
| 		output = "food:meat",
 | |
| 		recipe = "group:food_meat_raw",
 | |
| 		cooktime = 30
 | |
| 	})
 | |
| end)
 | |
| 
 | |
| -- grilled fish sticks
 | |
| food.asupport("food_fish",function()
 | |
| 	minetest.register_craftitem("food:fish", {
 | |
| 		description = S("Fish Sticks"),
 | |
| 		inventory_image = "food_fish.png",
 | |
| 		on_use = food.item_eat(1),
 | |
| 		groups = {food_fish=1}
 | |
| 	})
 | |
| 
 | |
| 	minetest.register_craft({
 | |
| 		type = "cooking",
 | |
| 		output = "food:fish 6",
 | |
| 		recipe = "group:food_fish_raw",
 | |
| 		cooktime = 20
 | |
| 	})
 | |
| end)
 | |
| 
 | |
| -- dark chocolate
 | |
| food.asupport("food_dark_chocolate",function()
 | |
| 	minetest.register_craftitem("food:dark_chocolate",{
 | |
| 		description = S("Dark Chocolate"),
 | |
| 		inventory_image = "food_dark_chocolate.png",
 | |
| 		on_use = food.item_eat(3),
 | |
| 		groups = {food_dark_chocolate=1}
 | |
| 	})
 | |
| 	minetest.register_craft({
 | |
| 		output = "food:dark_chocolate",
 | |
| 		recipe = {
 | |
| 			{"group:food_cocoa","group:food_cocoa","group:food_cocoa"}
 | |
| 		}
 | |
| 	})
 | |
| end)
 | |
| 
 | |
| -- milk chocolate
 | |
| food.asupport("food_milk_chocolate",function()
 | |
| 	minetest.register_craftitem("food:milk_chocolate",{
 | |
| 		description = S("Milk Chocolate"),
 | |
| 		inventory_image = "food_milk_chocolate.png",
 | |
| 		on_use = food.item_eat(3),
 | |
| 		groups = {food_milk_chocolate=1}
 | |
| 	})
 | |
| 	minetest.register_craft({
 | |
| 		output = "food:milk_chocolate 2",
 | |
| 		recipe = {
 | |
| 				{"","group:food_milk",""},
 | |
| 				{"group:food_cocoa","group:food_cocoa","group:food_cocoa"}
 | |
| 		}
 | |
| 	})
 | |
| end)
 | |
| 
 | |
| -- pasta
 | |
| food.asupport("food_pasta",function()
 | |
| 	minetest.register_craftitem("food:pasta",{
 | |
| 		description = S("Pasta"),
 | |
| 		inventory_image = "food_pasta.png",
 | |
| 		groups = {food_pasta=1}
 | |
| 	})
 | |
| 	minetest.register_craft({
 | |
| 		output = "food:pasta 4",
 | |
| 		type = "shapeless",
 | |
| 		recipe = {"group:food_flour","group:food_egg","group:food_egg"}
 | |
| 	})
 | |
| end)
 | |
| 
 | |
| -- bowl
 | |
| food.asupport("food_bowl",function()
 | |
| 	minetest.register_craftitem("food:bowl",{
 | |
| 		description = S("Bowl"),
 | |
| 		inventory_image = "food_bowl.png",
 | |
| 		groups = {food_bowl=1}
 | |
| 	})
 | |
| 	minetest.register_craft({
 | |
| 		output = "food:bowl",
 | |
| 		recipe = {
 | |
| 			{"default:clay_lump","","default:clay_lump"},
 | |
| 			{"","default:clay_lump",""}
 | |
| 		}
 | |
| 	})
 | |
| end)
 | |
| 
 | |
| -- butter
 | |
| food.asupport("food_butter",function()
 | |
| 	minetest.register_craftitem("food:butter", {
 | |
| 		description = S("Butter"),
 | |
| 		inventory_image = "food_butter.png",
 | |
| 		groups = {food_butter=1}
 | |
| 	})
 | |
| 	minetest.register_craft({
 | |
| 		output = "food:butter",
 | |
| 		recipe = {
 | |
| 			{"group:food_milk","group:food_milk"},
 | |
| 		}
 | |
| 	})
 | |
| end)
 | |
| 
 | |
| -- cheese
 | |
| food.asupport("food_cheese",function()
 | |
| 	minetest.register_craftitem("food:cheese", {
 | |
| 		description = S("Cheese"),
 | |
| 		inventory_image = "food_cheese.png",
 | |
| 		on_use = food.item_eat(4),
 | |
| 		groups = {food_cheese=1}
 | |
| 	})
 | |
| 	minetest.register_craft({
 | |
| 		output = "food:cheese",
 | |
| 		recipe = {
 | |
| 			{"group:food_butter","group:food_butter"},
 | |
| 		}
 | |
| 	})
 | |
| end)
 | |
| 
 | |
| -- baked potato
 | |
| food.asupport("food_baked_potato",function()
 | |
| 	minetest.register_craftitem("food:baked_potato", {
 | |
| 		description = S("Baked Potato"),
 | |
| 		inventory_image = "food_baked_potato.png",
 | |
| 		on_use = food.item_eat(6),
 | |
| 	})
 | |
| 	minetest.register_craft({
 | |
| 		type = "cooking",
 | |
| 		output = "food:baked_potato",
 | |
| 		recipe = "group:food_potato",
 | |
| 	})
 | |
| end)
 | |
| 
 | |
| -- raw pasta
 | |
| food.asupport("food_pasta_bake_raw",function()
 | |
| 	minetest.register_craftitem("food:pasta_bake_raw",{
 | |
| 		description = S("Raw Pasta Bake"),
 | |
| 		inventory_image = "food_pasta_bake_raw.png",
 | |
| 	})
 | |
| 	minetest.register_craft({
 | |
| 		output = "food:pasta_bake_raw",
 | |
| 	 	recipe = {
 | |
| 			{"group:food_cheese"},
 | |
| 			{"group:food_pasta"},
 | |
| 			{"group:food_bowl"}
 | |
| 		}
 | |
| 	})
 | |
| end)
 | |
| 
 | |
| -- baked pasta
 | |
| food.asupport("food_pasta_bake",function()
 | |
| 	minetest.register_craftitem("food:pasta_bake",{
 | |
| 		description = S("Pasta Bake"),
 | |
| 		inventory_image = "food_pasta_bake.png",
 | |
| 		on_use = food.item_eat(8),
 | |
| 		groups = {food=3}
 | |
| 	})
 | |
| 	minetest.register_craft({
 | |
| 		output = "food:pasta_bake",
 | |
| 		type = "cooking",
 | |
| 	 	recipe = "food:pasta_bake_raw"
 | |
| 	})
 | |
| end)
 | |
| 
 | |
| 
 | |
| 
 | |
| -- soups
 | |
| local soups = {{"tomato","tomato"},{"chicken","meat"}}
 | |
| 
 | |
| for i=1, #soups do
 | |
| 	local flav = soups[i]
 | |
| 	
 | |
| 	--raw soup
 | |
| 	food.asupport("food_soup_"..flav[1].."_raw",function()
 | |
| 		minetest.register_craftitem("food:soup_"..flav[1].."_raw",{
 | |
| 			description = S("Uncooked ".. flav[1].." Soup"),
 | |
| 			inventory_image = "food_soup_"..flav[1].."_raw.png",
 | |
| 
 | |
| 		})
 | |
| 		minetest.register_craft({
 | |
| 			output = "food:soup_"..flav[1].."_raw",
 | |
| 			recipe = {
 | |
| 		        	{"", "", ""},
 | |
| 		        	{"bucket:bucket_water", "group:food_"..flav[2], "bucket:bucket_water"},
 | |
| 				{"", "group:food_bowl", ""},
 | |
| 		        },
 | |
| 			replacements = {{"bucket:bucket_water", "bucket:bucket_empty"},{"bucket:bucket_water", "bucket:bucket_empty"}}
 | |
| 		})
 | |
| 	end)
 | |
| 
 | |
|     --cooked soup
 | |
| 	food.asupport("food_soup_"..flav[1],function()
 | |
| 		minetest.register_craftitem("food:soup_"..flav[1],{
 | |
| 			description = S(flav[1].." soup"),
 | |
| 			inventory_image = "food_soup_"..flav[1]..".png",
 | |
| 			on_use = food.item_eat(4),
 | |
| 			groups = {food=3}
 | |
| 		})
 | |
| 		minetest.register_craft({
 | |
| 			type = "cooking",
 | |
| 			output = "food:soup_"..flav[1],
 | |
| 			recipe = "food:soup_"..flav[1].."_raw",
 | |
| 		})
 | |
| 	end)
 | |
| end
 | |
| 
 | |
| -- Juices
 | |
| local juices = {{"apple","default:apple",2},{"cactus","default:cactus",2},{"rainbow","default:nyancat_rainbow",20},{"rhubarb","group:food_rhubarb",3},{"strawberry","group:food_strawberry",3}}
 | |
| for i=1, #juices do
 | |
| 	local flav = juices[i]
 | |
| 	food.asupport("food_juice_"..flav[1],function()
 | |
| 		minetest.register_craftitem("food:juice_"..flav[1],{
 | |
| 			description = S(flav[1].." juice"),
 | |
| 			inventory_image = "food_"..flav[1].."_juice.png",
 | |
| 			on_use = food.item_eat(flav[3]),
 | |
| 		})
 | |
| 		minetest.register_craft({
 | |
| 			output = "food:juice_"..flav[1].." 4",
 | |
| 			recipe = {
 | |
| 				{"","",""},
 | |
| 				{"",flav[2],""},
 | |
| 				{"","group:food_cup",""},
 | |
| 			}
 | |
| 		})
 | |
| 	end)
 | |
| end
 | |
| 
 | |
| -- cakemix plain
 | |
| food.asupport("food_cakemix_plain",function()
 | |
| 	minetest.register_craftitem("food:cakemix_plain",{
 | |
| 		description = S("Cake Mix"),
 | |
| 		inventory_image = "food_cakemix_plain.png",
 | |
| 	})
 | |
| 	minetest.register_craft({
 | |
| 		output = "food:cakemix_plain",
 | |
| 		recipe = {
 | |
| 			{"group:food_flour","group:food_sugar","group:food_egg"},
 | |
| 		}
 | |
| 	})
 | |
| end)
 | |
| 
 | |
| -- cakemix plain
 | |
| food.asupport("food_cakemix_choco",function()
 | |
| 	minetest.register_craftitem("food:cakemix_choco",{
 | |
| 		description = S("Chocolate Cake Mix"),
 | |
| 		inventory_image = "food_cakemix_choco.png",
 | |
| 	})
 | |
| 	minetest.register_craft({
 | |
| 		output = "food:cakemix_choco",
 | |
| 		recipe = {
 | |
| 			{"","group:food_cocoa",""},
 | |
| 			{"group:food_flour","group:food_sugar","group:food_egg"},
 | |
| 		}
 | |
| 	})
 | |
| end)
 | |
| 
 | |
| -- cakemix carrot
 | |
| food.asupport("food_cakemix_carrot",function()
 | |
| 	minetest.register_craftitem("food:cakemix_carrot",{
 | |
| 		description = S("Carrot Cake Mix"),
 | |
| 		inventory_image = "food_cakemix_carrot.png",
 | |
| 	})
 | |
| 	minetest.register_craft({
 | |
| 		output = "food:cakemix_carrot",
 | |
| 		recipe = {
 | |
| 			{"","group:food_carrot",""},
 | |
| 			{"group:food_flour","group:food_sugar","group:food_egg"},
 | |
| 		}
 | |
| 	})
 | |
| end)
 | |
| 
 | |
| -- cake models
 | |
| -------------------------------------------------------------------------------
 | |
| minetest.register_node("food:cake", {
 | |
| 	description = S("Cake"),
 | |
| 	on_use = food.item_eat(4),
 | |
| 	groups={food=3,crumbly=3},
 | |
| 	tiles = {
 | |
| 		"food_cake_texture.png",
 | |
| 		"food_cake_texture.png",
 | |
| 		"food_cake_texture_side.png",
 | |
| 		"food_cake_texture_side.png",
 | |
| 		"food_cake_texture_side.png",
 | |
| 		"food_cake_texture_side.png"
 | |
| 	},
 | |
| 	walkable = false,
 | |
| 	sunlight_propagates = true,
 | |
| 	drawtype="nodebox",
 | |
| 	paramtype = "light",
 | |
| 	node_box = {
 | |
| 		type = "fixed",
 | |
| 		fixed = {
 | |
| 			{-0.250000,-0.500000,-0.296880,0.250000,-0.250000,0.312502}, --NodeBox 1
 | |
| 			{-0.309375,-0.500000,-0.250000,0.309375,-0.250000,0.250000}, --NodeBox 2
 | |
| 			{-0.250000,-0.250000,-0.250000,0.250000,-0.200000,0.250000}, --NodeBox 3
 | |
| 		}
 | |
| 	}
 | |
| })
 | |
| 
 | |
| minetest.register_node("food:cake_choco", {
 | |
| 	description = S("Chocolate Cake"),
 | |
| 	on_use = food.item_eat(4),
 | |
| 	groups={food=3,crumbly=3},
 | |
| 	tiles = {
 | |
| 		"food_cake_choco_texture.png",
 | |
| 		"food_cake_choco_texture.png",
 | |
| 		"food_cake_choco_texture_side.png",
 | |
| 		"food_cake_choco_texture_side.png",
 | |
| 		"food_cake_choco_texture_side.png",
 | |
| 		"food_cake_choco_texture_side.png"
 | |
| 	},
 | |
| 	walkable = false,
 | |
| 	sunlight_propagates = true,
 | |
| 	drawtype="nodebox",
 | |
| 	paramtype = "light",
 | |
| 	node_box = {
 | |
| 		type = "fixed",
 | |
| 		fixed = {
 | |
| 			{-0.250000,-0.500000,-0.296880,0.250000,-0.250000,0.312502}, --NodeBox 1
 | |
| 			{-0.309375,-0.500000,-0.250000,0.309375,-0.250000,0.250000}, --NodeBox 2
 | |
| 			{-0.250000,-0.250000,-0.250000,0.250000,-0.200000,0.250000}, --NodeBox 3
 | |
| 		}
 | |
| 	}
 | |
| })
 | |
| 
 | |
| minetest.register_node("food:cake_carrot", {
 | |
| 	description = S("Carrot Cake"),
 | |
| 	on_use = food.item_eat(4),
 | |
| 	groups={food=3,crumbly=3},
 | |
| 	walkable = false,
 | |
| 	sunlight_propagates = true,
 | |
| 	tiles = {
 | |
| 		"food_cake_carrot_texture.png",
 | |
| 		"food_cake_carrot_texture.png",
 | |
| 		"food_cake_carrot_texture_side.png",
 | |
| 		"food_cake_carrot_texture_side.png",
 | |
| 		"food_cake_carrot_texture_side.png",
 | |
| 		"food_cake_carrot_texture_side.png"
 | |
| 	},
 | |
| 	drawtype="nodebox",
 | |
| 	paramtype = "light",
 | |
| 	node_box = {
 | |
| 		type = "fixed",
 | |
| 		fixed = {
 | |
| 			{-0.250000,-0.500000,-0.296880,0.250000,-0.250000,0.312502}, --NodeBox 1
 | |
| 			{-0.309375,-0.500000,-0.250000,0.309375,-0.250000,0.250000}, --NodeBox 2
 | |
| 			{-0.250000,-0.250000,-0.250000,0.250000,-0.200000,0.250000}, --NodeBox 3
 | |
| 		}
 | |
| 	}
 | |
| })
 | |
| 
 | |
| minetest.register_craft({
 | |
| 	type = "cooking",
 | |
| 	output = "food:cake",
 | |
| 	recipe = "food:cakemix_plain",
 | |
| 	cooktime = 10,
 | |
| })
 | |
| 
 | |
| minetest.register_craft({
 | |
| 	type = "cooking",
 | |
| 	output = "food:cake_choco",
 | |
| 	recipe = "food:cakemix_choco",
 | |
| 	cooktime = 10,
 | |
| })
 | |
| 
 | |
| minetest.register_craft({
 | |
| 	type = "cooking",
 | |
| 	output = "food:cake_carrot",
 | |
| 	recipe = "food:cakemix_carrot",
 | |
| 	cooktime = 10,
 | |
| })
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| -- END
 | |
| -------------------------------------------------------------------------------
 | |
| print("[Food] Loaded.") |