diff --git a/assets/world/manifests/shrubs.ron b/assets/world/manifests/shrubs.ron
index ffefe8dfe6..61cc9d34b6 100644
--- a/assets/world/manifests/shrubs.ron
+++ b/assets/world/manifests/shrubs.ron
@@ -5,4 +5,28 @@
         specifier: "world.shrub.1",
         center: (6, 6, 2),
     ),
+    (
+        specifier: "world.shrub.jungle-bush-0",
+        center: (5, 5, 1),
+    ),
+    (
+        specifier: "world.shrub.jungle-bush-1",
+        center: (5, 5, 1),
+    ),
+    (
+        specifier: "world.shrub.jungle-bush-2",
+        center: (5, 5, 1),
+    ),
+    (
+        specifier: "world.shrub.jungle-bush-3",
+        center: (5, 5, 1),
+    ),
+    (
+        specifier: "world.shrub.jungle-bush-4",
+        center: (5, 5, 1),
+    ),
+    (
+        specifier: "world.shrub.jungle-bush-5",
+        center: (5, 5, 1),
+    ),
 ]
diff --git a/assets/world/shrub/jungle-bush-0.vox b/assets/world/shrub/jungle-bush-0.vox
new file mode 100644
index 0000000000..cd4980287e
Binary files /dev/null and b/assets/world/shrub/jungle-bush-0.vox differ
diff --git a/assets/world/shrub/jungle-bush-1.vox b/assets/world/shrub/jungle-bush-1.vox
new file mode 100644
index 0000000000..5da37d5e63
Binary files /dev/null and b/assets/world/shrub/jungle-bush-1.vox differ
diff --git a/assets/world/shrub/jungle-bush-2.vox b/assets/world/shrub/jungle-bush-2.vox
new file mode 100644
index 0000000000..06abd3b5d2
Binary files /dev/null and b/assets/world/shrub/jungle-bush-2.vox differ
diff --git a/assets/world/shrub/jungle-bush-3.vox b/assets/world/shrub/jungle-bush-3.vox
new file mode 100644
index 0000000000..933aafb5f7
Binary files /dev/null and b/assets/world/shrub/jungle-bush-3.vox differ
diff --git a/assets/world/shrub/jungle-bush-4.vox b/assets/world/shrub/jungle-bush-4.vox
new file mode 100644
index 0000000000..d702d67723
Binary files /dev/null and b/assets/world/shrub/jungle-bush-4.vox differ
diff --git a/assets/world/shrub/jungle-bush-5.vox b/assets/world/shrub/jungle-bush-5.vox
new file mode 100644
index 0000000000..0a5dfcc67f
Binary files /dev/null and b/assets/world/shrub/jungle-bush-5.vox differ
diff --git a/world/src/all.rs b/world/src/all.rs
index 59251a5e62..b5acc3bfb6 100644
--- a/world/src/all.rs
+++ b/world/src/all.rs
@@ -35,7 +35,7 @@ impl ForestKind {
             ForestKind::Cedar => 0.275..1.45,
             ForestKind::Pine => 0.2..1.4,
             ForestKind::Birch => 0.0..0.6,
-            ForestKind::Mangrove => 0.65..1.3,
+            ForestKind::Mangrove => 0.5..1.3,
             ForestKind::Swamp => 0.5..1.1,
             _ => 0.0..0.0,
         }
@@ -51,7 +51,7 @@ impl ForestKind {
             ForestKind::Cedar => -0.65..0.15,
             ForestKind::Pine => -1.8..-0.2,
             ForestKind::Birch => -0.7..0.25,
-            ForestKind::Mangrove => 0.4..1.6,
+            ForestKind::Mangrove => 0.35..1.6,
             ForestKind::Swamp => -0.6..0.8,
             _ => 0.0..0.0,
         }
diff --git a/world/src/layer/shrub.rs b/world/src/layer/shrub.rs
index 8b64402766..510457e46e 100644
--- a/world/src/layer/shrub.rs
+++ b/world/src/layer/shrub.rs
@@ -33,7 +33,11 @@ pub fn apply_shrubs_to(canvas: &mut Canvas, rng: &mut impl Rng) {
             shrub_cache.entry(wpos).or_insert_with(|| {
                 let col = info.col_or_gen(wpos)?;
 
-                if RandomPerm::new(seed).chance(37, col.tree_density * 0.3) {
+                if RandomPerm::new(seed).chance(37, col.tree_density * 0.3)
+                    && col.water_dist.map_or(true, |d| d > 8.0)
+                    && col.spawn_rate > 0.9
+                    && col.path.map_or(true, |(d, _, _, _)| d > 6.0)
+                {
                     Some(Shrub {
                         wpos: wpos.with_z(col.alt as i32),
                         seed,
diff --git a/world/src/layer/tree.rs b/world/src/layer/tree.rs
index dfbd12e2fa..41aa8e0838 100644
--- a/world/src/layer/tree.rs
+++ b/world/src/layer/tree.rs
@@ -369,14 +369,14 @@ impl TreeConfig {
             branch_child_len: 0.35,
             branch_child_radius: 0.5,
             branch_child_radius_lerp: true,
-            leaf_radius: 4.0 * log_scale..4.5 * log_scale,
-            leaf_radius_scaled: 0.0,
+            leaf_radius: 10.0 * log_scale..11.5 * log_scale,
+            leaf_radius_scaled: -8.0 * log_scale,
             straightness: 0.2,
             max_depth: 2,
             splits: 7.5..8.5,
-            split_range: 0.3..1.25,
+            split_range: 0.2..1.25,
             branch_len_bias: 0.5,
-            leaf_vertical_scale: 0.4,
+            leaf_vertical_scale: 0.35,
             proportionality: 0.8,
             inhabited: false,
             hanging_sprites: &[(0.00007, SpriteKind::Beehive), (0.015, SpriteKind::Liana)],