Initial commit: LoParkour v1.1.0
This commit is contained in:
commit
aecb03ccf8
120 changed files with 9668 additions and 0 deletions
55
src/main/java/dev/loki/loparkour/mode/DefaultMode.java
Normal file
55
src/main/java/dev/loki/loparkour/mode/DefaultMode.java
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
package dev.loki.loparkour.mode;
|
||||
|
||||
import dev.loki.loparkour.config.Config;
|
||||
import dev.loki.loparkour.config.Locales;
|
||||
import dev.loki.loparkour.generator.ParkourGenerator;
|
||||
import dev.loki.loparkour.leaderboard.Leaderboard;
|
||||
import dev.loki.loparkour.player.ParkourPlayer;
|
||||
import dev.loki.loparkour.session.Session;
|
||||
import dev.efnilite.vilib.inventory.item.Item;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* The default parkour mode
|
||||
*/
|
||||
public class DefaultMode implements Mode {
|
||||
|
||||
private final Leaderboard leaderboard = new Leaderboard(getName(), Leaderboard.Sort.SCORE);
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public String getName() {
|
||||
return "default";
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Item getItem(String locale) {
|
||||
return Locales.getItem(locale, "play.single.default");
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public Leaderboard getLeaderboard() {
|
||||
return leaderboard;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void create(Player player) {
|
||||
if (!Config.CONFIG.getBoolean("joining")) {
|
||||
player.sendMessage("Joining is currently disabled.");
|
||||
return;
|
||||
}
|
||||
|
||||
ParkourPlayer pp = ParkourPlayer.getPlayer(player);
|
||||
if (pp != null && pp.session.generator != null && pp.session.generator.getMode() instanceof DefaultMode) {
|
||||
return;
|
||||
}
|
||||
|
||||
player.closeInventory();
|
||||
|
||||
Session.create(ParkourGenerator::new, null, null, player);
|
||||
}
|
||||
}
|
||||
38
src/main/java/dev/loki/loparkour/mode/Mode.java
Normal file
38
src/main/java/dev/loki/loparkour/mode/Mode.java
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
package dev.loki.loparkour.mode;
|
||||
|
||||
import dev.loki.loparkour.leaderboard.Leaderboard;
|
||||
import dev.efnilite.vilib.inventory.item.Item;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* Interface for all modes.
|
||||
* Every registered mode needs to inherit this class, because it needs identifying functions.
|
||||
*/
|
||||
public interface Mode {
|
||||
|
||||
/**
|
||||
* Method that gets called when a mode is clicked in the menu or joined using /parkour join.
|
||||
*
|
||||
* @param player The player.
|
||||
*/
|
||||
void create(Player player);
|
||||
|
||||
/**
|
||||
* @param locale The locale of the menu, used to adjust the name.
|
||||
* @return The item used in menus to show this mode. If this item is null, the mode won't be displayed.
|
||||
*/
|
||||
@Nullable Item getItem(String locale);
|
||||
|
||||
/**
|
||||
* @return The {@link Leaderboard} that belongs to this mode
|
||||
*/
|
||||
@Nullable Leaderboard getLeaderboard();
|
||||
|
||||
/**
|
||||
* @return The internal name used for this mode.
|
||||
*/
|
||||
@NotNull String getName();
|
||||
|
||||
}
|
||||
14
src/main/java/dev/loki/loparkour/mode/Modes.java
Normal file
14
src/main/java/dev/loki/loparkour/mode/Modes.java
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
package dev.loki.loparkour.mode;
|
||||
|
||||
import dev.loki.loparkour.api.Registry;
|
||||
|
||||
public class Modes {
|
||||
|
||||
public static DefaultMode DEFAULT;
|
||||
public static SpectatorMode SPECTATOR;
|
||||
|
||||
public static void init() {
|
||||
DEFAULT = (DefaultMode) Registry.getMode("default");
|
||||
SPECTATOR = (SpectatorMode) Registry.getMode("spectator");
|
||||
}
|
||||
}
|
||||
29
src/main/java/dev/loki/loparkour/mode/MultiMode.java
Normal file
29
src/main/java/dev/loki/loparkour/mode/MultiMode.java
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
package dev.loki.loparkour.mode;
|
||||
|
||||
import dev.loki.loparkour.session.Session;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* Class for modes featuring multiple players.
|
||||
*/
|
||||
public interface MultiMode extends Mode {
|
||||
|
||||
/**
|
||||
* Adds a player to this mode.
|
||||
*
|
||||
* @param player The player
|
||||
*/
|
||||
void join(Player player, Session session);
|
||||
|
||||
/**
|
||||
* Removes a player from this mode.
|
||||
*
|
||||
* @param player The player
|
||||
*/
|
||||
void leave(Player player, Session session);
|
||||
|
||||
/**
|
||||
* @return The max player count.
|
||||
*/
|
||||
int getMaxPlayers();
|
||||
}
|
||||
67
src/main/java/dev/loki/loparkour/mode/SpectatorMode.java
Normal file
67
src/main/java/dev/loki/loparkour/mode/SpectatorMode.java
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
package dev.loki.loparkour.mode;
|
||||
|
||||
import dev.loki.loparkour.config.Config;
|
||||
import dev.loki.loparkour.config.Locales;
|
||||
import dev.loki.loparkour.leaderboard.Leaderboard;
|
||||
import dev.loki.loparkour.menu.Menus;
|
||||
import dev.loki.loparkour.menu.ParkourOption;
|
||||
import dev.loki.loparkour.player.ParkourSpectator;
|
||||
import dev.loki.loparkour.player.ParkourUser;
|
||||
import dev.loki.loparkour.session.Session;
|
||||
import dev.efnilite.vilib.inventory.item.Item;
|
||||
import dev.efnilite.vilib.util.Strings;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class SpectatorMode implements Mode {
|
||||
|
||||
@Override
|
||||
public @NotNull String getName() {
|
||||
return "spectator";
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Item getItem(String locale) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Leaderboard getLeaderboard() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void create(Player player) {
|
||||
Menus.SPECTATOR.open(player);
|
||||
}
|
||||
|
||||
public void create(Player player, Session session) {
|
||||
if (!Config.CONFIG.getBoolean("joining")) {
|
||||
player.sendMessage(Strings.colour("<red><bold>Joining is currently disabled."));
|
||||
return;
|
||||
}
|
||||
if (!ParkourOption.SPECTATOR.mayPerform(player)) {
|
||||
player.sendMessage(Locales.getString(player, "other.no_do"));
|
||||
return;
|
||||
}
|
||||
|
||||
ParkourUser user = ParkourUser.getUser(player);
|
||||
ParkourSpectator spectator;
|
||||
|
||||
if (session.getPlayers().isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (user != null) {
|
||||
ParkourUser.unregister(user, false, false, false);
|
||||
spectator = new ParkourSpectator(player, session, user.previousData);
|
||||
} else {
|
||||
spectator = new ParkourSpectator(player, session, null);
|
||||
}
|
||||
|
||||
session.addSpectators(spectator);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue