package dev.loki.loparkour.elytra.mode; import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.elytra.generator.TimeTrialGenerator; import dev.loki.loparkour.leaderboard.core.Leaderboard; import dev.loki.loparkour.mode.base.Mode; import dev.loki.loparkour.mode.base.ModeMessages; import dev.loki.loparkour.player.core.ParkourPlayer; import dev.loki.loparkour.session.core.Session; import dev.loki.loparkour.util.item.Item; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** * Elytra mode that resets the course after the target score is reached. */ public class TimeTrialMode implements Mode { private final Leaderboard leaderboard = new Leaderboard(getName(), Leaderboard.Sort.SCORE); @Override @NotNull public String getName() { return "timetrial"; } @Override @Nullable public Item getItem(String locale) { return Locales.getItem(locale, "play.elytra.timetrial"); } @Override @NotNull public Leaderboard getLeaderboard() { return leaderboard; } @Override public void create(Player player) { if (!ModeMessages.checkJoiningEnabled(player)) { return; } final ParkourPlayer pp = ParkourPlayer.getPlayer(player); if (pp != null && pp.session.generator != null && pp.session.generator.getMode() instanceof TimeTrialMode) { return; } player.closeInventory(); Session.create(TimeTrialGenerator::new, null, null, player); } }