
Ice Boat Racing
A powerful plugin for your ice boat races
- Загрузки
- 424
- Подписчики
- 2
- Обновлён
- 10 августа 2026 г.
- Лицензия
- MIT
Опубликован 19 февраля 2026 г.
❄️ IceBoatRacing
A professional-grade Minecraft Paper plugin for competitive ice boat racing — precision checkpoints, live scoreboards, automatic track generation, mandatory pit stops, and full race management.
🎯 What Is This?
IceBoatRacing turns your Minecraft server into a competitive ice boat racing platform. Create races, design tracks, register boats, enforce pit stops, and run events with live timing — all in one plugin.
Built for servers running competitive racing events (like Grands Prix by Mini Jeux Entre Potes).
✨ Features
| Category | Features |
|---|---|
| Race Management | Interactive creation wizard · Prepare/start/end races · Configurable lap counts · Auto-end when last player finishes · Clean ranking with a bunch of info when the race ends |
| Checkpoints | Oriented rectangle that the racers cross to update the live scoreboard · Alternate bypass routes · Sector timing gates |
| AutoTrace | Drive/Walk one lap → plugin generates precise checkpoints automatically · Particle preview · Edit checkpoints before saving |
| Pit Stops | Mandatory (or not if set to 0), configurable pit-stop count per race · Timed pit boxes with a live countdown · Real F1 teams color themes (11 real F1 team gradients) · Automatic disqualification for racers who skip them |
| Live Scoreboard | Real-time sidebar that shows the current ranking |
| Race Lights | Optional 6-stage stained-glass starting lights (Brown → Red → Orange → Yellow → Lime → Green) synced with countdown |
| Car System | Register boats per player (all wood types, rafts, chest variants) · Custom names · Auto-spawn on prepare · Invulnerable |
| Multi-Language | English & French built-in · Extensible via YAML · MiniMessage and legacy color codes formatting (gradients and colors) |
| Storage | One YAML file per race · Easy backup/export-import |
📦 Installation
- Download the latest
.jar - Place it in your server's
plugins/folder - Restart the server
- Race.
⚙️ Configuration Highlights
Edit plugins/IceBoatRacing/config.yml:
language: en_US # en_US or fr_FR (add your own in lang/)
race:
allowRejoin: true # Let players rejoin mid-race after logout
racingGameMode: ADVENTURE # GameMode during race
enforceRacingGameMode: true
spectateOnFinish: true # Put finishers in spectator mode
removeCarWhenLoggingOut: false
lights:
enabled: false # Set true + configure from/to coords to enable
from: { x: 0, y: 0, z: 0 }
to: { x: 0, y: 0, z: 0 }
Tip: Race lights require a 3D region defined by
from/tocoordinates. These get filled with stained glass during the 5-second countdown.
Tip: Pit stop count and start rotation is set per-race, not globally — use
/race setPitStops <race> <amount>(defaults to 1).
⌨️ Commands
| Command | Description | Permission |
|---|---|---|
/race create |
Interactive race creation wizard | iceboatracing.race.create |
/race start [name] |
Start race with 5s countdown + lights | iceboatracing.command.race |
/race prepare [name] |
Spawn cars, teleport players, set Adventure mode | iceboatracing.command.race |
/race end [name] |
End race, send ranking and useful info | iceboatracing.command.race |
/race delete [name] |
Delete race permanently | iceboatracing.race.create |
/race setLapCount [name] <amount> |
View/change lap count | iceboatracing.command.race |
/race setPitStops [name] <amount> |
View/change required pit-stop count | iceboatracing.command.race |
/race setStartRotation [name] <amount> |
View/change start rotation | iceboatracing.command.race |
/checkpoint create <arguments> |
Create checkpoint from shovel selection | iceboatracing.command.checkpoint |
/checkpoint remove [race] [id] |
Remove checkpoint by ID or nearest to player | iceboatracing.command.checkpoint |
/checkpoint view <race> |
Toggle particle preview of all checkpoints | iceboatracing.command.checkpoint |
/checkpoint list [page] |
List all checkpoints (paginated, clickable) | iceboatracing.command.checkpoint |
/checkpoint autotrace start <race> [...] |
Begin recording a lap for AutoTrace | iceboatracing.command.checkpoint |
/checkpoint autotrace accept |
Save generated checkpoints to race | iceboatracing.command.checkpoint |
/checkpoint autotrace preview |
Toggle particle preview of generated checkpoints | iceboatracing.command.checkpoint |
/checkpoint autotrace sector |
Add sector gate at nearest preview checkpoint | iceboatracing.command.checkpoint |
/checkpoint autotrace resize |
Resize nearest preview checkpoint | iceboatracing.command.checkpoint |
/checkpoint autotrace add |
Add a checkpoint | iceboatracing.command.checkpoint |
/checkpoint autotrace delete |
Delete nearest preview checkpoint | iceboatracing.command.checkpoint |
/checkpoint autotrace cancel |
Cancel AutoTrace session | iceboatracing.command.checkpoint |
/checkpoint addAlternate <race> <id> |
Add an alternate checkpoint for a checkpoint (shovel selection) | iceboatracing.command.checkpoint |
/checkpoint clearAll <race> |
Delete all checkpoints (with confirmation) | iceboatracing.command.checkpoint |
/pitbox create <race> |
Interactive pit box creation wizard | iceboatracing.command.pitbox |
/pitbox list <race> |
List all pit boxes (clickable edit/color/TP/remove) | iceboatracing.command.pitbox |
/pitbox remove <race> <id> |
Remove a pit box | iceboatracing.command.pitbox |
/pitbox setAllowed <race> <id> <names|*> |
Change which players may use a pit box | iceboatracing.command.pitbox |
/pitbox setColor <race> <id> <color> |
Change a pit box's color theme | iceboatracing.command.pitbox |
/car create |
Register a boat for a player (interactive wizard) | iceboatracing.command.car |
/car list [page] |
List all cars (clickable TP/remove/owner) | iceboatracing.command.car |
/car remove <id> <race> |
Remove a car from a race | iceboatracing.command.car |
/car changeOwner <id> <race> <player> |
Change car owner | iceboatracing.command.car |
/ibr reload |
Reload config, languages, races from file | iceboatracing.command.plugin |
/ibr info |
Show some info | iceboatracing.command.plugin |
Aliases:
/ibr=/iceboatracing· Tab completion works for all subcommands, race names, and player names.
🔑 Permissions overview
| Permission | Description | Default |
|---|---|---|
iceboatracing.* |
All permissions | op |
iceboatracing.command.* |
All commands | op |
iceboatracing.command.race |
/race commands |
op |
iceboatracing.command.checkpoint |
/checkpoint commands |
op |
iceboatracing.command.pitbox |
/pitbox commands |
op |
iceboatracing.command.car |
/car commands |
op |
iceboatracing.command.plugin |
/ibr commands |
op |
Recommendation: Give staff
iceboatracing.*or specific children likeiceboatracing.command.car.
✅ Compatibility
| Requirement | Version |
|---|---|
| Minecraft | 1.21.4+ |
| Software | Paper |
| Java | 21 |
Notes:
- Paper is required — uses Paper-specific APIs (Brigadier commands, Adventure components). Spigot/Purpur/Folia are not supported.
- No required external dependencies — only Paper API (compile-only).
PacketEvents is optional, the plugin will run just like normal without it.
- Published on Modrinth and CurseForge.
❓ FAQ
Why does it require Paper instead of Spigot?
It uses Paper's Brigadier command API, Adventure text/title/sound/particle APIs, which is the most stable and modern server version.My boats face the wrong direction on start.
Use `/race setStartRotation ` to .AutoTrace missed a turn / generated checkpoints in wrong order.
Drive a clean, continuous lap without backtracking. Adjust `spacing` (default 3 blocks) — higher for long straights, lower for tight corners. Use `/checkpoint autotrace resize`/`delete`/`add` to fix individual gates before `/checkpoint autotrace accept`.Players get "Illegal GameMode!" in action bar.
The plugin enforces `racingGameMode` (default ADVENTURE) during races. Either disable `enforceRacingGameMode` or ensure your server doesn't force a different gamemode.What happens if a player skips a pit stop?
They're automatically disqualified when they cross the finish line without completing the race's required pit-stop count, and are listed separately at the bottom of the final standings marked `DSQ`.Can I make a pit box available to only one team?
Yes — `/pitbox setAllowed ` restricts a box to specific player name(s), or use `*` to allow anyone racing. Only one player can occupy a box at a time.Can I run multiple races at once?
Yes — each race tracks independently. Use the race name argument to target a specific one.How do I backup or move races to another server?
Copy the `plugins/IceBoatRacing/races/` folder (each `.yml` is a complete race, including its pit boxes and cars). Copy `config.yml` and `lang/` for full setup.Are chest boats and bamboo rafts supported?
Yes — all vanilla boat types including `*_CHEST_BOAT`, `BAMBOO_CHEST_RAFT`, and `PALE_OAK_BOAT` (1.21.4+). Just hold the item during `/car create`.🔗 Links
- Modrinth: modrinth.com/plugin/ibr
- CurseForge: curseforge.com/minecraft/bukkit-plugins/ice-boat-racing
- Source Code: github.com/mattmunichYT/IceBoatRacing
- Issues / Bug Reports: GitHub Issues
📄 License
MIT License — free for any use, including commercial servers, but proper credit is required. See LICENSE.
Made with ❄️ for the Minecraft racing community
Ченджлог
2.0-RELEASEРелиз26.1, 26.1.1, 26.2 · 10 августа 2026 г.
IceBoatRacing v2.0
A major update adding mandatory pit stops to races — full box detection, a per-team freeze-and-countdown sequence, and F1-team-themed visuals — plus disqualification handling for racers who skip them.
✨ Major Features
🅿️ Pit Box System
Racers can now be required to stop at a pit box mid-race, just like a real pit lane.
- New
PitBox/PitBoxManagerclasses: each race can define any number of pit boxes, stored in the samerace.ymlas checkpoints and cars. - Detection is folded directly into the existing checkpoint-crossing tick loop — no separate listener re-walking every racing boat.
- Entering an eligible box freezes the boat in place (velocity zeroed every tick) for a configurable duration — no early exit needed, since the freeze itself keeps the player inside the trigger zone.
- Adaptive title countdown (
5, 4, 3... Go!) synced to each box's configured duration, with a rising-pitch pling on completion — mirrors the existing race-start light sequence. - One occupant per box at a time; a box can be restricted to specific player names or opened to everyone (
*). - New
PitBoxCreator: a guided, step-by-step wand-based setup (name → location → duration → allowed players → color), following the same chat-driven flow asRaceCreator. - New
/pitbox create|list|remove|setAllowed|setColorcommands, with inline edit/color/remove/teleport buttons in/pitbox list.
🎨 Team-Themed Colors
Each pit box can be colored, including full gradients — not just solid colors.
- Preset color list rather than free-form hex input, so anyone setting up a box just types a name.
- Real F1 team livery gradients: McLaren, Mercedes, Red Bull, Ferrari, Williams, VCARB, Aston Martin, Haas, Alpine, Audi, and Cadillac.
- Plus solid basics (red/blue/green/gold) and a few extra gradients (the plugin's own ICE brand gradient, fire, rainbow).
- Colors apply live to the "BOX BOX" call and countdown title, so each team's stop feels distinct.
- Fully editable post-creation via
/pitbox setColor <race> <id> <color>.
🏆 Mandatory Stops & Disqualification
- Races now have a configurable required pit-stop count (
/race setPitStops, same pattern assetLapCount). - Racers who cross the finish line without completing the required number of stops are marked disqualified with an immediate broadcast notice.
- Final ranking now correctly reconstructs finish order from crossing order (previously relied on unordered map iteration) and lists disqualified racers separately at the bottom under a
DSQmarker, below all qualified finishers.
🌍 Localization
- Full
fr_FR/en_UScoverage for every new pit box message, command, and creation step.
🛠️ General / Technical
PitBoxManagermirrorsCheckpointManager's save/load conventions exactly, so pit box storage follows the same per-race config pattern as everything else.- Pit box task type is stored as an enum (
TIMEDfor now) rather than hardcoded, so future task types (e.g. skill-based stops) won't need a config migration. - Lowered the minimum supported Paper version to 1.21.4 — the version
registerCommand()was introduced in, and also the version Paper hard-forked from its former Spigot upstream on, making it effectively the floor for the current Paper API. Built and tested with Java 21, no errors.
📝 Notes
Pit boxes ship as a v1: timed stops only, mandatory, no early exit. Task variety (beyond a simple timer) and finer-grained enforcement (e.g. blocking the finish line itself rather than DSQ-ing after the fact) are natural next steps if you want to build on this.
2.0-BETA-2Бета26.1.1, 26.1.2, 26.2 · 8 августа 2026 г.
Ice Boat Racing 2.0-BETA-2
Bug fixes update
Downgraded Paper build and Java version to actually support 1.21.9 and later (and nothing changes on modern versions).
Added /checkpoint autotrace add.
Actually fixed /checkpoint autotrace resize (fr this time).
Added centerline preview in autotrace preview.
Updated /checkpoint create to work with planes.
Fixed CheckpointManager#getNearestCheckpoint (would cause a branch of /checkpoint remove to not work properly).
Updated some messages.
Position set messages now won't show it the position hasn't changed.
Checkpoint#getCenter now also supports BOX checkpoints (propably fixing a bunch of bugs btw).
RaceCreator's cancel operation now actually cancels.
Disclaimer
This is still a beta version of v2.0, so it will probably contain bugs. If you encounter any, please report them on GitHub (click me) (or the 'Report issues' button on the right of this plugin's page)
2.0-BETA-1Бета26.1.2, 26.2 · 7 августа 2026 г.
IceBoatRacing 2.0-BETA 1
Fixed a bunch of bugs including:
- Fixed
/checkpoint autotrace resize /checkpoint removenow supports new checkpoints- Fixed
/race setLapCount
Added automatic race load when loading a world gets loaded and saved when a world gets unloaded.
Full changelog on the previous version
2.0-BETAБета26.1.2, 26.2 · 6 августа 2026 г.
IceBoatRacing v2.0-BETA
A major update focused on multi-race support, a brand-new auto-trace checkpoint system, and a big pass on stability, translations, and race-finish feedback. This is a BETA release — core features are implemented and playable, but some older systems are still being polished and re-tested.
✨ Major Features
🏁 Multi-Race System
IBR now supports multiple simultaneous races instead of a single global race.
- New
Raceclass: every race (checkpoints, cars, sectors, data) is now scoped to its own race instance instead of being global. RaceManagercan load, save, and manage many races at once.- Cars, checkpoints, and sectors are all race-aware.
- Races can be started/ended/prepared directly from
Race.java, without needing to go throughRaceManager.
🧙 RaceCreator: Guided Race Setup
A new guided, step-by-step process for creating a race from scratch, replacing manual/scattered setup steps.
🛰️ Auto-Trace Checkpoint System
A brand new way to place checkpoints — record a lap and let IBR trace the track for you instead of manually placing every checkpoint with a wand.
- Full language/config support for auto-trace messages.
- Integrated directly into the
RaceCreatorguided flow. - New
/checkpoint view <Race>command to visualize all checkpoints of a race.
🌍 Localization
- Full French (
fr_FR) and English (en_US) language files, including translated error and ranking messages. - Auto-trace and checkpoint messages now support the language config system.
🏆 Ranking & Finish Stats
- Races now send a full ranking when they end, with proper error handling/logging.
- Players get a personal stats message when they finish a race, including best sector times (fixed a bug where these previously wouldn't display correctly).
🚤 Cars
- Added support for chest boat cars.
- Prevented players from creating more than one car per race.
- Fixed cars not deleting properly (config path bug).
- Fixed the car listener not stopping cars from moving before a race starts.
- Cars are now removed before respawning to prevent duplicate boats.
- Improved handling of cars when a player disconnects and reconnects mid-race (start location, logging, etc.).
🏎️ Races
- Races now automatically end when the last racer disconnects.
- Racing gamemode is now enforced and configurable, along with
spectateOnFinish, viaconfig.yml. - Added
/race setLapCount. - Added support for players disconnecting and reconnecting during an active race.
- Players can now skip a checkpoint if needed.
- Fixed
/race deletereading from the wrong race list. - Fixed race name lookups not supporting spaces.
🛠️ General / Technical
- Migrated the project from Maven to Gradle.
- Plugin version in
build.gradle.ktsis now kept in sync withpaper-plugin.yml. - Rewrote
README.md. - Added automatic reload when a world loads.
- Various dev quality-of-life improvements.
- Numerous bug fixes and project warning cleanups throughout (checkpoint/car commands, tab completion, sidebar scoring, sector/finish messages, and more).
📝 Notes
This is a BETA build — auto-trace and several reworked systems are still being play-tested. Feedback and bug reports are very welcome!
1.4-SNAPSHOT-2Альфа26.1, 26.1.1, 26.1.2 · 7 июня 2026 г.
Disclaimer: This is an alpha, as it doesn't contain any new groundbreaking feature.
- Removed LuckPerms dependency, as it wasn't used
- Limited to only 1 passengers per car during a race (otherwise racers could hop in other racer's cars)
- Added temporary ranking that will be sent in the console on race end (planning on implementing a better one)
- Racers will automatically be put in spectator mode when they finish the race
1.4-SNAPSHOTАльфа1.21.9, 1.21.10, 1.21.11 · 20 мая 2026 г.
Disclaimer: This is an alpha, as it doesn't contain any new groundbreaking feature.
- Added comments in the default config and language configs to make them easier to understand.
- Can now configure race lap count in config under
race.lapCount= The required laps to complete the race
1.3Релиз1.21.9, 1.21.10, 1.21.11 · 8 апреля 2026 г.
Additions
- Plugin now supports multiple languages
- Cars now support custom names -> Better support for the race cars texture pack
- Car rotation on race start is now customisable in config under the path
race.startRotation - Added race lights (like colored glass that change color during the countdown) - configurable in config under
race.lights.[...]
A bunch of fixes
- Fixed
/ibr reload(now actually reloads) - Race world is now set correctly
- Fixed
/ibrwhere prefix would show correctly - Config would sometimes not be saved
- And more...
1.2Релиз1.21.9, 1.21.10, 1.21.11 · 2 марта 2026 г.
Bug fixes
Комментарии
Загружаем…