- Add ParkourGenerator.selectBlockData() hook (forced course material); BlockSelector checks it first; SingleDuelsGenerator overrides to use the player's color (16 concrete colors) and forces only DEFAULT block type - Elytra sub-modes: SpeedDemonGenerator (max-speed score), MinSpeedGenerator (min-speed check, reset on 6 slow ticks), TimeTrialGenerator (score cap), CloseGenerator (FLAT rings); + SpeedDemon/MinSpeed/TimeTrial/Close modes, registration, locales play.elytra.*, config mode-settings.* - Config.getDouble(path, default) + ConfigAccessor overload - checkstyle 0/0, PMD 0, build green
55 lines
1.6 KiB
Java
55 lines
1.6 KiB
Java
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);
|
|
}
|
|
}
|