Вопрос Перезагрузка кастомного конфига

Версия Minecraft
1.12.X

GoldenSunsetMine

Пользователь
Сообщения
121
Решения
2
Мне нужно перезагрузить кастомный конфиг после того, как игрок сделал привязку аккаунта к дискорду. Сейчас такая проблема, что когда игрок привязал аккаунт и аккаунт сохранился в links.yml, то чтобы этот аккаунт начал отображаться в дискорде, нужно перезагрузить сервер. Очень много способов попробовал перезагрузки и ни один не помог.

Java:
package com.bodya.sentinel.DsCommands;

import com.bodya.sentinel.Main;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.emoji.Emoji;
import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent;
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
import net.dv8tion.jda.api.events.interaction.component.StringSelectInteractionEvent;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import net.dv8tion.jda.api.interactions.components.ActionRow;
import net.dv8tion.jda.api.interactions.components.buttons.Button;
import net.dv8tion.jda.api.interactions.components.selections.SelectOption;
import net.dv8tion.jda.api.interactions.components.selections.StringSelectMenu;
import net.dv8tion.jda.api.interactions.components.text.TextInput;
import net.dv8tion.jda.api.interactions.components.text.TextInputStyle;
import net.dv8tion.jda.api.interactions.modals.Modal;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import java.awt.*;
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.List;

public class LinkTable extends ListenerAdapter implements Listener {

    private JDA jda;
    private FileConfiguration linksConfig;
    private File linksFile;

    public LinkTable(JDA jda) {
        this.jda = jda;
        this.linksFile = new File(Main.getInstance().getDataFolder(), "links.yml");
        this.linksConfig = YamlConfiguration.loadConfiguration(linksFile);
        if (!linksFile.exists()) {
            try {
                linksFile.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    @EventHandler
    public void onInventoryClick(InventoryClickEvent event) {
        if (!event.getView().getTitle().equals("Привязка аккаунта")) return;

        event.setCancelled(true);
        handleInventoryClick(event);
    }

    private void handleInventoryClick(InventoryClickEvent event) {
        ItemStack clickedItem = event.getCurrentItem();
        if (clickedItem == null || clickedItem.getType() == Material.AIR) return;

        ItemMeta itemMeta = clickedItem.getItemMeta();
        if (itemMeta == null || !itemMeta.hasDisplayName() || !itemMeta.hasLore()) return;

        Player player = (Player) event.getWhoClicked();
        int slot = event.getRawSlot();

        if (slot == 21) {
            confirmLink(player, itemMeta);
        } else if (slot == 23) {
            cancelLink(player);
        }
    }

    private void confirmLink(Player player, ItemMeta itemMeta) {
        List<String> lore = itemMeta.getLore();
        String discordIdLine = lore.get(lore.size() - 1);
        String[] parts = discordIdLine.split(": ");
        if (parts.length == 2) {
            String discordId = parts[1].trim();
            saveLink(discordId, player.getName(), player.getUniqueId());
            player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&3[Sentinel] &fВы успешно &aпривязали &fаккаунт!"));
        }
        player.closeInventory();
    }

    private void saveLink(String discordId, String nickname, UUID uuid) {
        String path = "links." + discordId;
        List<String> accounts = linksConfig.getStringList(path);
        accounts.add(nickname + ":" + uuid.toString());
        linksConfig.set(path, accounts);

        saveConfig();
    }

    private void saveConfig() {
        try {
            linksConfig.save(linksFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
 
Назад
Сверху Снизу