kawa Postado Agosto 6, 2019 Denunciar Compartilhar Postado Agosto 6, 2019 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 More sharing options...
iHuck Postado Agosto 6, 2019 Denunciar Compartilhar Postado Agosto 6, 2019 Mande print da class C07 sem ser em código(ferramenta de código da gb), em forma de print msm dentro do JDA. Link para o comentário Compartilhar em outros sites More sharing options...
kawa Postado Agosto 6, 2019 Autor Denunciar Compartilhar Postado Agosto 6, 2019 3 minutos atrás, iHuck disse: Mande print da class C07 sem ser em código(ferramenta de código da gb), em forma de print msm dentro do JDA. Claro, aqui está: http://prntscr.com/op7twc http://prntscr.com/op7tyo Link para o comentário Compartilhar em outros sites More sharing options...
iHuck Postado Agosto 6, 2019 Denunciar Compartilhar Postado Agosto 6, 2019 O Erro está na classe C06, verifique no vídeo ou github do autor para saber se está tudo correto. Link para o comentário Compartilhar em outros sites More sharing options...
kawa Postado Agosto 6, 2019 Autor Denunciar Compartilhar Postado Agosto 6, 2019 1 hora atrás, iHuck disse: O Erro está na classe C06, verifique no vídeo ou github do autor para saber se está tudo correto. Fiz o que você disse e refiz o código exatamente como está no github mas continuo com o erro. http://prntscr.com/op9eio Link para o comentário Compartilhar em outros sites More sharing options...
iHuck Postado Agosto 7, 2019 Denunciar Compartilhar Postado Agosto 7, 2019 20 horas atrás, kawa disse: Fiz o que você disse e refiz o código exatamente como está no github mas continuo com o erro. http://prntscr.com/op9eio C07, linhas 25, 27 Link para o comentário Compartilhar em outros sites More sharing options...
kawa Postado Agosto 8, 2019 Autor Denunciar Compartilhar Postado Agosto 8, 2019 20 horas atrás, iHuck disse: C07, linhas 25, 27 Mais eu não entendo por que está dando erro nessas linhas, esse é o código da linha http://prntscr.com/oq2sk1 Link para o comentário Compartilhar em outros sites More sharing options...
iHuck Postado Agosto 8, 2019 Denunciar Compartilhar Postado Agosto 8, 2019 o "Role-Sync" está na config? Link para o comentário Compartilhar em outros sites More sharing options...
americaworda Postado Agosto 15, 2019 Denunciar Compartilhar Postado Agosto 15, 2019 Seu tópico está sendo avisado de Inatividade. Caso não haja respostas em 7 dias, ele será fechado. OBS: Essa mensagem é automática. Link para o comentário Compartilhar em outros sites More sharing options...
gaalaxY Postado Agosto 23, 2019 Denunciar Compartilhar Postado Agosto 23, 2019 Seu tópico foi marcado como Inativo. Para reverter esta ação, entre em contato com a equipe de Moderação. OBS: Essa mensagem é automática. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados