-
Total de itens
2.229 -
Registro em
-
Última visita
Respostas na Comunidade
-
leonardosc's postagem in [Resolvido] Garbage Collector was marked as the answer
A coleção de lixo é feita automaticamente, você pode chamar o System.gc(), mas não é recomendado.
-
leonardosc's postagem in [Resolvido] Duvida criptografia was marked as the answer
MessageDigest md = MessageDigest.getInstance("SHA-256"); String senha = "123"; String hash = new String(md.digest(senha.getBytes(StandardCharsets.UTF_8))); // Coloca na db Tem vários outros tipos de hash além do sha256...
-
leonardosc's postagem in [Resolvido] Java super was marked as the answer
Só da pra chamar os da classe Mae.
-
leonardosc's postagem in [Resolvido] Packets + Reflection was marked as the answer
Ué, se tu for usar Reflection é só verificar a versão que ele ta usando e fazer '-'
if (version.startsWith("v1_7")) { // faz as coisa pra 1.7 } else if (version.startsWith("v1_8")) { // faz as coisa pra 1.8 } // .... Aki da pra ver como pega a versão... https://github.com/BktLib/BktLib/blob/master/src/main/java/io/github/bktlib/misc/BukkitUtil.java#L37-L38
-
leonardosc's postagem in [Resolvido] [CRIAÇÃO DE PLUGIN] Warning bukkkit color was marked as the answer
Esse warning é pra avisar que esse import não está sendo usando.
Remove essa linha.
-
leonardosc's postagem in [Resolvido] [Dúvida] Item + inventario was marked as the answer
Claro fera tu nunca ta parando o loop, caso todos os slots estejam vazios ele vai setar em todos.
ItemStack bootNB = new ItemStack(Material.IRON_BOOTS); bootNB.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 4); for(int i = 0 ; i < s.getSize() ; i++) { ItemStack item = s.getItem(i); if(item == null || item.getType() == Material.AIR){ s.setItem(i, bootNB); break; // <------------------------------------------ } } Ou
int emptySlot = inventario.firstEmpty(); if (emptySlot == -1) { player.sendMessage("Você nao tem um slot vazio."); } else { inventario.setItem(emptySlot, bootNB); } -
leonardosc's postagem in [Resolvido] Como pego quantos jogadores tem? was marked as the answer
Depende da versão, se tu tiver usando uma versão mais recente use
Bukkit.getOnlinePlayers().size();
Senão use
Bukkit.getOnlinePlayers().length
-
leonardosc's postagem in [Resolvido] [Dúvida] Slot was marked as the answer
Compara o tipo.................
if (inv.getItem(10).getType() == Material.BREAD)
-
leonardosc's postagem in [Resolvido] Erro estranho no console was marked as the answer
Isso não é um erro, é uma warn, diz que o handle disconnection foi chamado 2 vezes, aqui também aparece isso quando uso o /kick
-
leonardosc's postagem in [Resolvido] [Dúvida] Mensagem StringList was marked as the answer
Fiz uma classe em 10.5 segundos, testa ai, não testei.
Java puro
public class MessageBroadcaster extends BukkitRunnable { private List<String> messages; private int current; public MessageBroadcaster(List<String> messages) { this.messages = new ArrayList<>(messages); // Pra assegurar que vai ser uma ArrayList pq eu vo acessar pelo index } @Override public void run() { if (current >= messages.size()) { current = 0; } Bukkit.broadcastMessage(messages.get(current++));//Já pega e ja incrementa. } } Guava
public class MessageBroadcaster extends BukkitRunnable { private Iterator<String> messages; public MessageBroadcaster(List<String> messages) { this.messages = Iterables.cycle(messages).iterator(); } @Override public void run() { Bukkit.broadcastMessage(messages.next()); } } new MessageBroadcaster(getConfig().getStringList("@%$#~&I")).runTaskTimer(plugin, 20, 20); -
leonardosc's postagem in [Resolvido] [Dúvida] Kit Delay + MiliSeconds was marked as the answer
Poh vei é só pensar, delay é o DELAY, tipo aquele (20 * 1000)
-
leonardosc's postagem in [Resolvido] Tag colorida; was marked as the answer
Pattern p = Pattern.compile("(§\\w)");
Matcher m = p.matcher("§3Ta§bG"); // <- getColorTag
boolean found = m.find();
String color;
if (found) {
color = m.group();
} else {
// nao conseguiu encontrar
color = "§a"; // Cor padrão
}
-
leonardosc's postagem in [Resolvido] [BukkitAPI] Bloquear X IP que está na config! was marked as the answer
Tu testou? Adiciona eu teu ip ai pra tu ver...
Eu testei.
-
leonardosc's postagem in [Resolvido] WorldGuard - Checar flag de build - Duvida was marked as the answer
o getFlag ta depreciado, troca pro queryValue, e o queryValue precisa de uma associação. Exemplo
rg.queryValue(Associables.constant(Association.NON_MEMBER), DefaultFlag.BUILD) // pega o valor para não membros
rg.queryValue(Associables.constant(Association.OWNER), DefaultFlag.BUILD) // pega o valor para o dono
Exemplo
ApplicableRegionSet rg = WGBukkit.getPlugin().getRegionManager(p.getWorld()).getApplicableRegions(p.getLocation()); StateFlag.State state = rg.queryValue(Associables.constant(Association.NOT_MEMBER), DefaultFlag.BUILD); System.out.println(state); if (state == null || state == StateFlag.State.DENY) { p.sendMessage("vc nao pode construir aki"); }
https://github.com/sk89q/WorldGuard/blob/master/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/ApplicableRegionSet.java#L110-L133
Sua dúvida foi marcada como [Resolvido] e movido à área de dúvidas resolvidas.
Atenciosamente,
Gamer's Board -
leonardosc's postagem in [Resolvido] [Dúvida] Inventário GUI was marked as the answer
A maneira mais facil(eu acho) usar o PlayerChatEvent, e uma lista pra colocar os "jogadores" que clicaram,
ai tu checa, caso o jogador que falou no chat esteja na lista tu pega oq ele falou e usa,...
Da pra fazer assim tbm (jeito mais hardcore, usando nms e packet)
// Quando o cara clicar final Player p = ...; p.sendMessage("Digite seu skype no chat."); CraftPlayer cp = (CraftPlayer) p; ChannelPipeline pipeline = ((CraftPlayer) p).getHandle().playerConnection.networkManager.channel.pipeline(); pipeline.addBefore("packet_handler", "edit_skype", new ChannelDuplexHandler() { @Override public void channelRead(ChannelHandlerContext ctx, Object packet) throws Exception { if (packet instanceof PacketPlayInChat) { String text = ((PacketPlayInChat) packet).a(); p.sendMessage("Skype definido para " + text); pipeline.remove(this); return; } super.channelRead(ctx, packet); } }); Se não me engano só funciona do cb 1.8 r3 pra cima.
Assim eu acho que é melhor pois ele vai adicionar o canal na "conexão" do jogador e vai pegar a proxima msg que o jogador editar e vai tirar o canal... já no evento que eu disse ali em cima ele vai ficar verificando as mensagens de todos os jogadores pra sempre.
-
leonardosc's postagem in [Resolvido] Erro ao selecionar dados da tabela was marked as the answer
Então significa que ele não encontrou.
Da um print na variavel nome_programador pra ver se ta certo.
-
leonardosc's postagem in [Resolvido] Como pegar boolean via web? was marked as the answer
Usando guava:
import com.google.common.io.Resources; String rawBoolean = Resources.toString(new URL("http://www.google.com/"), Charset.forName("UTF-8")); boolean bool = Boolean.parseBoolean(rawBoolean);
Logicamente, ali onde ta http://www.google.com/tu coloca a sua URL.
-
leonardosc's postagem in [Resolvido] Pegar A Hora Do Brasil was marked as the answer
É só to ficar pegando a hora e colocando no scoreboard '-'
-
leonardosc's postagem in [Resolvido] [Inativo][Dúvida] EnchantmentTable&Anvil Events was marked as the answer
Não é difícil.
Achei isso https://bukkit.org/threads/inventory-anvil-events.142990/
Testa ai.
-
leonardosc's postagem in [Resolvido] [BungeeCord] Teleportar para outro servidor. was marked as the answer
Esse erro é por que tu ta tentando acessar o argumento 0, mas quando tu executou o comando tu não passou nenhum argumento.
Tu deve checar os argumentos ates...
E muda o "Conectar" pra "Connect"
https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/
https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/
https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/
-
leonardosc's postagem in [Resolvido] SQL例外 was marked as the answer
CREATE TABLE IF NOT EXISTS `accounts` (`username` VARCHAR(18), `password` TINYTEXT NULL, `isLoggedIn` VARCHAR(5),`registeredSince` DATETIME, `lastLogin` DATETIME)
Troca os ' por ` e remove os () dos 2 DATETIME
-
leonardosc's postagem in [Resolvido] [Inativo]Dúvida Boolean was marked as the answer
config.set("valor", !config.getBoolean("valor"));
-
leonardosc's postagem in [Resolvido] Como fasso teleport aleatorio ? was marked as the answer
Tenta assim
public void randomBetween(int a, int b) { Random r = new Random(); int max = Math.max(a, b), min = Math.min(a, b); return rand.nextInt((max - min) + 1) + min; } Location p1 = new Location(1, 2, 3);// ponto 1 Location p2 = new Location(1, 2, 3);// ponto 2 Location lrnd = new Location( randomBetween(l1.getBlockX(), l2.getBlockX()), randomBetween(l1.getBlockY(), l2.getBlockY()), randomBetween(l1.getBlockZ(), l2.getBlockZ()) ); // Localização randomica //Ai player.teleport(lrnd); Fiz tudo aqui, pode ser q tenha erro
-
leonardosc's postagem in [Resolvido] Como faço um ranking.. de TOP.. tal tal tal?? was marked as the answer
Como disse, as 2 estão incompletas.
Vou dar o exemplo mais simples que consegui pensar. Toda vez que o cara pegar o mito você vai salvando na configuração (ou cria um cache e salva de tempo em tempo) por exemplo int valorAnterior = fileConfiguration.get("rank." + nomeDoJogador); fileConfiguration.set(String.format("rank.%s.%d", nomeDoJogador, valorAnterior + 1)); Beleza, ai no /mito rank você pega esses dados armazenados e ordena. final FileConfiguration fc = getConfig(); // Eu to usando a config, mas tu pode usar outro arquivo. final Map<String, Integer> rank = new HashMap<>(); for (String k : fc.getConfigurationSection("rank").getKeys(true)) { rank.put(k, fc.getInt("rank." + k)); } List<Map.Entry<String, Integer>> list = new ArrayList<>( rank.entrySet() ); Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { return o2.getValue().compareTo(o1.getValue()); } }); for (Map.Entry<String, Integer> entry : list) { player.sendMessage(entry.getKey() + ": " + entry.getValue()); } Seria legal fazer um cache disso, pra não ficar fazendo isso toda hora, mas vai da sua escolha. A arquivo ficaria assim rank: player1: 2 player2: 1 player3: 4 player4: 22 player5: 7