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
- 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.
β Star this repo if you use it on your server!
- v1.0.0: Initial release
Thanks to all contributors!
- Always backup your config before updating
- Test on a local server first
Check that CounterStrikeSharp is properly installed.
Verify the map is in the supported list.
This plugin has minimal performance impact on your server.
Use the default config for most servers.
Enable probe mode for unsupported maps.
- Support for more maps
- Config GUI
- Auto-update feature
- Keep your server updated
- Use strong RCON passwords
- Monitor server logs
Before deploying to production:
- Test on a local server
- Verify all doors open correctly
- Check for console errors
Join our Discord for support and feature requests!
- CS2Retake - Full retake plugin
- CounterStrikeSharp - The framework
- v1.0.0 - Initial release
- v1.0.1 - Bug fixes and improvements
The plugin uses a modular architecture with separate handlers for doors, windows, vents, and other breakables.
See our wiki for detailed configuration options.
The plugin exposes console commands for server administrators. \n## Update 11\nDocumentation update 11 \n### Section 1\nContent for section 1