joao100101 Postado Dezembro 5, 2019 Denunciar Compartilhar Postado Dezembro 5, 2019 Olá pessoal, estou com uma dúvida aqui. Estou tentando criar um pl de chat ak e criei um laço for que loopa as coordenadas do player e checa se tem algum player online próximo a elas. O que acontece é que a mensagem fica sendo enviada duas vezes quando ele está longe de todo mundo, já tentei usar return; break; e.setCancelled(true);. Código abaixo: for (Player all : Bukkit.getOnlinePlayers()) { double x = p.getLocation().getX() + 100; double y = p.getLocation().getY() + 100; double z = p.getLocation().getZ() + 100; if (Bukkit.getOnlinePlayers().size() > 1) { if (all.getLocation().getX() < x) { if (all.getLocation().getY() < y) { if (all.getLocation().getZ() < z) { all.sendMessage("§e[l] §f" + p.getName() + "§e: " + msg + "§r"); } else { p.sendMessage("§e[l] §f" + p.getName() + "§e: " + msg + "§r"); p.sendMessage("§eNinguém proximo para te escutar."); } } else { p.sendMessage("§e[l] §f" + p.getName() + "§e: " + msg + "§r"); p.sendMessage("§eNinguém proximo para te escutar."); } Alguém poderia me ajudar com uma possível solução? Link para o comentário Compartilhar em outros sites More sharing options...
Rafaelrain Postado Dezembro 5, 2019 Denunciar Compartilhar Postado Dezembro 5, 2019 (editado) Meu amigo, tem bastante coisa errada por aí. Começando pela maneira que você está usando para checar. Você está chegando se o x,y,z é menor que o do player, e não se ele está perto. Vamos supor que o player que mandou a mensagem está no x 1650. daí todo player que tiver com x abaixo de 1650 vai escutar o que ele falou. No caso eu te recomendo à utilizar o ``Player#getNearByEntities`` Exemplo: List<Entity> entities = p.getNearbyEntities(100, 50, 100) .stream().filter(it -> it instanceof Player) .collect(Collectors.toList()); if (!entities.isEmpty()) { for (Entity entity : entities) { Player player = ((Player) entity); player.sendMessage("§e[l] §f" + p.getName() + "§e: " + msg + "§r"); } } else{ p.sendMessage("§e[l] §f" + p.getName() + "§e: " + msg + "§r"); p.sendMessage("§eNinguém proximo para te escutar."); } Editado Dezembro 5, 2019 por Rafaelrain 1 Link para o comentário Compartilhar em outros sites More sharing options...
joao100101 Postado Dezembro 5, 2019 Autor Denunciar Compartilhar Postado Dezembro 5, 2019 1 hora atrás, Rafaelrain disse: Meu amigo, tem bastante coisa errada por aí. Começando pela maneira que você está usando para checar. Você está chegando se o x,y,z é menor que o do player, e não se ele está perto. Vamos supor que o player que mandou a mensagem está no x 1650. daí todo player que tiver com x abaixo de 1650 vai escutar o que ele falou. No caso eu te recomendo à utilizar o ``Player#getNearByEntities`` Exemplo: List<Entity> entities = p.getNearbyEntities(100, 50, 100) .stream().filter(it -> it instanceof Player) .collect(Collectors.toList()); if (!entities.isEmpty()) { for (Entity entity : entities) { Player player = ((Player) entity); player.sendMessage("§e[l] §f" + p.getName() + "§e: " + msg + "§r"); } } else{ p.sendMessage("§e[l] §f" + p.getName() + "§e: " + msg + "§r"); p.sendMessage("§eNinguém proximo para te escutar."); } entendi, vou dar uma olhada melhor ak, vlw (y) Link para o comentário Compartilhar em outros sites More sharing options...
abidux Postado Dezembro 5, 2019 Denunciar Compartilhar Postado Dezembro 5, 2019 @EventHandler void chat(AsyncPlayerChatEvent e) { e.setCancelled(true); String rawMessage = e.getMessage(); String message = "§e[l] §f"+e.getPlayer().getName()+": §7"+rawMessage; int distance = 50; for(Player pl : e.getRecipients()) { if(pl.getLocation().distance(e.getPlayer().getLocation()) <= distance) { pl.sendMessage(message); } } } acredito que isso funcione (não foi testado) 1 Link para o comentário Compartilhar em outros sites More sharing options...
LucasCas Postado Dezembro 19, 2019 Denunciar Compartilhar Postado Dezembro 19, 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