package dev.loki.loparkour.elytra.obstacle; import dev.loki.loparkour.config.locale.Locales; 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 dev.loki.loparkour.player.service.UserRegistry; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** * Elytra mode with client-side obstacles to fly around. */ public class ObstacleMode implements Mode { private final Leaderboard leaderboard = new Leaderboard(getName(), Leaderboard.Sort.SCORE); @Override @NotNull public String getName() { return "obstacle"; } @Override @Nullable public Item getItem(String locale) { return Locales.getItem(locale, "play.elytra.obstacle"); } @Override @NotNull public Leaderboard getLeaderboard() { return leaderboard; } @Override public void create(Player player) { if (!ModeMessages.checkJoiningEnabled(player)) { return; } final ParkourPlayer pp = UserRegistry.getPlayer(player); if (pp != null && pp.session.generator() != null && pp.session.generator().getMode() instanceof ObstacleMode) { return; } player.closeInventory(); Session.create(ObstacleGenerator::new, null, null, player); } }