From 8f7299271feb490201b9b7a89cffc6970e3927f5 Mon Sep 17 00:00:00 2001 From: HybridDog Date: Fri, 21 Aug 2015 12:20:38 +0200 Subject: [PATCH] short farming code and reduce farming texture sizes (adv- and optipng) --- game_api.txt | 10 +- mods/farming/api.lua | 282 ++++++++---------- mods/farming/nodes.lua | 84 +++--- mods/farming/textures/farming_bread.png | Bin 393 -> 388 bytes mods/farming/textures/farming_cotton_5.png | Bin 159 -> 158 bytes mods/farming/textures/farming_cotton_7.png | Bin 170 -> 163 bytes mods/farming/textures/farming_cotton_8.png | Bin 196 -> 192 bytes .../textures/farming_desert_sand_soil.png | Bin 467 -> 467 bytes .../textures/farming_desert_sand_soil_wet.png | Bin 351 -> 351 bytes mods/farming/textures/farming_soil.png | Bin 706 -> 703 bytes mods/farming/textures/farming_soil_wet.png | Bin 677 -> 676 bytes .../textures/farming_tool_bronzehoe.png | Bin 212 -> 212 bytes mods/farming/textures/farming_wheat.png | Bin 241 -> 240 bytes mods/farming/textures/farming_wheat_3.png | Bin 172 -> 168 bytes mods/farming/textures/farming_wheat_4.png | Bin 191 -> 185 bytes mods/farming/textures/farming_wheat_5.png | Bin 218 -> 208 bytes mods/farming/textures/farming_wheat_6.png | Bin 234 -> 223 bytes mods/farming/textures/farming_wheat_7.png | Bin 253 -> 240 bytes mods/farming/textures/farming_wheat_8.png | Bin 310 -> 310 bytes 19 files changed, 181 insertions(+), 195 deletions(-) diff --git a/game_api.txt b/game_api.txt index 774bd1d1..730fb81f 100644 --- a/game_api.txt +++ b/game_api.txt @@ -142,21 +142,17 @@ farming.register_plant(name, Plant definition) --------------- { description = "", -- Description for tooltip - inventory_image = "unknown_item.png", -- Image to be used as wield- and inventory image + inventory_image = , -- Image to be used as wield- and inventory image max_uses = 30, -- Uses until destroyed material = "", -- Material for recipes - recipe = { -- Craft recipe, if material isn't used - {"air", "air", "air"}, - {"", "group:stick"}, - {"", "group:stick"}, - } + recipe = , -- Craft recipe, if material isn't used } #Plant definition ----------------- { description = "", -- Description of seed item - inventory_image = "unknown_item.png", -- Image to be used as seed's wield- and inventory image + inventory_image = , -- Image to be used as seed's wield- and inventory image steps = 8, -- How many steps the plant has to grow, until it can be harvested ^ Always provide a plant texture for each step, format: modname_plantname_i.png (i = stepnumber) minlight = 13, -- Minimum light to grow diff --git a/mods/farming/api.lua b/mods/farming/api.lua index 7123cbc1..9abeed86 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -1,43 +1,35 @@ -- Wear out hoes, place soil -- TODO Ignore group:flower -farming.hoe_on_use = function(itemstack, user, pointed_thing, uses) - local pt = pointed_thing - -- check if pointing at a node - if not pt then + +local creative = minetest.setting_getbool("creative_mode") +function farming.hoe_on_use(itemstack, user, pt, uses) + -- check if pointing at a node's top + if not pt + or pt.type ~= "node" + or pt.above.y ~= pt.under.y+1 then return end - if pt.type ~= "node" then + + local above = minetest.get_node(pt.above) + if above.name ~= "air" + or not minetest.registered_nodes[above.name] then return end - + local under = minetest.get_node(pt.under) - 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] then + if not minetest.registered_nodes[under.name] + or minetest.get_item_group(under.name, "soil") ~= 1 then return end - if 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 soil - if minetest.get_item_group(under.name, "soil") ~= 1 then - return - end - + -- check if (wet) soil defined - local regN = minetest.registered_nodes - if regN[under.name].soil == nil or regN[under.name].soil.wet == nil or regN[under.name].soil.dry == nil then + local soil = minetest.registered_nodes[under.name].soil + if not soil + or not soil.wet + or not soil.dry 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 @@ -47,41 +39,33 @@ farming.hoe_on_use = function(itemstack, user, pointed_thing, uses) return end - -- turn the node into soil, wear out item and play sound - minetest.set_node(pt.under, {name = regN[under.name].soil.dry}) + minetest.set_node(pt.under, {name = soil.dry}) minetest.sound_play("default_dig_crumbly", { pos = pt.under, gain = 0.5, }) - - if not minetest.setting_getbool("creative_mode") then - itemstack:add_wear(65535/(uses-1)) + + if creative then + return end + + itemstack:add_wear(65535/(uses-1)) return itemstack end -- Register new hoes -farming.register_hoe = function(name, def) +function farming.register_hoe(name, def) -- Check for : prefix (register new hoes in your mod's namespace) if name:sub(1,1) ~= ":" then name = ":" .. name end -- Check def table - if def.description == nil then + if not def.description then def.description = "Hoe" end - if def.inventory_image == nil then - def.inventory_image = "unknown_item.png" - end - if def.recipe == nil then - def.recipe = { - {"air","air",""}, - {"","group:stick",""}, - {"","group:stick",""} - } - end - if def.max_uses == nil then + assert(def.inventory_image, "[farming] missing field inventory_image ("..name..")") + if not def.max_uses then def.max_uses = 30 end -- Register the tool @@ -93,108 +77,86 @@ farming.register_hoe = function(name, def) end }) -- Register its recipe - if def.material == nil then - minetest.register_craft({ - output = name:sub(2), - recipe = def.recipe - }) - else - minetest.register_craft({ - output = name:sub(2), - recipe = { - {def.material, def.material, ""}, - {"", "group:stick", ""}, - {"", "group:stick", ""} - } - }) - -- Reverse Recipe - minetest.register_craft({ - output = name:sub(2), - recipe = { - {"", def.material, def.material}, - {"", "group:stick", ""}, - {"", "group:stick", ""} - } - }) + if not def.material then + if def.recipe then + minetest.register_craft({ + output = name:sub(2), + recipe = def.recipe + }) + end + return end + minetest.register_craft({ + output = name:sub(2), + recipe = { + {def.material, def.material, ""}, + {"", "group:stick", ""}, + {"", "group:stick", ""} + } + }) + -- Reverse Recipe + minetest.register_craft({ + output = name:sub(2), + recipe = { + {"", def.material, def.material}, + {"", "group:stick", ""}, + {"", "group:stick", ""} + } + }) end -- Seed placement -farming.place_seed = function(itemstack, placer, pointed_thing, plantname) - local pt = pointed_thing - -- check if pointing at a node - if not pt then - return - end - if pt.type ~= "node" then - return - end - - local under = minetest.get_node(pt.under) - local above = minetest.get_node(pt.above) - - if minetest.is_protected(pt.under, placer:get_player_name()) then - minetest.record_protection_violation(pt.under, placer:get_player_name()) - return - end - if minetest.is_protected(pt.above, placer:get_player_name()) then - minetest.record_protection_violation(pt.above, placer:get_player_name()) +function farming.place_seed(itemstack, placer, pt, plantname) + -- check if pointing at a node's top + if not pt + or pt.type ~= "node" + or 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] then + local playername = placer:get_player_name() + if minetest.is_protected(pt.under, playername) then + minetest.record_protection_violation(pt.under, playername) return end - if not minetest.registered_nodes[above.name] then + if minetest.is_protected(pt.above, playername) then + minetest.record_protection_violation(pt.above, playername) return end - - -- check if pointing at the top of the node - if pt.above.y ~= pt.under.y+1 then - return - end - + -- check if you can replace the node above the pointed node - if not minetest.registered_nodes[above.name].buildable_to then + local above = minetest.get_node(pt.above) + if not minetest.registered_nodes[above.name] + or not minetest.registered_nodes[above.name].buildable_to then return end - + -- check if pointing at soil - if minetest.get_item_group(under.name, "soil") < 2 then + local under = minetest.get_node(pt.under) + if not minetest.registered_nodes[under.name] + or minetest.get_item_group(under.name, "soil") < 2 then return end - + -- add the node and remove 1 item from the itemstack minetest.add_node(pt.above, {name = plantname, param2 = 1}) - if not minetest.setting_getbool("creative_mode") then - itemstack:take_item() + + if creative then + return end + + itemstack:take_item() return itemstack end -- Register plants -farming.register_plant = function(name, def) - local mname = name:split(":")[1] - local pname = name:split(":")[2] +function farming.register_plant(name, def) + if not def.steps then + return + end -- Check def table - if not def.description then - def.description = "Seed" - end - if not def.inventory_image then - def.inventory_image = "unknown_item.png" - end - if not def.steps then - return nil - end - if not def.minlight then - def.minlight = 1 - end - if not def.maxlight then - def.maxlight = 14 - end + assert(def.inventory_image, "[farming] missing field inventory_image ("..name..")") if not def.fertility then def.fertility = {} end @@ -204,8 +166,11 @@ farming.register_plant = function(name, def) for k, v in pairs(def.fertility) do g[v] = 1 end + + local mname, pname = unpack(name:split(":")) + minetest.register_node(":" .. mname .. ":seed_" .. pname, { - description = def.description, + description = def.description or "Seed", tiles = {def.inventory_image}, inventory_image = def.inventory_image, wield_image = def.inventory_image, @@ -233,16 +198,9 @@ farming.register_plant = function(name, def) -- Register growing steps for i=1,def.steps do - local drop = { - items = { - {items = {mname .. ":" .. pname}, rarity = 9 - i}, - {items = {mname .. ":" .. pname}, rarity= 18 - i * 2}, - {items = {mname .. ":seed_" .. pname}, rarity = 9 - i}, - {items = {mname .. ":seed_" .. pname}, rarity = 18 - i * 2}, - } - } local nodegroups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1} nodegroups[pname] = i + minetest.register_node(mname .. ":" .. pname .. "_" .. i, { drawtype = "plantlike", waving = 1, @@ -250,7 +208,14 @@ farming.register_plant = function(name, def) paramtype = "light", walkable = false, buildable_to = true, - drop = drop, + drop = { + items = { + {items = {mname .. ":" .. pname}, rarity = 9 - i}, + {items = {mname .. ":" .. pname}, rarity= 18 - i * 2}, + {items = {mname .. ":seed_" .. pname}, rarity = 9 - i}, + {items = {mname .. ":seed_" .. pname}, rarity = 18 - i * 2}, + } + }, selection_box = { type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, @@ -260,6 +225,13 @@ farming.register_plant = function(name, def) }) end + if not def.minlight then + def.minlight = 1 + end + if not def.maxlight then + def.maxlight = 14 + end + -- Growing ABM minetest.register_abm({ nodenames = {"group:" .. pname, "group:seed"}, @@ -267,57 +239,61 @@ farming.register_plant = function(name, def) interval = 90, chance = 2, action = function(pos, node) - local plant_height = minetest.get_item_group(node.name, pname) - -- return if already full grown - if plant_height == def.steps then + if minetest.get_item_group(node.name, pname) == def.steps then return end - local node_def = minetest.registered_items[node.name] or nil + pos.y = pos.y-1 + local soil_node = minetest.get_node_or_nil(pos) + if not soil_node then + return + end + pos.y = pos.y+1 + + local fertility = minetest.registered_items[node.name].fertility -- grow seed - if minetest.get_item_group(node.name, "seed") and node_def.fertility then - local can_grow = false - local soil_node = minetest.get_node_or_nil({x = pos.x, y = pos.y - 1, z = pos.z}) - if not soil_node then - return - end - for _, v in pairs(node_def.fertility) do + if fertility + and minetest.get_item_group(node.name, "seed") then + local can_grow + for _, v in pairs(fertility) do if minetest.get_item_group(soil_node.name, v) ~= 0 then can_grow = true + break end end - if can_grow then - minetest.set_node(pos, {name = node.name:gsub("seed_", "") .. "_1"}) + if not can_grow then + return end + node.name = node.name:gsub("seed_", "") .. "_1" + minetest.set_node(pos, node) return end -- check if on wet soil - pos.y = pos.y - 1 - local n = minetest.get_node(pos) - if minetest.get_item_group(n.name, "soil") < 3 then + if minetest.get_item_group(soil_node.name, "soil") < 3 then return end - pos.y = pos.y + 1 -- check light local ll = minetest.get_node_light(pos) - if not ll or ll < def.minlight or ll > def.maxlight then + if not ll + or ll < def.minlight + or ll > def.maxlight then return end -- grow - minetest.set_node(pos, {name = mname .. ":" .. pname .. "_" .. plant_height + 1}) + node.name = mname .. ":" .. pname .. "_" .. plant_height + 1 + minetest.set_node(pos, node) end }) -- Return - local r = { + return { seed = mname .. ":seed_" .. pname, harvest = mname .. ":" .. pname } - return r end diff --git a/mods/farming/nodes.lua b/mods/farming/nodes.lua index 3c0f9407..cbce27d7 100644 --- a/mods/farming/nodes.lua +++ b/mods/farming/nodes.lua @@ -89,64 +89,78 @@ minetest.register_abm({ interval = 15, chance = 4, action = function(pos, node) - local n_def = minetest.registered_nodes[node.name] or nil - local wet = n_def.soil.wet or nil - local base = n_def.soil.base or nil - local dry = n_def.soil.dry or nil - if not n_def or not n_def.soil or not wet or not base or not dry then + local soil = minetest.registered_nodes[node.name].soil + if not soil then + return + end + local wet = soil.wet + local base = soil.base + local dry = soil.dry + if not (wet and base and dry) then return end pos.y = pos.y + 1 local nn = minetest.get_node_or_nil(pos) - if not nn or not nn.name then + if not nn then return end - local nn_def = minetest.registered_nodes[nn.name] or nil + local nn_def = minetest.registered_nodes[nn.name] pos.y = pos.y - 1 - - if nn_def and nn_def.walkable and minetest.get_item_group(nn.name, "plant") == 0 then - minetest.set_node(pos, {name = base}) + + if nn_def + and nn_def.walkable + and minetest.get_item_group(nn.name, "plant") == 0 then + node.name = base + minetest.set_node(pos, node) return end + -- check if there is water nearby local wet_lvl = minetest.get_item_group(node.name, "wet") if minetest.find_node_near(pos, 3, {"group:water"}) then -- if it is dry soil and not base node, turn it into wet soil if wet_lvl == 0 then - minetest.set_node(pos, {name = wet}) + node.name = wet + minetest.set_node(pos, node) end - else - -- only turn back if there are no unloaded blocks (and therefore - -- possible water sources) nearby - if not minetest.find_node_near(pos, 3, {"ignore"}) then - -- turn it back into base if it is already dry - if wet_lvl == 0 then - -- only turn it back if there is no plant/seed on top of it - if minetest.get_item_group(nn.name, "plant") == 0 and minetest.get_item_group(nn.name, "seed") == 0 then - minetest.set_node(pos, {name = base}) - end - - -- if its wet turn it back into dry soil - elseif wet_lvl == 1 then - minetest.set_node(pos, {name = dry}) - end + return + end + + -- only turn back if there are no unloaded blocks (and therefore + -- possible water sources) nearby + if minetest.find_node_near(pos, 3, {"ignore"}) then + return + end + -- turn it back into base if it is already dry + if wet_lvl == 0 then + -- only turn it back if there is no plant/seed on top of it + if minetest.get_item_group(nn.name, "plant") == 0 + and minetest.get_item_group(nn.name, "seed") == 0 then + node.name = base + minetest.set_node(pos, node) end + + -- if its wet turn it back into dry soil + elseif wet_lvl == 1 then + node.name = dry + minetest.set_node(pos, node) end end, }) -for i = 1, 5 do - minetest.override_item("default:grass_"..i, {drop = { - max_items = 1, - items = { - {items = {'farming:seed_wheat'},rarity = 5}, - {items = {'default:grass_1'}}, - } - }}) +local defchange = {drop = { + max_items = 1, + items = { + {items = {'farming:seed_wheat'},rarity = 5}, + {items = {'default:grass_1'}}, + } +}} +for i = 1, 5 do + minetest.override_item("default:grass_"..i, defchange) end - + minetest.override_item("default:junglegrass", {drop = { max_items = 1, items = { diff --git a/mods/farming/textures/farming_bread.png b/mods/farming/textures/farming_bread.png index 0c25678ce995d71809c5938be9c1b06bfa590321..16b25f1932512b449422e65245e1769685c470ff 100644 GIT binary patch delta 161 zcmV;S0ABxz1B3&R>wknvL_t&-8J)oe62dS51i*_mN!?v=cjx~fqXWYSx{IOCj9JzR ze>n}aqNwe=g)gp!y_=h9WiSK1@zqcVGl&CQGqwfbmFj4wq7s{??F;~3U9K)#y_LwR z(*X#{I=;DXt6fJ@2f&Dvj5ZJYd`U?NdXp$gIFX$6@H6xMeHyfwE-}mpxZVi{`=8px P00000NkvXXu0mjf+yh8b delta 166 zcmV;X09pTp1BnBW>wk$!L_t&-)18k+5&|&*1c@gbVci9HcmDq|l7iv^JGbt`)Xbo7 z&In0)`eP2mtSD-AmtV$$sNLL4D~hP&@s;v}7sP=Q2yLwxmi*|Yq#~Q9?WhxVxw;7c z<|K!@vmylR_-0HijAl?zDPi~- U2AyVXN&o-=07*qoM6N<$f^mCG(EtDd diff --git a/mods/farming/textures/farming_cotton_5.png b/mods/farming/textures/farming_cotton_5.png index 3e890855ba12f05ad693f4e660924c6f74ecc361..81e184e0364df19d7e476469b1e0bda934e8f90e 100644 GIT binary patch delta 102 zcmV-s0Ga=v0iFSn7zqdi0000eEe}(XAuCcnNkl|8Fi@+QsK^ zlX;N#OIB{&0HyI}Tr`YY#>u(=d~8J7mB~^>)0}cD-wiNH2N>i4SLnTLZ~y=R07*qo IM6N<$f}tcRegFUf delta 103 zcmV-t0GR)t0iOYo7zqRe0002(-QrS_AuCfpNkl>4l4k*O9l)v;85yDaoFD=Yj4CQX3IKD_0|}mjM2Y|a002ov JPDHLkV1kwkAkF{) diff --git a/mods/farming/textures/farming_cotton_7.png b/mods/farming/textures/farming_cotton_7.png index 466d40a2d9636b6d043ec2fb6fe7cd774f172336..11c0cf6d349befb25933c9816f7748349896e868 100644 GIT binary patch delta 94 zcmV-k0HOb?0iywsOjkllL_t&t9R^GrAg%xa diff --git a/mods/farming/textures/farming_cotton_8.png b/mods/farming/textures/farming_cotton_8.png index f835ba5b3f6f2c4d0e6c3f730be01e599dab7b6e..4450a2c4b8ef424222fd92bb51bef74d4e215147 100644 GIT binary patch delta 117 zcmV-*0E+*_0l)!}Qf^sEL_t&t9R8V zK%X7xS-^hcO>gF&uT7RFr?ZC92brzcj!@Uxe58>c!$8fWB5?@I#y3JE_$>=7?%U-L X&RhsU%rwbQ00000NkvXXu0mjf)|4|i delta 121 zcmX@Wc!Y66P*JR>i(?4K_1w;lybT6C2j*-sNPp1q!BK#pA?Q1w%!L2z7YOxKY|5$A z2(&Y-R}D{)ckJlVO_Vv_NW#Fr| zV+#r+0UL>;WsReo$%uh0cA$yd)fZc1dAxVPO#~LNPJO7YfIKcxh8kKoRsM*qL_g3g z;L1R@S$f4DkRA;woW1B{6HgfqjL(JMyO86Y3M*TnG-*Z+y!4@>7={__JTM&-wHEg@2!=`6xfe>kRJf`)T`= j$WJLBgYp^1)BJJYrp6XtuOsKl00000NkvXXu0mjfTatG6 delta 233 zcmV@}xVk7>+IWVYj0mj74m5GQGO;z6$9o6d*1_S`sSmXkSdR;op{B2!Dt|;yVjS=l zP-W__U6NuCx)BX2oJsVtiKh$&=I6rbeaP5$v(xJDv|k=$n__&yJy1T+PnG=C1Oc{` z|Cc}2$HE!VQ2H_Lg!+UxAA*DQ8;1E_e(I6{oBg7F&Y#yWynUMHqx_h!Gx)R5()K5j jpHe;sG|+BK|HV&!ctHZWQ}xZDKzk#{SYu)9aM>qgu-NKodIhdv}(WKR{8Fli$6 zEuEs_(gEsZd%&M3w0QJ=S;^D#Wnt&!~PoBWv`n@cVYuB(+iIvy!v4PRz!R02vkG)yJgl!((t{ZXVAVHZ+9{P}Ekv$bq!la4N zw{(hzO9!ZvwT#PbN{J`O#wf+@QJ%NI@5k^ww??wFZ}!jh*h_Sw+S#w3pTlEoMsTC= zOyZcHe#5-|5XCgwAOJY5)KL M07*qoM6N<$f+YHEI{*Lx diff --git a/mods/farming/textures/farming_soil.png b/mods/farming/textures/farming_soil.png index 5cd3e681c4c3f74943026d67941e1f03a75d8cbe..315042588361d9417c77d7f224e2b23a11caed65 100644 GIT binary patch delta 262 zcmV+h0r~#I1-}Kb!U2EiNkl6g!IQVqC9s!pb36pN--8Df-dS50RZD# zf<-JmiSP>{aud9~Dylf0QC$;YH@|P^%k|^);n2SuhbNGl#az!h9aIaY&D-d}f~+4k z+n1xWEz595Q{Nn`<`qA^Jpz>*^@Qnn4=SR1JGLc)&Mx$1Jg2HCb5yg6UP|mEZX4WcT zB;ST^CR=uPvH1F#>tI#(cGou?N30zmh$U+dooI?B3FH2FhUI_Pt_vgvLsGf0eLu4kVQs)f?_eRyO- z)(e~M>(RxIsoO=@JpoDK984IKc51OB4KQJ3yW-v25%*;$m_P>xQsq(Ei zc(Vgo7rL|Y?iG)G}NE( zT3u~+Tc+9EDr;c%9cRZJo@%3u6Rl&Fpr<*NBueLBGL6#*w_<+VHe@c;k- diff --git a/mods/farming/textures/farming_tool_bronzehoe.png b/mods/farming/textures/farming_tool_bronzehoe.png index 2802d11d708fbd0312a4791a742bf6dfba751582..a8f05c460ef27374736a6b532865eb7a07b5ffe5 100644 GIT binary patch delta 29 jcmcb@c!hC73sVK-#5OyD#JHxL3_#%N>gTe~DWM4fm@Wyc delta 29 jcmcb@c!hC73zNj}nC?lx81re2 z*&yY~Rx!CoDDm)`o!XK3b~?+k7f2y&Qixm+SY=tZx)y4da2M{_#YcW& bnP0mA4OjvyqV6zQ00000NkvXXu0mjfzeY0r diff --git a/mods/farming/textures/farming_wheat_3.png b/mods/farming/textures/farming_wheat_3.png index 36ebb1929de7851303f7b7da7a46fe831765608f..3e609426846fb2f399c0abfe72e4753f088a23dd 100644 GIT binary patch delta 103 zcmV-t0GR)*0jL3x7zqdi0000eEe}(XAv9AyNklODF` z5wa`{zn=5i1_IXK4X}DBHdYMNkXCUxV33i!@b*LGG-nvbay=Vs0EgC96e|D#002ov JPDHLkV1i?#CMf^_ delta 107 zcmZ3%xQ20p1SbnK0|Ud`yN`k2ldAc};a9mGb!05ps$jGC^!^E?Ohmnuxj02mp zGsA?0l7NJ?0)qsBln{@E5`lmejWnHr1Tg`R6oI6`fPj#I05*n&RcxG-&CaX_n#$nm L>gTe~DWM4fE$GuD_8)*BX zAUVi^V`f23{xImf7Y33Pj9m>2ndkzOMnXZ+T7=k%_IwCYQ#*K9!{n}Zn@iR711>xO U)wqvbM*si-07*qoM6N<$f~ij|@Bjb+ delta 120 zcmV-;0Ehp%0lxu|7zqRe0002(-QrS_Av$DFNkl|-ih~|7K=6QGDuPKSdHmH(8&jExftt7nMh$jLIeD;{nq?F&>+*<`b&`s-@tXSG a`tt$kY6%!@7H0ea0000Pl**j>(jkoK_l>mRTFuNB#MH1N1Bo5>0P}umAu607*qoM6N<$g77;#Y5)KL diff --git a/mods/farming/textures/farming_wheat_6.png b/mods/farming/textures/farming_wheat_6.png index e9c78e00c1c1289017815af7bef5b2a38e3f5291..d1f1050fd97c3c108e15aaf4997649873772ea68 100644 GIT binary patch delta 143 zcmV;A0C4~60p9_T7zqdi0000eEe}(XAwzp+NklpPPX#fBK07(Z$ JPDHLkV1gNdK$!pl diff --git a/mods/farming/textures/farming_wheat_7.png b/mods/farming/textures/farming_wheat_7.png index cc26ca96990f96f8fe71d5c3eed9d0eea3bb7c2e..e58fcf7d98a044cfeb752fd47f3dd97ba6a50419 100644 GIT binary patch delta 158 zcmV;P0Ac_A0q_Bk7zqdi0000eEe}(XAx3|6Nkl!T?jI7`3C3$_ad(OD;5g-^eThu#`~u0T{VS)q_C;yuyBr%dt-^P>WVgcWeC000UA M07*qoM6N<$g7)1+ivR!s delta 171 zcmV;c0960*0sR4x7zqRe0002(-QrS_Ax3|JNkl>Y z=#U=R2q#H8;wgnr^@VLmj^r5!VF^>YU?*hojQFm3s%Gq0xB27ehT{-h@GTm-#`+hI Z^#|is8GW54()<7b002ovPDHLkV1g%2Nb>*y diff --git a/mods/farming/textures/farming_wheat_8.png b/mods/farming/textures/farming_wheat_8.png index d0500934acb984e6e967d17cb855bca1b43b5a85..43d43b66fdcf707e51d207a09947ad4eb3f98ccc 100644 GIT binary patch delta 168 zcmV;Z09XIE0=5E>mVbEKJ&XwwgCGzD8x};xcqAS%`TsvNYgs9vYmQxb09=?I1B{aY zP=*9{>(LFBYTgT@BN>($yii{greI(OlV&iMiY?cK(XbimVC~SE4(EeyCv`k|r``Es zI+=QU;(9s*rKM32a`;{(MBVZVZHb5qG9^mHDI(qzP1JD4sUaHK=ntoy|B-{%5X%pj WO9bZ}r3Ib<0000mVX%2J&XwwgCGzD8x|!hiY6X0`TsvNYgs9vYmQ|Z0WQpr0+ZxF zlp%rLdUC_SVBQOpBN>(`UZ@`url2r`NmGnvz?N&mXxWT(uy*Lw!#T3;q>d-=v^zi4 zliJf0*V7ru4_XDG3Ezu^sGDEmkt3plh8!hgjfnR|8#UbER3VLQ^oLW