Search in sources :

Example 1 with MentionPair

use of com.loohp.interactivechat.objectholders.MentionPair in project InteractiveChat by LOOHP.

the class ChatEvents method checkMentionPlayers.

private String checkMentionPlayers(String senderTagType, String message, Player sender) {
    boolean senderTagged = Registry.ID_PATTERN.matcher(message).find();
    if (PlayerUtils.hasPermission(sender.getUniqueId(), "interactivechat.mention.player", false, 200)) {
        Map<String, UUID> playernames = new HashMap<>();
        for (ICPlayer player : ICPlayerFactory.getOnlineICPlayers()) {
            playernames.put(ChatColorUtils.stripColor(player.getName()), player.getUniqueId());
            if (InteractiveChat.useBukkitDisplayName && !ChatColorUtils.stripColor(player.getName()).equals(ChatColorUtils.stripColor(player.getDisplayName()))) {
                playernames.put(ChatColorUtils.stripColor(player.getDisplayName()), player.getUniqueId());
            }
            List<String> names = InteractiveChatAPI.getNicknames(player.getUniqueId());
            for (String name : names) {
                playernames.put(ChatColorUtils.stripColor(name), player.getUniqueId());
            }
        }
        for (Entry<String, UUID> entry : playernames.entrySet()) {
            String name = InteractiveChat.mentionPrefix + entry.getKey();
            UUID uuid = entry.getValue();
            int index = message.toLowerCase().indexOf(name.toLowerCase());
            if (index >= 0) {
                if (senderTagged) {
                    message = Registry.MENTION_TAG_CONVERTER.convertToTag(name, message);
                } else {
                    String tagStyle = Registry.MENTION_TAG_CONVERTER.getTagStyle(name);
                    String uuidmatch = "<" + senderTagType + "=" + sender.getUniqueId() + ":" + Registry.ID_ESCAPE_PATTERN.matcher(tagStyle).replaceAll("\\>") + ":>";
                    message = message.replace(name, uuidmatch);
                }
                if (!uuid.equals(sender.getUniqueId())) {
                    InteractiveChat.mentionPair.add(new MentionPair(sender.getUniqueId(), uuid));
                    if (InteractiveChat.bungeecordMode) {
                        try {
                            BungeeMessageSender.forwardMentionPair(System.currentTimeMillis(), sender.getUniqueId(), uuid);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
                return message;
            }
        }
    }
    return null;
}
Also used : ICPlayer(com.loohp.interactivechat.objectholders.ICPlayer) HashMap(java.util.HashMap) MentionPair(com.loohp.interactivechat.objectholders.MentionPair) UUID(java.util.UUID)

Example 2 with MentionPair

use of com.loohp.interactivechat.objectholders.MentionPair in project InteractiveChat by LOOHP.

the class ChatEvents method checkMentionHere.

private String checkMentionHere(String senderTagType, String message, Player sender) {
    if (PlayerUtils.hasPermission(sender.getUniqueId(), "interactivechat.mention.here", false, 200)) {
        boolean senderTagged = Registry.ID_PATTERN.matcher(message).find();
        String name = InteractiveChat.mentionPrefix + "here";
        int index = message.toLowerCase().indexOf(name.toLowerCase());
        if (index >= 0) {
            if (senderTagged) {
                message = Registry.MENTION_TAG_CONVERTER.convertToTag(name, message);
            } else {
                String tagStyle = Registry.MENTION_TAG_CONVERTER.getTagStyle(name);
                String uuidmatch = "<" + senderTagType + "=" + sender.getUniqueId() + ":" + Registry.ID_ESCAPE_PATTERN.matcher(tagStyle).replaceAll("\\>") + ":>";
                message = message.replace(name, uuidmatch);
            }
            for (Player player : Bukkit.getOnlinePlayers()) {
                UUID uuid = player.getUniqueId();
                if (!uuid.equals(sender.getUniqueId())) {
                    InteractiveChat.mentionPair.add(new MentionPair(sender.getUniqueId(), uuid));
                    if (InteractiveChat.bungeecordMode) {
                        try {
                            BungeeMessageSender.forwardMentionPair(System.currentTimeMillis(), sender.getUniqueId(), uuid);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
            return message;
        }
    }
    return null;
}
Also used : Player(org.bukkit.entity.Player) ICPlayer(com.loohp.interactivechat.objectholders.ICPlayer) MentionPair(com.loohp.interactivechat.objectholders.MentionPair) UUID(java.util.UUID)

Example 3 with MentionPair

use of com.loohp.interactivechat.objectholders.MentionPair in project InteractiveChat by LOOHP.

the class MentionDisplay method process.

public static Component process(Component component, Player receiver, ICPlayer sender, long unix, boolean async) {
    Optional<MentionPair> optPair;
    synchronized (InteractiveChat.mentionPair) {
        optPair = InteractiveChat.mentionPair.stream().filter(each -> each.getReciever().equals(receiver.getUniqueId())).findFirst();
    }
    if (optPair.isPresent()) {
        MentionPair pair = optPair.get();
        if (pair.getSender().equals(sender.getUniqueId())) {
            String title = PlaceholderParser.parse(sender, InteractiveChat.mentionTitle);
            String subtitle = PlaceholderParser.parse(sender, InteractiveChat.mentionSubtitle);
            String actionbar = PlaceholderParser.parse(sender, InteractiveChat.mentionActionbar);
            String toast = PlaceholderParser.parse(sender, InteractiveChat.mentionToast);
            String bossBarText = PlaceholderParser.parse(sender, InteractiveChat.mentionBossBarText);
            String bossBarColorName = InteractiveChat.mentionBossBarColorName;
            String bossBarOverlayName = InteractiveChat.mentionBossBarOverlayName;
            Optional<BossBar> optBossBar;
            if (bossBarText.isEmpty()) {
                optBossBar = Optional.empty();
            } else {
                optBossBar = Optional.of(BossBar.bossBar(LegacyComponentSerializer.legacySection().deserialize(bossBarText), 1, Color.valueOf(bossBarColorName.toUpperCase()), Overlay.valueOf(bossBarOverlayName.toUpperCase())));
            }
            String settings = InteractiveChat.mentionSound;
            Either<Sound, String> sound;
            float volume = 3.0F;
            float pitch = 1.0F;
            String[] settingsArgs = settings.split(":");
            if (settingsArgs.length >= 3) {
                settings = String.join("", Arrays.copyOfRange(settingsArgs, 0, settingsArgs.length - 2)).toUpperCase();
                try {
                    volume = Float.parseFloat(settingsArgs[settingsArgs.length - 2]);
                } catch (Exception ignore) {
                }
                try {
                    pitch = Float.parseFloat(settingsArgs[settingsArgs.length - 1]);
                } catch (Exception ignore) {
                }
            } else {
                settings = settings.toUpperCase();
            }
            Sound bukkitSound = SoundUtils.parseSound(settings);
            if (bukkitSound == null) {
                sound = Either.right(settings);
            } else {
                sound = Either.left(bukkitSound);
            }
            boolean silent = false;
            Map<UUID, Long> lastMentionMapping = InteractiveChat.lastNonSilentMentionTime.get(receiver.getUniqueId());
            if (lastMentionMapping != null) {
                Long lastMention = lastMentionMapping.get(sender.getUniqueId());
                silent = lastMention != null && unix - lastMention < InteractiveChat.mentionCooldown;
            }
            PlayerMentionPlayerEvent mentionEvent = new PlayerMentionPlayerEvent(async, receiver, sender.getUniqueId(), title, subtitle, actionbar, toast, optBossBar, sound, silent, false);
            Bukkit.getPluginManager().callEvent(mentionEvent);
            if (!mentionEvent.isCancelled()) {
                if (!mentionEvent.isSilent()) {
                    if (lastMentionMapping != null) {
                        lastMentionMapping.put(sender.getUniqueId(), unix);
                    }
                    title = mentionEvent.getTitle();
                    subtitle = mentionEvent.getSubtitle();
                    actionbar = mentionEvent.getActionbar();
                    int time = InteractiveChat.mentionTitleDuration;
                    TitleUtils.sendTitle(receiver, title, subtitle, actionbar, 10, Math.max(time, 1), 20);
                    if (sound != null) {
                        if (sound.isLeft()) {
                            receiver.playSound(receiver.getLocation(), sound.getLeft(), volume, pitch);
                        } else {
                            String soundLocation = sound.getRight();
                            if (!soundLocation.contains(":")) {
                                soundLocation = "minecraft:" + soundLocation;
                            }
                            receiver.playSound(receiver.getLocation(), soundLocation.toLowerCase(), volume, pitch);
                        }
                    }
                    if (!mentionEvent.getToast().isEmpty() && InteractiveChat.version.isNewerOrEqualTo(MCVersion.V1_12)) {
                        ToastUtils.mention(sender, receiver, toast, WRITABLE_BOOK.clone());
                    }
                    int bossBarTime = InteractiveChat.mentionBossBarDuration;
                    int bossBarRemoveDelay = InteractiveChat.mentionBossBarRemoveDelay;
                    if (mentionEvent.getBossBar().isPresent() && !InteractiveChat.version.isOld()) {
                        BossBarUpdater updater = BossBarUpdater.update(mentionEvent.getBossBar().get(), receiver);
                        BossBarUtils.countdownBossBar(updater, Math.max(bossBarTime, 1), Math.max(bossBarRemoveDelay, 0));
                    }
                }
                List<String> names = new ArrayList<>();
                names.add(ChatColorUtils.stripColor(receiver.getName()));
                if (InteractiveChat.useBukkitDisplayName && !ChatColorUtils.stripColor(receiver.getName()).equals(ChatColorUtils.stripColor(receiver.getDisplayName()))) {
                    names.add(ChatColorUtils.stripColor(receiver.getDisplayName()));
                }
                List<String> list = InteractiveChatAPI.getNicknames(receiver.getUniqueId());
                for (String name : list) {
                    names.add(ChatColorUtils.stripColor(name));
                }
                if (!InteractiveChat.disableHere) {
                    names.add("here");
                }
                if (!InteractiveChat.disableEveryone) {
                    names.add("everyone");
                }
                for (String name : names) {
                    component = processPlayer(InteractiveChat.mentionPrefix + name, receiver, sender, component, unix);
                }
                pair.remove();
            }
        }
    }
    return component;
}
Also used : ArrayList(java.util.ArrayList) BossBar(net.kyori.adventure.bossbar.BossBar) BossBarUpdater(com.loohp.interactivechat.utils.bossbar.BossBarUpdater) Sound(org.bukkit.Sound) PlayerMentionPlayerEvent(com.loohp.interactivechat.api.events.PlayerMentionPlayerEvent) MentionPair(com.loohp.interactivechat.objectholders.MentionPair) UUID(java.util.UUID)

Example 4 with MentionPair

use of com.loohp.interactivechat.objectholders.MentionPair in project InteractiveChat by LOOHP.

the class ChatEvents method checkMentionEveryone.

private String checkMentionEveryone(String senderTagType, String message, Player sender) {
    if (PlayerUtils.hasPermission(sender.getUniqueId(), "interactivechat.mention.everyone", false, 200)) {
        boolean senderTagged = Registry.ID_PATTERN.matcher(message).find();
        String name = InteractiveChat.mentionPrefix + "everyone";
        int index = message.toLowerCase().indexOf(name.toLowerCase());
        if (index >= 0) {
            if (senderTagged) {
                message = Registry.MENTION_TAG_CONVERTER.convertToTag(name, message);
            } else {
                String tagStyle = Registry.MENTION_TAG_CONVERTER.getTagStyle(name);
                String uuidmatch = "<" + senderTagType + "=" + sender.getUniqueId() + ":" + Registry.ID_ESCAPE_PATTERN.matcher(tagStyle).replaceAll("\\>") + ":>";
                message = message.replace(name, uuidmatch);
            }
            List<UUID> players = new ArrayList<>();
            ICPlayerFactory.getOnlineICPlayers().forEach(each -> players.add(each.getUniqueId()));
            for (UUID uuid : players) {
                if (!uuid.equals(sender.getUniqueId())) {
                    InteractiveChat.mentionPair.add(new MentionPair(sender.getUniqueId(), uuid));
                    if (InteractiveChat.bungeecordMode) {
                        try {
                            BungeeMessageSender.forwardMentionPair(System.currentTimeMillis(), sender.getUniqueId(), uuid);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
            return message;
        }
    }
    return null;
}
Also used : ArrayList(java.util.ArrayList) MentionPair(com.loohp.interactivechat.objectholders.MentionPair) UUID(java.util.UUID)

Example 5 with MentionPair

use of com.loohp.interactivechat.objectholders.MentionPair in project InteractiveChat by LOOHP.

the class BungeeMessageListener method onPluginMessageReceived.

@SuppressWarnings("deprecation")
@Override
public void onPluginMessageReceived(String channel, Player pluginMessagingPlayer, byte[] bytes) {
    if (!channel.equals("interchat:main")) {
        return;
    }
    ByteArrayDataInput in = ByteStreams.newDataInput(bytes);
    int packetNumber = in.readInt();
    int packetId = in.readShort();
    boolean isEnding = in.readBoolean();
    byte[] data = new byte[bytes.length - 7];
    in.readFully(data);
    byte[] chain = incoming.remove(packetNumber);
    if (chain != null) {
        ByteBuffer buff = ByteBuffer.allocate(chain.length + data.length);
        buff.put(chain);
        buff.put(data);
        data = buff.array();
    }
    if (!isEnding) {
        incoming.put(packetNumber, data);
        return;
    }
    try {
        ByteArrayDataInput input = ByteStreams.newDataInput(data);
        switch(packetId) {
            case 0x00:
                int playerAmount = input.readInt();
                Set<UUID> localUUID = Bukkit.getOnlinePlayers().stream().map(each -> each.getUniqueId()).collect(Collectors.toSet());
                Set<UUID> current = new HashSet<>(ICPlayerFactory.getRemoteUUIDs());
                Set<UUID> newSet = new HashSet<>();
                for (int i = 0; i < playerAmount; i++) {
                    String server = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                    UUID uuid = DataTypeIO.readUUID(input);
                    String name = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                    ICPlayer player = ICPlayerFactory.getICPlayer(uuid);
                    if (player != null) {
                        if (!player.getRemoteServer().equals(server)) {
                            player.setRemoteServer(server);
                        }
                    }
                    if (!localUUID.contains(uuid) && !ICPlayerFactory.getRemoteUUIDs().contains(uuid)) {
                        ICPlayerFactory.createOrUpdateRemoteICPlayer(server, name, uuid, true, 0, 0, Bukkit.createInventory(null, 45), Bukkit.createInventory(null, 36));
                    }
                    newSet.add(uuid);
                }
                current.removeAll(newSet);
                for (UUID uuid : current) {
                    ICPlayerFactory.removeRemoteICPlayer(uuid);
                }
                for (UUID uuid : localUUID) {
                    ICPlayerFactory.removeRemoteICPlayer(uuid);
                }
                break;
            case 0x01:
                int delay = input.readInt();
                short itemStackScheme = input.readShort();
                short inventoryScheme = input.readShort();
                InteractiveChat.remoteDelay = delay;
                BungeeMessageSender.itemStackScheme = itemStackScheme;
                BungeeMessageSender.inventoryScheme = inventoryScheme;
                break;
            case 0x02:
                UUID sender = DataTypeIO.readUUID(input);
                UUID receiver = DataTypeIO.readUUID(input);
                InteractiveChat.mentionPair.add(new MentionPair(sender, receiver));
                break;
            case 0x03:
                UUID uuid = DataTypeIO.readUUID(input);
                ICPlayer player = ICPlayerFactory.getICPlayer(uuid);
                if (player == null) {
                    break;
                }
                boolean rightHanded = input.readBoolean();
                player.setRemoteRightHanded(rightHanded);
                int selectedSlot = input.readByte();
                player.setRemoteSelectedSlot(selectedSlot);
                int level = input.readInt();
                player.setRemoteExperienceLevel(level);
                int size = input.readByte();
                ItemStack[] equipment = new ItemStack[size];
                for (int i = 0; i < equipment.length; i++) {
                    equipment[i] = DataTypeIO.readItemStack(input, StandardCharsets.UTF_8);
                }
                player.getEquipment().setHelmet(equipment[0]);
                player.getEquipment().setChestplate(equipment[1]);
                player.getEquipment().setLeggings(equipment[2]);
                player.getEquipment().setBoots(equipment[3]);
                if (InteractiveChat.version.isOld()) {
                    player.getEquipment().setItemInHand(equipment[4]);
                } else {
                    player.getEquipment().setItemInMainHand(equipment[4]);
                    player.getEquipment().setItemInOffHand(equipment[5]);
                }
                break;
            case 0x04:
                UUID uuid1 = DataTypeIO.readUUID(input);
                ICPlayer player1 = ICPlayerFactory.getICPlayer(uuid1);
                if (player1 == null) {
                    break;
                }
                boolean rightHanded1 = input.readBoolean();
                player1.setRemoteRightHanded(rightHanded1);
                int selectedSlot1 = input.readByte();
                player1.setRemoteSelectedSlot(selectedSlot1);
                int level1 = input.readInt();
                player1.setRemoteExperienceLevel(level1);
                int type = input.readByte();
                if (type == 0) {
                    player1.setRemoteInventory(DataTypeIO.readInventory(input, StandardCharsets.UTF_8));
                } else {
                    player1.setRemoteEnderChest(DataTypeIO.readInventory(input, StandardCharsets.UTF_8));
                }
                break;
            case 0x05:
                UUID uuid2 = DataTypeIO.readUUID(input);
                ICPlayer player2 = ICPlayerFactory.getICPlayer(uuid2);
                if (player2 == null) {
                    break;
                }
                int size1 = input.readInt();
                for (int i = 0; i < size1; i++) {
                    String placeholder = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                    String text = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                    player2.getRemotePlaceholdersMapping().put(placeholder, text);
                }
                break;
            case 0x06:
                String message = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                UUID uuid3 = DataTypeIO.readUUID(input);
                ICPlayer player3 = ICPlayerFactory.getICPlayer(uuid3);
                if (player3 == null) {
                    break;
                }
                InteractiveChat.messages.put(message, uuid3);
                Bukkit.getScheduler().runTaskLater(InteractiveChat.plugin, () -> InteractiveChat.messages.remove(message), 60);
                break;
            case 0x07:
                int cooldownType = input.readByte();
                switch(cooldownType) {
                    case 0:
                        UUID uuid4 = DataTypeIO.readUUID(input);
                        long time = input.readLong();
                        InteractiveChat.placeholderCooldownManager.setPlayerUniversalLastTimestampRaw(uuid4, time);
                        break;
                    case 1:
                        uuid4 = DataTypeIO.readUUID(input);
                        UUID internalId = DataTypeIO.readUUID(input);
                        time = input.readLong();
                        Optional<ICPlaceholder> optPlaceholder = InteractiveChat.placeholderList.values().stream().filter(each -> each.getInternalId().equals(internalId)).findFirst();
                        if (optPlaceholder.isPresent()) {
                            InteractiveChat.placeholderCooldownManager.setPlayerPlaceholderLastTimestampRaw(uuid4, optPlaceholder.get(), time);
                        }
                        break;
                }
                break;
            case 0x08:
                UUID messageId = DataTypeIO.readUUID(input);
                UUID uuid5 = DataTypeIO.readUUID(input);
                Player bukkitplayer1 = Bukkit.getPlayer(uuid5);
                if (bukkitplayer1 == null) {
                    break;
                }
                String component = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                Bukkit.getScheduler().runTaskAsynchronously(InteractiveChat.plugin, () -> {
                    try {
                        String processed = ProcessExternalMessage.processAndRespond(bukkitplayer1, component);
                        BungeeMessageSender.respondProcessedMessage(System.currentTimeMillis(), processed, messageId);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                });
                break;
            case 0x09:
                String server = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                int size2 = input.readInt();
                List<ICPlaceholder> list = new ArrayList<>(size2);
                for (int i = 0; i < size2; i++) {
                    boolean isBulitIn = input.readBoolean();
                    if (isBulitIn) {
                        String keyword = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                        String name = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                        String description = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                        String permission = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                        long cooldown = input.readLong();
                        list.add(new BuiltInPlaceholder(Pattern.compile(keyword), name, description, permission, cooldown));
                    } else {
                        int customNo = input.readInt();
                        ParsePlayer parseplayer = ParsePlayer.fromOrder(input.readByte());
                        String placeholder = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                        boolean parseKeyword = input.readBoolean();
                        long cooldown = input.readLong();
                        boolean hoverEnabled = input.readBoolean();
                        String hoverText = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                        boolean clickEnabled = input.readBoolean();
                        String clickAction = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                        String clickValue = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                        boolean replaceEnabled = input.readBoolean();
                        String replaceText = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                        String name = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                        String description = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                        list.add(new CustomPlaceholder(customNo, parseplayer, Pattern.compile(placeholder), parseKeyword, cooldown, new CustomPlaceholderHoverEvent(hoverEnabled, hoverText), new CustomPlaceholderClickEvent(clickEnabled, clickEnabled ? ClickEventAction.valueOf(clickAction) : null, clickValue), new CustomPlaceholderReplaceText(replaceEnabled, replaceText), name, description));
                    }
                }
                InteractiveChat.remotePlaceholderList.put(server, list);
                break;
            case 0x0A:
                BungeeMessageSender.resetAndForwardPlaceholderList(System.currentTimeMillis(), InteractiveChat.placeholderList.values());
                break;
            case 0x0B:
                int id = input.readInt();
                UUID playerUUID = DataTypeIO.readUUID(input);
                String permission = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                Player player5 = Bukkit.getPlayer(playerUUID);
                BungeeMessageSender.permissionCheckResponse(System.currentTimeMillis(), id, player5 != null && player5.hasPermission(permission));
                break;
            case 0x0D:
                UUID playerUUID1 = DataTypeIO.readUUID(input);
                PlayerData pd = InteractiveChat.playerDataManager.getPlayerData(playerUUID1);
                if (pd != null) {
                    pd.reload();
                }
                break;
            case 0x0E:
                SharedType sharedType = SharedType.fromValue(input.readByte());
                String sha1 = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                Inventory inventory = DataTypeIO.readInventory(input, StandardCharsets.UTF_8);
                InteractiveChatAPI.addInventoryToItemShareList(sharedType, sha1, inventory);
                break;
            case 0x0F:
                int requestType = input.readByte();
                UUID playerUUID2 = DataTypeIO.readUUID(input);
                Player player6 = Bukkit.getPlayer(playerUUID2);
                if (player6 != null) {
                    ICPlayer player7 = ICPlayerFactory.getICPlayer(player6);
                    switch(requestType) {
                        case 0:
                            BungeeMessageSender.forwardInventory(System.currentTimeMillis(), player7.getUniqueId(), player7.isRightHanded(), player7.getSelectedSlot(), player7.getExperienceLevel(), null, player7.getInventory());
                            break;
                        case 1:
                            BungeeMessageSender.forwardEnderchest(System.currentTimeMillis(), player7.getUniqueId(), player7.isRightHanded(), player7.getSelectedSlot(), player7.getExperienceLevel(), null, player7.getEnderChest());
                            break;
                    }
                }
                break;
            case 0x10:
                UUID requestUUID = DataTypeIO.readUUID(input);
                int requestType2 = input.readByte();
                // noinspection SwitchStatementWithTooFewBranches
                switch(requestType2) {
                    case 0:
                        List<ValueTrios<UUID, String, Integer>> playerlist = new ArrayList<>();
                        int playerListSize = input.readInt();
                        for (int i = 0; i < playerListSize; i++) {
                            playerlist.add(new ValueTrios<>(DataTypeIO.readUUID(input), DataTypeIO.readString(input, StandardCharsets.UTF_8), input.readInt()));
                        }
                        @SuppressWarnings("unchecked") CompletableFuture<List<ValueTrios<UUID, String, Integer>>> future = (CompletableFuture<List<ValueTrios<UUID, String, Integer>>>) toComplete.remove(requestUUID);
                        if (future != null) {
                            future.complete(playerlist);
                        }
                        break;
                    default:
                        break;
                }
                break;
            case 0x11:
                UUID playerUUID3 = DataTypeIO.readUUID(input);
                int nicknameSize = input.readInt();
                Set<String> remoteNicknames = new HashSet<>();
                for (int i = 0; i < nicknameSize; i++) {
                    remoteNicknames.add(DataTypeIO.readString(input, StandardCharsets.UTF_8));
                }
                ICPlayer icPlayer = ICPlayerFactory.getICPlayer(playerUUID3);
                if (icPlayer != null) {
                    icPlayer.setRemoteNicknames(remoteNicknames);
                }
                break;
            case 0x12:
                UUID playerUUID4 = DataTypeIO.readUUID(input);
                String placeholders = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                ICPlayer icPlayer1 = ICPlayerFactory.getICPlayer(playerUUID4);
                if (icPlayer1 != null && icPlayer1.isLocal()) {
                    PlaceholderParser.parse(icPlayer1, placeholders);
                }
                break;
            case 0xFF:
                String customChannel = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                int dataLength = input.readInt();
                byte[] customData = new byte[dataLength];
                input.readFully(customData);
                ProxyCustomDataRecievedEvent dataEvent = new ProxyCustomDataRecievedEvent(customChannel, customData);
                Bukkit.getPluginManager().callEvent(dataEvent);
                break;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Also used : CustomPlaceholder(com.loohp.interactivechat.objectholders.CustomPlaceholder) InteractiveChatAPI(com.loohp.interactivechat.api.InteractiveChatAPI) PlayerData(com.loohp.interactivechat.data.PlayerDataManager.PlayerData) DataTypeIO(com.loohp.interactivechat.utils.DataTypeIO) TimeoutException(java.util.concurrent.TimeoutException) HashMap(java.util.HashMap) CompletableFuture(java.util.concurrent.CompletableFuture) BuiltInPlaceholder(com.loohp.interactivechat.objectholders.BuiltInPlaceholder) Player(org.bukkit.entity.Player) ParsePlayer(com.loohp.interactivechat.objectholders.CustomPlaceholder.ParsePlayer) Inventory(org.bukkit.inventory.Inventory) ByteBuffer(java.nio.ByteBuffer) CustomPlaceholderReplaceText(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderReplaceText) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) ICPlayer(com.loohp.interactivechat.objectholders.ICPlayer) PluginMessageListener(org.bukkit.plugin.messaging.PluginMessageListener) ProcessExternalMessage(com.loohp.interactivechat.modules.ProcessExternalMessage) Map(java.util.Map) ByteArrayDataInput(com.google.common.io.ByteArrayDataInput) MentionPair(com.loohp.interactivechat.objectholders.MentionPair) SharedType(com.loohp.interactivechat.api.InteractiveChatAPI.SharedType) ICPlaceholder(com.loohp.interactivechat.objectholders.ICPlaceholder) Bukkit(org.bukkit.Bukkit) ProxyCustomDataRecievedEvent(com.loohp.interactivechat.api.events.ProxyCustomDataRecievedEvent) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Set(java.util.Set) UUID(java.util.UUID) Collectors(java.util.stream.Collectors) StandardCharsets(java.nio.charset.StandardCharsets) ItemStack(org.bukkit.inventory.ItemStack) InteractiveChat(com.loohp.interactivechat.InteractiveChat) List(java.util.List) ValueTrios(com.loohp.interactivechat.objectholders.ValueTrios) ClickEventAction(com.loohp.interactivechat.objectholders.CustomPlaceholder.ClickEventAction) CustomPlaceholderHoverEvent(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderHoverEvent) ICPlayerFactory(com.loohp.interactivechat.objectholders.ICPlayerFactory) ByteStreams(com.google.common.io.ByteStreams) Optional(java.util.Optional) Pattern(java.util.regex.Pattern) CustomPlaceholderClickEvent(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderClickEvent) PlaceholderParser(com.loohp.interactivechat.utils.PlaceholderParser) ICPlayer(com.loohp.interactivechat.objectholders.ICPlayer) CustomPlaceholderHoverEvent(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderHoverEvent) ArrayList(java.util.ArrayList) CustomPlaceholderReplaceText(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderReplaceText) CompletableFuture(java.util.concurrent.CompletableFuture) ICPlaceholder(com.loohp.interactivechat.objectholders.ICPlaceholder) CustomPlaceholder(com.loohp.interactivechat.objectholders.CustomPlaceholder) ArrayList(java.util.ArrayList) List(java.util.List) UUID(java.util.UUID) HashSet(java.util.HashSet) Player(org.bukkit.entity.Player) ParsePlayer(com.loohp.interactivechat.objectholders.CustomPlaceholder.ParsePlayer) ICPlayer(com.loohp.interactivechat.objectholders.ICPlayer) ProxyCustomDataRecievedEvent(com.loohp.interactivechat.api.events.ProxyCustomDataRecievedEvent) SharedType(com.loohp.interactivechat.api.InteractiveChatAPI.SharedType) CustomPlaceholderClickEvent(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderClickEvent) ByteArrayDataInput(com.google.common.io.ByteArrayDataInput) ByteBuffer(java.nio.ByteBuffer) TimeoutException(java.util.concurrent.TimeoutException) ParsePlayer(com.loohp.interactivechat.objectholders.CustomPlaceholder.ParsePlayer) BuiltInPlaceholder(com.loohp.interactivechat.objectholders.BuiltInPlaceholder) MentionPair(com.loohp.interactivechat.objectholders.MentionPair) ItemStack(org.bukkit.inventory.ItemStack) PlayerData(com.loohp.interactivechat.data.PlayerDataManager.PlayerData) Inventory(org.bukkit.inventory.Inventory) ValueTrios(com.loohp.interactivechat.objectholders.ValueTrios)

Aggregations

MentionPair (com.loohp.interactivechat.objectholders.MentionPair)6 UUID (java.util.UUID)6 ICPlayer (com.loohp.interactivechat.objectholders.ICPlayer)4 ArrayList (java.util.ArrayList)4 Player (org.bukkit.entity.Player)3 InteractiveChat (com.loohp.interactivechat.InteractiveChat)2 InteractiveChatAPI (com.loohp.interactivechat.api.InteractiveChatAPI)2 CustomPlaceholder (com.loohp.interactivechat.objectholders.CustomPlaceholder)2 ICPlaceholder (com.loohp.interactivechat.objectholders.ICPlaceholder)2 ICPlayerFactory (com.loohp.interactivechat.objectholders.ICPlayerFactory)2 PlaceholderParser (com.loohp.interactivechat.utils.PlaceholderParser)2 HashSet (java.util.HashSet)2 List (java.util.List)2 Map (java.util.Map)2 Set (java.util.Set)2 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)2 Bukkit (org.bukkit.Bukkit)2 Inventory (org.bukkit.inventory.Inventory)2 ItemStack (org.bukkit.inventory.ItemStack)2 WebhookClient (club.minnced.discord.webhook.WebhookClient)1