Ir para conteúdo

[Ajuda] Preciso de ajuda com JDA


kawa

Posts Recomendados

Olá, eu nunca usei JDA então por favor desconsidere qualquer erro obvio.

Eu estava vendo o vídeo do The Source Code sobre integrar o Discord com o minecraft, mais especificamente os cargos, eu consegui fazer a primeira parte com êxito que é a do sistema de verificação, mas quando chegou na parte de dar os cargos em si tive problema com erro então fui no git do Source e copiei exatamente o código que ele usou e continuei com erro. Tentei buscar ajuda em alguns outros lugares mas não consegui, espero que vocês possam me ajudar.

Minha classe para definir os cargos:

public class C07 implements Listener {
    private Main plugin;
    private HashMap<String, Role> permissionRoleMap;
    public C07(Main main) {
        this.plugin = main;
        permissionRoleMap = new HashMap<>();
        Bukkit.getScheduler().runTaskLater(plugin, this::loadRoles,40L);
        Bukkit.getServer().getPluginManager().registerEvents(this,plugin);
    }
    private void loadRoles() {
        plugin.getConfig().getConfigurationSection("Role-sync").getKeys(false).forEach(s -> {
            String rolename = plugin.getConfig().getString("Role-sync."+s+".Name");
            if(plugin.c06.guild.getRolesByName(rolename, false).size()>0){
                plugin.console.sendMessage("§aCargo "+rolename+" foi carregado!");
                String permission = plugin.getConfig().getString("Role-sync."+s+".Permission");
                Role role = plugin.c06.guild.getRolesByName(rolename,false).get(0);
                permissionRoleMap.put(permission,role);
            }
        });
    }
    @EventHandler
    public void onQuit(PlayerQuitEvent e){
        Player player = e.getPlayer();
        if(plugin.c06.verifiedmembers.contains(player.getUniqueId())){
            plugin.c06.verifiedmembers.remove(player.getUniqueId());
            String discordid = plugin.playerData.getString("Data."+player.getUniqueId().toString());
            Member member = plugin.c06.guild.getMemberById(discordid);
            if(member==null)return;
            List<Role> rolestoadd = new ArrayList<>();
            List<Role> rolestoremove = new ArrayList<>();
            List<Role> memberroles = member.getRoles();
            permissionRoleMap.forEach((permission,role)->{
                if(player.hasPermission(permission)){
                    if(!memberroles.contains(role))rolestoadd.add(role);
                }else{
                    if(memberroles.contains(role))rolestoremove.add(role);
                }
            });
            if(!rolestoadd.isEmpty()){
                plugin.c06.guild.getController().addRolesToMember(member,rolestoadd).queue();
            }
            if(!rolestoremove.isEmpty()){
                Bukkit.getScheduler().runTaskLater(plugin,()->plugin.c06.guild.getController().removeRolesFromMember(member,rolestoremove).queue(),20L);
            }
        }
    }
}


Minha classe para o sisteme de vincular:

 

public class C06 extends ListenerAdapter implements CommandExecutor, Listener {
    private Main plugin;
    public HashMap<UUID,String>uuidCodeMap;
    public HashMap<UUID,String>uuidIdMap;
    public List<UUID>verifiedmembers;
    public Guild guild;
    public JDA jda;
    public C06(Main main) {
        this.plugin = main;
        startBot();
        uuidCodeMap = new HashMap<>();
        uuidIdMap = new HashMap<>();
        verifiedmembers = new ArrayList<>();
        jda.addEventListener(this);
        plugin.getServer().getPluginManager().registerEvents(this,plugin);
        plugin.getCommand("vincular").setExecutor(this);
        Bukkit.getScheduler().runTaskLater(plugin,()->guild = jda.getGuildById("602509228996952064"),100L);
    }
    private void startBot() {
        try {
            jda = new JDABuilder(AccountType.BOT).setToken("N").build();
        } catch (LoginException e) {
            e.printStackTrace();
        }
    }
    @Override
    public void onGuildMessageReceived(GuildMessageReceivedEvent event) {
        if(event.getAuthor().isBot()||event.getAuthor().isFake()||event.isWebhookMessage())return;
        String[] args = event.getMessage().getContentRaw().split(" ");
        if(args[0].equalsIgnoreCase("!vincular")){ //!link 
            if(event.getMember().getRoles().stream().filter(role -> role.getName().equals("Membro")).findAny().orElse(null) != null){
                event.getChannel().sendMessage("Ops "+event.getAuthor().getAsMention()+", você já está verificado!").queue();
                return;
            }
            if(uuidIdMap.values().contains(event.getAuthor().getId())){
                event.getChannel().sendMessage("Ops "+event.getAuthor().getAsMention()+", você já possui um código gerado!").queue();
                return;
            }
            if(args.length!=2){
                event.getChannel().sendMessage("Ops você precisa especificar player!").queue();
                return;
            }
            Player target = Bukkit.getPlayer(args[1]);
            if(target==null){
                event.getChannel().sendMessage("Ops jogador não esta online!").queue();
                return;
            }
            String randomcode = new Random().nextInt(800000)+200000+"AA";
            uuidCodeMap.put(target.getUniqueId(),randomcode);
            uuidIdMap.put(target.getUniqueId(),event.getAuthor().getId());
            event.getAuthor().openPrivateChannel().complete().sendMessage("Hey! Seu código de verificação foi gerado!\n" +
                    "Use esse comando no jogo: ``/vincular "+randomcode+"``").queue();
        }
    }
    @EventHandler
    public void onJoin(PlayerJoinEvent e){
        if(plugin.playerData.contains("Data."+e.getPlayer().getUniqueId().toString())){
            verifiedmembers.add(e.getPlayer().getUniqueId());
        }
    }
    @EventHandler
    public void onQuit(PlayerQuitEvent e){
        verifiedmembers.remove(e.getPlayer().getUniqueId());
        uuidCodeMap.remove(e.getPlayer().getUniqueId());
        uuidIdMap.remove(e.getPlayer().getUniqueId());
    }
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { //  /verify randomcodeAA
        if(!(sender instanceof Player)){
            sender.sendMessage("§cApenas jogadores!");
            return true;
        }
        Player player = (Player) sender;
        if(plugin.playerData.contains("Data."+player.getUniqueId().toString())){
            player.sendMessage("§cOps, você já está verificado!");
            return true;
        }
        if(!uuidCodeMap.containsKey(player.getUniqueId())){
            player.sendMessage("§cNot pending verification process!");
            return true;
        }
        if(args.length!=1){
            player.sendMessage("§cUse: /vincular <código>");
            return true;
        }
        String actualcode = uuidCodeMap.get(player.getUniqueId());
        if(!actualcode.equals(args[0])){
            player.sendMessage("§cCódigo invalido! Por favor, tente novamente.");
            return true;
        }
        String discordid = uuidIdMap.get(player.getUniqueId());
        Member target = guild.getMemberById(discordid);
        if(target==null){
            uuidCodeMap.remove(player.getUniqueId());
            uuidIdMap.remove(player.getUniqueId());
            player.sendMessage("§cError! It seems that you left our Discord server!");
            return true;
        }
        plugin.playerData.set("Data."+player.getUniqueId().toString(),discordid);
        try {
            plugin.playerData.save(plugin.data);
        } catch (IOException e) {
            e.printStackTrace();
        }
        uuidCodeMap.remove(player.getUniqueId());
        uuidIdMap.remove(player.getUniqueId());
        verifiedmembers.add(player.getUniqueId());
        Role verifiedrole = guild.getRolesByName("Membro",false).get(0);
        guild.getController().addSingleRoleToMember(target,verifiedrole).queue();
        target.getUser().openPrivateChannel().complete().sendMessage(":white_check_mark: **|** Verification successfully, you have linked your account with Mc account: "+player.getName()).queue();
        player.sendMessage("§aYou have been verified correctly! You linked your account with member: "+target.getUser().getName()+"#"+target.getUser().getDiscriminator());
        return true;
    }
}


Minha Main:

 

public class Main extends JavaPlugin implements Listener {
    public ConsoleCommandSender console;
    public FileConfiguration playerData;
    public File data;
    public C06 c06;
    public C07 c07;
    @Override
    public void onEnable() {
        console = Bukkit.getServer().getConsoleSender();
        createConfig();
        console.sendMessage("[Plugin] Plugin Ativado!");
        c06 = new C06(this);
        c07 = new C07(this);
    }
    private void createConfig() {
        saveDefaultConfig();
        data = new File(getDataFolder() + File.separator + "data.yml");
        if (!data.exists()) {
            console.sendMessage(org.bukkit.ChatColor.LIGHT_PURPLE + "[Plugin] Criando arquivo data.yml");
            this.saveResource("data.yml", false);
        }
        playerData = new YamlConfiguration();
        try {
            playerData.load(data);
        } catch (IOException | InvalidConfigurationException e) {
            e.printStackTrace();
        }
    }
    @Override
    public void onDisable() {
        c06.jda.shutdownNow();
        console.sendMessage("[Plugin] Plugin desativado!");
    }
}


O erro: 
http://prntscr.com/op7q19

*OBS: Desculpe a organização do tópico, ainda sou novo aqui.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...