CounterStrikeSharp plugin for CS2 Retake servers - Automatic map cleanup
BreakerAndOpenDoor is a CounterStrikeSharp plugin for Counter-Strike 2 Retake servers. It automates map cleanup at the start of each round by opening doors and breaking destructible elements (windows, vents, objects).
Retake servers need predictable map state every round. This plugin enforces a clear policy:
- open doors (never break them)
- break windows, vents, and other breakables
- support random door opening with stable per-round decisions
| Feature | Description | Configurable |
|---|---|---|
| 🚪 Door Opening | Automatically opens all doors | ✅ |
| 🪟 Window Breaking | Destroys all windows and glass | ✅ |
| 🕳️ Vent Breaking | Destroys air vents and ducts | ✅ |
| 📦 Other Objects | Breaks remaining destructible elements | ✅ |
- Door safety rule: door entities are always open-only targets
- Multi-pass execution: immediate + delayed + extra + late + freeze_end
- Robust fallback: multiple break inputs and vent/window fallback path
- Unknown probing: optional probe mode for map-specific dynamic entities
- Diagnostics: candidate dump command for fast map tuning
flowchart LR
A[Round Start] --> B[Immediate Pass]
B --> C[Delayed Pass]
C --> D[Extra Pass]
D --> E[Late Pass]
E --> F[Freeze-End Pass]
F --> G{Entity type}
G -->|Door| H[Open only\nnever destroyed]
G -->|Window / Vent / Breakable| I[Break]
I --> J{Break succeeded?}
J -->|No| K[Fallback break/remove input]
J -->|Yes| L[Done]
K --> L
- Active stable line:
v1.0.1 - If a tag fails in CI, it is replaced by a clean patch release and documented.
- Download the latest release: breakerandopendoor.zip
- Extract the archive
- Copy the
addonsfolder to your server'sgame/csgo/ - Restart the map or server
Click the button below to deploy automatically:
Configuration file:
addons/counterstrikesharp/configs/plugins/breakerandopendoor/breakerandopendoor.json
The plugin supports two practical modes:
- Minimal Production Mode (recommended)
- small config, lower maintenance
- relies on safe built-in defaults
- best for most servers
Default shipped config uses this mode:
{
"ConfigVersion": 1,
"EnableOpenDoors": true,
"DoorOpenChancePercent": 70,
"EnableBreakWindows": true,
"EnableBreakVents": true,
"EnableBreakOtherBreakables": true
}- Debug / Map Tuning Mode
- full control over timing, probing and classname lists
- useful when a custom map has stubborn vents/windows
Reference preset:
- docs/config-debug-map-tuning.json
| Option | Type | Default | Description |
|---|---|---|---|
EnableOpenDoors |
bool | true |
Enables door opening at round start |
DoorOpenChancePercent |
int | 100 |
Per-door open chance each round (0-100) |
EnableBreakWindows |
bool | true |
Enables window/glass breaking |
EnableBreakVents |
bool | true |
Enables vent/grate breaking |
EnableBreakOtherBreakables |
bool | true |
Enables other breakable objects |
- Pass timing:
EnableSecondPassAfterDelay,SecondPassDelaySeconds,AdditionalPassCount,AdditionalPassIntervalSeconds,EnableLateRoundStartPass,LateRoundStartDelaySeconds,EnableFreezeEndPass,FreezeEndPassDelaySeconds - Fallback control:
EnableKillFallbackForVentWindow,EnableRemoveFallbackForVentWindow - Probe control:
ProbeUnknownEntitiesForBreakInput,UnknownProbeMaxPerPass,UnknownProbeClassNameTokens - Diagnostics:
VerboseLogging,DebugDumpMaxLines - Entity lists:
DoorClassNames,BreakableClassNames,ExcludedClassNames
If your server already works, keep only Minimal Production Mode.
| Map | Doors | Windows | Vents | Status |
|---|---|---|---|---|
| de_mirage | ✅ | ✅ | ✅ | ✅ Tested |
| de_inferno | ✅ | ✅ | ✅ | ✅ Tested |
| de_nuke | ✅ | ✅ | ✅ | ✅ Tested |
| de_vertigo | ✅ | ✅ | ✅ | ✅ Tested |
| de_anubis | ✅ | ✅ | ✅ | ✅ Tested |
| de_ancient | ✅ | ✅ | ✅ | ✅ Tested |
- Counter-Strike 2 Dedicated Server
- Metamod:Source
- CounterStrikeSharp (runtime recommended)
Server console command:
css_bod_dump_break_candidates
This command displays candidate entities (index + classname) to help identify stubborn vents/windows on specific maps.
powershell -ExecutionPolicy Bypass -File scripts/build-release.ps1dotnet build src/BreakerAndOpenDoor/BreakerAndOpenDoor.csproj -c ReleaseOutput:
artifacts/release/breakerandopendoor/artifacts/release/breakerandopendoor.zip
breakerandopendoor/
├── src/
│ └── BreakerAndOpenDoor/ # Plugin source code
│ ├── Core/ # Business logic
│ ├── Config/ # Configuration
│ ├── Adapters/ # Adapters
│ └── Host/ # Entry point
├── addons/
│ └── counterstrikesharp/
│ └── configs/plugins/breakerandopendoor/ # Default config
├── scripts/
│ ├── build-release.ps1 # Build script
│ └── publish-github.ps1 # Publish script
└── .github/workflows/
├── ci.yml # CI/CD
└── release.yml # Automatic release
If someone needs to continue this plugin professionally, use:
- docs/MAINTAINER-HANDOVER.md
Release process summary:
- Merge tested changes to
main - Ensure CI passes
- Create semantic tag (
vMAJOR.MINOR.PATCH) - Push tag to trigger release workflow
git tag -a v1.0.2 -m "Release v1.0.2"
git push origin v1.0.2Contributions are welcome! Check out CONTRIBUTING.md for guidelines.
- Fork the project
- Create a branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open a Pull Request
See CHANGELOG.md for version history.
To report a vulnerability, see SECURITY.md.
Distributed under MIT License. See LICENSE for more information.
Plugin not loading — Check that CounterStrikeSharp is properly installed.
Doors not opening — Verify the map is in the supported list.
- CS2-RETAKE — Full retake plugin
- CounterStrikeSharp — The framework
⭐ Star this repo if you use it on your server!