All versions
0.0.2-alpha
Alpha
Extractrooms 0.0.2-alpha3 months ago 16
Compatibility
Minecraft: Java Edition
1.21.1
Platform
NeoForge
Supported environments
Client and server
Changes
Alpha 0.0.2 — 2026-07-18
Gameplay Changes
- Renamed the creative inventory tab from "Extractrooms Tab" to "Extractrooms"
- Gaping entities now have a 0.5% chance to spawn naturally with the name "fartnibbler"
- Added "fartnibbler" name tag easter egg for the Gaping: replaces its shriek with
gaping_fart.oggat randomised pitch, playsgaping_toot.oggat random pitch on successful attacks and when taking damage, and swaps its texture togaping_fart.png - Gaping now plays its shriek sound when it kills an entity; fartnibbler variant plays
gaping_fart.ogginstead - Renamed commands:
/extractrooms backrooms enterand/extractrooms backrooms leaveare now/extractrooms enterand/extractrooms leave - Reworked piston entry: the player must now occupy the piston head block itself to trigger entry, with two solid blocks in the piston's push direction — since pistons cannot physically push a player into a wall this simulates the squeeze; the 0.5-second window opens the moment the piston fires and is a one-shot event per extension
- Removed slot filler from the Extractrooms creative tab — the tab now shows only the 10 mod items
Bug Fixes
- Fixed a crash-recovery bug where a server crash at the exact moment of timer expiry could resurrect the expired run on reload, immediately killing the player again
- Fixed presence ticks only being saved at the 20-minute milestone — progress is now persisted once per second, preventing loss on unexpected shutdown
- Fixed re-entry exploit where a second entry trigger while already in a run would silently overwrite the player's return position, making escape impossible
- Fixed
/extractrooms entercausing a teleport loop when used on a player already inside the backrooms — entering from inside would capture the backrooms position as the return point - Fixed suffocation-noclip entry cancelling wall damage even when the backrooms dimension failed to load, leaving the player stuck at low health with damage permanently suppressed
- Fixed generated double chests only filling one half — the partner half is now located directly via
ChestBlock.getConnectedDirectioninstead of a loot-table scan that failed for NBT-loaded chests - Fixed the temporal compass being placed in a random chest slot, potentially overwriting a real item — it is now placed in the first available empty slot before the filler pass, guaranteeing it always lands without displacing loot
- Fixed the "player already has compass" check only scanning the 36 main inventory slots — offhand and armor slots are now included
- Fixed the compass LODESTONE_TRACKER component persisting after leaving the backrooms, causing the needle to spin uselessly in the overworld
- Fixed the loot item pool being reused across world sessions in singleplayer
- Fixed Gaping entities spawning naturally in the overworld
- Fixed Gaping attack animation firing on a missed hit
- Fixed Gaping shield-disable missing the block thud sound —
SHIELD_BLOCKis now played manually at the point of disable since the shield is stripped beforehurt()is called - Fixed Smiler
FindDarkGoalcompeting withChargeGoalwhen both conditions were active simultaneously - Fixed dead
LookAtPlayerGoalon the Smiler being permanently unreachable due to a direct yaw override intick() - Fixed the timer HUD rendering over the death screen and open inventory screens
- Fixed camera shake persisting into the death screen and overworld after a dimension change
- Fixed glaring lamp buzz sound being recreated one tick later than intended due to an off-by-one in the grace period check
- Fixed
RenderSystem.disableScissor()call corrupting scissor rects used by vanilla UI elements such as the chat box and boss bars - Fixed subtle timer HUD animation jitter caused by two separate
System.currentTimeMillis()calls that could straddle a millisecond boundary - Fixed a potential crash in room template selection when all template weights summed to zero
- Fixed double chests giving multiple temporal compasses — compass placement now only runs on the primary half; the partner half is filled without triggering the compass logic
- Fixed temporal compass silently not being placed when chest item density was high enough to leave no filler slots — compass is now placed before the filler pass, guaranteeing it always gets a slot
- Fixed double chest partner half not being filled due to vanilla's loot table unpacking being triggered during the fill, wiping the chest's item storage before items could be written
- Fixed chest fill logic calling
getItem()internally to detect empty slots, which triggeredunpackLootTableand could corrupt container state; slot tracking now uses a boolean array instead - Fixed block entities rendering through the Smiler — the emissive render type used for backrooms visibility does not write to the depth buffer; the main pass now uses
entityCutoutNoCull(depth-writing) with a brightness EyesLayer on top to preserve the full-brightness appearance
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:1DBmt9a2:DhbfBqJB"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:1DBmt9a2:DhbfBqJB"
}

