Race icon

Race -----

Timed races on foot, by boat or with elytra. Build your tracks in-game, the timer does the rest.



ChatGPT Image 10 juin 2026, 23_12_15(2).png Capture d'écran 2026-06-21 093730.png
Race


Languages: English · Français

Build timed race tracks and run multiplayer races on foot, by boat or in an elytra: sign up, wait for the synchronized countdown, chain the checkpoints and chase the record.

✨ Features
  • Tracks built 100% in-game: a start, ordered checkpoints (the last checkpoint = the finish line), each with a configurable radius.
  • Three vehicle types — on foot, boat, or elytra (with a configurable number of rockets) — chosen per track in a settings GUI.
  • Multiplayer races: players sign up with /race join; the race auto-starts after a delay (or an admin forces it), with a synchronized countdown then a simultaneous GO.
  • Live HUD: chronometer + speed (km/h), a per-checkpoint title showing the time gap with the racer just ahead, and a "back to last checkpoint" compass.
  • Checkpoints required in order, or optional (reaching the finish is enough) — per track.
  • Records & leaderboard per track: best times, average time (cached, refreshed every 6h) and your personal rank, all shown by /race info.
  • Track preview: particles + holograms (green start, cyan checkpoints, orange finish), toggled with /race show and /race hide.
  • Settings GUI: rename, vehicle, rockets, checkpoints required/optional, spectator-on-finish, entity collisions on/off.
  • Rank money reward via Vault (works with any economy plugin): (racers - rank + 1) × coefficient.
  • Full FR/EN localization (lang/fr.yml, lang/en.yml).

Installation
  1. Drop Race-<version>.jar into the server's plugins/ folder.
  2. Restart the server (Paper 1.21+, Java 21). Optional soft-dependencies: PlaceholderAPI, Vault (+ any economy plugin) for placeholders and money rewards.
  3. config.yml, lang/fr.yml, lang/en.yml and tracks.yml are generated on first launch.

️ Usage

Admin — create & configure a track (100% in-game):
  1. /race create <name>
  2. Stand at the start, then /race setstart <name>
  3. /race cp add <name> [radius] for each checkpoint — the last one is the finish line
  4. /race settings <name> → pick the vehicle (on foot / boat / elytra), rockets and options
  5. Once complete (start + finish), the track is ready to race.

Player — race:
  1. Run /race list and pick a track.
  2. /race join <name> to sign up; the race starts after the countdown (or an admin's /race start).
  3. /race leave to forfeit.

Commands & Permissions
Command /race (alias /r). Permissions: race.play (default true) · race.admin (default op).

Players ( race.play):

Command Description
/race list List the tracks (opens the menu in-game)
/race join <name> Join / sign up for a race
/race leave Leave / forfeit the race
/race info <name> Track details (records, average, your best)
/race support Get the support Discord link


Admins ( race.admin):

Command Description
/race create <name> Create a track
/race delete <name> Delete a track
/race setstart <name> Set the start at your position
/race cp <add|move|delete|list> <name> [value] Manage a track's checkpoints (last = finish)
/race tp <name> Teleport to a track's start
/race settings <name> Settings menu (name, vehicle, rockets, options)
/race show <name> | /race hide Enable / hide the track preview
/race resettimes <name> Clear a track's times and record
/race start [name] | /race stop [name] Force an immediate start / stop the race
/race reload Reload the config and messages


⚙️ Configuration
Excerpt from config.yml (English keys & comments; only player-facing values follow the server language):
Code (Text):

# Message language: "fr" or "en" (files customizable in plugins/Race/lang/).
language: fr
prefix: "<gradient:#1e90ff:#00bfff><bold>Race</bold></gradient> <dark_gray>»</dark_gray> "
# Default radius (blocks) of a checkpoint / the finish line.
default-checkpoint-radius: 3.0
# Vault money reward by rank: (numberOfPlayers - rank + 1) * coefficient. 0 disables it.
reward-coefficient: 10.0
default-elytra-rockets: 16          # rockets given for an elytra race
auto-start-delay-seconds: 120       # auto-start delay after the first sign-up
countdown-seconds: 3                # start countdown (TP + release)
detection-interval-ticks: 2         # progress checks (checkpoints / finish)
checkpoint-gap-display-seconds: 1   # time-gap title duration (0 disables)
 
Compatibility
  • Vault (optional): rank money rewards on finish, with any Vault economy (EssentialsX, CMI…). Set reward-coefficient: 0 to disable.
  • PlaceholderAPI (optional): placeholders %race_in_race%, %race_record_<track>%, %race_active_track%, %race_track_count% for scoreboards, tablists and chat.
  • Standalone: runs on any Paper 1.21+ server — no other plugin required.

API
Loose coupling through the ServicesManager (no compile-time dependency on the Race jar):
Code (Text):

var reg = Bukkit.getServicesManager().getRegistration(RaceApi.class);
if (reg != null) {
    RaceApi api = reg.getProvider();
    api.getGames().forEach(g -> getLogger().info(g.displayName() + " : " + g.status()));
    api.join(player, "track1");
}
 
RaceApi exposes getGames(), join(player, id), isInGame(uuid) and leaveCommand(); each game is a RaceGame(id, displayName, status, players, joinable). Listen to the custom events:
Code (Text):

@EventHandler
public void onEnd(RaceEndEvent event) {
    getLogger().info("Race finished on " + event.getTrack() + " — winner: " + event.getWinner());
}
 
( RaceStartEvent exposes getTrack() / getPlayers().)

Contributing

━━━━━━━━━━━━━━━━━━━━​

Race (Français)

Langues : English · Français

Crée des parcours chronométrés et lance des courses multijoueurs à pied, en bateau ou en élytra : inscris-toi, attends le décompte synchronisé, enchaîne les checkpoints et bats le record.

✨ Fonctionnalités
  • Parcours créés 100 % en jeu : un départ, des checkpoints ordonnés (le dernier checkpoint = la ligne d'arrivée), chacun avec un rayon configurable.
  • Trois types de véhicule — à pied, en bateau ou en élytra (avec un nombre de fusées configurable) — choisis par parcours dans un menu de réglages.
  • Courses multijoueurs : on s'inscrit avec /race join ; la course démarre automatiquement après un délai (ou un admin la force), avec un décompte synchronisé puis un GO simultané.
  • HUD en direct : chronomètre + vitesse (km/h), un titre à chaque checkpoint affichant l'écart de temps avec le concurrent juste devant, et une boussole « retour au dernier checkpoint ».
  • Checkpoints obligatoires dans l'ordre, ou optionnels (atteindre l'arrivée suffit) — par parcours.
  • Records & classement par parcours : meilleurs temps, temps moyen (mis en cache, recalculé toutes les 6 h) et ta position personnelle, le tout via /race info.
  • Prévisualisation du parcours : particules + hologrammes (départ vert, checkpoints cyan, arrivée orange), activée avec /race show et /race hide.
  • Menu de réglages : renommer, véhicule, fusées, checkpoints obligatoires/optionnels, spectateur à l'arrivée, collisions entre entités activées/désactivées.
  • Récompense en argent au classement via Vault (fonctionne avec n'importe quelle économie) : (nbCoureurs - rang + 1) × coefficient.
  • Localisation FR/EN complète (lang/fr.yml, lang/en.yml).

Installation
  1. Déposer Race-<version>.jar dans le dossier plugins/ du serveur.
  2. Redémarrer le serveur (Paper 1.21+, Java 21). Dépendances optionnelles : PlaceholderAPI, Vault (+ une économie) pour les placeholders et les récompenses en argent.
  3. config.yml, lang/fr.yml, lang/en.yml et tracks.yml sont générés au premier lancement.

️ Utilisation

Admin — créer & configurer un parcours (100 % en jeu) :
  1. /race create <nom>
  2. Se placer au départ, puis /race setstart <nom>
  3. /race cp add <nom> [rayon] pour chaque checkpoint — le dernier est la ligne d'arrivée
  4. /race settings <nom> → choisir le véhicule (à pied / bateau / élytra), les fusées et les options
  5. Une fois complet (départ + arrivée), le parcours est prêt à être couru.

Joueur — courir :
  1. Lancer /race list et choisir un parcours.
  2. /race join <nom> pour s'inscrire ; la course démarre au décompte (ou via le /race start d'un admin).
  3. /race leave pour abandonner.

Commandes & Permissions
Commande /race (alias /r). Permissions : race.play (défaut true) · race.admin (défaut op).

Joueurs ( race.play) :

Commande Description
/race list Lister les parcours (ouvre le menu en jeu)
/race join <nom> S'inscrire à la course
/race leave Se désinscrire / abandonner
/race info <nom> Détail d'un parcours (records, moyenne, ton meilleur temps)
/race support Obtenir le lien du Discord de support


Admins ( race.admin) :

Commande Description
/race create <nom> Créer un parcours
/race delete <nom> Supprimer un parcours
/race setstart <nom> Définir le départ à ta position
/race cp <add|move|delete|list> <nom> [valeur] Gérer les checkpoints (le dernier = l'arrivée)
/race tp <nom> Se téléporter au départ d'un parcours
/race settings <nom> Menu de réglages (nom, véhicule, fusées, options)
/race show <nom> | /race hide Activer / masquer la prévisualisation
/race resettimes <nom> Effacer les temps et le record d'un parcours
/race start [nom] | /race stop [nom] Forcer le départ immédiat / arrêter la course
/race reload Recharger la config et les messages


⚙️ Configuration
Extrait de config.yml (clés & commentaires en anglais ; seules les valeurs affichées aux joueurs suivent la langue du serveur) :
Code (Text):

# Langue des messages : "fr" ou "en" (fichiers personnalisables dans plugins/Race/lang/).
language: fr
prefix: "<gradient:#1e90ff:#00bfff><bold>Race</bold></gradient> <dark_gray>»</dark_gray> "
# Rayon par défaut (blocs) d'un checkpoint / de l'arrivée.
default-checkpoint-radius: 3.0
# Récompense Vault au classement : (nbJoueurs - rang + 1) * coefficient. 0 désactive.
reward-coefficient: 10.0
default-elytra-rockets: 16          # fusées données pour une course en élytra
auto-start-delay-seconds: 120       # délai d'auto-démarrage après la 1re inscription
countdown-seconds: 3                # décompte de départ (TP + libération)
detection-interval-ticks: 2         # fréquence des vérifications (checkpoints / arrivée)
checkpoint-gap-display-seconds: 1   # durée du titre d'écart de temps (0 désactive)
 
Compatibilité
  • Vault (optionnel) : récompenses en argent au classement, avec n'importe quelle économie Vault (EssentialsX, CMI…). reward-coefficient: 0 pour les désactiver.
  • PlaceholderAPI (optionnel) : placeholders %race_in_race%, %race_record_<parcours>%, %race_active_track%, %race_track_count% pour scoreboards, tablists et chat.
  • Autonome : fonctionne sur tout serveur Paper 1.21+ — aucun autre plugin requis.

API
Couplage faible via le ServicesManager (aucune dépendance de compilation au jar de Race) :
Code (Text):

var reg = Bukkit.getServicesManager().getRegistration(RaceApi.class);
if (reg != null) {
    RaceApi api = reg.getProvider();
    api.getGames().forEach(g -> getLogger().info(g.displayName() + " : " + g.status()));
    api.join(player, "parcours1");
}
 
RaceApi expose getGames(), join(player, id), isInGame(uuid) et leaveCommand() ; chaque jeu est un RaceGame(id, displayName, status, players, joinable). Écouter les événements custom :
Code (Text):

@EventHandler
public void onEnd(RaceEndEvent event) {
    getLogger().info("Fin de course sur " + event.getTrack() + " — vainqueur : " + event.getWinner());
}
 
( RaceStartEvent expose getTrack() / getPlayers().)

Contribution
Resource Information
Author:
----------
Total Downloads: 38
First Release: Jun 13, 2026
Last Update: Today at 5:17 PM
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings