@Override public void kickPlayer(CloudPlayer cloudPlayer, String reason) { if (cloudPlayer == null || reason == null) return; CloudAPI.getInstance().sendCustomSubProxyMessage(CHANNEL_NAME, "kickPlayer", new Document("uniqueId", cloudPlayer.getUniqueId()).append("name", cloudPlayer.getName()).append("reason", reason)); }
@Override public Set<PermissionAttachmentInfo> getEffectivePermissions() { final Map<String, Boolean> permissions = CloudServer.getInstance().getCloudPlayers().get(this.uniqueId).getPermissionEntity().getPermissions(); Set<PermissionAttachmentInfo> set = new HashSet<>(); for (Map.Entry<String, Boolean> entry : permissions.entrySet()) { PermissionAttachmentInfo permissionAttachmentInfo = new PermissionAttachmentInfo(this, entry.getKey(), null, entry.getValue()); set.add(permissionAttachmentInfo); } return set; }
public void handlePlayerUpdate(CloudPlayer cloudPlayer) { this.onlinePlayers.put(cloudPlayer.getUniqueId(), cloudPlayer); CloudNet.getInstance().getEventManager().callEvent(new UpdatePlayerEvent(cloudPlayer)); this.sendAllUpdate(new PacketOutUpdatePlayer(cloudPlayer)); if (cloudPlayer.getServer() != null) System.out.println("Player [" + cloudPlayer.getName() + NetworkUtils.SLASH_STRING + cloudPlayer.getUniqueId() + "/] update [server=" + cloudPlayer.getServer() + ", proxy=" + cloudPlayer.getProxy() + ", address=" + cloudPlayer.getPlayerConnection().getHost() + "]"); }
@Override public void run() { for (CloudPlayer cloudPlayer : networkManager.getWaitingPlayers().values()) if ((cloudPlayer.getLoginTimeStamp().getTime() + 10000L) < System.currentTimeMillis()) networkManager.getWaitingPlayers().remove(cloudPlayer.getUniqueId()); } }, 0, 100);
public void handlePlayerLogout(CloudPlayer playerWhereAmI) { CloudNet.getInstance().getEventManager().callEvent(new LogoutEvent(playerWhereAmI)); try { System.out.println("Player [" + playerWhereAmI.getName() + NetworkUtils.SLASH_STRING + playerWhereAmI.getUniqueId() + NetworkUtils.SLASH_STRING + playerWhereAmI.getPlayerConnection().getHost() + "] is disconnected on " + playerWhereAmI.getProxy()); } catch (Exception ex) { } try { this.onlinePlayers.remove(playerWhereAmI.getUniqueId()); } catch (Exception ex) { } this.sendAllUpdate(new PacketOutLogoutPlayer(playerWhereAmI)); this.sendAll(new PacketOutUpdateOnlineCount(getOnlineCount())); try { playerWhereAmI.setLastLogin(System.currentTimeMillis()); playerWhereAmI.setLastPlayerConnection(playerWhereAmI.getPlayerConnection()); CloudNet.getInstance().getDbHandlers().getPlayerDatabase().updatePlayer(CloudPlayer.newOfflinePlayer(playerWhereAmI)); } catch (Exception ex) { } }
public void handlePlayerLogin(CloudPlayer loginPlayer) { loginPlayer.setPlayerExecutor(CorePlayerExecutor.INSTANCE); CloudNet.getInstance().getEventManager().callEvent(new LoginEvent(loginPlayer)); System.out.println("Player [" + loginPlayer.getName() + NetworkUtils.SLASH_STRING + loginPlayer.getUniqueId() + NetworkUtils.SLASH_STRING + loginPlayer.getPlayerConnection().getHost() + "] is connected on " + loginPlayer.getProxy()); this.sendAllUpdate(new PacketOutLoginPlayer(loginPlayer)); this.sendAll(new PacketOutUpdateOnlineCount(getOnlineCount())); StatisticManager.getInstance().addPlayerLogin(); StatisticManager.getInstance().highestPlayerOnlineCount(getOnlineCount()); }
public void handlePlayerLoginRequest(ProxyServer proxyServer, PlayerConnection cloudPlayerConnection, UUID uniqueId) { if (this.onlinePlayers.containsKey(cloudPlayerConnection.getUniqueId())) { proxyServer.sendPacketSynchronized(new PacketOutLoginPlayer(uniqueId, null)); return; } LoginRequestEvent loginRequestEvent = new LoginRequestEvent(proxyServer, cloudPlayerConnection); CloudNet.getInstance().getEventManager().callEvent(loginRequestEvent); PlayerDatabase playerDatabase = CloudNet.getInstance().getDbHandlers().getPlayerDatabase(); OfflinePlayer offlinePlayer = null; if (!playerDatabase.containsPlayer(cloudPlayerConnection.getUniqueId())) offlinePlayer = playerDatabase.registerPlayer(cloudPlayerConnection); if (offlinePlayer == null) offlinePlayer = playerDatabase.getPlayer(cloudPlayerConnection.getUniqueId()); CloudPlayer cloudPlayer = new CloudPlayer(offlinePlayer, cloudPlayerConnection, proxyServer.getServerId()); cloudPlayer.setPlayerExecutor(CorePlayerExecutor.INSTANCE); if (cloudPlayer.getFirstLogin() == null) cloudPlayer.setFirstLogin(System.currentTimeMillis()); CloudNet.getInstance().getEventManager().callEvent(new PlayerInitEvent(cloudPlayer)); CloudNet.getInstance().getDbHandlers().getNameToUUIDDatabase().append(new MultiValue<>(cloudPlayerConnection.getName(), cloudPlayerConnection.getUniqueId())); CloudNet.getInstance().getDbHandlers().getNameToUUIDDatabase().replace(new MultiValue<>(cloudPlayerConnection.getUniqueId(), cloudPlayerConnection.getName())); cloudPlayer.setName(cloudPlayerConnection.getName()); CloudNet.getInstance().getDbHandlers().getPlayerDatabase().updatePlayer(CloudPlayer.newOfflinePlayer(cloudPlayer)); proxyServer.sendPacketSynchronized(new PacketOutLoginPlayer(uniqueId, cloudPlayer)); this.waitingPlayers.put(cloudPlayer.getUniqueId(), cloudPlayer); handlePlayerLogin(cloudPlayer); }
@Override public boolean isAccepted(CloudPlayer cloudPlayer) { return cloudPlayer.getUniqueId().equals(uniqueId); } });
@EventHandler public void handleUpdate(BukkitPlayerUpdateEvent e) { if (Bukkit.getPlayer(e.getCloudPlayer().getUniqueId()) != null && e.getCloudPlayer().getServer() != null && e.getCloudPlayer().getServer().equalsIgnoreCase(CloudAPI.getInstance().getServerId())) { de.dytanic.cloudnet.bridge.CloudServer.getInstance().updateNameTags(Bukkit.getPlayer(e.getCloudPlayer().getUniqueId())); } } }
@Override public String getName() { return cloudPlayer.getName(); }
@Override public void onCall(PlayerInitEvent event) { if (event.getCloudPlayer().getPermissionEntity() == null) { event.getCloudPlayer().setPermissionEntity(PermissionModule.getInstance().getPermissionPool().getNewPermissionEntity(event.getCloudPlayer())); } Collection<GroupEntityData> groupEntiys = new LinkedList<>(); for (GroupEntityData groupEntityData : event.getCloudPlayer().getPermissionEntity().getGroups()) { if (!PermissionModule.getInstance().getPermissionPool().getGroups().containsKey(groupEntityData.getGroup()) || (System.currentTimeMillis() > groupEntityData.getTimeout() && groupEntityData.getTimeout() != -1 && groupEntityData.getTimeout() != 0)) { groupEntiys.add(groupEntityData); } } for (GroupEntityData groupEntityData : groupEntiys) event.getCloudPlayer().getPermissionEntity().getGroups().remove(groupEntityData); if (event.getCloudPlayer().getPermissionEntity().getGroups().size() == 0) { event.getCloudPlayer().getPermissionEntity().getGroups().add(new GroupEntityData(PermissionModule.getInstance().getPermissionPool().getDefaultGroup().getName(), 0L)); } } }
public void handleCommandExecute(PlayerCommandExecution playerCommandExecutor) { CloudPlayer cloudPlayer = getPlayer(playerCommandExecutor.getName()); if (cloudPlayer != null) { CloudNet.getLogger().info("Player [" + playerCommandExecutor.getName() + "] executed command [" + playerCommandExecutor.getCommandLine() + "] on [" + cloudPlayer.getProxy() + NetworkUtils.SLASH_STRING + cloudPlayer.getServer() + "]"); CloudNet.getInstance().getEventManager().callEvent(new CommandExecutionEvent(playerCommandExecutor)); StatisticManager.getInstance().playerCommandExecutions(); } }
@Deprecated public void getPlayerAndCache(UUID uniqueId) { CloudPlayer cloudPlayer = CloudAPI.getInstance().getOnlinePlayer(uniqueId); if (cloudPlayer != null) { cloudPlayer.setPlayerExecutor(new PlayerExecutorBridge()); this.cloudPlayers.put(uniqueId, cloudPlayer); } }
@Override public void handleInput(Document data, PacketSender packetSender) { OfflinePlayer offlinePlayer = data.getObject("player", new TypeToken<OfflinePlayer>() { }.getType()); CloudNet.getInstance().getDbHandlers().getPlayerDatabase().updatePlayer(offlinePlayer); if (CloudNet.getInstance().getNetworkManager().getOnlinePlayers().containsKey(offlinePlayer.getUniqueId())) { CloudPlayer cloudPlayer = CloudNet.getInstance().getNetworkManager().getOnlinePlayers().get(offlinePlayer.getUniqueId()); cloudPlayer.setMetaData(offlinePlayer.getMetaData()); cloudPlayer.setPermissionEntity(offlinePlayer.getPermissionEntity()); CloudNet.getInstance().getNetworkManager().handlePlayerUpdate(cloudPlayer); } else CloudNet.getInstance().getNetworkManager().sendAllUpdate(new PacketOutUpdateOfflinePlayer(offlinePlayer)); } }
/** * Update the CloudPlayer objective * * @param cloudPlayer */ public void updatePlayer(CloudPlayer cloudPlayer) { networkConnection.sendPacket(new PacketOutUpdatePlayer(CloudPlayer.newOfflinePlayer(cloudPlayer))); }
private void updatePlayer(OfflinePlayer offlinePlayer) { CloudNet.getInstance().getDbHandlers().getPlayerDatabase().updatePlayer(offlinePlayer); if (CloudNet.getInstance().getNetworkManager().getOnlinePlayers().containsKey(offlinePlayer.getUniqueId())) { CloudNet.getInstance().getNetworkManager().getOnlinePlayers().get(offlinePlayer.getUniqueId()).setPermissionEntity(offlinePlayer.getPermissionEntity()); CloudNet.getInstance().getNetworkManager().handlePlayerUpdate(CloudNet.getInstance().getNetworkManager().getOnlinePlayers().get(offlinePlayer.getUniqueId())); } CloudNet.getInstance().getNetworkManager().sendAllUpdate(new PacketOutUpdateOfflinePlayer(offlinePlayer)); }
@Override public void onPlayerUpdate(CloudPlayer cloudPlayer) { if (cloudPlayers.containsKey(cloudPlayer.getUniqueId())) { cloudPlayers.put(cloudPlayer.getUniqueId(), cloudPlayer); } Bukkit.getPluginManager().callEvent(new BukkitPlayerUpdateEvent(cloudPlayer)); }
@Override public boolean isAccepted(CloudPlayer cloudPlayer) { return cloudPlayer.getName().equalsIgnoreCase(name); } });
/** * Returns all OnlinePlayers on Network */ public Collection<CloudPlayer> getOnlinePlayers() { Result result = networkConnection.getPacketManager().sendQuery(new PacketAPIOutGetPlayers(), networkConnection); Collection<CloudPlayer> cloudPlayers = result.getResult().getObject("players", new TypeToken<Collection<CloudPlayer>>() { }.getType()); if (cloudPlayers == null) return new ArrayList<>(); for (CloudPlayer cloudPlayer : cloudPlayers) cloudPlayer.setPlayerExecutor(PlayerExecutorBridge.INSTANCE); return cloudPlayers; }