Custom BattleRoyale

This mod is designed to create game modes with highly customizable and extremely compatible zones, loot generation, and game rules, blending with various gameplay styles to offer a rich selection of game modes, including but not limited to Battle Royale. This mod can also serve as an enhanced, higher-version alternative to the PUBGMC mod.
This mod needs to be installed on both the server and the client.
Main Features
High Customizability & Compatibility
- All configuration files support unlimited presets and hot-reloading, allowing for a one-click switch via in-game commands.
- The game mechanics are independent of vanilla teams, ensuring excellent compatibility with both vanilla and other mods.
- Coexists with Survival Mode: Game zones are invisible to survival players, and game players are not affected by survival players.
- Create complex game zones by freely combining zone shapes, positions, and functions.
- Build highly customized loot generation, including any items and entities from both vanilla and other mods.
Custom Zones
- 2D Shapes: Circle, Square, Rectangle, Flat-Top Hexagon, Pointy-Top Polygon, Star, Ellipse
- 3D Shapes: Sphere, Cube, Cuboid, Ellipsoid
- Zone Functions: Safe zone, refresh player's inventory, invulnerability zone, status effects particle generation, fireworks.
Custom Loot Generation
- Supports vanilla chest looting and can filter specific containers like furnaces using whitelists and blacklists.
- Nested generation types, repeat generation, and conditional generation.
- Generating precisely based on biomes, structures, and NBT regular expressions.
- Automatically clear items and entities generated in previous games.
- Supports reading container contents to automatically generate loot configuration files.
API and Datapack addon
Redefining datapack architecture design:
- Event-Driven Datapacks: Supports automatic listener registration via configuration files and dynamic registration of Mod events or Custom events via the Function Register API.
- Provides a rich set of API Commands for efficient retrieval of game information, eliminating the need for manual state maintenance.
- Enhanced entity selectors: Filter game players instantly without the need for manual tag management.
Mod Integrations
- JourneyMap: Draws game zones on the map.
- PlayerRevive: Sets the number of downs and adds consistent health loss for non-eliminated game players.
- Optional PUBGMC Command Compatibility: Allows command blocks using PUBGMC commands to work without modification.
- TaCZ: Provides out-of-the-box loot configuration example, and can disables guns in the PlayerRevive downed state
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 6d ago | 1 | ||||
| 6d ago | 1 | ||||
| 6d ago | 1 | ||||
| 6d ago | 1 | ||||
| 6d ago | 1 | ||||
| 6d ago | 1 | ||||
| 6d ago | 1 | ||||
| 6d ago | 1 | ||||
| 6d ago | 1 | ||||
| 6d ago | 1 | ||||
| 6d ago | 1 | ||||
| 6d ago | 1 | ||||
| 6d ago | 1 | ||||
| 6d ago | 1 | ||||
| 6d ago | 1 | ||||
| 1mo ago | 1 | ||||
| 1mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 |
- Removed the GUI background from loot spawner
- Fixed JourneyMap API 2.0 compatibility
- Fixed a deadlock when installing Immersive Vehicles #59
- Add compatibility for Custom Gun Continued interact key and projectile pass through block
For Developers:
- Updated
IMessage
- Update NeoForge environment version
- Fix render issue
- (Untested) Rendering is probably broken
- Add Iris Shaders compatibility
- Change constructor visibility of GameInfoRenderer, TeamInfoRenderer, SpectatePlayerRenderer, TeamMemberRenderer to protected for extensibility
- Change constructor visibility of BoostManager, FireworkManager, MutekiManager, ParticleManager to protected for extensibility
- Port to neoforge26.1.2.75
- Write full component to auto generated loot config via utility command
- Add regex filter to entity removal during loot generation
- Remove unnecessary network reflection overhead (slightly improves performance)
- Add log command to debug command
- Fix zone position in MurderMystery zone config
- Clarify mod license to GPL-3.0-or-later
1.20.1forge & 1.21.1neoforge
- Adjust Cbrg loot config to CBRG 0.5.5+
- Complete missing item component text debug (/cbr db get pi) in 1.21.6+
- Fix ItemEntry not write custom_data
- Additonally write/remove gameId to ItemEntity's item
- Add suggests to register command
- Add event hook before zone shape determination
- Add permission level to benchmark command
Fix:
- Fix crash on stopping server if deathmatch config not loaded yet
- Fix missing GamePlayerDeathFinishEvent (Issue #57)
- Send subtitle packet before title packet
API command:
- Add IGameSafeTeleporter to api command
- DeathMatch Api command return -1 if DMGameProcessManager not registered
- DeathMatch Api command return -2 if game player does not exist
Add multiple EventType:
- LIVING_HEAL_EVENT, LIVING_USE_TOTEM_EVENT
- ITEM_ENTITY_PICKUP_EVENT, ITEM_TOSS_EVENT, PLAYER_OPEN_CONTAINER_EVENT, PLAYER_CLOSE_CONTAINER_EVENT, CRITICAL_HIT_EVENT
- SERVER_CHAT_EVENT
- ITEM_TOOLTIP_EVENT
Config:
- Add MurderMystery example gamerule, spawn, zone, loot config
- Add showDeathMessages to gamerule config
- Add new Events to example AllFunction config
For developer:
- Decouple EffectManager from all
- Add showDeathMessages to gamerule config
- Read/write ItemEntity gameId by item
- Add suggests to register command
Fix:
- Fix crash on stopping server if deathmatch config not loaded yet
- Send subtitle packet before title packet
API command:
- Add IGameSafeTeleporter to api command
- DeathMatch Api command return -1 if DMGameProcessManager not registered
- DeathMatch Api command return -2 if game player does not exist
- Fix missing GamePlayerDeathFinishEvent (Issue #57)
For developer:
- Decouple EffectManager from all
- LIVING_HEAL_EVENT, LIVING_USE_TOTEM_EVENT
- ITEM_ENTITY_PICKUP_EVENT, ITEM_TOSS_EVENT, PLAYER_OPEN_CONTAINER_EVENT, PLAYER_CLOSE_CONTAINER_EVENT, CRITICAL_HIT_EVENT
- SERVER_CHAT_EVENT
- ITEM_TOOLTIP_EVENT
- Add event hook before zone shape determination
- Add new Events to example AllFunction config
- Add permission level to benchmark command
- Fix crash on loot spawner & entity spawner rendering
- Smooth zone rendering (no more jittering)
- Fix clearInventoryAtStart cannot be disabled
- Clear stats start system time at initGame
Config:
- Add (survival lobby) lobbyChangeGamemode to utility config
- Add example loot config of generate loot for specific block
- Add abort entry to loot config for performance in multi-regex combination
- Add allowNormalLootInGame to performance config
- Adjust render scale in example client render config
- Reduce zone transparency in example pubg zone configs
API command:
- Add PLAYER_RESPAWN_EVENT to EventType
- Add SURVIVAL_LOBBY_TELEPORT_EVENT, SURVIVAL_LOBBY_TELEPORT_FINISH_EVENT to CustomEventType
- Add stats record event hook
- Add Vec2 rotation support for Entity-based events
Performance:
- Optimize custom event dispatching, replace lock with CopyOnWrite snapshot
- Significant performance boost: ~45% faster than Forge event posting
- Add benchmark commands for unified event dispatching
- Add vanilla profiler to game tick
For developer:
- Decouple EventPoster from all
- Fix crash on loot spawner & entity spanwer rendering
- Optimize custom event dispatching, replace lock with CopyOnWrite snapshot
- Significant performance boost: ~45% faster than Forge event posting
- Add benchmark commands for unified event dispatching
- Add PLAYER_RESPAWN_EVENT to EventType
- Add SURVIVAL_LOBBY_TELEPORT_EVENT, SURVIVAL_LOBBY_TELEPORT_FINISH_EVENT to CustomEventType
- Add teleportChangeGamemode to utility config
- Add stats record event hook
- Add Vec2 rotation support for Entity-based events
Other:
- Clear stats start system time at initGame
For developer:
- Decouple EventPoster from all
- Fix softlock caused by unhandled PlayerRevive kill logic onGamePlayerDeath (Issue #55)
- Fix data consistency issues during frequent temp data saving
- Fix functions in function tags continuing to process after event cancellation
Function update:
- GameManager, teamManager api command store Vec3 as ListTag to make datapack happy
- Add client side check to CommandSourceStack creation
- Add main hand filter to PlayerInteractEvents for mcfunction dispatching (prevents double triggers)
- Remove player-source restriction for '/cbr game spectate' to allow datapack execution
- Add game, team, loot, utility command translation key (for CBR addon)
Other:
- Set function config example_all_event_tags.json to default if CBR addon loaded
- Add dimension check to '/cbr api gameLobbyManager isInLobbyRange'
- Add BlockEvent, PlayerInteractEvent to EventType
- Add Trigger command, add TRIGGER_EVENT to CustomEventType
- Correct teleportToLobbyInGame log when event canceled
- Add dimension check to '/cbr api gameLobbyManager isInLobbyRange'
- Add main hand filter to PlayerInteractEvents for mcfunction dispatching
- Remove '/cbr game spectate' isPlayer check to make datapack happy
- Add game, team, loot, utility command translation key (for CBR addon)
- Add BlockEvent, PlayerInteractEvent to EventType
- GameManager, teamManager api command store Vec3 as ListTag to make datapack happy
- Add client side check to CommandSourceStack creation
- Fix softlock caused by unhandled (PlayerRevive kill) onGamePlayerDeath (Issue #55)
- Immediately return if function not receive canceled event
- Correct teleportToLobbyInGame log when event canceled
- Correct debug permission check for non-player source
- Fix Forge crash issue
- Fix loot spawner render issue
- Add event-driven function execution with command source context
- Add function config in ./config/battleroyale/server/function
- Add game player related entity selector by '/cbr temp entitySelector'
- Remove & rebuild vanilla team via command
Wiki update:
- Recommend installing the Stylus extension for colorful titles
Gamerule config:
- Build vanilla team with configurable String.format
- Add freeToJoin to gamerule config
Add API commands:
- Add Algorithm, GameManager, FunctionManager api command
- Add TeleportScheduler to api command to teleport with AlgorithmApi
Other:
- Write gameId, configId to cloned EntitySpawner item
- Distinguish between items and entities in loot generator cleanup logs
- Add missing profile save translation key
- Reduce logo resolution to 256x256
- Never gonna give loot up (Add '/cbr utility lootconfig [id] toLootTable', but should use '/cbr loot [player]' instead)
For developer:
- Add ZoneManager to ZoneManager.ZoneContext
- Prefix '_' to isolate internal entropy via class fractaling
- Add freeToJoin to gamerule config
- Add game player related entity selector by '/cbr temp entitySelector'
- Fix CommandArg typo (maxHangTime, gameManager, teamManager)
API command:
- Add event suggestions to FunctionManager api command
- Allow forceJoinTeam specify team id