diff options
Diffstat (limited to 'init.lua')
| -rw-r--r-- | init.lua | 248 | 
1 files changed, 248 insertions, 0 deletions
diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..5c12ef8 --- /dev/null +++ b/init.lua @@ -0,0 +1,248 @@ +-- CANNED FOOD +-- Introduces new food types to add some variety. All of them rely on glass bottles +-- from the default vessels mod, which otherwise sees very little use. In vanilla game, +-- at least 4 new types will be available, two of which will also turn inedible items +-- into edible food. With farming (redo) and ethereal, pretty much anything that can +-- be harvested can also be canned. + +--[[ +    Definition scheme +	internal_name_of_the_product = { +		proper_name = Human-readable name, +		found_in = mod name where the source object is introduced +		obj_name = name of source object (internal, without "modname:") +		orig_nutritional_value = self-explanatory +		amount = how many objects are needed to fill a bottle /not implemented/ +		sugar = boolean, set if needs sugar (jams) or not +	} +	image files for items must follow the scheme "internal_name_of_the_product.png" +]] + +local canned_food_definitions = { +	apple_jam = { +		proper_name = "Apple jam", +		found_in = "default", +		obj_name = "apple", +		orig_nutritional_value = 2, +		amount = 3, +		sugar = false -- must not use sugar to be available in vanilla +	}, +	dandelion_jam = { +		proper_name = "Dandelion jam", +		found_in = "flowers", +		obj_name = "dandelion_yellow", +		orig_nutritional_value = 1, +		amount = 5, +		sugar = false -- must not use sugar to be available in vanilla +	}, +	rose_jam = { +		proper_name = "Rose petal jam", +		found_in = "flowers", +		obj_name = "rose", +		orig_nutritional_value = 1, +		amount = 5, +		sugar = false -- must not use sugar to be available in vanilla +	}, +	canned_mushrooms = { +		proper_name = "Canned mushrooms", +		found_in = "flowers", +		obj_name = "mushroom_brown", +		orig_nutritional_value = 1, +		amount = 5, +		sugar = false +	}, +	orange_jam = { +		proper_name = "Orange jam", +		found_in = "ethereal", +		obj_name = "orange", +		orig_nutritional_value = 2, +		amount = 3, +		sugar = true +	}, +	banana_jam = { +		proper_name = "Banana jam", +		found_in = "ethereal", +		obj_name = "banana", +		orig_nutritional_value = 1, +		amount = 5, +		sugar = true +	}, +	strawberry_jam = { +		proper_name = "Strawberry jam", +		found_in = "ethereal", +		obj_name = "strawberry", +		orig_nutritional_value = 1, +		amount = 5, +		sugar = true +	}, +	blueberry_jam = { +		proper_name = "Blueberry jam", +		found_in = "farming", +		obj_name = "blueberries", +		orig_nutritional_value = 1, +		amount = 6, +		sugar = true +	}, +	raspberry_jam = { +		proper_name = "Raspberry jam", +		found_in = "farming", +		obj_name = "raspberries", +		orig_nutritional_value = 1, +		amount = 6, +		sugar = true +	}, +	grape_jam = { +		proper_name = "Grape jam", +		found_in = "farming", +		obj_name = "grapes", +		orig_nutritional_value = 2, +		amount = 4, +		sugar = true +	}, +	rhubarb_jam = { +		proper_name = "Rhubarb jam", +		found_in = "farming", +		obj_name = "rhubarb", +		orig_nutritional_value = 1, +		amount = 6, +		sugar = true +	}, +	melon_jam = { +		proper_name = "Melon jam", +		found_in = "farming", +		obj_name = "melon_slice", +		orig_nutritional_value = 2, +		amount = 3, +		sugar = true +	}, +	canned_carrot = { +		proper_name = "Canned carrots", +		found_in = "farming", +		obj_name = "carrot", +		orig_nutritional_value = 4, +		amount = 3, +		sugar = false +	}, +-- 	canned_potato = { +-- 		proper_name = "Canned potatoes", +-- 		found_in = "farming", +-- 		obj_name = "potato", +-- 		orig_nutritional_value = 1, +-- 		amount = 5, +-- 		sugar = false +-- 	}, +	canned_cucumber = { +		-- aka pickles +		proper_name = "Pickles", +		found_in = "farming", +		obj_name = "cucumber", +		orig_nutritional_value = 4, +		amount = 3, +		sugar = false +	}, +	canned_tomato = { +		proper_name = "Canned tomatoes", +		found_in = "farming", +		obj_name = "tomato", +		orig_nutritional_value = 4, +		amount = 3, +		sugar = false +	}, +	canned_corn = { +		proper_name = "Canned corn", +		found_in = "farming", +		obj_name = "corn", +		orig_nutritional_value = 3, +		amount = 3, +		sugar = false +	}, +	canned_beans = { +		proper_name = "Canned beans", +		found_in = "farming", +		obj_name = "beans", +		orig_nutritional_value = 1, +		amount = 6, +		sugar = false +	}, +	canned_coconut = { +		proper_name = "Canned coconut", +		found_in = "ethereal", +		obj_name = "coconut_slice", +		orig_nutritional_value = 1, +		amount = 5, +		sugar = false +	}, +	canned_pumpkin = { +		proper_name = "Canned pumpkin puree", +		found_in = "farming", +		obj_name = "pumpkin_slice", +		orig_nutritional_value = 2, +		amount = 3, +		sugar = false +	}, + +} + + +-- creating all objects with one universal scheme +for product, def in pairs(canned_food_definitions) do +	if minetest.get_modpath(def.found_in) then +		if def.sugar and minetest.get_modpath("farming") or not def.sugar then +			 +			-- introducing a new item, a bit more nutricious than the source  +			-- material when sugar is used. +			minetest.register_node("canned_food:" .. product, { +				description = def.proper_name, +				drawtype = "plantlike", +				tiles = {product .. ".png"}, +				inventory_image = product .. ".png", +				wield_image = product .. ".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 = { canned_food = 1,  +			                 vessel = 1,  +			                 dig_immediate = 3,  +			                 attached_node = 1 }, +				-- canned food prolongs shelf life IRL, but in minetest food never +				-- goes bad. Instead, we will reward the effort with 2x higher +				-- nutritional value, even if that's not realistic. +				-- when (and if) the 'amount' could be taken into account, the  +				-- rate could also be adjusted +				on_use = minetest.item_eat( +						math.floor (def.orig_nutritional_value * 2) +						+ (def.sugar and 1 or 0), "vessels:glass_bottle"), +				-- the empty bottle stays, of course +				sounds = default.node_sound_glass_defaults(), +			}) +			 +			-- a family of shapeless recipes, with sugar for jams +			-- except for apple: there should be at least 1 jam guaranteed +			-- to be available in vanilla game (and mushrooms are the guaranteed +			-- regular - not sweet - canned food) +			if def.sugar then +				minetest.register_craft({ +					type = "shapeless", +					output = "canned_food:" .. product, +					recipe = {"vessels:glass_bottle", "farming:sugar", +						def.found_in .. ":" .. def.obj_name}, +				}) +			else  +				minetest.register_craft({ +					type = "shapeless", +					output = "canned_food:" .. product, +					recipe = {"vessels:glass_bottle",  +						def.found_in .. ":" .. def.obj_name}, +				}) +			end +		end +	end +end + + +-- The Moor has done his duty, the Moor can go +canned_food_definitions = nil  | 
