diff --git a/mods/ITEMS/mcl_core/nodes_climb.lua b/mods/ITEMS/mcl_core/nodes_climb.lua
index 4fa3adeb4..abdf37d02 100644
--- a/mods/ITEMS/mcl_core/nodes_climb.lua
+++ b/mods/ITEMS/mcl_core/nodes_climb.lua
@@ -145,6 +145,21 @@ minetest.register_node("mcl_core:vine", {
 		return itemstack
 	end,
 
+	-- If destroyed, also a “dependant” vine below it.
+	-- A vine is dependant if it hangs from this node and has no supporting block.
+	after_destruct = function(pos, oldnode)
+		local below = {x=pos.x, y=pos.y-1, z=pos.z}
+		local belownode = minetest.get_node(below)
+		if belownode.name == oldnode.name and belownode.param2 == belownode.param2 then
+			local dir = minetest.wallmounted_to_dir(belownode.param2)
+			local support = vector.add(below, dir)
+			local supportnode = minetest.get_node(support)
+			if not minetest.registered_nodes[supportnode.name].walkable then
+				minetest.remove_node(below)
+			end
+		end
+	end,
+
 
 	_mcl_blast_resistance = 1,
 	_mcl_hardness = 0.2,