diff --git a/code/game/objects/structures/fluff.dm b/code/game/objects/structures/fluff.dm
index f4849995a8b..f1d7f9b0aac 100644
--- a/code/game/objects/structures/fluff.dm
+++ b/code/game/objects/structures/fluff.dm
@@ -260,6 +260,16 @@
density = TRUE
anchored = TRUE
deconstructible = FALSE
+ max_integrity = 80
+
+/obj/structure/fluff/hedge/attacked_by(obj/item/I, mob/living/user)
+ if(opacity && HAS_TRAIT(user, TRAIT_BONSAI) && I.get_sharpness())
+ to_chat(user,"You start trimming \the [src].")
+ if(do_after(user, 3 SECONDS,target=src))
+ to_chat(user,"You finish trimming \the [src].")
+ opacity = FALSE
+ else
+ return ..()
/obj/structure/fluff/hedge/opaque //useful for mazes and such
opacity = TRUE
diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm
index fb21c0fc03f..67f10e3c859 100644
--- a/code/modules/cargo/packs.dm
+++ b/code/modules/cargo/packs.dm
@@ -1700,7 +1700,7 @@
/obj/item/seeds/bamboo,
/obj/item/seeds/eggplant/eggy,
/obj/item/seeds/rainbow_bunch,
- /obj/item/seeds/rainbow_bunch,
+ /obj/item/seeds/shrub,
/obj/item/seeds/random,
/obj/item/seeds/random)
crate_name = "exotic seeds crate"
diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm
index ad4ee7f026b..6e0498b68fd 100644
--- a/code/modules/hydroponics/grown/misc.dm
+++ b/code/modules/hydroponics/grown/misc.dm
@@ -261,3 +261,35 @@
/obj/item/food/grown/aloe/microwave_act(obj/machinery/microwave/M)
new /obj/item/stack/medical/aloe(drop_location(), 2)
qdel(src)
+
+/obj/item/seeds/shrub
+ name = "pack of shrub seeds"
+ desc = "These seeds grow into hedge shrubs."
+ icon_state = "seed-shrub"
+ species = "shrub"
+ plantname = "Shrubbery"
+ product = /obj/item/grown/shrub
+ lifespan = 40
+ endurance = 30
+ maturation = 4
+ production = 6
+ yield = 2
+ instability = 10
+ growthstages = 3
+ reagents_add = list()
+
+/obj/item/grown/shrub
+ seed = /obj/item/seeds/shrub
+ name = "shrub"
+ desc = "A shrubbery, it looks nice and it was only a few credits too. Plant it on the ground to grow a hedge, shrubbing skills not required."
+ icon_state = "shrub"
+
+/obj/item/grown/shrub/attack_self(mob/user)
+ var/turf/player_turf = get_turf(user)
+ if(player_turf?.is_blocked_turf(TRUE))
+ return FALSE
+ user.visible_message("[user] begins to plant \the [src]...")
+ if(do_after(user, 8 SECONDS, target = user.drop_location(), progress = TRUE))
+ new /obj/structure/fluff/hedge/opaque(user.drop_location())
+ to_chat(user, "You plant \the [src].")
+ qdel(src)
diff --git a/icons/obj/hydroponics/growing.dmi b/icons/obj/hydroponics/growing.dmi
index 4312e3fe3fb..9ef27f934d9 100644
Binary files a/icons/obj/hydroponics/growing.dmi and b/icons/obj/hydroponics/growing.dmi differ
diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi
index 20622b7bfbe..b8027b8230c 100644
Binary files a/icons/obj/hydroponics/harvest.dmi and b/icons/obj/hydroponics/harvest.dmi differ
diff --git a/icons/obj/hydroponics/seeds.dmi b/icons/obj/hydroponics/seeds.dmi
index 9b713f83865..c1b1adb1add 100644
Binary files a/icons/obj/hydroponics/seeds.dmi and b/icons/obj/hydroponics/seeds.dmi differ