From 498dad83e4b177a1a09e0e748c6aadb34616b4d5 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Tue, 4 Dec 2012 19:29:23 -0500 Subject: [PATCH] Renamed the "plants" module to "plants_lib". Any modder that directly depends on that library need only adjust their mods' depends.txt files. I've already done this for flowers, junglegrass and poisonivy as included in this modpack, so any mod that depends on one of *those* needs no changes at all. No changes to the API or any functionality. --- flowers/depends.txt | 2 +- junglegrass/depends.txt | 2 +- plants_lib/depends.txt | 1 + plants_lib/init.lua | 166 ++++++++++++++++++ plants_lib/textures/cotton.png | Bin 0 -> 680 bytes plants_lib/textures/flower_cotton.png | Bin 0 -> 315 bytes plants_lib/textures/flower_cotton_pot.png | Bin 0 -> 498 bytes .../textures/flower_dandelion_white.png | Bin 0 -> 169 bytes .../textures/flower_dandelion_white_pot.png | Bin 0 -> 464 bytes .../textures/flower_dandelion_yellow.png | Bin 0 -> 166 bytes .../textures/flower_dandelion_yellow_pot.png | Bin 0 -> 462 bytes plants_lib/textures/flower_geranium.png | Bin 0 -> 361 bytes plants_lib/textures/flower_geranium_pot.png | Bin 0 -> 520 bytes plants_lib/textures/flower_pot.png | Bin 0 -> 405 bytes plants_lib/textures/flower_rose.png | Bin 0 -> 171 bytes plants_lib/textures/flower_rose_pot.png | Bin 0 -> 479 bytes plants_lib/textures/flower_seaweed.png | Bin 0 -> 416 bytes plants_lib/textures/flower_tulip.png | Bin 0 -> 159 bytes plants_lib/textures/flower_tulip_pot.png | Bin 0 -> 470 bytes plants_lib/textures/flower_viola.png | Bin 0 -> 140 bytes plants_lib/textures/flower_viola_pot.png | Bin 0 -> 465 bytes plants_lib/textures/flower_waterlily.png | Bin 0 -> 221 bytes plants_lib/textures/junglegrass_medium.png | Bin 0 -> 537 bytes plants_lib/textures/junglegrass_short.png | Bin 0 -> 370 bytes plants_lib/textures/junglegrass_shortest.png | Bin 0 -> 325 bytes plants_lib/textures/poisonivy_climbing.png | Bin 0 -> 456 bytes plants_lib/textures/poisonivy_seedling.png | Bin 0 -> 270 bytes plants_lib/textures/poisonivy_sproutling.png | Bin 0 -> 426 bytes poinsonivy/depends.txt | 2 +- 29 files changed, 170 insertions(+), 3 deletions(-) create mode 100644 plants_lib/depends.txt create mode 100644 plants_lib/init.lua create mode 100644 plants_lib/textures/cotton.png create mode 100644 plants_lib/textures/flower_cotton.png create mode 100644 plants_lib/textures/flower_cotton_pot.png create mode 100644 plants_lib/textures/flower_dandelion_white.png create mode 100644 plants_lib/textures/flower_dandelion_white_pot.png create mode 100644 plants_lib/textures/flower_dandelion_yellow.png create mode 100644 plants_lib/textures/flower_dandelion_yellow_pot.png create mode 100644 plants_lib/textures/flower_geranium.png create mode 100644 plants_lib/textures/flower_geranium_pot.png create mode 100644 plants_lib/textures/flower_pot.png create mode 100644 plants_lib/textures/flower_rose.png create mode 100644 plants_lib/textures/flower_rose_pot.png create mode 100644 plants_lib/textures/flower_seaweed.png create mode 100644 plants_lib/textures/flower_tulip.png create mode 100644 plants_lib/textures/flower_tulip_pot.png create mode 100644 plants_lib/textures/flower_viola.png create mode 100644 plants_lib/textures/flower_viola_pot.png create mode 100644 plants_lib/textures/flower_waterlily.png create mode 100644 plants_lib/textures/junglegrass_medium.png create mode 100644 plants_lib/textures/junglegrass_short.png create mode 100644 plants_lib/textures/junglegrass_shortest.png create mode 100644 plants_lib/textures/poisonivy_climbing.png create mode 100644 plants_lib/textures/poisonivy_seedling.png create mode 100644 plants_lib/textures/poisonivy_sproutling.png diff --git a/flowers/depends.txt b/flowers/depends.txt index 1d85616..c8f7251 100644 --- a/flowers/depends.txt +++ b/flowers/depends.txt @@ -1 +1 @@ -plants +plants_lib diff --git a/junglegrass/depends.txt b/junglegrass/depends.txt index 1d85616..c8f7251 100644 --- a/junglegrass/depends.txt +++ b/junglegrass/depends.txt @@ -1 +1 @@ -plants +plants_lib diff --git a/plants_lib/depends.txt b/plants_lib/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/plants_lib/depends.txt @@ -0,0 +1 @@ +default diff --git a/plants_lib/init.lua b/plants_lib/init.lua new file mode 100644 index 0000000..8715047 --- /dev/null +++ b/plants_lib/init.lua @@ -0,0 +1,166 @@ +-- Plantlife mod by Vanessa Ezekowitz +-- 2012-11-29 +-- +-- This mod combines all of the functionality from poison ivy, +-- flowers, and jungle grass. If you have any of these, you no +-- longer need them. +-- +-- License: +-- CC-BY-SA for most textures, except flowers +-- WTFPL for the flowers textures +-- WTFPL for all code and everything else + +-- Various settings - most of these probably won't need to be changed + +local plantlife_debug = false -- ...unless you want the modpack to spam the console ;-) + +local plantlife_seed_diff = 123 +local perlin_octaves = 3 +local perlin_persistence = 0.2 +local perlin_scale = 25 + +local plantlife_limit = 0.1 -- compared against perlin noise. lower = more abundant + +local flowers_seed_diff = plantlife_seed_diff +local junglegrass_seed_diff = plantlife_seed_diff + 10 +local poisonivy_seed_diff = plantlife_seed_diff + 10 + +-- Local functions + +math.randomseed(os.time()) + +local dbg = function(s) + if plantlife_debug then + print("[Plantlife] " .. s) + end +end + +local is_node_loaded = function(node_pos) + n = minetest.env:get_node_or_nil(node_pos) + if (n == nil) or (n.name == "ignore") then + return false + end + return true +end + +-- The spawning ABM + +spawn_on_surfaces = function(sdelay, splant, sradius, schance, ssurface, savoid, seed_diff, lightmin, lightmax, nneighbors, ocount, facedir, depthmax) + if seed_diff == nil then seed_diff = 0 end + if lightmin == nil then lightmin = 0 end + if lightmax == nil then lightmax = LIGHT_MAX end + if nneighbors == nil then nneighbors = ssurface end + if ocount == nil then ocount = 0 end + if depthmax == nil then depthmax = 1 end + minetest.register_abm({ + nodenames = { ssurface }, + interval = sdelay, + chance = schance, + neighbors = nneighbors, + action = function(pos, node, active_object_count, active_object_count_wider) + local p_top = { x = pos.x, y = pos.y + 1, z = pos.z } + local n_top = minetest.env:get_node(p_top) + local perlin = minetest.env:get_perlin(seed_diff, perlin_octaves, perlin_persistence, perlin_scale ) + local noise = perlin:get2d({x=p_top.x, y=p_top.z}) + if ( noise > plantlife_limit ) and (n_top.name == "air") and is_node_loaded(p_top) then + local n_light = minetest.env:get_node_light(p_top, nil) + if (minetest.env:find_node_near(p_top, sradius + math.random(-1.5,2), savoid) == nil ) + and (n_light >= lightmin) + and (n_light <= lightmax) + and table.getn(minetest.env:find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, nneighbors)) > ocount + then + local walldir = plant_valid_wall(p_top) + if splant == "poisonivy:seedling" and walldir ~= nil then + dbg("Spawn: poisonivy:climbing at "..dump(p_top).." on "..ssurface) + minetest.env:add_node(p_top, { name = "poisonivy:climbing", param2 = walldir }) + else + local deepnode = minetest.env:get_node({ x = pos.x, y = pos.y-depthmax-1, z = pos.z }).name + if (ssurface ~= "default:water_source") + or (ssurface == "default:water_source" + and deepnode ~= "default:water_source") then + dbg("Spawn: "..splant.." at "..dump(p_top).." on "..ssurface) + minetest.env:add_node(p_top, { name = splant, param2 = facedir }) + end + end + end + end + end + }) +end + +-- The growing ABM + +grow_plants = function(gdelay, gchance, gplant, gresult, dry_early_node, grow_nodes, facedir) + minetest.register_abm({ + nodenames = { gplant }, + interval = gdelay, + chance = gchance, + action = function(pos, node, active_object_count, active_object_count_wider) + local p_top = {x=pos.x, y=pos.y+1, z=pos.z} + local p_bot = {x=pos.x, y=pos.y-1, z=pos.z} + local n_top = minetest.env:get_node(p_top) + local n_bot = minetest.env:get_node(p_bot) + + if string.find(dump(grow_nodes), n_bot.name) ~= nil and n_top.name == "air" then + + -- corner case for wall-climbing poison ivy + if gplant == "poisonivy:climbing" then + local walldir=plant_valid_wall(p_top) + if walldir ~= nil then + dbg("Grow: "..gplant.." upwards to ("..dump(p_top)..")") + minetest.env:add_node(p_top, { name = gplant, param2 = walldir }) + end + + -- corner case for changing short junglegrass to dry shrub in desert + elseif n_bot.name == dry_early_node and gplant == "junglegrass:short" then + dbg("Die: "..gplant.." becomes default:dry_shrub at ("..dump(pos)..")") + minetest.env:add_node(pos, { name = "default:dry_shrub" }) + + elseif gresult == nil then + dbg("Die: "..gplant.." at ("..dump(pos)..")") + minetest.env:remove_node(pos) + + elseif gresult ~= nil then + dbg("Grow: "..gplant.." becomes "..gresult.." at ("..dump(pos)..")") + if facedir == nil then + minetest.env:add_node(pos, { name = gresult }) + else + minetest.env:add_node(pos, { name = gresult, param2 = facedir }) + end + end + end + end + }) +end + +-- function to decide if a node has a wall that's in verticals_list{} +-- returns wall direction of valid node, or nil if invalid. + +plant_valid_wall = function(wallpos) + local walldir = nil + local verts = dump(verticals_list) + + local testpos = { x = wallpos.x-1, y = wallpos.y, z = wallpos.z } + if string.find(verts, minetest.env:get_node(testpos).name) ~= nil then walldir=3 end + + local testpos = { x = wallpos.x+1, y = wallpos.y, z = wallpos.z } + if string.find(verts, minetest.env:get_node(testpos).name) ~= nil then walldir=2 end + + local testpos = { x = wallpos.x , y = wallpos.y, z = wallpos.z-1 } + if string.find(verts, minetest.env:get_node(testpos).name) ~= nil then walldir=5 end + + local testpos = { x = wallpos.x , y = wallpos.y, z = wallpos.z+1 } + if string.find(verts, minetest.env:get_node(testpos).name) ~= nil then walldir=4 end + + return walldir +end + +local enstr = "" + +if enabled_flowers then enstr = enstr.." flowers" end +if enabled_junglegrass then enstr = enstr.." junglegrass" end +if enabled_poisonivy then enstr = enstr.." poisonivy" end + +if enstr == "" then enstr = "...er...nothing!" end + +print("[Plantlife] Loaded (enabled"..enstr..")") diff --git a/plants_lib/textures/cotton.png b/plants_lib/textures/cotton.png new file mode 100644 index 0000000000000000000000000000000000000000..c184db25a22b83fddef424ab990e65b24903c44f GIT binary patch literal 680 zcmV;Z0$2TsP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipt` z3K<$u{=q>200JmUL_t(I%dL~KYZO5k#ecK8TeIC5=Yo32+CvecJvG zyaql3Pl0Pnsm^(VO=HZn(P-3)uYOk)!}d`@;sj_^?kn{;HQZ5#tGQpyh5-DY&h(@D96h$cYdp)eR?C zYPCjZ2z=k)%CgL{)?%$iYdr^*YciRzva*7;cKiGyeGozfgTa6(ifFgnxUNf*Bp74n z1gE|jA;b@@^<%BInwvNn3_dxIb3+JG6+&RGMF_!oJVr{1F@_)r=yWQL70(Y)*K0-AbW|YuPgg)9v)5u;e4ftaG=m`PZ!4!i_>o> zZRBk>5OAHZERwe46wkz_CN=IQXEa#Z=uU8HdbEPt4Wl zf7$>4ul0||-vbt=T{aO@=u38SVU$SLIbgt};<-qSm0{JYO;OqZ^KOeZnE2ke2<*t| z5p=&4^;_!DyXHo@1+T5%xjuAl_?*Rd`RCp9sgaXXB^%DC6n7N=E^d6lp_eKcxc#{3 zgBNBGj+j55@;>*(-B(h}pX{p(dcOGAt4n;-GcJDOX3g|*US9De6X*>FPgg&ebxsLQ E0C%Z(`~Uy| literal 0 HcmV?d00001 diff --git a/plants_lib/textures/flower_cotton_pot.png b/plants_lib/textures/flower_cotton_pot.png new file mode 100644 index 0000000000000000000000000000000000000000..9432adf8ffcab9b8adeb6ce5d5308f2350d0ba45 GIT binary patch literal 498 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgg)9v)63ga5_e%Yj0&nIRD+&iT2y zsd*(pE(3#eQEFmIYKlU6W=V#EyQgnJie4%^&^k{~7sn8b)4h}SdNDhSwC=Z#!}xg8gFT7w&KokxpKT87 z-#y~_tn$~7CY|4&rwq@%|6j=PVaMGIzg1j?yd8V5{#ZIiI)qb0_OZI=C%N@rQCkoE jn|s1&f{f$Zs`7n|kE*AYe|w<39u(T1u6{1-oD!M<`)A2a literal 0 HcmV?d00001 diff --git a/plants_lib/textures/flower_dandelion_white.png b/plants_lib/textures/flower_dandelion_white.png new file mode 100644 index 0000000000000000000000000000000000000000..b22d6d4644b7cc8cc1ff653d9c58d163d2ec79db GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|l097o(u`H(92`!1w&QKh4$2!MF6?CM7Z6oM629UqUE1!^C9@uhz7< R#R08j@O1TaS?83{1OP(iJX8Px literal 0 HcmV?d00001 diff --git a/plants_lib/textures/flower_dandelion_white_pot.png b/plants_lib/textures/flower_dandelion_white_pot.png new file mode 100644 index 0000000000000000000000000000000000000000..1b48fe6e963cd7bfa2fd241aa9ed243bf0a89e6b GIT binary patch literal 464 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!6#=yXs@#Xw?AcrO0(btiIVPik{pF~z5pDoGT z-GxB|1i2*>B!D8E1s;*b3=G`DAk4@xYYs?|y~NYkmHjpkn~1*ny)dWgKq1Kz*N775 z{M_8syb=cIqSVBa)D(sC%#sWRcTeAd@J2pypsgC7E{-7%|->(7JzT_0$Jh z*OXdvq_}mr2!t@TaWKXoICbt`*czRqm%=|N*06CqT03%oT<)CgGtvOw1 z)uLA{-*wcy{Mj5yhIQ-oMH+e+f1K~W>sQPgx4jl!=R=b3Ucb9DlXXJM^03XV@!uk2 zBBot=^<+zJ*4ig8Z-+Z95qvkJ_ndWX`hs1tr(fUo@^jziYh@PM$5X#U`mOT*kkE0n6a&>gTe~DWM4f D1XQw; literal 0 HcmV?d00001 diff --git a/plants_lib/textures/flower_dandelion_yellow.png b/plants_lib/textures/flower_dandelion_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..500adef8efb469520f44acb82102945520c3cc29 GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|54w#*DsIMh&NDbHKmL;Z^NEG`g2}={2>}+hOr8IlpPHs{ z3a2JIa0sL}+}GLmUxi)C=kjLb{}1lnnDVWA;*tmlvnOZP*hgGtV%VT3^Xlr1|L#D$ O7(8A5T-G@yGywo3={m9i literal 0 HcmV?d00001 diff --git a/plants_lib/textures/flower_dandelion_yellow_pot.png b/plants_lib/textures/flower_dandelion_yellow_pot.png new file mode 100644 index 0000000000000000000000000000000000000000..42a0cd7530a726cd72e217454cbcd92d6a12fba1 GIT binary patch literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!6#=yXs@#Xw?AcrO0(btiIVPik{pF~z5pDoGT z-GxB|1i2*>B!D8E1s;*b3=G`DAk4@xYYs?|y~NYkmHjpkn~1*tw~$|)Kq1Kz*N775 z{M_8syb=cIqSVBa)D(sC%#sWRcTeAd@J2pypsi}2E{-7&5IS(z<`9th2!^ zjx!kPC0#ZRDEq zMon{3yy=-aJD<<9W_DQJrgPw&Ym?%ZtQF~t<4$%OuE-bJvfp5F#PU~~T^9e+KC4_T z&e+xcwZ`rJeY=HDLBe`_vbOC#@z%|9?e3{d+LpcjzJ0M!PweBT7;b%yjzUWuIgtPq8*yS7L7DY(u zb*5C^iV8c%tl1FYk+9~V#Oc-gUFp};o(S-ZZMK>--;K*Lq37X?g=atdp6+?G;B>L- z>i)idm7sIV@wJ^-cR8|d%iqt@#K1Y{Iscr4{O4k_!{=Lj<^hA1!PC{xWt~$(69AQ6 BwTS=# literal 0 HcmV?d00001 diff --git a/plants_lib/textures/flower_geranium.png b/plants_lib/textures/flower_geranium.png new file mode 100644 index 0000000000000000000000000000000000000000..5325982eac3e749ef71ec3c2e16df67bd5a730e6 GIT binary patch literal 361 zcmV-v0ha!WP)>P|7_OhMV&GyCXHYe9 zC(Z?SfwTY1Xp}HKJhzR(RG**0)=Gq7#==(&U;iIsU}xcA*uN$Pu8#$q0bjppFg&`r zmw}n_FN3h)Zw6lO9}GVj&NKY~Zo%;R|91w0Uii=Oo#EHtZwxE~yBLn1dCySOeVaj6 zBah+F{~rvDj6aAALiT?5MvKF&f4HM&AJnB8g%on!G$ZUD1o#72<5R&D%Xk_V`%Iw{abLex-Q$B zYZP3Kmv^~8=TY!ln8c;Ew@hWBCcV5mEhx{|#MMRe{uV(#;G}&O8@xlz7}4P@Uq0O$ zoWZxxRn-p9Fgf*%!>G-1r$cz~h>6Ru`i4_C=&ee%E=ot3*yHQk?SX7&J$*ANgZg?< zbNOW;VnZIUc$t#EwRRWFGMp2%SenwIIjK(WsQjQiEBUD#_}l01*oUN-17!AMtu?zmIp)1aV?%geQ6U-O||L(0000< KMNUMnLSTZx$>pd3 literal 0 HcmV?d00001 diff --git a/plants_lib/textures/flower_pot.png b/plants_lib/textures/flower_pot.png new file mode 100644 index 0000000000000000000000000000000000000000..1c16464ceb8e86d29deae07c146999df3d557fb0 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!6#=yXs@#Xw?AcrO0(btiIVPik{pF~z5pDoGT z-GxB|1i2*>B!D8E1s;*b3=G`DAk4@xYYs?|y~NYkmHjpkn~0`qY|fIeKq1Kz*N775 z{M_8syb=cIqSVBa)D(sC%#sWRcTeAd@J2pyprW^)E{-7{=f>&5IS;&y(ntm2MY zTR9XrZoF_P$R$9D93i85tXeK7<6< z6u;XmKjq=B*zlGA=PuhOp5|q_Z^NUF_fCBIBiGTjMA&ZLmtQBhmuwHcdbH?ie_H>< z^TyX-UHwxkAd|Ml?%|H_DGd8KwivzNHcPaiZ|C84yjNq_`MgRief9sV!Ma)8dFIom zs46@aXk~fEV|+YWU^DyjZ;Kfc(l;)<`!jP12a|E~`&H-v-Q4?km*c_M-OHvsItZ=w u&yca@Ir}TH>Fj6oPd4sM^IIm$)-dp&^()=HdxI{};|!jzelF{r5}E*4QlKjU literal 0 HcmV?d00001 diff --git a/plants_lib/textures/flower_rose.png b/plants_lib/textures/flower_rose.png new file mode 100644 index 0000000000000000000000000000000000000000..4047d3ff25045e93dbb685eabd382c12df65e308 GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|QaxQ9Lo7}w zCrGd|^Gkg6oR^sJB!D8E1s;*b3=G`DAk4@xYYs?|y~NYkmHjpkn}`le;n9FDppayVYeb22 zer|4RUI~M9QEFmIYKlU6W=V#EyQgnJcq5-U&{lI#7sn8b(@Q7Wdow!<9IfBH-OFIs zW)8)T8!sp=^>FAE_`n@;Gc#8^Y+BOG@D1C(8AotLE!oudzsp35xl2OSq}*JrN=UET z@<{kuqx`h{)w>x?92r;S-h6+kckvAI#dkG&AEhta8+CE+&rH?{2i=6Xd=1W5t72Fq z+m{{mRzG{`o7b S7hwntX9iDKKbLh*2~7ZBfV|cK literal 0 HcmV?d00001 diff --git a/plants_lib/textures/flower_seaweed.png b/plants_lib/textures/flower_seaweed.png new file mode 100644 index 0000000000000000000000000000000000000000..5d34ec9da3f1d9ef73244f76990634e598526014 GIT binary patch literal 416 zcmV;R0bl-!P)YN5?qJWrjeaax6WiE?G0&vLauj{ zsNjzWrStU|%d8*)Yfc`NB!@=ygUe%4Non#rMY+5)j35B$2bTdf(?4A5yu}JdLvR>X zwy-0ND*F@CI)i1_4D7tcp)nhL+Qd3a$N3W6K$=G-`OVkQFUYIO-Pq;Oc$zKc9R|z8{kbzjIFg6sxgFB!D8E1s;*b3=G`DAk4@xYYs?|y~NYkmHjpkn}`8ldHR!+Kq1Kz*N775 z{M_8syb=cIqSVBa)D(sC%#sWRcTeAd@J2pypsjkIE{-7+KXMajgFR&gBBS zxdIobbx27$w=6o4k&&Bq`ljiuMVeB-`IV$*|CW|&nk94VmsHFt7G+b=GIaPuXFFRwimTo9G3Xt;2+bF$oBh7nny;R{k^gtyENeSv9(JiJ-lygH`p^qEcox4b|5ZQxm+AE4%=epL zOSyPNwy%D+o8e3Oj!7HSmQP?vp0P8-fa0FN3G6 KpUXO@geCyHj=u>2 literal 0 HcmV?d00001 diff --git a/plants_lib/textures/flower_viola.png b/plants_lib/textures/flower_viola.png new file mode 100644 index 0000000000000000000000000000000000000000..21e17bdedab64d71b333087d8513aecb6c130494 GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|+&o9GliBFv_q`eYoB7>)^pUXO@geCxvrY$c3 literal 0 HcmV?d00001 diff --git a/plants_lib/textures/flower_viola_pot.png b/plants_lib/textures/flower_viola_pot.png new file mode 100644 index 0000000000000000000000000000000000000000..db02084e2c9b3f9753c52673e0132f3bc848b123 GIT binary patch literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!6#=yXs@#Xw?AcrO0(btiIVPik{pF~z5pDoGT z-GxB|1i2*>B!D8E1s;*b3=G`DAk4@xYYs?|y~NYkmHjpkn}~s)59bj^ppayVYeb22 zer|4RUI~M9QEFmIYKlU6W=V#EyQgnJcq5-U&{j=P7sn8b(_1I)^PgSvI-Q$l-n^uS>%X7o%P^do1{wkhbLVU(ro(i)u3B zuJuM__hqa*d%2jwh{36e#f8&FB#zgxv_|zBE5iok@CWzKu$&N3P*A$D|NWy6zaow5 z1um`=`*G1&fiv7%WA5G)0kUiE*C=u@O=u|d$?~^%I$L;K?8lT$V8}9fy85}Sb4q9e E0GSZB6aWAK literal 0 HcmV?d00001 diff --git a/plants_lib/textures/flower_waterlily.png b/plants_lib/textures/flower_waterlily.png new file mode 100644 index 0000000000000000000000000000000000000000..0235d8499dfa133d595d653c2a551137ee8a9dbe GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|rhB?LhFF|V zPFP@G@%d0OIyjfp{-(LWL z?dr&Qpi5#yH3|oaqbqBB()oc0x}sfXHR9;XCd;98#wHG%0wQggH|tB=wLnr78qp#q zWmdx(n~J{eTDY8VxQizYt|>oy0FdlYic+zAuw;Mg_;D9c1p=5Jmq=3u*)c zfnhA6ZV6VmO2`EgeT~=Zpe1L2< z%*-49{8`}t-ThP*u`eIo15X#@9z0)7yu(0RvJY~Bp_1UQ29vMfK5Xr){qgT-nn_Dm zRm83W(vnU7<_fNS0}NxIAA!&5m_o!9!o)88{_-hY6~Zm<>N5bKZ91W2SgR z^;?*pyi5Q9>*ZGT1`LNhJdUud&xk2RR;0+w1jo%4d6`%k0HiBtz1#}Yl4A;SI$Y2; zogfX)XMXtRCERO}mONigc)A$(%rt&k6V0BgitM?vBE{3Qvj3oMIx#%sFXn)Pe4Y8Z QT>t<807*qoM6N<$g3$w*xc~qF literal 0 HcmV?d00001 diff --git a/plants_lib/textures/junglegrass_shortest.png b/plants_lib/textures/junglegrass_shortest.png new file mode 100644 index 0000000000000000000000000000000000000000..5f94d3840f5e8686128664b1292d70efd8b1949a GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4$}ele^Fu3V@O6yYrJ zh%9Dc;1&j9Muu5)B!GhKC7!;n?048Xc?`MjrXDf?3SIJaaSX9I{dR&a*P#G`mi@~c zO_~%q0yhdYWlUFFn;^WWsdujU2Zgu;=ZFVdQ&MBb@0KQs&@&Et; literal 0 HcmV?d00001 diff --git a/plants_lib/textures/poisonivy_climbing.png b/plants_lib/textures/poisonivy_climbing.png new file mode 100644 index 0000000000000000000000000000000000000000..52077e44afd14862a3309b347229a8bf90e0cc65 GIT binary patch literal 456 zcmV;(0XP1MP)7>!cgTA12=@>i*|3E$=Lm;EKd_cb1PM!q?ky5(%g;CpRV-5>N}E^dG%4O^qw>bqojWB|a^ z^YyPf*v*XH-%Yp%>Af5hWf5^L)H**fZzAycaMgJJ{Sp9N z-d`Y=0mU*PUALO=8GH`{zK7Lp_v0%H0D!m~7$?e8^MjWE0G2Nwth3kd>S}_*+sEh6Z0000p_??PHLhIP>{XE z)7O>#4lApWkkQZS@xOsWYdu{YLo7}wCrGe5iNR1n&x_a&PN3<+M&Xx(sQ6S5Qv=`<^1Iz=qO}`|}VG}%znNddNUcy$J z0U+;85cqCUr)vPfkV3)dts*&3GniJb(4ZeVWLh=wFlK@8l6*S=4`bFivVKI=s9KbL zyAJLpOVqSKPcvvLS_@X@ZC%Wu5y}G|o=?agwUM5`