Files
MiniGames/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaGameMode.java
2025-11-26 15:39:19 +01:00

68 lines
1.8 KiB
Java

package net.knarcraft.minigames.arena.parkour;
import net.knarcraft.minigames.arena.ArenaGameMode;
import org.bukkit.configuration.serialization.ConfigurationSerializable;
import org.jetbrains.annotations.NotNull;
import java.util.HashMap;
import java.util.Map;
/**
* A representation of possible arena game-modes
*/
public enum ParkourArenaGameMode implements ConfigurationSerializable, ArenaGameMode {
/**
* The default game-mode. Failing once throws the player out.
*/
DEFAULT,
/**
* A hardcore game mode where no checkpoints are allowed
*/
HARDCORE,
;
/**
* Tries to match the correct game-mode according to the given string
*
* @param gameMode <p>The game-mode string to match</p>
* @return <p>The specified arena game-mode</p>
*/
@NotNull
public static ParkourArenaGameMode matchGameMode(@NotNull String gameMode) {
try {
return ParkourArenaGameMode.valueOf(gameMode.toUpperCase());
} catch (IllegalArgumentException exception) {
return ParkourArenaGameMode.DEFAULT;
}
}
@NotNull
@Override
public Map<String, Object> serialize() {
Map<String, Object> data = new HashMap<>();
data.put("name", this.name());
return data;
}
/**
* Deserializes the arena game-mode specified by the given data
*
* @param data <p>The data to deserialize</p>
* @return <p>The deserialized arena game-mode</p>
*/
@SuppressWarnings("unused")
@NotNull
public static ParkourArenaGameMode deserialize(@NotNull Map<String, Object> data) {
return ParkourArenaGameMode.valueOf((String) data.get("name"));
}
@Override
@NotNull
public ParkourArenaGameMode[] getValues() {
return ParkourArenaGameMode.values();
}
}