Search in sources :

Example 1 with ResourceManager

use of com.loohp.interactivechatdiscordsrvaddon.resources.ResourceManager in project InteractiveChat-DiscordSRV-Addon by LOOHP.

the class MinecraftFontRenderer method loadResources.

public void loadResources() {
    try {
        if (!resourceLock.tryLock(0, TimeUnit.MILLISECONDS)) {
            return;
        }
    } catch (InterruptedException e) {
    }
    reloadResourcesButton.setEnabled(false);
    resourceBar.setValue(0);
    resourceBar.setVisible(true);
    textAreaResources.setText("Loading Resources...");
    updateTextAreaInputSize();
    List<String> resourceOrder;
    int valuePerPack;
    try {
        YamlConfiguration yaml = new YamlConfiguration(new FileInputStream("InteractiveChatDiscordSrvAddon/config.yml"));
        resourceOrder = yaml.getStringList("Resources.Order");
        Collections.reverse(resourceOrder);
        valuePerPack = (int) ((1.0 / (double) (resourceOrder.size() + 1)) * 10000);
    } catch (IOException e) {
        Toolkit.getDefaultToolkit().beep();
        JOptionPane.showMessageDialog(null, GUIMain.createLabel("There is an error while loading from config:\n" + e.getMessage(), 13, Color.RED), title, JOptionPane.ERROR_MESSAGE);
        return;
    }
    if (resourceManager != null) {
        resourceManager.close();
    }
    PrintStream original = System.err;
    try {
        resourceManager = new ResourceManager();
        resourceManager.loadResources(new File("InteractiveChatDiscordSrvAddon/built-in", "Default"));
        resourceBar.setValue(valuePerPack);
        for (String resourceName : resourceOrder) {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            System.setErr(new PrintStream(baos));
            try {
                File resourcePackFile = new File("InteractiveChatDiscordSrvAddon/resourcepacks/" + resourceName);
                ResourcePackInfo info = resourceManager.loadResources(resourcePackFile);
            } catch (Exception e) {
                e.printStackTrace();
            }
            String error = baos.toString();
            if (!error.isEmpty()) {
                ForkJoinPool.commonPool().execute(() -> JOptionPane.showMessageDialog(null, GUIMain.createLabel("There are errors while loading \"" + resourceName + "\":\n" + error, 13, Color.RED), title, JOptionPane.ERROR_MESSAGE));
            }
            resourceBar.setValue(resourceBar.getValue() + valuePerPack);
        }
    } catch (Throwable e) {
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        e.printStackTrace(pw);
        Toolkit.getDefaultToolkit().beep();
        JOptionPane.showMessageDialog(null, GUIMain.createLabel("An error occurred!\n" + sw, 13, Color.RED), title, JOptionPane.ERROR_MESSAGE);
    }
    System.setErr(original);
    textAreaResources.setText("Loaded Resources:\n");
    for (ResourcePackInfo info : resourceManager.getResourcePackInfo()) {
        textAreaResources.append(" - " + info.getName());
        if (!info.getStatus()) {
            textAreaResources.append(" (Failed)");
        }
        textAreaResources.append("\n");
    }
    List<LanguageData> languages = getAllLanguageData(resourceManager.getLanguageManager());
    String lastSelected = comboBoxLanguages.getSelectedItem() == null ? null : ((LanguageData) comboBoxLanguages.getSelectedItem()).getLanguage();
    comboBoxLanguages.removeAllItems();
    for (LanguageData language : languages) {
        comboBoxLanguages.addItem(language);
    }
    Optional<LanguageData> optLanguage = languages.stream().filter(each -> each.getLanguage().equalsIgnoreCase(lastSelected == null ? "en_us" : lastSelected)).findFirst();
    if (optLanguage.isPresent()) {
        comboBoxLanguages.setSelectedItem(optLanguage.get());
    } else {
        comboBoxLanguages.setSelectedIndex(0);
    }
    reloadResourcesButton.setEnabled(true);
    resourceBar.setVisible(false);
    updateTextAreaInputSize();
    resourceLock.unlock();
}
Also used : Color(java.awt.Color) YamlConfiguration(com.loohp.interactivechat.libs.com.loohp.yamlconfiguration.YamlConfiguration) URLClassLoaderAccess(com.loohp.interactivechatdiscordsrvaddon.libs.URLClassLoaderAccess) ResourcePackInfo(com.loohp.interactivechatdiscordsrvaddon.resources.ResourcePackInfo) RenderingHints(java.awt.RenderingHints) TextureAnimation(com.loohp.interactivechatdiscordsrvaddon.resources.textures.TextureAnimation) URLClassLoader(java.net.URLClassLoader) ImageIO(javax.imageio.ImageIO) MouseAdapter(java.awt.event.MouseAdapter) TextureResource(com.loohp.interactivechatdiscordsrvaddon.resources.textures.TextureResource) JFileChooser(javax.swing.JFileChooser) JComboBox(javax.swing.JComboBox) JFrame(javax.swing.JFrame) BorderLayout(java.awt.BorderLayout) Clipboard(java.awt.datatransfer.Clipboard) PrintWriter(java.io.PrintWriter) BufferedImage(java.awt.image.BufferedImage) BorderFactory(javax.swing.BorderFactory) Icon(javax.swing.Icon) LanguageManager(com.loohp.interactivechatdiscordsrvaddon.resources.languages.LanguageManager) ComponentEvent(java.awt.event.ComponentEvent) KeyEvent(java.awt.event.KeyEvent) Collectors(java.util.stream.Collectors) Executors(java.util.concurrent.Executors) Objects(java.util.Objects) Dimension(java.awt.Dimension) List(java.util.List) GridConstraints(com.loohp.interactivechat.libs.com.intellij.uiDesigner.core.GridConstraints) JCheckBox(javax.swing.JCheckBox) Graphics(java.awt.Graphics) Optional(java.util.Optional) Pattern(java.util.regex.Pattern) JPanel(javax.swing.JPanel) WindowConstants(javax.swing.WindowConstants) Toolkit(java.awt.Toolkit) Insets(java.awt.Insets) ImageUtils(com.loohp.interactivechatdiscordsrvaddon.graphics.ImageUtils) ByteArrayOutputStream(java.io.ByteArrayOutputStream) JTextField(javax.swing.JTextField) ResourceManager(com.loohp.interactivechatdiscordsrvaddon.resources.ResourceManager) SpinnerNumberModel(javax.swing.SpinnerNumberModel) CompletableFuture(java.util.concurrent.CompletableFuture) KeyAdapter(java.awt.event.KeyAdapter) AtomicReference(java.util.concurrent.atomic.AtomicReference) ComponentStyling(com.loohp.interactivechat.utils.ComponentStyling) ArrayList(java.util.ArrayList) GridLayout(java.awt.GridLayout) SwingUtilities(javax.swing.SwingUtilities) FocusAdapter(java.awt.event.FocusAdapter) ResourceDownloadManager(com.loohp.interactivechatdiscordsrvaddon.resources.ResourceDownloadManager) PlainTextComponentSerializer(com.loohp.interactivechat.libs.net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer) JMenuItem(javax.swing.JMenuItem) Graphics2D(java.awt.Graphics2D) JProgressBar(javax.swing.JProgressBar) ExecutorService(java.util.concurrent.ExecutorService) GsonComponentSerializer(com.loohp.interactivechat.libs.net.kyori.adventure.text.serializer.gson.GsonComponentSerializer) JComponent(javax.swing.JComponent) PrintStream(java.io.PrintStream) JButton(javax.swing.JButton) JSpinner(javax.swing.JSpinner) ReentrantLock(java.util.concurrent.locks.ReentrantLock) Component(com.loohp.interactivechat.libs.net.kyori.adventure.text.Component) ResourceRegistry(com.loohp.interactivechatdiscordsrvaddon.registry.ResourceRegistry) JPopupMenu(javax.swing.JPopupMenu) StringWriter(java.io.StringWriter) Spacer(com.loohp.interactivechat.libs.com.intellij.uiDesigner.core.Spacer) TextureMeta(com.loohp.interactivechatdiscordsrvaddon.resources.textures.TextureMeta) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) JOptionPane(javax.swing.JOptionPane) MouseEvent(java.awt.event.MouseEvent) File(java.io.File) JScrollPane(javax.swing.JScrollPane) ComponentAdapter(java.awt.event.ComponentAdapter) TimeUnit(java.util.concurrent.TimeUnit) GridLayoutManager(com.loohp.interactivechat.libs.com.intellij.uiDesigner.core.GridLayoutManager) JLabel(javax.swing.JLabel) FocusEvent(java.awt.event.FocusEvent) ForkJoinPool(java.util.concurrent.ForkJoinPool) ChatColorUtils(com.loohp.interactivechat.utils.ChatColorUtils) TextureProperties(com.loohp.interactivechatdiscordsrvaddon.resources.textures.TextureProperties) JTextArea(javax.swing.JTextArea) NamedTextColor(com.loohp.interactivechat.libs.net.kyori.adventure.text.format.NamedTextColor) Collections(java.util.Collections) LegacyComponentSerializer(com.loohp.interactivechat.libs.net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer) PrintStream(java.io.PrintStream) IOException(java.io.IOException) ResourceManager(com.loohp.interactivechatdiscordsrvaddon.resources.ResourceManager) ByteArrayOutputStream(java.io.ByteArrayOutputStream) YamlConfiguration(com.loohp.interactivechat.libs.com.loohp.yamlconfiguration.YamlConfiguration) FileInputStream(java.io.FileInputStream) ResourcePackInfo(com.loohp.interactivechatdiscordsrvaddon.resources.ResourcePackInfo) IOException(java.io.IOException) StringWriter(java.io.StringWriter) File(java.io.File) PrintWriter(java.io.PrintWriter)

Example 2 with ResourceManager

use of com.loohp.interactivechatdiscordsrvaddon.resources.ResourceManager in project InteractiveChat-DiscordSRV-Addon by LOOHP.

the class BlockModelRenderer method loadResources.

public void loadResources() {
    try {
        if (!lock.tryLock(0, TimeUnit.MILLISECONDS)) {
            return;
        }
    } catch (InterruptedException e) {
    }
    renderModelButton.setEnabled(false);
    reloadResourcesButton.setEnabled(false);
    resourceBar.setValue(0);
    resourceBar.setVisible(true);
    textAreaResources.setText("Loading Resources...");
    List<String> resourceOrder;
    int valuePerPack;
    try {
        YamlConfiguration yaml = new YamlConfiguration(new FileInputStream("InteractiveChatDiscordSrvAddon/config.yml"));
        resourceOrder = yaml.getStringList("Resources.Order");
        Collections.reverse(resourceOrder);
        valuePerPack = (int) ((1.0 / (double) (resourceOrder.size() + 1)) * 10000);
    } catch (IOException e) {
        Toolkit.getDefaultToolkit().beep();
        JOptionPane.showMessageDialog(null, GUIMain.createLabel("There is an error while loading from config:\n" + e.getMessage(), 13, Color.RED), title, JOptionPane.ERROR_MESSAGE);
        return;
    }
    if (resourceManager != null) {
        resourceManager.close();
    }
    PrintStream original = System.err;
    try {
        resourceManager = new ResourceManager();
        resourceManager.loadResources(new File("InteractiveChatDiscordSrvAddon/built-in", "Default"));
        resourceBar.setValue(valuePerPack);
        for (String resourceName : resourceOrder) {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            System.setErr(new PrintStream(baos));
            try {
                File resourcePackFile = new File("InteractiveChatDiscordSrvAddon/resourcepacks/" + resourceName);
                ResourcePackInfo info = resourceManager.loadResources(resourcePackFile);
            } catch (Exception e) {
                e.printStackTrace();
            }
            String error = baos.toString();
            if (!error.isEmpty()) {
                ForkJoinPool.commonPool().execute(() -> JOptionPane.showMessageDialog(null, GUIMain.createLabel("There are errors while loading \"" + resourceName + "\":\n" + error, 13, Color.RED), title, JOptionPane.ERROR_MESSAGE));
            }
            resourceBar.setValue(resourceBar.getValue() + valuePerPack);
        }
    } catch (Throwable e) {
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        e.printStackTrace(pw);
        Toolkit.getDefaultToolkit().beep();
        JOptionPane.showMessageDialog(null, GUIMain.createLabel("An error occurred!\n" + sw, 13, Color.RED), title, JOptionPane.ERROR_MESSAGE);
    }
    System.setErr(original);
    textAreaResources.setText("Loaded Resources:\n");
    for (ResourcePackInfo info : resourceManager.getResourcePackInfo()) {
        textAreaResources.append(" - " + info.getName());
        if (!info.getStatus()) {
            textAreaResources.append(" (Failed)");
        }
        textAreaResources.append("\n");
    }
    renderModelButton.setEnabled(true);
    reloadResourcesButton.setEnabled(true);
    resourceBar.setVisible(false);
    lock.unlock();
}
Also used : PrintStream(java.io.PrintStream) IOException(java.io.IOException) ResourceManager(com.loohp.interactivechatdiscordsrvaddon.resources.ResourceManager) ByteArrayOutputStream(java.io.ByteArrayOutputStream) YamlConfiguration(com.loohp.interactivechat.libs.com.loohp.yamlconfiguration.YamlConfiguration) FileInputStream(java.io.FileInputStream) ResourcePackInfo(com.loohp.interactivechatdiscordsrvaddon.resources.ResourcePackInfo) IOException(java.io.IOException) StringWriter(java.io.StringWriter) File(java.io.File) PrintWriter(java.io.PrintWriter)

Example 3 with ResourceManager

use of com.loohp.interactivechatdiscordsrvaddon.resources.ResourceManager in project InteractiveChat-DiscordSRV-Addon by LOOHP.

the class InteractiveChatDiscordSrvAddon method reloadTextures.

public void reloadTextures(boolean redownload, boolean clean, CommandSender... receivers) {
    CommandSender[] senders;
    if (Stream.of(receivers).noneMatch(each -> each.equals(Bukkit.getConsoleSender()))) {
        senders = new CommandSender[receivers.length + 1];
        System.arraycopy(receivers, 0, senders, 0, receivers.length);
        senders[senders.length - 1] = Bukkit.getConsoleSender();
    } else {
        senders = receivers;
    }
    Bukkit.getScheduler().runTaskAsynchronously(this, () -> {
        try {
            if (!resourceReloadLock.tryLock(0, TimeUnit.MILLISECONDS)) {
                sendMessage(ChatColor.YELLOW + "Resource reloading already in progress!", senders);
                return;
            }
            isReady = false;
            if (InteractiveChatDiscordSrvAddon.plugin.resourceManager != null) {
                Bukkit.getScheduler().callSyncMethod(plugin, () -> {
                    InteractiveChatDiscordSrvAddon.plugin.resourceManager.close();
                    return null;
                }).get();
            }
            try {
                AssetsDownloader.loadAssets(getDataFolder(), redownload, clean, receivers);
            } catch (Exception e) {
                e.printStackTrace();
            }
            List<String> resourceList = new ArrayList<>();
            resourceList.add("Default");
            resourceList.addAll(resourceOrder);
            sendMessage(ChatColor.AQUA + "[ICDiscordSrvAddon] Reloading ResourceManager: " + ChatColor.YELLOW + String.join(", ", resourceList), senders);
            ResourceManager resourceManager = new ResourceManager();
            resourceManager.getLanguageManager().setTranslateFunction((translateKey, language) -> LanguageUtils.getTranslation(translateKey, language));
            resourceManager.getLanguageManager().setAvailableLanguagesSupplier(() -> LanguageUtils.getLoadedLanguages());
            resourceManager.getLanguageManager().registerReloadListener(e -> {
                LanguageUtils.clearPluginTranslations(InteractiveChatDiscordSrvAddon.plugin);
                for (Entry<String, Map<String, String>> entry : e.getTranslations().entrySet()) {
                    LanguageUtils.loadPluginTranslations(InteractiveChatDiscordSrvAddon.plugin, entry.getKey(), entry.getValue());
                }
            });
            Bukkit.getConsoleSender().sendMessage(ChatColor.AQUA + "[ICDiscordSrvAddon] Loading \"Default\" resources...");
            resourceManager.loadResources(new File(getDataFolder() + "/built-in", "Default"));
            for (String resourceName : resourceOrder) {
                try {
                    Bukkit.getConsoleSender().sendMessage(ChatColor.AQUA + "[ICDiscordSrvAddon] Loading \"" + resourceName + "\" resources...");
                    File resourcePackFile = new File(getDataFolder(), "resourcepacks/" + resourceName);
                    ResourcePackInfo info = resourceManager.loadResources(resourcePackFile);
                    if (info.getStatus()) {
                        if (info.comparePackFormat() > 0) {
                            sendMessage(ChatColor.YELLOW + "[ICDiscordSrvAddon] Warning: \"" + resourceName + "\" was made for a newer version of Minecraft!", senders);
                        } else if (info.comparePackFormat() < 0) {
                            sendMessage(ChatColor.YELLOW + "[ICDiscordSrvAddon] Warning: \"" + resourceName + "\" was made for an older version of Minecraft!", senders);
                        }
                    } else {
                        if (info.getRejectedReason() == null) {
                            sendMessage(ChatColor.RED + "[ICDiscordSrvAddon] Unable to load \"" + resourceName + "\"", senders);
                        } else {
                            sendMessage(ChatColor.RED + "[ICDiscordSrvAddon] Unable to load \"" + resourceName + "\", Reason: " + info.getRejectedReason(), senders);
                        }
                    }
                } catch (Exception e) {
                    sendMessage(ChatColor.RED + "[ICDiscordSrvAddon] Unable to load \"" + resourceName + "\"", senders);
                    e.printStackTrace();
                }
            }
            Bukkit.getScheduler().callSyncMethod(plugin, () -> {
                InteractiveChatDiscordSrvAddon.plugin.resourceManager = resourceManager;
                Cache.clearAllCache();
                if (resourceManager.getResourcePackInfo().stream().allMatch(each -> each.getStatus())) {
                    sendMessage(ChatColor.AQUA + "[ICDiscordSrvAddon] Loaded all resources!", senders);
                    isReady = true;
                } else {
                    sendMessage(ChatColor.RED + "[ICDiscordSrvAddon] There is a problem while loading resources.", senders);
                }
                return null;
            }).get();
            resourceReloadLock.unlock();
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }
    });
}
Also used : Color(java.awt.Color) Charts(com.loohp.interactivechatdiscordsrvaddon.metrics.Charts) Arrays(java.util.Arrays) FontTextureResource(com.loohp.interactivechatdiscordsrvaddon.resources.fonts.FontTextureResource) ListIterator(java.util.ListIterator) ResourcePackInfo(com.loohp.interactivechatdiscordsrvaddon.resources.ResourcePackInfo) JSONParser(com.loohp.interactivechat.libs.org.json.simple.parser.JSONParser) EventHandler(org.bukkit.event.EventHandler) ICPlayer(com.loohp.interactivechat.objectholders.ICPlayer) Map(java.util.Map) ThreadFactory(java.util.concurrent.ThreadFactory) PlaceholderCooldownManager(com.loohp.interactivechat.objectholders.PlaceholderCooldownManager) Debug(com.loohp.interactivechatdiscordsrvaddon.debug.Debug) Bukkit(org.bukkit.Bukkit) InboundToGameEvents(com.loohp.interactivechatdiscordsrvaddon.listeners.InboundToGameEvents) PlayerJoinEvent(org.bukkit.event.player.PlayerJoinEvent) CommandSender(org.bukkit.command.CommandSender) BufferedImage(java.awt.image.BufferedImage) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Set(java.util.Set) UUID(java.util.UUID) Executors(java.util.concurrent.Executors) InteractiveChat(com.loohp.interactivechat.InteractiveChat) JavaPlugin(org.bukkit.plugin.java.JavaPlugin) ImageGeneration(com.loohp.interactivechatdiscordsrvaddon.graphics.ImageGeneration) List(java.util.List) Stream(java.util.stream.Stream) Entry(java.util.Map.Entry) Queue(java.util.Queue) Permission(github.scarsz.discordsrv.dependencies.jda.api.Permission) ConcurrentLinkedQueue(java.util.concurrent.ConcurrentLinkedQueue) ThreadFactoryBuilder(com.google.common.util.concurrent.ThreadFactoryBuilder) DiscordReadyEvents(com.loohp.interactivechatdiscordsrvaddon.listeners.DiscordReadyEvents) ImageUtils(com.loohp.interactivechatdiscordsrvaddon.graphics.ImageUtils) ResourceManager(com.loohp.interactivechatdiscordsrvaddon.resources.ResourceManager) Registry(com.loohp.interactivechat.registry.Registry) Config(com.loohp.interactivechat.config.Config) ModelRenderer(com.loohp.interactivechatdiscordsrvaddon.resources.ModelRenderer) SkinUtils(com.loohp.interactivechat.utils.SkinUtils) StandardCopyOption(java.nio.file.StandardCopyOption) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) DiscordSRV(github.scarsz.discordsrv.DiscordSRV) LanguageUtils(com.loohp.interactivechat.utils.LanguageUtils) InteractiveChatRegistry(com.loohp.interactivechatdiscordsrvaddon.registry.InteractiveChatRegistry) Metrics(com.loohp.interactivechatdiscordsrvaddon.metrics.Metrics) JSONObject(com.loohp.interactivechat.libs.org.json.simple.JSONObject) OutboundToDiscordEvents(com.loohp.interactivechatdiscordsrvaddon.listeners.OutboundToDiscordEvents) ExecutorService(java.util.concurrent.ExecutorService) ChatColor(net.md_5.bungee.api.ChatColor) Listener(org.bukkit.event.Listener) ColorUtils(com.loohp.interactivechat.utils.ColorUtils) ReentrantLock(java.util.concurrent.locks.ReentrantLock) Files(java.nio.file.Files) IOException(java.io.IOException) ICPlayerEvents(com.loohp.interactivechatdiscordsrvaddon.listeners.ICPlayerEvents) File(java.io.File) ExecutionException(java.util.concurrent.ExecutionException) TimeUnit(java.util.concurrent.TimeUnit) AtomicLong(java.util.concurrent.atomic.AtomicLong) ICPlayerFactory(com.loohp.interactivechat.objectholders.ICPlayerFactory) ChatColorUtils(com.loohp.interactivechat.utils.ChatColorUtils) Collections(java.util.Collections) Updater(com.loohp.interactivechatdiscordsrvaddon.updater.Updater) ArrayList(java.util.ArrayList) ResourceManager(com.loohp.interactivechatdiscordsrvaddon.resources.ResourceManager) IOException(java.io.IOException) ExecutionException(java.util.concurrent.ExecutionException) ResourcePackInfo(com.loohp.interactivechatdiscordsrvaddon.resources.ResourcePackInfo) CommandSender(org.bukkit.command.CommandSender) ExecutionException(java.util.concurrent.ExecutionException) Map(java.util.Map) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) File(java.io.File)

Aggregations

ResourceManager (com.loohp.interactivechatdiscordsrvaddon.resources.ResourceManager)3 ResourcePackInfo (com.loohp.interactivechatdiscordsrvaddon.resources.ResourcePackInfo)3 File (java.io.File)3 IOException (java.io.IOException)3 YamlConfiguration (com.loohp.interactivechat.libs.com.loohp.yamlconfiguration.YamlConfiguration)2 ChatColorUtils (com.loohp.interactivechat.utils.ChatColorUtils)2 ImageUtils (com.loohp.interactivechatdiscordsrvaddon.graphics.ImageUtils)2 Color (java.awt.Color)2 ByteArrayOutputStream (java.io.ByteArrayOutputStream)2 FileInputStream (java.io.FileInputStream)2 PrintStream (java.io.PrintStream)2 PrintWriter (java.io.PrintWriter)2 StringWriter (java.io.StringWriter)2 ThreadFactoryBuilder (com.google.common.util.concurrent.ThreadFactoryBuilder)1 InteractiveChat (com.loohp.interactivechat.InteractiveChat)1 Config (com.loohp.interactivechat.config.Config)1 GridConstraints (com.loohp.interactivechat.libs.com.intellij.uiDesigner.core.GridConstraints)1 GridLayoutManager (com.loohp.interactivechat.libs.com.intellij.uiDesigner.core.GridLayoutManager)1 Spacer (com.loohp.interactivechat.libs.com.intellij.uiDesigner.core.Spacer)1 Component (com.loohp.interactivechat.libs.net.kyori.adventure.text.Component)1