1
0
Fork 0
MinestomGameJam/src/main/java/dev/celestialfox/spectrumsurvival/game/managers/ConversionManager.java
Andus a5c9aea14f Finishing touches and bugfixing
Some finishing touches and bug fixing before the end of the game jam
2024-08-14 03:09:28 +02:00

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);
}
}