Links
Tags
Creators
Details
2.0-RELEASE
Compatibility
Changes
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.
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:jj9IEQao:hulrnA7D"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:jj9IEQao:hulrnA7D"
}

