Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- package br.com.mineland.bungee.redis.communication.actions;
- import br.com.mineland.bungee.redis.Redis;
- import br.com.mineland.bungee.stuff.Proxy;
- import br.com.mineland.bungee.user.ProxiedUser;
- import br.com.mineland.bungee.utils.ServerUtils;
- import br.com.mineland.core.permissions.Permissions;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Set;
- import java.util.UUID;
- import net.md_5.bungee.api.ProxyServer;
- import net.md_5.bungee.api.chat.BaseComponent;
- import net.md_5.bungee.api.config.ServerInfo;
- import net.md_5.bungee.api.connection.ProxiedPlayer;
- import net.md_5.bungee.chat.ComponentSerializer;
- /**
- *
- * @author LucaAzalim
- */
- public class RemoteMsg {
- private List<String> messages = new ArrayList<>();
- private Set<Permissions> groups = new HashSet<>();
- private Set<UUID> players = new HashSet<>();
- private Set<String> servers = new HashSet<>();
- private Set<Integer> proxies = new HashSet<>();
- public RemoteMsg(String... messages) {
- this.messages.addAll(Arrays.asList(messages));
- }
- public RemoteMsg(BaseComponent... messages) {
- for (BaseComponent bc : messages) {
- this.messages.add(ComponentSerializer.toString(bc));
- }
- }
- /**
- * @param groups Grupos para os quais esta mensagem sera enviada.
- * @return Objeto modificado.
- */
- public RemoteMsg specifyGroups(Permissions... groups) {
- this.groups.addAll(Arrays.asList(groups));
- return this;
- }
- /**
- * @param users Especificar usuarios.
- * @return Objeto modificado.
- */
- public RemoteMsg specifyPlayers(ProxiedUser... users) {
- for (ProxiedUser user : users) {
- this.players.add(user.getUUID());
- }
- return this;
- }
- /**
- * @param servers Especificar servidores.
- * @return Objeto modificado.
- */
- public RemoteMsg specifyServers(ServerInfo... servers) {
- for (ServerInfo si : servers) {
- this.servers.add(si.getName());
- }
- return this;
- }
- /**
- * @param proxies Especificar proxies.
- * @return Objeto modificado.
- */
- public RemoteMsg specifyProxy(Proxy... proxies) {
- for (Proxy p : proxies) {
- this.proxies.add(p.getId());
- }
- return this;
- }
- public void sendRequisition() {
- }
- public void handle() {
- if (!servers.isEmpty()) {
- for (String serverName : servers) {
- ServerInfo info = ProxyServer.getInstance().getServerInfo(serverName);
- for (ProxiedPlayer player : info.getPlayers()) {
- UUID uuid = player.getUniqueId();
- if ((!players.isEmpty() && !players.contains(uuid))
- || (!proxies.isEmpty() && !proxies.contains(Proxy.getProxy(uuid).getId()))
- || (!groups.isEmpty() && !Permissions.hasOneOfGroups(uuid, groups))) {
- continue;
- }
- sendMessage(uuid);
- }
- }
- } else if (!players.isEmpty()) {
- for (UUID uuid : players) {
- if ((!proxies.isEmpty() && !proxies.contains(Proxy.getProxy(uuid).getId()))
- || (!groups.isEmpty() && !Permissions.hasOneOfGroups(uuid, groups))) {
- continue;
- }
- sendMessage(uuid);
- }
- } else if (!groups.isEmpty()) {
- for (UUID uuid : ServerUtils.getPlayers(true)) {
- if (!proxies.isEmpty() && !proxies.contains(Proxy.getProxy(uuid).getId())) {
- continue;
- }
- sendMessage(uuid);
- }
- } else if (!proxies.isEmpty()) {
- for (int id : proxies) {
- for (UUID uuid : Proxy.getProxyById(id).getOnlineUUIDs()) {
- sendMessage(uuid);
- }
- }
- }
- }
- private void sendMessage(UUID uuid) {
- for (String msg : messages) {
- ProxyServer.getInstance().getPlayer(uuid).sendMessage(ComponentSerializer.parse(msg));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement