From ea9c4012d53fe85e1af839f70c601d86aba3930a Mon Sep 17 00:00:00 2001
From: Auke Kok <sofar@foo-projects.org>
Date: Fri, 2 Dec 2016 23:39:25 -0800
Subject: [PATCH] Farming: Change wheat into # shaped plant

This changes the farming API such that any nodedef with paramtype2
and place_param2 are passed through to all the plant stages of the
farming plant.

This allows plants to use an alternative mesh for the plantlike
drawtype, and provide a bit of graphical variation in plants.

We enable this for wheat, using place_param2 = 3, which is the '#'
shaped plant mesh. If you would actually be able to give yourself
this plant in creative or through /give, you would also get the
same '#' shape.
---
 mods/farming/api.lua  | 15 +++++++++++++--
 mods/farming/init.lua |  2 ++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/mods/farming/api.lua b/mods/farming/api.lua
index 725cbc4..3ff182e 100644
--- a/mods/farming/api.lua
+++ b/mods/farming/api.lua
@@ -213,7 +213,11 @@ farming.grow_plant = function(pos, elapsed)
 		-- omitted is a check for light, we assume seeds can germinate in the dark.
 		for _, v in pairs(def.fertility) do
 			if minetest.get_item_group(soil_node.name, v) ~= 0 then
-				minetest.swap_node(pos, {name = def.next_plant})
+				local placenode = {name = def.next_plant}
+				if def.place_param2 then
+					placenode.param2 = def.place_param2
+				end
+				minetest.swap_node(pos, placenode)
 				if minetest.registered_nodes[def.next_plant].next_plant then
 					tick(pos)
 					return
@@ -239,7 +243,11 @@ farming.grow_plant = function(pos, elapsed)
 	end
 
 	-- grow
-	minetest.swap_node(pos, {name = def.next_plant})
+	local placenode = {name = def.next_plant}
+	if def.place_param2 then
+		placenode.param2 = def.place_param2
+	end
+	minetest.swap_node(pos, placenode)
 
 	-- new timer needed?
 	if minetest.registered_nodes[def.next_plant].next_plant then
@@ -290,6 +298,7 @@ farming.register_plant = function(name, def)
 		groups = g,
 		paramtype = "light",
 		paramtype2 = "wallmounted",
+		place_param2 = def.place_param2 or nil, -- this isn't actually used for placement
 		walkable = false,
 		sunlight_propagates = true,
 		selection_box = {
@@ -343,6 +352,8 @@ farming.register_plant = function(name, def)
 			waving = 1,
 			tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"},
 			paramtype = "light",
+			paramtype2 = def.paramtype2 or nil,
+			place_param2 = def.place_param2 or nil,
 			walkable = false,
 			buildable_to = true,
 			drop = drop,
diff --git a/mods/farming/init.lua b/mods/farming/init.lua
index 796e987..97dc9b4 100644
--- a/mods/farming/init.lua
+++ b/mods/farming/init.lua
@@ -10,12 +10,14 @@ dofile(farming.path .. "/hoes.lua")
 -- WHEAT
 farming.register_plant("farming:wheat", {
 	description = "Wheat seed",
+	paramtype2 = "meshoptions",
 	inventory_image = "farming_wheat_seed.png",
 	steps = 8,
 	minlight = 13,
 	maxlight = default.LIGHT_MAX,
 	fertility = {"grassland"},
 	groups = {flammable = 4},
+	place_param2 = 3,
 })
 minetest.register_craftitem("farming:flour", {
 	description = "Flour",