S0_Dev Postado Março 18, 2020 Denunciar Compartilhar Postado Março 18, 2020 Denovo como sempre pedindo ajuda ? então dessa vez é sobre meu plugin de maquina ele deveria funcionar botei ele para setar uma meta no bloco no event blockplaceevent mas quando eu boto o bloco e o combustivel nada acontece a unica coisa que aparece é o seguinte erro Could not pass event BlockPlaceEvent SE PRECISAR DO CODIGO É SO FALAR QUE EU MANDO Link para o comentário Compartilhar em outros sites More sharing options...
SrBlecaute Postado Março 18, 2020 Denunciar Compartilhar Postado Março 18, 2020 manda o erro e o código assim fica difícil. Link para o comentário Compartilhar em outros sites More sharing options...
S0_Dev Postado Março 18, 2020 Autor Denunciar Compartilhar Postado Março 18, 2020 17 minutos atrás, SrBlecaute disse: manda o erro e o código assim fica difícil. Ok, desculpe-me a demora e eu não mandei o codigo antes pois meu eclipse havia travado mas espera ai...https://hastebin.com/olekexijiv.java Link para o comentário Compartilhar em outros sites More sharing options...
SrBlecaute Postado Março 18, 2020 Denunciar Compartilhar Postado Março 18, 2020 ItemStack hand = p.getItemInHand(); verifica se o item na mão não é nulo e nem é AR, pode dar erro de NullPointer e envia o erro para ver aonde ta o erro. Link para o comentário Compartilhar em outros sites More sharing options...
S0_Dev Postado Março 18, 2020 Autor Denunciar Compartilhar Postado Março 18, 2020 4 minutos atrás, SrBlecaute disse: ItemStack hand = p.getItemInHand(); verifica se o item na mão não é nulo e nem é AR, pode dar erro de NullPointer e envia o erro para ver aonde ta o erro. então eu basicamente eu faria if(hand.Material.AIR) ? Link para o comentário Compartilhar em outros sites More sharing options...
SrBlecaute Postado Março 18, 2020 Denunciar Compartilhar Postado Março 18, 2020 Agora, S0_Dev disse: então eu basicamente eu faria if(hand.Material.AIR) ? ... hand == null || hand.getType() == Material.AIR Link para o comentário Compartilhar em outros sites More sharing options...
S0_Dev Postado Março 18, 2020 Autor Denunciar Compartilhar Postado Março 18, 2020 2 minutos atrás, SrBlecaute disse: ... hand == null || hand.getType() == Material.AIR @EventHandler public void aoColocarBloco(BlockPlaceEvent e) { Player p = e.getPlayer(); if (e.getPlayer() instanceof Player) { ItemStack hand = p.getItemInHand(); if (hand == null || hand.getType() == Material.AIR) { if (hand.hasItemMeta()) { if (hand.getItemMeta().hasDisplayName()) { if (hand.getItemMeta().getDisplayName().equals("§cMaquina sangrenta")) { Block bloco = e.getBlockPlaced(); bloco.setMetadata("Maquina", new FixedMetadataValue(main, 10)); } // verificação de nome } } } } } Dessa forma? Link para o comentário Compartilhar em outros sites More sharing options...
SrBlecaute Postado Março 18, 2020 Denunciar Compartilhar Postado Março 18, 2020 1 minuto atrás, S0_Dev disse: @EventHandler public void aoColocarBloco(BlockPlaceEvent e) { Player p = e.getPlayer(); if (e.getPlayer() instanceof Player) { ItemStack hand = p.getItemInHand(); if (hand == null || hand.getType() == Material.AIR) { if (hand.hasItemMeta()) { if (hand.getItemMeta().hasDisplayName()) { if (hand.getItemMeta().getDisplayName().equals("§cMaquina sangrenta")) { Block bloco = e.getBlockPlaced(); bloco.setMetadata("Maquina", new FixedMetadataValue(main, 10)); } // verificação de nome } } } } } Dessa forma? ai tu me lasca, aconselho fortemente a aprender lógica e java, depois aprender sobre a API da bukkit. Link para o comentário Compartilhar em outros sites More sharing options...
S0_Dev Postado Março 18, 2020 Autor Denunciar Compartilhar Postado Março 18, 2020 4 minutos atrás, SrBlecaute disse: ai tu me lasca, aconselho fortemente a aprender lógica e java, depois aprender sobre a API da bukkit. Ok ok, eu irei estudar mais java, meu colegio havia curso mas minha professora vazou pode ajeitar o codigo pra mim então? Link para o comentário Compartilhar em outros sites More sharing options...
S0_Dev Postado Março 18, 2020 Autor Denunciar Compartilhar Postado Março 18, 2020 26 minutos atrás, SrBlecaute disse: ai tu me lasca, aconselho fortemente a aprender lógica e java, depois aprender sobre a API da bukkit. Porfavor, preciso desse plugin quanto antes, tenho que finalizar meu servidor. Link para o comentário Compartilhar em outros sites More sharing options...
AffonsoGames Postado Março 18, 2020 Denunciar Compartilhar Postado Março 18, 2020 Melhor usar um plugin da internet.. tem vários ae, não adianta querer criar plugin sem saber o minimo da API bukit Link para o comentário Compartilhar em outros sites More sharing options...
ViniciuszXL Postado Março 18, 2020 Denunciar Compartilhar Postado Março 18, 2020 (editado) 4 horas atrás, S0_Dev disse: @EventHandler public void aoColocarBloco(BlockPlaceEvent e) { Player p = e.getPlayer(); if (e.getPlayer() instanceof Player) { ItemStack hand = p.getItemInHand(); if (hand == null || hand.getType() == Material.AIR) { if (hand.hasItemMeta()) { if (hand.getItemMeta().hasDisplayName()) { if (hand.getItemMeta().getDisplayName().equals("§cMaquina sangrenta")) { Block bloco = e.getBlockPlaced(); bloco.setMetadata("Maquina", new FixedMetadataValue(main, 10)); } // verificação de nome } } } } } Dessa forma? Amigo, seguinte. o "if (e.getPlayer instanceof Player)" não é necessário. Pois, você já está pegando o jogador. Não é necessário verificar se ele é realmente uma entidade jogador. Você só faria essa checagem caso pegasse uma entidade que não deixa explícito que é um jogador. Exemplo: "e.getEntity()", "e.getWhoClicked()", "e.getDamager()", entre outros. Nesse código onde você verifica o item do jogador se é nulo, você tem que fazer um return. Não é para continuar o código se o item em questão for nulo. O código ficaria assim: @EventHandler public void aoColocarBloco(BlockPlaceEvent e) { Player p = e.getPlayer(); ItemStack hand = p.getItemInHand(); if (hand == null || hand.getType == Material.AIR) // linha 5 return; if (hand.hasItemMeta() && hand.getItemMeta().hasDisplayName()) { if (hand.getItemMeta().getDisplayName().equalsIgnoreCase("§cMaquina sangrenta")) { // linha 9 Block block = e.getBlockPlaced(); block.setMetadata("Maquina", new FixedMetadataValue(main, 10)); } } } Agora vamos revisar as modificações no código que eu fiz. Na "linha 5" eu implementei corretamente a checagem do item, caso o item da mão do jogador fosse nulo ou ar, na linha seguinte eu desse um return e não seguisse mais adiante no código. Você colocaste para verificar se o item for nulo ou ar, continuasse o código. Isso está errado. Pois logo adiante ele faria uma verificação se aquele item na mão do jogador tivesse uma ItemMeta e um nome de Display. E não tem como verificar algo de uma coisa inexistente né? Então... seguindo a lógica, você tem que entender um pouco das verificações e o que o código tá escrito e o que ele irá fazer. Não adianta colocar ele e rodar para funcionar, sendo que você não entendeu ele. Essa linha de código que o moderador enviou, faz com que se a condição for verdadeira (que está dentro dos parênteses e dentro de um if), ele irá fazer o que estará dentro daquele if. Caso eu fosse arrumar o seu código mudando apenas essa parte da condição, ficaria assim a nova linha: "if (hand != null && hand.getType == Material.BRICK)", onde na primeira verificação, ele irá ver se o item não é nulo, e seguindo da 2º verificação, se o material é do tipo BRICK (tijolo). Na "linha 9" eu coloquei um "equalsIgnoreCase" pois a verificação fica até mais prática se houver alguma caractere maiúscula ou diferente. O "equals" é usado para caso você queira realmente que tenha todas as caracteres iguais. O nome da primeira no qual eu mencionei já até fala. Ele ignora os caps-lock da String e faz com que toda a String verificada será em minúscula. Assim, não ocorrendo erros de verificação caso você digite alguma caractere maiúscula. Recomendo para você dar uma revisada nos seus códigos e ter uma aulinha prática de alguns tutoriais no YouTube! Você tá errando muito em lógica de programação e análise de algoritmos... E isso é um problema futuramente para você amigo. Abraços! Editado Março 18, 2020 por ViniciuszXL 1 Link para o comentário Compartilhar em outros sites More sharing options...
Álison👌 Postado Março 18, 2020 Denunciar Compartilhar Postado Março 18, 2020 Sua dúvida foi marcada como resolvida pela nossa equipe. Caso sua dúvida não tenha sido sanada, crie outro tópico. OBS: Essa mensagem é automática. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados