Search in sources :

Example 1 with CustomPlaceholder

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

the class InteractiveChatVelocity method onReceive.

@Subscribe
public void onReceive(PluginMessageEvent event) {
    if (!event.getIdentifier().getId().equals("interchat:main")) {
        return;
    }
    ChannelMessageSource source = event.getSource();
    if (!(source instanceof ServerConnection)) {
        return;
    }
    event.setResult(ForwardResult.handled());
    RegisteredServer server = ((ServerConnection) source).getServer();
    String senderServer = server.getServerInfo().getName();
    byte[] packet = Arrays.copyOf(event.getData(), event.getData().length);
    ByteArrayDataInput in = ByteStreams.newDataInput(packet);
    int packetNumber = in.readInt();
    int packetId = in.readShort();
    if (!Registry.PROXY_PASSTHROUGH_RELAY_PACKETS.contains(packetId)) {
        boolean isEnding = in.readBoolean();
        byte[] data = new byte[packet.length - 7];
        in.readFully(data);
        byte[] chain = incomming.remove(packetNumber);
        if (chain != null) {
            ByteBuffer buff = ByteBuffer.allocate(chain.length + data.length);
            buff.put(chain);
            buff.put(data);
            data = buff.array();
        }
        if (!isEnding) {
            incomming.put(packetNumber, data);
            return;
        }
        byte[] finalData = data;
        pluginMessageHandlingExecutor.submit(() -> {
            try {
                ByteArrayDataInput input = ByteStreams.newDataInput(finalData);
                switch(packetId) {
                    case 0x07:
                        int cooldownType = input.readByte();
                        switch(cooldownType) {
                            case 0:
                                UUID uuid = DataTypeIO.readUUID(input);
                                long time = input.readLong();
                                playerCooldownManager.setPlayerUniversalLastTimestamp(uuid, time);
                                break;
                            case 1:
                                uuid = DataTypeIO.readUUID(input);
                                UUID internalId = DataTypeIO.readUUID(input);
                                time = input.readLong();
                                playerCooldownManager.setPlayerPlaceholderLastTimestamp(uuid, internalId, time);
                                break;
                        }
                        for (RegisteredServer eachServer : getServer().getAllServers()) {
                            if (!eachServer.getServerInfo().getName().equals(senderServer) && eachServer.getPlayersConnected().size() > 0) {
                                eachServer.sendPluginMessage(ICChannelIdentifier.INSTANCE, finalData);
                                pluginMessagesCounter.incrementAndGet();
                            }
                        }
                        break;
                    case 0x08:
                        UUID messageId = DataTypeIO.readUUID(input);
                        String component = DataTypeIO.readString(input, StandardCharsets.UTF_8);
                        messageForwardingHandler.receivedProcessedMessage(messageId, component);
                        break;
                    case 0x09:
                        loadConfig();
                        break;
                    case 0x0B:
                        int id = input.readInt();
                        boolean permissionValue = input.readBoolean();
                        permissionChecks.put(id, permissionValue);
                        break;
                    case 0x0C:
                        int size1 = input.readInt();
                        List<ICPlaceholder> list = new ArrayList<>(size1);
                        for (int i = 0; i < size1; i++) {
                            boolean isBuiltIn = input.readBoolean();
                            if (isBuiltIn) {
                                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));
                            }
                        }
                        placeholderList.put(server.getServerInfo().getName(), list);
                        playerCooldownManager.reloadPlaceholders(placeholderList.values().stream().flatMap(each -> each.stream()).distinct().collect(Collectors.toList()));
                        PluginMessageSendingVelocity.forwardPlaceholderList(list, server);
                        break;
                    case 0x0D:
                        UUID uuid2 = DataTypeIO.readUUID(input);
                        PluginMessageSendingVelocity.reloadPlayerData(uuid2, server);
                        break;
                    case 0x10:
                        UUID requestUUID = DataTypeIO.readUUID(input);
                        int requestType = input.readByte();
                        switch(requestType) {
                            case 0:
                                PluginMessageSendingVelocity.respondPlayerListRequest(requestUUID, server);
                                break;
                            default:
                                break;
                        }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        });
    } else {
        pluginMessageHandlingExecutor.submit(() -> {
            for (RegisteredServer eachServer : getServer().getAllServers()) {
                if (!eachServer.getServerInfo().getName().equals(senderServer) && eachServer.getPlayersConnected().size() > 0) {
                    eachServer.sendPluginMessage(ICChannelIdentifier.INSTANCE, event.getData());
                    pluginMessagesCounter.incrementAndGet();
                }
            }
        });
    }
}
Also used : Arrays(java.util.Arrays) Inject(com.google.inject.Inject) ConnectedPlayer(com.velocitypowered.proxy.connection.client.ConnectedPlayer) Random(java.util.Random) ProxyShutdownEvent(com.velocitypowered.api.event.proxy.ProxyShutdownEvent) ParsePlayer(com.loohp.interactivechat.objectholders.CustomPlaceholder.ParsePlayer) ByteBuffer(java.nio.ByteBuffer) Matcher(java.util.regex.Matcher) ChannelPromise(io.netty.channel.ChannelPromise) PluginMessageEvent(com.velocitypowered.api.event.connection.PluginMessageEvent) Player(com.velocitypowered.api.proxy.Player) Map(java.util.Map) ProxyInitializeEvent(com.velocitypowered.api.event.proxy.ProxyInitializeEvent) ThreadFactory(java.util.concurrent.ThreadFactory) ServerPostConnectEvent(com.velocitypowered.api.event.player.ServerPostConnectEvent) Method(java.lang.reflect.Method) Path(java.nio.file.Path) ChatResult(com.velocitypowered.api.event.player.PlayerChatEvent.ChatResult) ChannelDuplexHandler(io.netty.channel.ChannelDuplexHandler) TextComponent(net.kyori.adventure.text.TextComponent) ForwardResult(com.velocitypowered.api.event.connection.PluginMessageEvent.ForwardResult) Filter(org.apache.logging.log4j.core.Filter) JSONParser(org.json.simple.parser.JSONParser) SynchronousQueue(java.util.concurrent.SynchronousQueue) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) VelocityServerConnection(com.velocitypowered.proxy.connection.backend.VelocityServerConnection) ChannelPipeline(io.netty.channel.ChannelPipeline) UUID(java.util.UUID) RegisteredServer(com.velocitypowered.api.proxy.server.RegisteredServer) Collectors(java.util.stream.Collectors) StandardCharsets(java.nio.charset.StandardCharsets) List(java.util.List) JSONObject(org.json.simple.JSONObject) ClickEventAction(com.loohp.interactivechat.objectholders.CustomPlaceholder.ClickEventAction) ByteStreams(com.google.common.io.ByteStreams) Subscribe(com.velocitypowered.api.event.Subscribe) Optional(java.util.Optional) ChannelMessageSource(com.velocitypowered.api.proxy.messages.ChannelMessageSource) Pattern(java.util.regex.Pattern) CustomPlaceholderClickEvent(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderClickEvent) HoverEvent(net.kyori.adventure.text.event.HoverEvent) ThreadFactoryBuilder(com.google.common.util.concurrent.ThreadFactoryBuilder) ProxyPlayerCooldownManager(com.loohp.interactivechat.proxy.objectholders.ProxyPlayerCooldownManager) DisconnectEvent(com.velocitypowered.api.event.connection.DisconnectEvent) ServerConnection(com.velocitypowered.api.proxy.ServerConnection) Metrics(com.loohp.interactivechat.proxy.velocity.metrics.Metrics) ThreadPoolExecutor(java.util.concurrent.ThreadPoolExecutor) CustomPlaceholder(com.loohp.interactivechat.objectholders.CustomPlaceholder) Connections(com.velocitypowered.proxy.network.Connections) Registry(com.loohp.interactivechat.registry.Registry) Charts(com.loohp.interactivechat.proxy.velocity.metrics.Charts) Config(com.loohp.interactivechat.config.Config) DataTypeIO(com.loohp.interactivechat.utils.DataTypeIO) HashMap(java.util.HashMap) CompletableFuture(java.util.concurrent.CompletableFuture) BuiltInPlaceholder(com.loohp.interactivechat.objectholders.BuiltInPlaceholder) CustomPlaceholderReplaceText(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderReplaceText) ArrayList(java.util.ArrayList) ChannelHandlerContext(io.netty.channel.ChannelHandlerContext) Chat(com.velocitypowered.proxy.protocol.packet.Chat) PlayerChatEvent(com.velocitypowered.api.event.player.PlayerChatEvent) ParseException(org.json.simple.parser.ParseException) PostOrder(com.velocitypowered.api.event.PostOrder) Component(net.kyori.adventure.text.Component) ProxyServer(com.velocitypowered.api.proxy.ProxyServer) ByteArrayDataInput(com.google.common.io.ByteArrayDataInput) ICPlaceholder(com.loohp.interactivechat.objectholders.ICPlaceholder) PostLoginEvent(com.velocitypowered.api.event.connection.PostLoginEvent) Logger(org.slf4j.Logger) Iterator(java.util.Iterator) BackendInteractiveChatData(com.loohp.interactivechat.proxy.objectholders.BackendInteractiveChatData) IOException(java.io.IOException) Field(java.lang.reflect.Field) InputStreamReader(java.io.InputStreamReader) File(java.io.File) DataDirectory(com.velocitypowered.api.plugin.annotation.DataDirectory) TimeUnit(java.util.concurrent.TimeUnit) AtomicLong(java.util.concurrent.atomic.AtomicLong) CustomPlaceholderHoverEvent(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderHoverEvent) LogFilter(com.loohp.interactivechat.objectholders.LogFilter) CommandSource(com.velocitypowered.api.command.CommandSource) LogManager(org.apache.logging.log4j.LogManager) Collections(java.util.Collections) ProxyMessageForwardingHandler(com.loohp.interactivechat.proxy.objectholders.ProxyMessageForwardingHandler) NativeAdventureConverter(com.loohp.interactivechat.utils.NativeAdventureConverter) CustomPlaceholderHoverEvent(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderHoverEvent) ArrayList(java.util.ArrayList) VelocityServerConnection(com.velocitypowered.proxy.connection.backend.VelocityServerConnection) ServerConnection(com.velocitypowered.api.proxy.ServerConnection) CustomPlaceholderClickEvent(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderClickEvent) CustomPlaceholderReplaceText(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderReplaceText) IOException(java.io.IOException) ByteArrayDataInput(com.google.common.io.ByteArrayDataInput) ByteBuffer(java.nio.ByteBuffer) ChannelMessageSource(com.velocitypowered.api.proxy.messages.ChannelMessageSource) ParsePlayer(com.loohp.interactivechat.objectholders.CustomPlaceholder.ParsePlayer) ICPlaceholder(com.loohp.interactivechat.objectholders.ICPlaceholder) RegisteredServer(com.velocitypowered.api.proxy.server.RegisteredServer) BuiltInPlaceholder(com.loohp.interactivechat.objectholders.BuiltInPlaceholder) CustomPlaceholder(com.loohp.interactivechat.objectholders.CustomPlaceholder) UUID(java.util.UUID) Subscribe(com.velocitypowered.api.event.Subscribe)

Example 2 with CustomPlaceholder

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

the class CustomPlaceholderCreator method toCustomPlaceholder.

public CustomPlaceholder toCustomPlaceholder() {
    String name = textFieldName.getText();
    String description = textFieldDescription.getText();
    ParsePlayer parsePlayer = (ParsePlayer) boxParsePlayer.getSelectedItem();
    Pattern keyword;
    if (regexCheckBox.isSelected()) {
        keyword = validRegex(textFieldKeyword.getText()) == null ? Pattern.compile(textFieldKeyword.getText()) : IMPOSSIBLE_PATTERN;
    } else {
        String joined = Stream.of(textFieldKeyword.getText().split(",")).map(each -> CustomStringUtils.escapeMetaCharacters(each)).collect(Collectors.joining("|"));
        keyword = Pattern.compile(joined);
    }
    boolean parseKeyword = checkBoxParseKeyword.isSelected();
    long cooldown = validLong(textFieldCooldown.getText()) == null ? Long.parseLong(textFieldCooldown.getText()) : 0;
    CustomPlaceholderHoverEvent hoverEvent = new CustomPlaceholderHoverEvent(checkBoxHover.isSelected(), textAreaHover.getText());
    CustomPlaceholderClickEvent clickEvent = new CustomPlaceholderClickEvent(checkBoxClick.isSelected(), (ClickEventAction) boxClickAction.getSelectedItem(), textFieldClickValue.getText());
    CustomPlaceholderReplaceText replaceText = new CustomPlaceholderReplaceText(checkBoxReplace.isSelected(), textFieldReplaceText.getText());
    return new CustomPlaceholder((int) spinnerIndex.getValue(), parsePlayer, keyword, parseKeyword, cooldown, hoverEvent, clickEvent, replaceText, name, description);
}
Also used : Color(java.awt.Color) ComponentReplacing(com.loohp.interactivechat.utils.ComponentReplacing) Arrays(java.util.Arrays) ConfigurationSection(com.loohp.yamlconfiguration.ConfigurationSection) ParsePlayer(com.loohp.interactivechat.objectholders.CustomPlaceholder.ParsePlayer) ChangeListener(javax.swing.event.ChangeListener) JComboBox(javax.swing.JComboBox) JFrame(javax.swing.JFrame) AttributeSet(javax.swing.text.AttributeSet) ChangeEvent(javax.swing.event.ChangeEvent) PatternSyntaxException(java.util.regex.PatternSyntaxException) YamlConfiguration(com.loohp.yamlconfiguration.YamlConfiguration) BufferedImage(java.awt.image.BufferedImage) Action(net.kyori.adventure.text.event.HoverEvent.Action) BorderFactory(javax.swing.BorderFactory) Icon(javax.swing.Icon) BadLocationException(javax.swing.text.BadLocationException) PlainDocument(javax.swing.text.PlainDocument) KeyEvent(java.awt.event.KeyEvent) Collectors(java.util.stream.Collectors) Dimension(java.awt.Dimension) Stream(java.util.stream.Stream) ClickEventAction(com.loohp.interactivechat.objectholders.CustomPlaceholder.ClickEventAction) CustomStringUtils(com.loohp.interactivechat.utils.CustomStringUtils) JCheckBox(javax.swing.JCheckBox) GridConstraints(com.intellij.uiDesigner.core.GridConstraints) Document(javax.swing.text.Document) Pattern(java.util.regex.Pattern) Spacer(com.intellij.uiDesigner.core.Spacer) CustomPlaceholderClickEvent(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderClickEvent) HoverEvent(net.kyori.adventure.text.event.HoverEvent) JPanel(javax.swing.JPanel) Toolkit(java.awt.Toolkit) Insets(java.awt.Insets) KeyListener(java.awt.event.KeyListener) ActionListener(java.awt.event.ActionListener) JTextField(javax.swing.JTextField) CustomPlaceholder(com.loohp.interactivechat.objectholders.CustomPlaceholder) SpinnerNumberModel(javax.swing.SpinnerNumberModel) DefaultEditor(javax.swing.JSpinner.DefaultEditor) ClickEvent(net.kyori.adventure.text.event.ClickEvent) CustomPlaceholderReplaceText(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderReplaceText) GridLayoutManager(com.intellij.uiDesigner.core.GridLayoutManager) SwingUtilities(javax.swing.SwingUtilities) Component(net.kyori.adventure.text.Component) LegacyComponentSerializer(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer) JComponent(javax.swing.JComponent) JButton(javax.swing.JButton) JSpinner(javax.swing.JSpinner) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) JOptionPane(javax.swing.JOptionPane) ActionEvent(java.awt.event.ActionEvent) File(java.io.File) JScrollPane(javax.swing.JScrollPane) DocumentFilter(javax.swing.text.DocumentFilter) PlainTextComponentSerializer(net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer) JLabel(javax.swing.JLabel) CustomPlaceholderHoverEvent(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderHoverEvent) ChatColorUtils(com.loohp.interactivechat.utils.ChatColorUtils) JTextArea(javax.swing.JTextArea) Collections(java.util.Collections) ParsePlayer(com.loohp.interactivechat.objectholders.CustomPlaceholder.ParsePlayer) Pattern(java.util.regex.Pattern) CustomPlaceholderHoverEvent(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderHoverEvent) CustomPlaceholder(com.loohp.interactivechat.objectholders.CustomPlaceholder) CustomPlaceholderClickEvent(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderClickEvent) CustomPlaceholderReplaceText(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderReplaceText)

Example 3 with CustomPlaceholder

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

the class ProcessExternalMessage method processWithoutReceiver0.

@SuppressWarnings("deprecation")
public String processWithoutReceiver0(String message) {
    UUID senderUUID = ProcessAccurateSender.find(message);
    ICPlayer sender;
    if (senderUUID == null) {
        sender = null;
    } else {
        sender = ICPlayerFactory.getICPlayer(senderUUID);
    }
    message = message.replaceAll(ProcessCommands.COLOR_IGNORE_PATTERN_0.pattern(), "").replaceAll(ProcessCommands.COLOR_IGNORE_PATTERN_1.pattern(), "").replaceAll(ProcessAccurateSender.COLOR_IGNORE_PATTERN.pattern(), "");
    message = message.replaceAll(ProcessAccurateSender.PATTERN_0.pattern(), "$2");
    Matcher matcher = ProcessAccurateSender.PATTERN_0.matcher(message);
    StringBuffer sb = new StringBuffer();
    while (matcher.find()) {
        String replacement = Registry.ID_UNESCAPE_PATTERN.matcher(matcher.group(2)).replaceAll(">");
        matcher.appendReplacement(sb, replacement);
    }
    matcher.appendTail(sb);
    message = sb.toString();
    message = Registry.MENTION_TAG_CONVERTER.revertTags(message);
    if (sender == null) {
        return message;
    }
    long now = System.currentTimeMillis();
    long uniCooldown = InteractiveChatAPI.getPlayerUniversalCooldown(sender.getUniqueId()) - now;
    if (!(uniCooldown < 0 || uniCooldown + 100 > InteractiveChat.universalCooldown)) {
        return message;
    }
    if (InteractiveChat.rgbTags) {
        message = CustomStringUtils.clearPluginRGBTags(message);
    }
    if (InteractiveChat.fontTags) {
        message = CustomStringUtils.clearPluginFontTags(message);
    }
    Component component = LegacyComponentSerializer.legacySection().deserialize(message);
    for (ICPlaceholder placeholder : InteractiveChatAPI.getICPlaceholderList()) {
        if (!placeholder.isBuildIn()) {
            CustomPlaceholder customP = (CustomPlaceholder) placeholder;
            if (!InteractiveChat.useCustomPlaceholderPermissions || (InteractiveChat.useCustomPlaceholderPermissions && PlayerUtils.hasPermission(sender.getUniqueId(), customP.getPermission(), true, 250))) {
                if (customP.getKeyword().matcher(message).find()) {
                    if (customP.getReplace().isEnabled()) {
                        String replace = ChatColor.WHITE + ChatColorUtils.translateAlternateColorCodes('&', PlaceholderParser.parse(sender, customP.getReplace().getReplaceText()));
                        component = ComponentReplacing.replace(component, customP.getKeyword().pattern(), true, result -> {
                            String replaceString = CustomStringUtils.applyReplacementRegex(replace, result, 1);
                            return LegacyComponentSerializer.legacySection().deserialize(replaceString);
                        });
                    }
                }
            }
        }
    }
    if (InteractiveChat.t && WebData.getInstance() != null) {
        for (CustomPlaceholder customP : WebData.getInstance().getSpecialPlaceholders()) {
            if (customP.getKeyword().matcher(message).find()) {
                if (customP.getReplace().isEnabled()) {
                    String replace = ChatColor.WHITE + ChatColorUtils.translateAlternateColorCodes('&', PlaceholderParser.parse(sender, customP.getReplace().getReplaceText()));
                    component = ComponentReplacing.replace(component, customP.getKeyword().pattern(), true, result -> {
                        String replaceString = CustomStringUtils.applyReplacementRegex(replace, result, 1);
                        return LegacyComponentSerializer.legacySection().deserialize(replaceString);
                    });
                }
            }
        }
    }
    if (InteractiveChat.useItem && PlayerUtils.hasPermission(sender.getUniqueId(), "interactivechat.module.item", true, 250)) {
        Pattern placeholder = InteractiveChat.itemPlaceholder;
        if (placeholder.matcher(message).find()) {
            ItemStack item = sender.getEquipment().getItemInHand();
            if (item == null) {
                item = new ItemStack(Material.AIR);
            }
            String itemStr = InteractiveChatComponentSerializer.bungeecordApiLegacy().serialize(ItemStackUtils.getDisplayName(item), InteractiveChat.language);
            int amount = item.getAmount();
            if (item == null || item.getType().equals(Material.AIR)) {
                amount = 1;
            }
            itemStr = RarityUtils.getRarityColor(item) + itemStr;
            String replaceText;
            if (amount == 1) {
                replaceText = PlaceholderParser.parse(sender, InteractiveChat.itemSingularReplaceText.replace("{Item}", itemStr));
            } else {
                replaceText = PlaceholderParser.parse(sender, InteractiveChat.itemReplaceText.replace("{Amount}", String.valueOf(amount)).replace("{Item}", itemStr));
            }
            component = ComponentReplacing.replace(component, placeholder.pattern(), true, LegacyComponentSerializer.legacySection().deserialize(replaceText));
        }
    }
    if (InteractiveChat.useInventory && PlayerUtils.hasPermission(sender.getUniqueId(), "interactivechat.module.inventory", true, 250)) {
        Pattern placeholder = InteractiveChat.invPlaceholder;
        if (placeholder.matcher(message).find()) {
            String replaceText = PlaceholderParser.parse(sender, InteractiveChat.invReplaceText);
            component = ComponentReplacing.replace(component, placeholder.pattern(), true, LegacyComponentSerializer.legacySection().deserialize(replaceText));
        }
    }
    if (InteractiveChat.useEnder && PlayerUtils.hasPermission(sender.getUniqueId(), "interactivechat.module.enderchest", true, 250)) {
        Pattern placeholder = InteractiveChat.enderPlaceholder;
        if (placeholder.matcher(message).find()) {
            String replaceText = PlaceholderParser.parse(sender, InteractiveChat.enderReplaceText);
            component = ComponentReplacing.replace(component, placeholder.pattern(), true, LegacyComponentSerializer.legacySection().deserialize(replaceText));
        }
    }
    return LegacyComponentSerializer.builder().character(ChatColorUtils.COLOR_CHAR).hexColors().useUnusualXRepeatedCharacterHexFormat().build().serialize(component);
}
Also used : Plugin(org.bukkit.plugin.Plugin) ComponentReplacing(com.loohp.interactivechat.utils.ComponentReplacing) MCVersion(com.loohp.interactivechat.utils.MCVersion) PlayerUtils(com.loohp.interactivechat.utils.PlayerUtils) CustomPlaceholder(com.loohp.interactivechat.objectholders.CustomPlaceholder) InteractiveChatAPI(com.loohp.interactivechat.api.InteractiveChatAPI) PlayerData(com.loohp.interactivechat.data.PlayerDataManager.PlayerData) WebData(com.loohp.interactivechat.objectholders.WebData) Registry(com.loohp.interactivechat.registry.Registry) JsonUtils(com.loohp.interactivechat.utils.JsonUtils) Player(org.bukkit.entity.Player) ComponentModernizing(com.loohp.interactivechat.utils.ComponentModernizing) ICPlayer(com.loohp.interactivechat.objectholders.ICPlayer) ComponentFont(com.loohp.interactivechat.utils.ComponentFont) InteractiveChatComponentSerializer(com.loohp.interactivechat.utils.InteractiveChatComponentSerializer) Matcher(java.util.regex.Matcher) Component(net.kyori.adventure.text.Component) ICPlaceholder(com.loohp.interactivechat.objectholders.ICPlaceholder) LegacyComponentSerializer(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer) Method(java.lang.reflect.Method) ItemStackUtils(com.loohp.interactivechat.utils.ItemStackUtils) Material(org.bukkit.Material) ChatColor(net.md_5.bungee.api.ChatColor) Bukkit(org.bukkit.Bukkit) Collection(java.util.Collection) RarityUtils(com.loohp.interactivechat.utils.RarityUtils) UUID(java.util.UUID) Field(java.lang.reflect.Field) ItemStack(org.bukkit.inventory.ItemStack) InteractiveChat(com.loohp.interactivechat.InteractiveChat) TimeUnit(java.util.concurrent.TimeUnit) ICPlayerFactory(com.loohp.interactivechat.objectholders.ICPlayerFactory) ChatColorUtils(com.loohp.interactivechat.utils.ChatColorUtils) CustomStringUtils(com.loohp.interactivechat.utils.CustomStringUtils) Optional(java.util.Optional) Pattern(java.util.regex.Pattern) PlaceholderParser(com.loohp.interactivechat.utils.PlaceholderParser) ProcessSenderResult(com.loohp.interactivechat.objectholders.ProcessSenderResult) ICPlayer(com.loohp.interactivechat.objectholders.ICPlayer) Pattern(java.util.regex.Pattern) Matcher(java.util.regex.Matcher) ICPlaceholder(com.loohp.interactivechat.objectholders.ICPlaceholder) CustomPlaceholder(com.loohp.interactivechat.objectholders.CustomPlaceholder) UUID(java.util.UUID) Component(net.kyori.adventure.text.Component) ItemStack(org.bukkit.inventory.ItemStack)

Example 4 with CustomPlaceholder

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

the class ConfigManager method loadConfig.

@SuppressWarnings("deprecation")
public static void loadConfig() {
    InteractiveChat.commandsEventPriority = EventPriority.valueOf(getConfig().getString("Settings.EventPriorities.Commands").toUpperCase());
    InteractiveChat.chatEventPriority = EventPriority.valueOf(getConfig().getString("Settings.EventPriorities.Chat").toUpperCase());
    InteractiveChat.itemTagMaxLength = getConfig().getInt("Settings.ItemTagMaxLength");
    InteractiveChat.packetStringMaxLength = getConfig().getInt("Settings.PacketStringMaxLength");
    InteractiveChat.parsePAPIOnMainThread = getConfig().getBoolean("Settings.ParsePAPIOnMainThread");
    InteractiveChat.useAccurateSenderFinder = getConfig().getBoolean("Settings.UseAccurateSenderParser");
    InteractiveChat.tagEveryIdentifiableMessage = getConfig().getBoolean("Settings.TagEveryIdentifiableMessage");
    String colorCodeString = getConfig().getString("Chat.TranslateAltColorCode");
    InteractiveChat.chatAltColorCode = colorCodeString.length() == 1 ? Optional.of(colorCodeString.charAt(0)) : Optional.empty();
    InteractiveChat.useCustomPlaceholderPermissions = getConfig().getBoolean("Settings.UseCustomPlaceholderPermissions");
    InteractiveChat.filterUselessColorCodes = getConfig().getBoolean("Settings.FilterUselessColorCodes", true);
    InteractiveChat.allowMention = getConfig().getBoolean("Chat.AllowMention");
    InteractiveChat.disableHere = getConfig().getBoolean("Chat.DisableHere");
    InteractiveChat.disableEveryone = getConfig().getBoolean("Chat.DisableEveryone");
    InteractiveChat.universalCooldown = getConfig().getLong("Settings.UniversalCooldown") * 1000;
    InteractiveChat.noPermissionMessage = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.NoPermission"));
    InteractiveChat.invExpiredMessage = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.InvExpired"));
    InteractiveChat.reloadPluginMessage = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.ReloadPlugin"));
    InteractiveChat.noConsoleMessage = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.PlayerOnlyCommand"));
    InteractiveChat.invalidPlayerMessage = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.InvalidPlayer"));
    InteractiveChat.listPlaceholderHeader = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.ListPlaceholdersHeader"));
    InteractiveChat.listPlaceholderBody = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.ListPlaceholdersBody"));
    InteractiveChat.notEnoughArgs = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.NoEnoughArgs"));
    InteractiveChat.invalidArgs = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.InvalidArgs"));
    InteractiveChat.setInvDisplayLayout = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.SetInventoryDisplayLayout"));
    InteractiveChat.placeholderCooldownMessage = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.PlaceholderCooldown"));
    InteractiveChat.universalCooldownMessage = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.UniversalCooldown"));
    InteractiveChat.useItem = getConfig().getBoolean("ItemDisplay.Item.Enabled");
    InteractiveChat.useInventory = getConfig().getBoolean("ItemDisplay.Inventory.Enabled");
    InteractiveChat.useEnder = getConfig().getBoolean("ItemDisplay.EnderChest.Enabled");
    InteractiveChat.itemMapPreview = getConfig().getBoolean("ItemDisplay.Item.PreviewMaps");
    InteractiveChat.itemPlaceholder = Pattern.compile(getConfig().getString("ItemDisplay.Item.Keyword"));
    InteractiveChat.invPlaceholder = Pattern.compile(getConfig().getString("ItemDisplay.Inventory.Keyword"));
    InteractiveChat.enderPlaceholder = Pattern.compile(getConfig().getString("ItemDisplay.EnderChest.Keyword"));
    InteractiveChat.itemReplaceText = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Item.Text"));
    InteractiveChat.itemSingularReplaceText = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Item.SingularText"));
    InteractiveChat.invReplaceText = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Inventory.Text"));
    InteractiveChat.enderReplaceText = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.EnderChest.Text"));
    InteractiveChat.itemAirAllow = getConfig().getBoolean("ItemDisplay.Item.EmptyItemSettings.AllowAir");
    InteractiveChat.itemAirErrorMessage = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Item.EmptyItemSettings.DisallowMessage"));
    InteractiveChat.itemTitle = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Item.InventoryTitle"));
    InteractiveChat.invTitle = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Inventory.InventoryTitle"));
    InteractiveChat.enderTitle = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.EnderChest.InventoryTitle"));
    InteractiveChat.itemHover = getConfig().getBoolean("ItemDisplay.Item.HoverEnabled");
    InteractiveChat.itemAlternativeHoverMessage = ChatColorUtils.translateAlternateColorCodes('&', String.join("\n", getConfig().getStringList("ItemDisplay.Item.AlternativeHoverMessage")));
    InteractiveChat.itemGUI = getConfig().getBoolean("ItemDisplay.Item.GUIEnabled");
    InteractiveChat.translateHoverableItems = getConfig().getBoolean("ItemDisplay.Item.HoverableItemsTranslation.Enabled");
    InteractiveChat.hoverableItemTitle = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Item.HoverableItemsTranslation.InventoryTitle"));
    InteractiveChat.containerViewTitle = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Settings.ContainerViewTitle"));
    try {
        try {
            if (VERSION.isLegacy()) {
                String str = getConfig().getString("ItemDisplay.Item.Frame.Primary");
                Material material = str.contains(":") ? Material.valueOf(str.substring(0, str.lastIndexOf(":"))) : Material.valueOf(str);
                short data = str.contains(":") ? Short.valueOf(str.substring(str.lastIndexOf(":") + 1)) : 0;
                InteractiveChat.itemFrame1 = new ItemStack(material, 1, data);
            } else {
                InteractiveChat.itemFrame1 = new ItemStack(Material.valueOf(getConfig().getString("ItemDisplay.Item.Frame.Primary")), 1);
            }
        } catch (Exception e) {
            InteractiveChat.itemFrame1 = XMaterialUtils.matchXMaterial(getConfig().getString("ItemDisplay.Item.Frame.Primary")).parseItem();
            InteractiveChat.itemFrame1.setAmount(1);
        }
    } catch (Exception e) {
        Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "You have an invalid material name in the config! Please take a look at the Q&A section on the resource page! (ItemDisplay.Item.Frame.Primary)");
        e.printStackTrace();
    }
    try {
        try {
            if (VERSION.isLegacy()) {
                String str = getConfig().getString("ItemDisplay.Item.Frame.Secondary");
                Material material = str.contains(":") ? Material.valueOf(str.substring(0, str.lastIndexOf(":"))) : Material.valueOf(str);
                short data = str.contains(":") ? Short.valueOf(str.substring(str.lastIndexOf(":") + 1)) : 0;
                InteractiveChat.itemFrame2 = new ItemStack(material, 1, data);
            } else {
                InteractiveChat.itemFrame2 = new ItemStack(Material.valueOf(getConfig().getString("ItemDisplay.Item.Frame.Secondary")), 1);
            }
        } catch (Exception e) {
            InteractiveChat.itemFrame2 = XMaterialUtils.matchXMaterial(getConfig().getString("ItemDisplay.Item.Frame.Secondary")).parseItem();
            InteractiveChat.itemFrame2.setAmount(1);
        }
    } catch (Exception e) {
        Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "You have an invalid material name in the config! Please take a look at the Q&A section on the resource page! (ItemDisplay.Item.Frame.Secondary)");
        e.printStackTrace();
    }
    try {
        try {
            if (VERSION.isLegacy()) {
                String str = getConfig().getString("ItemDisplay.Inventory.Frame.Primary");
                Material material = str.contains(":") ? Material.valueOf(str.substring(0, str.lastIndexOf(":"))) : Material.valueOf(str);
                short data = str.contains(":") ? Short.valueOf(str.substring(str.lastIndexOf(":") + 1)) : 0;
                InteractiveChat.invFrame1 = new ItemStack(material, 1, data);
            } else {
                InteractiveChat.invFrame1 = new ItemStack(Material.valueOf(getConfig().getString("ItemDisplay.Inventory.Frame.Primary")), 1);
            }
        } catch (Exception e) {
            InteractiveChat.invFrame1 = XMaterialUtils.matchXMaterial(getConfig().getString("ItemDisplay.Inventory.Frame.Primary")).parseItem();
            InteractiveChat.invFrame1.setAmount(1);
        }
    } catch (Exception e) {
        Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "You have an invalid material name in the config! Please take a look at the Q&A section on the resource page! (ItemDisplay.Inventory.Frame.Primary)");
        e.printStackTrace();
    }
    try {
        try {
            if (VERSION.isLegacy()) {
                String str = getConfig().getString("ItemDisplay.Inventory.Frame.Secondary");
                Material material = str.contains(":") ? Material.valueOf(str.substring(0, str.lastIndexOf(":"))) : Material.valueOf(str);
                short data = str.contains(":") ? Short.valueOf(str.substring(str.lastIndexOf(":") + 1)) : 0;
                InteractiveChat.invFrame2 = new ItemStack(material, 1, data);
            } else {
                InteractiveChat.invFrame2 = new ItemStack(Material.valueOf(getConfig().getString("ItemDisplay.Inventory.Frame.Secondary")), 1);
            }
        } catch (Exception e) {
            InteractiveChat.invFrame2 = XMaterialUtils.matchXMaterial(getConfig().getString("ItemDisplay.Inventory.Frame.Secondary")).parseItem();
            InteractiveChat.invFrame2.setAmount(1);
        }
    } catch (Exception e) {
        Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "You have an invalid material name in the config! Please take a look at the Q&A section on the resource page! (ItemDisplay.Inventory.Frame.Secondary)");
        e.printStackTrace();
    }
    InteractiveChat.invSkullName = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Inventory.SkullDisplayName"));
    InteractiveChat.invDisplayLayout = getConfig().getInt("ItemDisplay.Inventory.Layout");
    InteractiveChat.itemDisplayTimeout = getConfig().getLong("ItemDisplay.Settings.Timeout") * 60 * 1000;
    if (getConfig().contains("Secret.t")) {
        InteractiveChat.t = getConfig().getBoolean("Secret.t");
    }
    InteractiveChat.usePlayerName = getConfig().getBoolean("Player.UsePlayerNameInteraction");
    InteractiveChat.usePlayerNameOverrideHover = getConfig().getBoolean("Player.OverrideOriginal.HoverEvent");
    InteractiveChat.usePlayerNameOverrideClick = getConfig().getBoolean("Player.OverrideOriginal.ClickEvent");
    InteractiveChat.usePlayerNameHoverEnable = getConfig().getBoolean("Player.Hover.Enable");
    List<String> stringList = getConfig().getStringList("Player.Hover.Text");
    InteractiveChat.usePlayerNameHoverText = ChatColorUtils.translateAlternateColorCodes('&', String.join("\n", stringList));
    InteractiveChat.usePlayerNameClickEnable = getConfig().getBoolean("Player.Click.Enable");
    InteractiveChat.usePlayerNameClickAction = getConfig().getString("Player.Click.Action");
    InteractiveChat.usePlayerNameClickValue = getConfig().getString("Player.Click.Value");
    InteractiveChat.usePlayerNameCaseSensitive = getConfig().getBoolean("Player.CaseSensitive");
    InteractiveChat.useTooltipOnTab = getConfig().getBoolean("TabCompletion.PlayerNameToolTip.Enabled");
    InteractiveChat.tabTooltip = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("TabCompletion.PlayerNameToolTip.ToolTip"));
    InteractiveChat.playerNotFoundHoverEnable = getConfig().getBoolean("Settings.PlayerNotFound.Hover.Enable");
    List<String> stringList2 = getConfig().getStringList("Settings.PlayerNotFound.Hover.Text");
    InteractiveChat.playerNotFoundHoverText = ChatColorUtils.translateAlternateColorCodes('&', String.join("\n", stringList2));
    InteractiveChat.playerNotFoundClickEnable = getConfig().getBoolean("Settings.PlayerNotFound.Click.Enable");
    InteractiveChat.playerNotFoundClickAction = getConfig().getString("Settings.PlayerNotFound.Click.Action");
    InteractiveChat.playerNotFoundClickValue = getConfig().getString("Settings.PlayerNotFound.Click.Value");
    InteractiveChat.playerNotFoundReplaceEnable = getConfig().getBoolean("Settings.PlayerNotFound.Replace.Enable");
    InteractiveChat.playerNotFoundReplaceText = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Settings.PlayerNotFound.Replace.ReplaceText"));
    InteractiveChat.placeholderList.clear();
    if (InteractiveChat.useItem) {
        String name = InteractiveChat.itemName = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Item.Name"));
        String description = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Item.Description"));
        ICPlaceholder itemPlaceholder = new BuiltInPlaceholder(InteractiveChat.itemPlaceholder, name, description, "interactivechat.module.item", getConfig().getLong("ItemDisplay.Item.Cooldown") * 1000);
        InteractiveChat.placeholderList.put(itemPlaceholder.getInternalId(), itemPlaceholder);
    }
    if (InteractiveChat.useInventory) {
        String name = InteractiveChat.invName = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Inventory.Name"));
        String description = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Inventory.Description"));
        ICPlaceholder invPlaceholder = new BuiltInPlaceholder(InteractiveChat.invPlaceholder, name, description, "interactivechat.module.inventory", getConfig().getLong("ItemDisplay.Inventory.Cooldown") * 1000);
        InteractiveChat.placeholderList.put(invPlaceholder.getInternalId(), invPlaceholder);
    }
    if (InteractiveChat.useEnder) {
        String name = InteractiveChat.enderName = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.EnderChest.Name"));
        String description = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.EnderChest.Description"));
        ICPlaceholder enderPlaceholder = new BuiltInPlaceholder(InteractiveChat.enderPlaceholder, name, description, "interactivechat.module.enderchest", getConfig().getLong("ItemDisplay.EnderChest.Cooldown") * 1000);
        InteractiveChat.placeholderList.put(enderPlaceholder.getInternalId(), enderPlaceholder);
    }
    for (int customNo = 1; ConfigManager.getConfig().contains("CustomPlaceholders." + customNo); customNo++) {
        ConfigurationSection s = getConfig().getConfigurationSection("CustomPlaceholders." + customNo);
        ParsePlayer parseplayer = ParsePlayer.fromString(s.getString("ParsePlayer"));
        String placeholder = s.getString("Keyword");
        boolean parseKeyword = s.getBoolean("ParseKeyword");
        long cooldown = s.getLong("Cooldown") * 1000;
        boolean hoverEnabled = s.getBoolean("Hover.Enable");
        String hoverText = ChatColorUtils.translateAlternateColorCodes('&', String.join("\n", s.getStringList("Hover.Text")));
        boolean clickEnabled = s.getBoolean("Click.Enable");
        String clickAction = s.getString("Click.Action").toUpperCase();
        String clickValue = s.getString("Click.Value");
        boolean replaceEnabled = s.getBoolean("Replace.Enable");
        String replaceText = ChatColorUtils.translateAlternateColorCodes('&', s.getString("Replace.ReplaceText"));
        String name = ChatColorUtils.translateAlternateColorCodes('&', s.getString("Name", placeholder.replace("\\", "")));
        String description = ChatColorUtils.translateAlternateColorCodes('&', s.getString("Description", "&7&oDescription missing"));
        ICPlaceholder customPlaceholder = 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.placeholderList.put(customPlaceholder.getInternalId(), customPlaceholder);
    }
    if (InteractiveChat.bungeecordMode) {
        InteractiveChat.queueRemoteUpdate = true;
    }
    InteractiveChat.commandList = getConfig().getStringList("Settings.CommandsToParse");
    InteractiveChat.maxPlaceholders = getConfig().getInt("Settings.MaxPlaceholders");
    InteractiveChat.limitReachMessage = getConfig().getString("Messages.LimitReached");
    InteractiveChat.mentionPrefix = getConfig().getString("Chat.MentionPrefix");
    InteractiveChat.mentionHighlight = getConfig().getString("Chat.MentionHighlight");
    List<String> stringList3 = getConfig().getStringList("Chat.MentionHoverText");
    InteractiveChat.mentionHover = String.join("\n", stringList3);
    InteractiveChat.mentionDuration = getConfig().getDouble("Chat.MentionedTitleDuration");
    InteractiveChat.mentionCooldown = (long) (getConfig().getDouble("Chat.MentionCooldown") * 1000);
    InteractiveChat.mentionEnable = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.EnableMentions"));
    InteractiveChat.mentionDisable = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.DisableMentions"));
    InteractiveChat.mentionTitle = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Chat.MentionedTitle"));
    InteractiveChat.mentionSubtitle = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Chat.KnownPlayerMentionSubtitle"));
    InteractiveChat.mentionActionbar = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Chat.KnownPlayerMentionActionbar"));
    InteractiveChat.mentionToast = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Chat.MentionToast"));
    InteractiveChat.mentionBossBarText = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Chat.MentionBossBar.Text"));
    InteractiveChat.mentionBossBarColorName = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Chat.MentionBossBar.Color"));
    InteractiveChat.mentionBossBarOverlayName = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Chat.MentionBossBar.Overlay"));
    InteractiveChat.mentionSound = getConfig().getString("Chat.MentionedSound");
    InteractiveChat.mentionTitleDuration = (int) Math.round(ConfigManager.getConfig().getDouble("Chat.MentionedTitleDuration") * 20);
    InteractiveChat.mentionBossBarDuration = (int) Math.round(ConfigManager.getConfig().getDouble("Chat.MentionBossBar.Duration") * 20);
    InteractiveChat.mentionBossBarRemoveDelay = (int) Math.round(ConfigManager.getConfig().getDouble("Chat.MentionBossBar.RemoveDelay") * 20);
    InteractiveChat.updaterEnabled = getConfig().getBoolean("Options.Updater");
    InteractiveChat.cancelledMessage = getConfig().getBoolean("Options.ShowCancelledNotice");
    InteractiveChat.clickableCommands = getConfig().getBoolean("Commands.Enabled");
    InteractiveChat.clickableCommandsFormat = getConfig().getString("Commands.Format");
    InteractiveChat.clickableCommandsAction = ClickEvent.Action.valueOf(getConfig().getString("Commands.Action"));
    InteractiveChat.clickableCommandsDisplay = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Commands.Text"));
    InteractiveChat.clickableCommandsHoverText = ChatColorUtils.translateAlternateColorCodes('&', String.join("\n", getConfig().getStringList("Commands.HoverMessage")));
    InteractiveChat.sendOriginalIfTooLong = getConfig().getBoolean("Settings.SendOriginalMessageIfExceedLengthLimit");
    InteractiveChat.messageToIgnore = new HashSet<>(getConfig().getStringList("Settings.MessagesToIgnore"));
    try {
        try {
            if (VERSION.isLegacy()) {
                String str = getConfig().getString("ItemDisplay.Item.Frame.Secondary");
                Material material = str.contains(":") ? Material.valueOf(str.substring(0, str.lastIndexOf(":"))) : Material.valueOf(str);
                short data = str.contains(":") ? Short.valueOf(str.substring(str.lastIndexOf(":") + 1)) : 0;
                ItemStack unknown = new ItemStack(material, 1, data);
                ItemMeta meta = unknown.getItemMeta();
                meta.setDisplayName(ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Settings.BungeecordUnknownItem.DisplayName")));
                meta.setLore(getConfig().getStringList("Settings.BungeecordUnknownItem.Lore").stream().map(each -> ChatColorUtils.translateAlternateColorCodes('&', each)).collect(Collectors.toList()));
                unknown.setItemMeta(meta);
                InteractiveChat.unknownReplaceItem = unknown;
            } else {
                ItemStack unknown = new ItemStack(Material.valueOf(getConfig().getString("Settings.BungeecordUnknownItem.ReplaceItem").toUpperCase()));
                ItemMeta meta = unknown.getItemMeta();
                meta.setDisplayName(ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Settings.BungeecordUnknownItem.DisplayName")));
                meta.setLore(getConfig().getStringList("Settings.BungeecordUnknownItem.Lore").stream().map(each -> ChatColorUtils.translateAlternateColorCodes('&', each)).collect(Collectors.toList()));
                unknown.setItemMeta(meta);
                InteractiveChat.unknownReplaceItem = unknown;
            }
        } catch (Exception e) {
            ItemStack unknown = XMaterialUtils.matchXMaterial(getConfig().getString("Settings.BungeecordUnknownItem.ReplaceItem")).parseItem();
            unknown.setAmount(1);
            ItemMeta meta = unknown.getItemMeta();
            meta.setDisplayName(ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Settings.BungeecordUnknownItem.DisplayName")));
            meta.setLore(getConfig().getStringList("Settings.BungeecordUnknownItem.Lore").stream().map(each -> ChatColorUtils.translateAlternateColorCodes('&', each)).collect(Collectors.toList()));
            unknown.setItemMeta(meta);
            InteractiveChat.unknownReplaceItem = unknown;
        }
    } catch (Exception e) {
        Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "You have an invalid material name in the config! Please take a look at the Q&A section on the resource page! (Settings.BungeecordUnknownItem.ReplaceItem)");
        e.printStackTrace();
    }
    InteractiveChat.useBukkitDisplayName = getConfig().getBoolean("Chat.UseBukkitDisplayName");
    InteractiveChat.useEssentialsNicknames = getConfig().getBoolean("Chat.UseEssentialsNicknames");
    InteractiveChat.rgbTags = getConfig().getBoolean("Settings.FormattingTags.AllowRGBTags");
    InteractiveChat.fontTags = getConfig().getBoolean("Settings.FormattingTags.AllowFontTags");
    InteractiveChat.additionalRGBFormats = getConfig().getStringList("Settings.FormattingTags.AdditionalRGBFormats").stream().map(each -> Pattern.compile(each)).collect(Collectors.toList());
    InteractiveChat.language = getConfig().getString("Settings.Language");
    Bukkit.getScheduler().runTaskAsynchronously(InteractiveChat.plugin, () -> {
        LanguageUtils.loadTranslations(InteractiveChat.language);
        if (WebData.getInstance() == null) {
            WebData.newInstance();
        } else {
            WebData.getInstance().reload();
        }
    });
    InteractiveChat.itemDisplay.clearAndSetTimeout(InteractiveChat.itemDisplayTimeout);
    InteractiveChat.inventoryDisplay.clearAndSetTimeout(InteractiveChat.itemDisplayTimeout);
    InteractiveChat.inventoryDisplay1Upper.clearAndSetTimeout(InteractiveChat.itemDisplayTimeout);
    InteractiveChat.inventoryDisplay1Lower.clearAndSetTimeout(InteractiveChat.itemDisplayTimeout);
    InteractiveChat.enderDisplay.clearAndSetTimeout(InteractiveChat.itemDisplayTimeout);
    InteractiveChat.mapDisplay.clearAndSetTimeout(InteractiveChat.itemDisplayTimeout);
    InteractiveChat.upperSharedInventory.clear();
    InteractiveChat.lowerSharedInventory.clear();
}
Also used : MCVersion(com.loohp.interactivechat.utils.MCVersion) ItemMeta(org.bukkit.inventory.meta.ItemMeta) CustomPlaceholder(com.loohp.interactivechat.objectholders.CustomPlaceholder) WebData(com.loohp.interactivechat.objectholders.WebData) ConfigDataFixer(com.loohp.interactivechat.datafixer.ConfigDataFixer) ConfigurationSection(com.loohp.yamlconfiguration.ConfigurationSection) BuiltInPlaceholder(com.loohp.interactivechat.objectholders.BuiltInPlaceholder) ClickEvent(net.kyori.adventure.text.event.ClickEvent) ParsePlayer(com.loohp.interactivechat.objectholders.CustomPlaceholder.ParsePlayer) CustomPlaceholderReplaceText(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderReplaceText) HashSet(java.util.HashSet) LanguageUtils(com.loohp.interactivechat.utils.LanguageUtils) ICPlaceholder(com.loohp.interactivechat.objectholders.ICPlaceholder) Material(org.bukkit.Material) ChatColor(net.md_5.bungee.api.ChatColor) Bukkit(org.bukkit.Bukkit) YamlConfiguration(com.loohp.yamlconfiguration.YamlConfiguration) XMaterialUtils(com.loohp.interactivechat.utils.XMaterialUtils) IOException(java.io.IOException) Collectors(java.util.stream.Collectors) File(java.io.File) ItemStack(org.bukkit.inventory.ItemStack) InteractiveChat(com.loohp.interactivechat.InteractiveChat) List(java.util.List) ClickEventAction(com.loohp.interactivechat.objectholders.CustomPlaceholder.ClickEventAction) EventPriority(org.bukkit.event.EventPriority) CustomPlaceholderHoverEvent(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderHoverEvent) ChatColorUtils(com.loohp.interactivechat.utils.ChatColorUtils) Optional(java.util.Optional) Pattern(java.util.regex.Pattern) CustomPlaceholderClickEvent(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderClickEvent) CustomPlaceholderHoverEvent(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderHoverEvent) CustomPlaceholderClickEvent(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderClickEvent) Material(org.bukkit.Material) CustomPlaceholderReplaceText(com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderReplaceText) IOException(java.io.IOException) ParsePlayer(com.loohp.interactivechat.objectholders.CustomPlaceholder.ParsePlayer) ICPlaceholder(com.loohp.interactivechat.objectholders.ICPlaceholder) BuiltInPlaceholder(com.loohp.interactivechat.objectholders.BuiltInPlaceholder) CustomPlaceholder(com.loohp.interactivechat.objectholders.CustomPlaceholder) ItemStack(org.bukkit.inventory.ItemStack) ItemMeta(org.bukkit.inventory.meta.ItemMeta) ConfigurationSection(com.loohp.yamlconfiguration.ConfigurationSection)

Example 5 with CustomPlaceholder

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

the class CustomPlaceholderDisplay method process.

public static Component process(Component component, Optional<ICPlayer> optplayer, Player reciever, Collection<ICPlaceholder> placeholderList, long unix) {
    for (ICPlaceholder icplaceholder : placeholderList) {
        if (icplaceholder.isBuildIn()) {
            continue;
        }
        CustomPlaceholder cp = (CustomPlaceholder) icplaceholder;
        ICPlayer parseplayer = (cp.getParsePlayer().equals(ParsePlayer.SENDER) && optplayer.isPresent()) ? optplayer.get() : ICPlayerFactory.getICPlayer(reciever);
        if (InteractiveChat.useCustomPlaceholderPermissions && optplayer.isPresent()) {
            ICPlayer sender = optplayer.get();
            if (!PlayerUtils.hasPermission(sender.getUniqueId(), cp.getPermission(), true, 5)) {
                continue;
            }
        }
        String placeholder = cp.getKeyword().pattern();
        placeholder = (cp.getParseKeyword()) ? PlaceholderParser.parse(parseplayer, placeholder) : placeholder;
        long cooldown = cp.getCooldown();
        boolean hoverEnabled = cp.getHover().isEnabled();
        String hoverText = cp.getHover().getText();
        boolean clickEnabled = cp.getClick().isEnabled();
        ClickEventAction clickAction = cp.getClick().getAction();
        String clickValue = cp.getClick().getValue();
        boolean replaceEnabled = cp.getReplace().isEnabled();
        String replaceText = cp.getReplace().getReplaceText();
        component = processCustomPlaceholder(parseplayer, Pattern.compile(placeholder), cooldown, hoverEnabled, hoverText, clickEnabled, clickAction, clickValue, replaceEnabled, replaceText, component, optplayer, unix);
    }
    if (InteractiveChat.t && WebData.getInstance() != null) {
        for (CustomPlaceholder cp : WebData.getInstance().getSpecialPlaceholders()) {
            ICPlayer parseplayer = (cp.getParsePlayer().equals(ParsePlayer.SENDER) && optplayer.isPresent()) ? optplayer.get() : ICPlayerFactory.getICPlayer(reciever);
            String placeholder = cp.getKeyword().pattern();
            placeholder = (cp.getParseKeyword()) ? PlaceholderParser.parse(parseplayer, placeholder) : placeholder;
            long cooldown = cp.getCooldown();
            boolean hoverEnabled = cp.getHover().isEnabled();
            String hoverText = cp.getHover().getText();
            boolean clickEnabled = cp.getClick().isEnabled();
            ClickEventAction clickAction = cp.getClick().getAction();
            String clickValue = cp.getClick().getValue();
            boolean replaceEnabled = cp.getReplace().isEnabled();
            String replaceText = cp.getReplace().getReplaceText();
            component = processCustomPlaceholder(parseplayer, Pattern.compile(placeholder), cooldown, hoverEnabled, hoverText, clickEnabled, clickAction, clickValue, replaceEnabled, replaceText, component, optplayer, unix);
        }
    }
    return component;
}
Also used : ICPlayer(com.loohp.interactivechat.objectholders.ICPlayer) ICPlaceholder(com.loohp.interactivechat.objectholders.ICPlaceholder) CustomPlaceholder(com.loohp.interactivechat.objectholders.CustomPlaceholder) ClickEventAction(com.loohp.interactivechat.objectholders.CustomPlaceholder.ClickEventAction)

Aggregations

CustomPlaceholder (com.loohp.interactivechat.objectholders.CustomPlaceholder)11 ICPlaceholder (com.loohp.interactivechat.objectholders.ICPlaceholder)10 CustomPlaceholderClickEvent (com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderClickEvent)8 CustomPlaceholderHoverEvent (com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderHoverEvent)8 CustomPlaceholderReplaceText (com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderReplaceText)8 ClickEventAction (com.loohp.interactivechat.objectholders.CustomPlaceholder.ClickEventAction)6 Pattern (java.util.regex.Pattern)6 InteractiveChat (com.loohp.interactivechat.InteractiveChat)5 ParsePlayer (com.loohp.interactivechat.objectholders.CustomPlaceholder.ParsePlayer)5 ChatColorUtils (com.loohp.interactivechat.utils.ChatColorUtils)5 IOException (java.io.IOException)5 UUID (java.util.UUID)5 Collectors (java.util.stream.Collectors)5 BuiltInPlaceholder (com.loohp.interactivechat.objectholders.BuiltInPlaceholder)4 ICPlayer (com.loohp.interactivechat.objectholders.ICPlayer)4 Registry (com.loohp.interactivechat.registry.Registry)4 File (java.io.File)4 List (java.util.List)4 ByteArrayDataInput (com.google.common.io.ByteArrayDataInput)3 ByteArrayDataOutput (com.google.common.io.ByteArrayDataOutput)3