50 lines
2 KiB
Java
50 lines
2 KiB
Java
package dev.celestialfox.spectrumsurvival.game.managers;
|
|
|
|
import dev.celestialfox.spectrumsurvival.game.classes.GameLobby;
|
|
import dev.celestialfox.spectrumsurvival.game.classes.GameQueue;
|
|
import dev.celestialfox.spectrumsurvival.utils.Misc;
|
|
import net.kyori.adventure.text.Component;
|
|
import net.kyori.adventure.text.format.NamedTextColor;
|
|
import net.minestom.server.MinecraftServer;
|
|
import net.minestom.server.coordinate.Pos;
|
|
import net.minestom.server.entity.GameMode;
|
|
import net.minestom.server.instance.Instance;
|
|
import net.minestom.server.timer.TaskSchedule;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
public class ConversionManager {
|
|
private static final Logger logger = LoggerFactory.getLogger(ConversionManager.class);
|
|
public static GameLobby toGame(GameQueue queue) {
|
|
GameLobby game = new GameLobby();
|
|
game.setPlayers(queue.getPlayers());
|
|
game.genName();
|
|
GameManager.gameLobbies.put(game.getName(), game);
|
|
logger.debug("New GameLobby created: " + game.getName());
|
|
|
|
return game;
|
|
}
|
|
|
|
public static void fromGame(GameLobby game) {
|
|
Instance instance = game.getInstance();
|
|
String lobbyName = game.getName();
|
|
MinecraftServer.getSchedulerManager().buildTask(() -> {
|
|
logger.debug("Instance for GameLobby {} removed", lobbyName);
|
|
MinecraftServer.getInstanceManager().unregisterInstance(instance);
|
|
}).delay(TaskSchedule.seconds(5)).schedule();
|
|
|
|
if (!GameManager.gameLobbies.containsKey(lobbyName)) {
|
|
return;
|
|
}
|
|
|
|
GameManager.gameLobbies.remove(lobbyName);
|
|
logger.debug("GameLobby removed: " + lobbyName);
|
|
game.sendMessage(Component.text("Game ended!", NamedTextColor.RED));
|
|
game.setInstance(QueueManager.lobbyInstance, new Pos(0, 66, 0, 180, 0));
|
|
game.getPlayers().forEach(uuid -> {
|
|
Misc.getPlayer(uuid).setGameMode(GameMode.ADVENTURE);
|
|
Misc.getPlayer(uuid).setHealth(20);
|
|
});
|
|
GameManager.sendEndTitles(game);
|
|
}
|
|
}
|