82 lines
4.5 KiB
Java
82 lines
4.5 KiB
Java
package dev.celestialfox.spectrumsurvival.utils.events;
|
|
|
|
import dev.celestialfox.spectrumsurvival.game.managers.QueueManager;
|
|
import dev.celestialfox.spectrumsurvival.utils.classes.NPC;
|
|
import net.hollowcube.polar.PolarLoader;
|
|
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.entity.Player;
|
|
import net.minestom.server.event.GlobalEventHandler;
|
|
import net.minestom.server.event.player.AsyncPlayerConfigurationEvent;
|
|
import net.minestom.server.event.player.PlayerChatEvent;
|
|
import net.minestom.server.event.player.PlayerSpawnEvent;
|
|
import net.minestom.server.instance.*;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import java.io.IOException;
|
|
import java.nio.file.Path;
|
|
|
|
public class StartEvents {
|
|
static GlobalEventHandler globalEventHandler = MinecraftServer.getGlobalEventHandler();
|
|
private static final Logger logger = LoggerFactory.getLogger(StartEvents.class);
|
|
|
|
|
|
public static void registerChat() {
|
|
logger.debug("Registering Chat Listener");
|
|
globalEventHandler.addListener(PlayerChatEvent.class, event -> {
|
|
event.setCancelled(true);
|
|
|
|
// Get everything
|
|
String username = event.getPlayer().getUsername();
|
|
Instance instance = event.getInstance();
|
|
String message = event.getMessage();
|
|
|
|
// Send message to player's instance
|
|
instance.sendMessage(Component.text("§e" + username + "§7 ・ " + message));
|
|
});
|
|
}
|
|
public static void handleSpawn() {
|
|
logger.debug("Registering Spawn Listener");
|
|
InstanceContainer instanceContainer = createLobbyInstance();
|
|
globalEventHandler.addListener(AsyncPlayerConfigurationEvent.class, event -> {
|
|
final Player player = event.getPlayer();
|
|
player.setGameMode(GameMode.ADVENTURE);
|
|
event.setSpawningInstance(instanceContainer);
|
|
player.setRespawnPoint(new Pos(0, 66, 0, 180, 0));
|
|
});
|
|
globalEventHandler.addListener(PlayerSpawnEvent.class, event -> {
|
|
Player player = event.getPlayer();
|
|
|
|
if (event.isFirstSpawn()) {
|
|
player.sendMessage(
|
|
Component.text("Use §e/about game §rto read the rules.\n", NamedTextColor.GRAY)
|
|
.append(Component.text("Use §e/credits and /about us §rto know who made the game.\n", NamedTextColor.GRAY))
|
|
.append(Component.text("§ePunch §rthe Minestom NPC to §ajoin the queue!", NamedTextColor.GRAY)));
|
|
}
|
|
});
|
|
}
|
|
|
|
public static InstanceContainer createLobbyInstance() {
|
|
logger.debug("Creating Lobby Instance");
|
|
InstanceManager instanceManager = MinecraftServer.getInstanceManager();
|
|
InstanceContainer instanceContainer = instanceManager.createInstanceContainer();
|
|
try {
|
|
instanceContainer.setChunkLoader(new PolarLoader(Path.of("worlds/lobby.polar")));
|
|
} catch (IOException e) {
|
|
logger.error(e.getMessage());
|
|
}
|
|
|
|
NPC joinNPC = new NPC("Join the Queue",
|
|
"ewogICJ0aW1lc3RhbXAiIDogMTY3MjE3MTU1MjU1OCwKICAicHJvZmlsZUlkIiA6ICJiNTAwOGEyMGJkY2U0YjJlOTU5NWZlNzY2MDlmYjUzNiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNT1JJU3hTVE9QQkFOIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2RmZDIwOWU5ZTk2MGY4MDQ5ZDdlYWY0NTJmYzg1YmYwYmVjZjliMTUwYjQ2MzIwMTY2Mjg1YzdhYjEzMjMxN2UiCiAgICB9CiAgfQp9",
|
|
"yWIH6gVDRhgd/HwVYpRT87NBHf+q9EgYs/CYqIwnz5xXR22k29c7MTnaYFvWukbwF1FhWNilAyYzagSn/7ScvOpYn0RtyTWk656cwjzFSbTsSFzRwUl5f4mu1EeunYh8v5cZH27KTfAI7a9Q7ylXz7NoAbvaw056thXa7jHhLhFdPECnziRTnv9jDRwpoN/4jblmdOz5NCLtynubf8hwIwm9od18tXy4+gsV3aXS5+1MirpWDizqdozb9mtwzML9NYwVNpO2bRB9KYJ91VUWqxjfTy/q0xFQ1paolq4pp3tgvLXw0y+rdwCsCgh39JA4MKvIIJShww5xbqo4oFBRDj+/BI3+Y154Ess1004vE+iTRdt+az0v4y+evnOQLgryEr/36QzZOndpSFqYfKPl1MeUeZe1u4VDQJcgyJImg2TZJbG2WOmmTySWSEPrHcYC6c3Y9rVnQ6Zi4NxTe4e6/ZuDQVm14fuSUPd4Ll7/aIDyumHupBMMbBEa9qCmuZJPT5iWVlIGfzA2Dg/kea4Jw9WudUmiCYngB56HZEivDPniIxeGSTRFHMR2FfTKnLkxb2LDOvD+CgDWyr8cGy4xnB2hwdY2n28cCAYI5axj0qzCpHMl8Y90e2rKfX7NsUvyivbAVRwAsd/bWkkJoZ4/QStFEjV//81iNbuUz/4lFQA=");
|
|
joinNPC.setInstance(instanceContainer, new Pos(0.5, 66.5, -16.5));
|
|
|
|
QueueManager.lobbyInstance = instanceContainer;
|
|
|
|
return instanceContainer;
|
|
}
|
|
}
|