summaryrefslogtreecommitdiff
path: root/init.lua
diff options
context:
space:
mode:
authorh-v-smacker <hans-von-smacker+github@gmail.com>2017-11-20 03:52:00 +0300
committerh-v-smacker <hans-von-smacker+github@gmail.com>2017-11-20 03:52:00 +0300
commit74e18776e7570ad5f92a50cb35f09b594e9933e1 (patch)
tree7930c1c17a3e9b8edbaffe8d188f4144e0aab704 /init.lua
parent27a8ccd8a5e5d461f265d04cc3f15e1b9cef8872 (diff)
Initial commit
Diffstat (limited to 'init.lua')
-rw-r--r--init.lua248
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