Untitled
unknown
java
a year ago
2.9 kB
7
Indexable
public final class PlayerSpawnLocationListener implements Listener { @EventHandler public void onPlayerSpawnLocation(PlayerSpawnLocationEvent event) { Player player = event.getPlayer(); String username = player.getName(); CachedUser cachedUser = UserManager.getCachedUser(username).orElse(null); debug("Attempting to set spawn location for: " + username + ", cachedUser: " + cachedUser); if (cachedUser != null) { Arena.byGameId(cachedUser.getGameId()).ifPresentOrElse(arena -> { debug("Setting player: " + username + "'s spawn to: " + arena + ", " + arena.isFull() + ", " + arena.getState()); if (cachedUser.isTargeted()) { BukkitUtils.getPlayer(cachedUser.getTarget()) .ifPresentOrElse(onlineTarget -> event.setSpawnLocation(onlineTarget.getLocation()), () -> event.setSpawnLocation(arena.getInfo().getSpectatorLocation())); } else if (!arena.isFull() && arena.getState() == GameState.WAITING) { event.setSpawnLocation(arena.getInfo() .getWaitingInfo() .getSpawn() .randomizeHorizontal(1.0)); } else { moveToLobby(player); } }, () -> moveToLobby(player)); } else { Result<Team> teamByPlayer = Team.byRejoinPlayer(player); if (teamByPlayer.isPresent()) { debug("Setting player: " + username + "'s spawn to: " + teamByPlayer.get().getArena() + ", " + teamByPlayer.get().getInfo().getColor()); event.setSpawnLocation(teamByPlayer.get().getArena().getInfo().getSpectatorLocation()); } else { Team.byRejoinSpectator(username).ifPresentOrElse( teamBySpec -> { debug("Setting player: " + username + "'s spawn to " + teamBySpec.getArena() + ", " + teamBySpec.getInfo().getColor()); event.setSpawnLocation(teamBySpec.getArena().getInfo().getSpectatorLocation()); }, () -> moveToLobby(player)); } } debug("Final spawn location of player " + username + " is: " + event.getSpawnLocation()); } private void moveToLobby(Player player) { debug("PlayerSpawnLocationListener moveToLobby(): " + player.getName()); if (!player.hasPermission(Permissions.FORCE_JOIN)) { player.sendMessage(ChatColor.RED + "Unexpected error in join, please try again"); Scheduler.runTaskLater(() -> BedWarsProtocol.getConnection().write(new PacketSB17_LobbyRequest(player.getName())), 10); } } }
Editor is loading...
Leave a Comment