diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 592b2e42cc..15153521ed 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -179,6 +179,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
GLOBAL_LIST_INIT(plasteel_recipes, list ( \
new/datum/stack_recipe("AI core", /obj/structure/AIcore, 4, time = 50, one_per_turf = TRUE), \
new/datum/stack_recipe("bomb assembly", /obj/machinery/syndicatebomb/empty, 10, time = 50), \
+ new/datum/stack_recipe("plasteel keg", /obj/structure/custom_keg, 10, time = 50), \
new/datum/stack_recipe("micro powered fan assembly", /obj/machinery/fan_assembly, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \
new /datum/stack_recipe_list("crates", list( \
new /datum/stack_recipe("gray crate", /obj/structure/closet/crate, 5, time = 50, one_per_turf = 1, on_floor = 1), \
diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm
index 76e36a1725..3d6b90eb2d 100644
--- a/code/modules/hydroponics/fermenting_barrel.dm
+++ b/code/modules/hydroponics/fermenting_barrel.dm
@@ -73,3 +73,40 @@
icon_state = "barrel_open"
else
icon_state = "barrel"
+
+/obj/structure/custom_keg
+ name = "Plasteel Keg"
+ desc = "A large plasteel keg. You can use it to hold liquids. You may wanna label this, too."
+ icon = 'icons/obj/objects.dmi'
+ icon_state = "keg"
+ density = TRUE
+ anchored = FALSE
+ pressure_resistance = 2 * ONE_ATMOSPHERE
+ max_integrity = 300
+ var/open = FALSE
+
+/obj/structure/custom_keg/Initialize()
+ create_reagents(1000, DRAINABLE | AMOUNT_VISIBLE)
+ . = ..()
+
+/obj/structure/custom_keg/examine(mob/user)
+ . = ..()
+ . += "It is currently [open?"open, letting you pour liquids in.":"closed, letting you draw liquids from the tap."]"
+
+/obj/structure/custom_keg/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
+ open = !open
+ if(open)
+ DISABLE_BITFIELD(reagents.reagents_holder_flags, DRAINABLE)
+ ENABLE_BITFIELD(reagents.reagents_holder_flags, REFILLABLE)
+ to_chat(user, "You open [src], letting you fill it.")
+ else
+ DISABLE_BITFIELD(reagents.reagents_holder_flags, REFILLABLE)
+ ENABLE_BITFIELD(reagents.reagents_holder_flags, DRAINABLE)
+ to_chat(user, "You close [src], letting you draw from its tap.")
+ update_icon()
+
+/obj/structure/custom_keg/update_icon_state()
+ if(open)
+ icon_state = "keg_open"
+ else
+ icon_state = "keg"
diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi
index b9c891ddb9..6d29b8df8e 100644
Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ