From 9bd5249c2d67e4ccf3135f85ab9e18a372d43490 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Wed, 10 Sep 2014 17:26:35 -0400 Subject: [PATCH] import bas080's vines-and-rope mod --- vines/depends.txt | 2 + vines/init.lua | 361 ++++++++++++++++++++++ vines/readme.txt | 43 +++ vines/textures/new/bottomvine.png | Bin 0 -> 441 bytes vines/textures/new/sidevine.png | Bin 0 -> 537 bytes vines/textures/new/vinesdead.png | Bin 0 -> 386 bytes vines/textures/new/vineslive.png | Bin 0 -> 363 bytes vines/textures/old/vines_vine2.png | Bin 0 -> 447 bytes vines/textures/old/vines_vine_rotten2.png | Bin 0 -> 463 bytes vines/textures/shears.png | Bin 0 -> 378 bytes vines/textures/vines_item.png | Bin 0 -> 359 bytes vines/textures/vines_root.png | Bin 0 -> 441 bytes vines/textures/vines_rope.png | Bin 0 -> 244 bytes vines/textures/vines_rope_end.png | Bin 0 -> 251 bytes vines/textures/vines_side.png | Bin 0 -> 537 bytes vines/textures/vines_side_rotten.png | Bin 0 -> 521 bytes vines/textures/vines_vine.png | Bin 0 -> 363 bytes vines/textures/vines_vine_rotten.png | Bin 0 -> 386 bytes vines/textures/vines_willow.png | Bin 0 -> 316 bytes vines/textures/vines_willow_rotten.png | Bin 0 -> 310 bytes 20 files changed, 406 insertions(+) create mode 100644 vines/depends.txt create mode 100644 vines/init.lua create mode 100644 vines/readme.txt create mode 100644 vines/textures/new/bottomvine.png create mode 100644 vines/textures/new/sidevine.png create mode 100644 vines/textures/new/vinesdead.png create mode 100644 vines/textures/new/vineslive.png create mode 100644 vines/textures/old/vines_vine2.png create mode 100644 vines/textures/old/vines_vine_rotten2.png create mode 100644 vines/textures/shears.png create mode 100644 vines/textures/vines_item.png create mode 100644 vines/textures/vines_root.png create mode 100644 vines/textures/vines_rope.png create mode 100644 vines/textures/vines_rope_end.png create mode 100644 vines/textures/vines_side.png create mode 100644 vines/textures/vines_side_rotten.png create mode 100644 vines/textures/vines_vine.png create mode 100644 vines/textures/vines_vine_rotten.png create mode 100644 vines/textures/vines_willow.png create mode 100644 vines/textures/vines_willow_rotten.png diff --git a/vines/depends.txt b/vines/depends.txt new file mode 100644 index 0000000..d1473e1 --- /dev/null +++ b/vines/depends.txt @@ -0,0 +1,2 @@ +default +plants_lib diff --git a/vines/init.lua b/vines/init.lua new file mode 100644 index 0000000..b4638c2 --- /dev/null +++ b/vines/init.lua @@ -0,0 +1,361 @@ +--[[TODO + ropebox rope break results in bottom rope dissapearing and bottom drop rope node to appear at the new bottom + and rope does not drop anything!!!! +]] + +local mod_name = "vines" +local average_height = 12 +local spawn_interval = 90 +local vines_group = {attached_node=1,vines=1,snappy=3,flammable=2,hanging_node=1} +-- Nodes +minetest.register_node("vines:rope_block", { + description = "Rope", + sunlight_propagates = true, + paramtype = "light", + tile_images = { + "default_wood.png^vines_rope.png", + "default_wood.png^vines_rope.png", + "default_wood.png", + "default_wood.png", + "default_wood.png^vines_rope.png", + "default_wood.png^vines_rope.png", + }, + drawtype = "cube", + groups = {choppy=2,oddly_breakable_by_hand=1}, + after_place_node = function(pos) + local p = {x=pos.x, y=pos.y-1, z=pos.z} + local n = minetest.get_node(p) + if n.name == "air" then + minetest.add_node(p, {name="vines:rope_end"}) + end + end, + after_dig_node = function(pos, node, digger) + local p = {x=pos.x, y=pos.y-1, z=pos.z} + local n = minetest.get_node(p) + while n.name == 'vines:rope' do + minetest.remove_node(p) + p = {x=p.x, y=p.y-1, z=p.z} + n = minetest.get_node(p) + end + if n.name == 'vines:rope_end' then + minetest.remove_node(p) + end + end +}) + +minetest.register_node("vines:rope", { + description = "Rope", + walkable = false, + climbable = true, + sunlight_propagates = true, + paramtype = "light", + drop = "", + tile_images = { "vines_rope.png" }, + drawtype = "plantlike", + groups = {flammable=2, not_in_creative_inventory=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}, + }, + on_destruct = function() + + end, +}) + +minetest.register_node("vines:rope_end", { + description = "Rope", + walkable = false, + climbable = true, + sunlight_propagates = true, + paramtype = "light", + drop = "", + tile_images = { "vines_rope_end.png" }, + drawtype = "plantlike", + groups = {flammable=2, not_in_creative_inventory=1}, + sounds = default.node_sound_leaves_defaults(), + after_place_node = function(pos) + yesh = {x = pos.x, y= pos.y-1, z=pos.z} + minetest.add_node(yesh, {name="vines:rope"}) + end, + selection_box = { + type = "fixed", + fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}, + }, +}) + +minetest.register_node("vines:side", { + description = "Vine", + walkable = false, + climbable = true, + drop = "", + sunlight_propagates = true, + paramtype = "light", + paramtype2 = "wallmounted", + tile_images = { "vines_side.png" }, + drawtype = "signlike", + inventory_image = "vines_side.png", + groups = vines_group, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "wallmounted", + }, + after_dig_node = function(pos, oldnode, oldmetadata, user) + local wielded if user:get_wielded_item() ~= nil then wielded = user:get_wielded_item() else return end + if 'vines:shears' == wielded:get_name() then + local inv = user:get_inventory() + if inv then + inv:add_item("main", ItemStack(oldnode.name)) + end + end + end +}) + +minetest.register_node("vines:side_rotten", { + description = "Vine", + walkable = false, + climbable = false, + drop = "", + sunlight_propagates = true, + paramtype = "light", + paramtype2 = "wallmounted", + tile_images = { "vines_side_rotten.png" }, + drawtype = "signlike", + inventory_image = "vines_side.png", + groups = {snappy = 3,flammable=2, hanging_node=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "wallmounted", + }, +}) + +minetest.register_node("vines:willow", { + description = "Vine", + walkable = false, + climbable = true, + drop = "", + sunlight_propagates = true, + paramtype = "light", + paramtype2 = "wallmounted", + tile_images = { "vines_willow.png" }, + drawtype = "signlike", + inventory_image = "vines_willow.png", + groups = vines_group, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "wallmounted", + }, + after_dig_node = function(pos, oldnode, oldmetadata, user) + local wielded if user:get_wielded_item() ~= nil then wielded = user:get_wielded_item() else return end + if 'vines:shears' == wielded:get_name() then + local inv = user:get_inventory() + if inv then + inv:add_item("main", ItemStack(oldnode.name)) + end + end + end +}) + +minetest.register_node("vines:willow_rotten", { + description = "Vine", + walkable = false, + climbable = false, + sunlight_propagates = true, + paramtype = "light", + drop = "", + paramtype2 = "wallmounted", + tile_images = { "vines_willow_rotten.png" }, + drawtype = "signlike", + inventory_image = "vines_willow.png", + groups = {snappy = 3,flammable=2, hanging_node=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "wallmounted", + }, +}) + +minetest.register_node("vines:root", { + description = "Vine", + walkable = false, + climbable = true, + sunlight_propagates = true, + paramtype = "light", + tile_images = { "vines_root.png" }, + drawtype = "plantlike", + inventory_image = "vines_root.png", + groups = {vines=1,snappy = 3,flammable=2, hanging_node=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}, + }, +}) + +minetest.register_node("vines:vine", { + description = "Vine", + walkable = false, + climbable = true, + sunlight_propagates = true, + drop = "", + paramtype = "light", + tile_images = { "vines_vine.png" }, + drawtype = "plantlike", + inventory_image = "vines_vine.png", + groups = vines_group, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-0.3, -1/2, -0.3, 0.3, 1/2, 0.3}, + }, + after_dig_node = function(pos, oldnode, oldmetadata, user) + local wielded if user:get_wielded_item() ~= nil then wielded = user:get_wielded_item() else return end + if 'vines:shears' == wielded:get_name() then + local inv = user:get_inventory() + if inv then + inv:add_item("main", ItemStack(oldnode.name)) + end + end + end +}) + +minetest.register_node("vines:vine_rotten", { + description = "Rotten vine", + walkable = false, + climbable = true, + drop = "", + sunlight_propagates = true, + paramtype = "light", + tile_images = { "vines_vine_rotten.png" }, + drawtype = "plantlike", + inventory_image = "vines_vine_rotten.png", + groups = {snappy = 3,flammable=2, hanging_node=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-0.3, -1/2, -0.3, 0.3, 1/2, 0.3}, + }, +}) + +--ABM +minetest.register_abm({ + nodenames = {"vines:vine", "vines:side", "vines:willow"}, + interval = 300, + chance = 8, + action = function(pos, node, active_object_count, active_object_count_wider) + if minetest.find_node_near(pos, 5, "group:tree") == nil then + walldir = node.param2 + minetest.add_node(pos, {name=node.name.."_rotten", param2 = walldir}) + end + end +}) + +minetest.register_abm({ + nodenames = {"vines:vine", "vines:side", "vines:willow"}, + interval = 300, + chance = 2, + action = function(pos, node, active_object_count, active_object_count_wider) + local p = {x=pos.x, y=pos.y-1, z=pos.z} + local n = minetest.get_node(p) + if n.name == "air" then + walldir = node.param2 + minetest.add_node(p, {name=node.name, param2 = walldir}) + end + end +}) + +minetest.register_abm({ + nodenames = {"vines:rope_end"}, + interval = 1, + chance = 1, + drop = "", + action = function(pos, node, active_object_count, active_object_count_wider) + local p = {x=pos.x, y=pos.y-1, z=pos.z} + local n = minetest.get_node(p) + --remove if top node is removed + if n.name == "air" then + minetest.set_node(pos, {name="vines:rope"}) + minetest.add_node(p, {name="vines:rope_end"}) + end + end +}) +--Craft +minetest.register_craft({ + output = 'vines:rope_block', + recipe = { + {'', 'default:wood', ''}, + {'', 'vines:side', ''}, + {'', 'vines:side', ''}, + } +}) + +minetest.register_craftitem("vines:vines", { + description = "Vines", + inventory_image = "vines_item.png", +}) +--spawning +plantslib:spawn_on_surfaces({ + avoid_nodes = {"vines:vine"}, + avoid_radius = 5, + spawn_delay = spawn_interval, + spawn_plants = {"vines:vine"}, + spawn_chance = 10, + spawn_surfaces = {"default:dirt_with_grass","default:dirt"}, + spawn_on_bottom = true, + plantlife_limit = -0.9, +}) + +plantslib:spawn_on_surfaces({ + avoid_nodes = {"vines:vine", "vines:side"}, + avoid_radius = 3, + spawn_delay = spawn_interval, + spawn_plants = {"vines:side"}, + spawn_chance = 10, + spawn_surfaces = {"group:leafdecay"}, + spawn_on_side = true, + near_nodes = {"default:water_source", "default:jungletree"}, + near_nodes_size = 10, + near_nodes_vertical = 5, + near_nodes_count = 1, + plantlife_limit = -0.9, +}) + +plantslib:spawn_on_surfaces({ + spawn_plants = {"vines:willow"}, + spawn_delay = spawn_interval, + spawn_chance = 3, + spawn_surfaces = {"moretrees:willow_leaves"}, + spawn_on_side = true, + near_nodes = {"default:water_source"}, + near_nodes_size = 2, + near_nodes_vertical = 5, + near_nodes_count = 1, + plantlife_limit = -0.9, +}) + +--Shears jojoa1997's shears +minetest.register_tool("vines:shears", { + description = "Shears", + inventory_image = "shears.png", + wield_image = "shears.png", + stack_max = 1, + max_drop_level=3, + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=0, + groupcaps={ + snappy={times={[3]=0.2}, maxwear=0.05, maxlevel=3}, + wool={times={[3]=0.2}, maxwear=0.05, maxlevel=3} + } + }, +}) + +minetest.register_craft({ + output = 'vines:shears', + recipe = { + {'', 'default:steel_ingot', ''}, + {'default:stick', 'default:wood', 'default:steel_ingot'}, + {'', '', 'default:stick'}, + } +}) + +print("[Vines] Loaded!") diff --git a/vines/readme.txt b/vines/readme.txt new file mode 100644 index 0000000..0228a77 --- /dev/null +++ b/vines/readme.txt @@ -0,0 +1,43 @@ + __ __ ___ __ _ _______ _______ +| | | || | | | | || || | +| |_| || | | |_| || ___|| _____| +| || | | || |___ | |_____ +| || | | _ || ___||_____ | + | | | | | | | || |___ _____| | + |___| |___| |_| |__||_______||_______| + +BY: bas080 +DESCRIPTION: Vines and ropebox +VERSION: 2.2.1 +LICENCE: WTFPL +FORUM: http://forum.minetest.net/viewtopic.php?id=2344 + +Changelog +--------- +2.2.1 +* Also spawn on leaves that are near jungletree +* Uses default wood texture +* Drops actual vines +* Changed craft + +2.2 +* Spawns on all leaves that are near water + +2.1 +* Removed rope(end) from creative inventory + +2.0 +* Root vines texture and node (no spawn) +* Side vines spawn on leaves +* Willow vines spawns on moretrees willow leaves +* Ropebox after_dig_node re-defined + +1.5 +* Added side vines +* Uses plant_lib api +* Original vines do not spawn anymore but are still there. + +1.0 +* Vines spawn beneath leave nodes +* Has rotten and non rotten vines +* Ropebox with craft diff --git a/vines/textures/new/bottomvine.png b/vines/textures/new/bottomvine.png new file mode 100644 index 0000000000000000000000000000000000000000..c92bb85901f02c035b9dd65f46e13252e587f65d GIT binary patch literal 441 zcmV;q0Y?6bP)e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00ALML_t(I%k7fAO2beXhM!Z6 zO+gH_CPOHJ5*(yO%%B~`JqXU;hga5{5Qi*glB$G~A)$rVwmEIV;~*)u>E8wTjvt4I z_dMT6(|5>o+j438jsm#5x#IfrLb1c2!ow6q4_(=XoB5z?Nkmeyb_XG|v( zWG3mxiP#EQ&(q^QFK>}r1)R1GF<;CGJJEgsfNNVgbz3F<0amRlUKbyv!LabI#Ey*R z469ZJAPt5~KZgPoK++!oDAO}k*og{_kJblG-{Dv*GkX48Hw}h|OU$OzENy6@a#_{08Zwi+G!+41ClaP-sN8{G(U(3B0&M%Q_i)bY)$ZLw)QiQ5UIxIa j+oJcG6prZs4u10k>r0WsAskm>*c02y>e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00DtXL_t(I%gvI(YEwZJhQAY= zVJtBn)1VS0i&z@4MOqQvxe$DWzJM#iC-4b;3tvQV;qHQ{xU&Qox0foHG)ylyFpjjx zP3GFfg$uiIRs;W>e}4Y+3BcCV+xWaz>kNRnVMl|HgepprmGsB%4-JsXn}XKE=XdGd z>5|T1zu(-8tmJP;QUah!VY>$FjQG56Oi~KlHO=ph!To1rt&Zkmozd@~XDl9yb%x$n zR{@z#szyt5MOM-RsE+2cxxJymN31gvd}KZi>hqd+uRh6->Zb-Dal?)TA32NXdKS+C zF1Z8iOlluD?1;J6)(@}02*B>asL=o!JsBt<5xps!!w9!rsx>>iAkIJmKMT{}0gN|Ru7dqYnSPYG3& z;G?$J*SKO@Qe-8MUhL?};VFRlyw>*m8i0KJIK89}9>3hv{ b|CxhdRU{LG2>iKB00000NkvXXu0mjfN#yCQ literal 0 HcmV?d00001 diff --git a/vines/textures/new/vinesdead.png b/vines/textures/new/vinesdead.png new file mode 100644 index 0000000000000000000000000000000000000000..d001ec9ad2d9dc0b8e1d66258edf0024d141785e GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)1FsiVU*((%V>oBAf*t zk;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vt<8iyHfh%-A_VA;}Wgh!W@g+}zZ>5(ej@)Wnk1 z6ovB4k_-iRPv3y>Mm}+%qF0_Sjv*GO=LT)$YcdeAxwqyV*TEweB`ex?{NSD|`^Sqt zecvI8)Pw{h4&xm&1m<_oitrqM;A7hRk7{a$Bky*TG~?Rt&fAA+aE dUReBxoBAf*t zk;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vt<8i>grH%vW20LXst}5hc#~xw)x%B@E6*sfi`2 zDGKG8B^e6tp1uL$jeO!jMVCEY978Nl&kfqh)odWLXOH}aP^Kn}l9kQf|0gbtzp42D zqN?+*k_k?V7NRA&?IkN!k4Yrub5-hpzZc8*W6>+G+g-;FIlfpY+Pikwr*ik>ml^*r z66JkSweR5kNk49At#sU@w_r({<@qq)bt2oRedh7XI`*0=o=Uu%rF zn|+^E$FOvbH9u#fYe4B!J$)zX9I02;8Px#24YJ`L;xWGHUJ*q3mJ+4000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyk= z0uMVuqH6^J00BQqL_t(I%cYZ{Zo@DThX1ollF*R>C#nWaf+nq~8ZF-xuxA*k)IG<- z`V0e6@(|TfM@s^xE-@$>O+qGlpmCbGj#g{uvzo5R}ui+&ed6g@^CySI^YEks-m&Fl!p_OY}LRE902vupg#=&)V5${ z(iZ~&|GN9OUT)hMu(*Gg$fXOG#73cm&ji!Cn9W002ovPDHLkV1n8ivDE+o literal 0 HcmV?d00001 diff --git a/vines/textures/old/vines_vine_rotten2.png b/vines/textures/old/vines_vine_rotten2.png new file mode 100644 index 0000000000000000000000000000000000000000..11b5474c659acc3f7fa0a40bce3a4c8ee97d7b11 GIT binary patch literal 463 zcmV;=0WkiFP)Px#24YJ`L;xEABLEq&6HS!>000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyk= z0ucZt=)L{`00B=)L_t(I%bilOO2beTJ@-LEGG|HyfoFy;U0m`3`G-PQ3I0I3`2lY2 zyRDREspR$qQT-X=2kMXDz9&8dhHwhn$fnHVK7{x@v|z0)RNOXnB36<%wa341MT~ zU9FE=l>z`JvbTV{`!zRX7&8Ef#nmem52&u1{y&(G!FAQpL=tWuKF}t?-xMrwbJhJm zGS#qrw}%(F-1#!e=a`pDuh&1y|ookb%gt{o)H( zB`LgFTg9l&ZIGhjtOO9wXz8wat|;wz4H3AJ&AX5C#_n!=>m zQaAbUo9~yu|6}+sa+P_r;N`>rlo=k>?p^A~uyo3_ASaH-yJ@AuM>bBDOny=+S9AaP z_ruyF4bftYdn!i#OxFU3ll5 zVp&(gxuzGxX04peR=04)y{<(L5^Yipk1W)7l|Fx~^823WoX^iROG=BjztXE?Xj<37 U?qs*r2N+5Wp00i_>zopr0Lp!mwEzGB literal 0 HcmV?d00001 diff --git a/vines/textures/vines_item.png b/vines/textures/vines_item.png new file mode 100644 index 0000000000000000000000000000000000000000..f02bc653ddbf503bb2e02c7e9f7c2c0f42a7b354 GIT binary patch literal 359 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)qXdhYK~m|jDL^5~64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF5}o-U3d7N_q98S*t72z(Bem3Y9(!y{|daB4#PhakC2jjLph zN={5rf5Nuyb%3mwrb5U{Z{5_+l;dSQf7oxmQ>lJumbfa&C-hWz%zL%TlRhi4GZds) z$a@?WImaH9?)-m&r^CtVvy~Y(^a}Rzh=vqA@m%pXOY)aBe zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00ALML_t(I%k7fAO2beXhM!Z6 zO+gH_CPOHJ5*(yO%%B~`JqXU;hga5{5Qi*glB$G~A)$rVwmEIV;~*)u>E8wTjvt4I z_dMT6(|5>o+j438jsm#5x#IfrLb1c2!ow6q4_(=XoB5z?Nkmeyb_XG|v( zWG3mxiP#EQ&(q^QFK>}r1)R1GF<;CGJJEgsfNNVgbz3F<0amRlUKbyv!LabI#Ey*R z469ZJAPt5~KZgPoK++!oDAO}k*og{_kJblG-{Dv*GkX48Hw}h|OU$OzENy6@a#_{08Zwi+G!+41ClaP-sN8{G(U(3B0&M%Q_i)bY)$ZLw)QiQ5UIxIa j+oJcG6prZs4u10k>r0WsQL70(Y)*K0-AbW|YuPgfkRpFi7sn8b)5$3Zc>h^PNE&c__-teV1UWbA zW;6o9#7346@>wV9HD;%Lus?8FY?FVdQ&MBb@042yxod5s; literal 0 HcmV?d00001 diff --git a/vines/textures/vines_rope_end.png b/vines/textures/vines_rope_end.png new file mode 100644 index 0000000000000000000000000000000000000000..a95048a35b2d8fd0ace94dfc0b8de5399fa76c8c GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkEh^PNE&c__-teV1UWbAW;6o9#7346@>wV9 zHD;%Lus?8FY?pckZzQEmbg^|I+(RRi)!+&Rh)-iax`njxgN@xNAH1SK# literal 0 HcmV?d00001 diff --git a/vines/textures/vines_side.png b/vines/textures/vines_side.png new file mode 100644 index 0000000000000000000000000000000000000000..4245711358fea610a99750ae145617212260ade0 GIT binary patch literal 537 zcmV+!0_OdRP)Askm>*c02y>e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00DtXL_t(I%gvI(YEwZJhQAY= zVJtBn)1VS0i&z@4MOqQvxe$DWzJM#iC-4b;3tvQV;qHQ{xU&Qox0foHG)ylyFpjjx zP3GFfg$uiIRs;W>e}4Y+3BcCV+xWaz>kNRnVMl|HgepprmGsB%4-JsXn}XKE=XdGd z>5|T1zu(-8tmJP;QUah!VY>$FjQG56Oi~KlHO=ph!To1rt&Zkmozd@~XDl9yb%x$n zR{@z#szyt5MOM-RsE+2cxxJymN31gvd}KZi>hqd+uRh6->Zb-Dal?)TA32NXdKS+C zF1Z8iOlluD?1;J6)(@}02*B>asL=o!JsBt<5xps!!w9!rsx>>iAkIJmKMT{}0gN|Ru7dqYnSPYG3& z;G?$J*SKO@Qe-8MUhL?};VFRlyw>*m8i0KJIK89}9>3hv{ b|CxhdRU{LG2>iKB00000NkvXXu0mjfN#yCQ literal 0 HcmV?d00001 diff --git a/vines/textures/vines_side_rotten.png b/vines/textures/vines_side_rotten.png new file mode 100644 index 0000000000000000000000000000000000000000..87e4360f81f10706705a212b0cd22dcc34ea5c80 GIT binary patch literal 521 zcmV+k0`~ohP)e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00D7HL_t(I%gvL)N*qBDhQAuu zrjcc67Ll;X9ySXLAxQL~HxGi3;0x?2uaGD3Ve$yM1Vd4Y6al)*)(H)UYwqcMN*}-$`5-Z(wekU*t*L@T*tf%G*wIS+y}Pqq#smVPkxT| z+js{)C;-wW_2^x|+rac>oSB|rE^x4zbNubgqXO?j)TP3^Al`oBAf*t zk;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vt<8i>grH%vW20LXst}5hc#~xw)x%B@E6*sfi`2 zDGKG8B^e6tp1uL$jeO!jMVCEY978Nl&kfqh)odWLXOH}aP^Kn}l9kQf|0gbtzp42D zqN?+*k_k?V7NRA&?IkN!k4Yrub5-hpzZc8*W6>+G+g-;FIlfpY+Pikwr*ik>ml^*r z66JkSweR5kNk49At#sU@w_r({<@qq)bt2oRedh7XI`*0=o=Uu%rF zn|+^E$FOvbH9u#fYe4B!J$)zX9I02;8oBAf*t zk;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vt<8iyHfh%-A_VA;}Wgh!W@g+}zZ>5(ej@)Wnk1 z6ovB4k_-iRPv3y>Mm}+%qF0_Sjv*GO=LT)$YcdeAxwqyV*TEweB`ex?{NSD|`^Sqt zecvI8)Pw{h4&xm&1m<_oitrqM;A7hRk7{a$Bky*TG~?Rt&fAA+aE dUReBx~|TZ7_u0mrMvphOHqFk z-ZLs$ooRniI<-tprEpMDoIclvuB=7P45#y}KMKg>e)OP|s#o+1c K=d#Wzp$Py0uX(co literal 0 HcmV?d00001 diff --git a/vines/textures/vines_willow_rotten.png b/vines/textures/vines_willow_rotten.png new file mode 100644 index 0000000000000000000000000000000000000000..a8f43420b55198de6a852b6556d3ea369a1dd5c1 GIT binary patch literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)Cl9BI;eqKJZUKc3d%8G=Se#ByaA02ZiRXW)Ovt~* z-NrAH#M7Og$=q0Q;KS^GM*Sb(*NN_SiJyF=K4#kip7xX9O+Eh{&*PF~_S)R~F^b`O zO+qtMUV0LzvRVmibb0;1^C}^|ml@V1mH@@OC;a=5ct55e?lH; zvV+KhX?z!wIhH5>zqj?#H#WuhirR-Hxpy35kezb<+uw8rNrA`iNtX^b@^bO;G4gLv zQ#(}I8W82~wYK8$f)(#rmF=p}#r|U4&cKj4r