Guest iDimaDev Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 Como verifico se tem uma pedra em uma radius de 10 blocos da pedra que o player colocou no chão no java? alguem sabe? Obrigado a você que entrou no tópico pra ajudar :) Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 que? n entendi ali em cima do if (loc.getWorld().getBlockAt(x, y, z).getType() == Material.STONE) { coloca if (x == loc.getBlockX() && y == loc.getBlockY() && z == loc.getBlockZ()) continue; Link para o comentário Compartilhar em outros sites More sharing options...
zAth Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 for(int x = e.getBlock().getLocation().getBlockX() - 10; x <= e.getBlock().getLocation().getBlockX() + 10; x++){ ////for(int y = e.getBlock().getLocation().getBlockY() - 10; y <= e.getBlock().getLocation().getBlockY() + 10; y++){ ////////for(int z = e.getBlock().getLocation().getBlockZ() - 10; z <= e.getBlock().getLocation().getBlockZ() + 10; z++){ ////////////Location location = new Location(e.getBlock().getLocation().getWorld(), x, y, z); ////////////if(location.getWorld().getBlockAt(location).getType() == Material.STONE){} ////////} ////} } 1 Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 for(int x = e.getBlock().getLocation().getBlockX() - 10; x <= e.getBlock().getLocation().getBlockX() + 10; x++){ ////for(int y = e.getBlock().getLocation().getBlockY() - 10; y <= e.getBlock().getLocation().getBlockY() + 10; y++){ ////////for(int z = e.getBlock().getLocation().getBlockZ() - 10; z <= e.getBlock().getLocation().getBlockZ() + 10; z++){ ////////////Location location = new Location(e.getBlock().getLocation().getWorld(), x, y, z); ////////////if(location.getWorld().getBlockAt(location).getType() == Material.STONE){} ////////} ////} } Deu 2 erros, 1 erro: http://i.imgur.com/wnBIoKG.png 2 erro: http://i.imgur.com/YmAhT9J.png Link para o comentário Compartilhar em outros sites More sharing options...
TzMarcio Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 Deu 2 erros, 1 erro: http://i.imgur.com/wnBIoKG.png 2 erro: http://i.imgur.com/YmAhT9J.png importou errado... 1 Link para o comentário Compartilhar em outros sites More sharing options...
zAth Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 Deu 2 erros, 1 erro: http://i.imgur.com/wnBIoKG.png2 erro: http://i.imgur.com/YmAhT9J.png Além que importou errado, recomendo verificar se o bloco colocado é uma pedra. (Se eu entendi certo o que você quer fazer) Apague o import DocumentatioTool.location e depois importe denovo, de certeza que irá aparecer uma lista com várias opções, escolha a que começa com org.bukkit Link para o comentário Compartilhar em outros sites More sharing options...
Dery Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 @EventHandler public void placeStone(BlockPlaceEvent e){ Block b = e.getBlock(); Location loc = b.getLocation(); if(b.getType().equals(Material.STONE){ for(int x = loc.getX()-10; x<=loc.getX()+10; x++){ for(int y = (loc.getY()-10 < 0 ? 1 : loc.getY()-10); x<=loc.getY()+10; x++){ for(int x = loc.getY()-10; x<=loc.getY()+10; x++){ Block block = loc.getWorld().getBlockAt(x, y, z); // Faz o que quiser com o block } } } } } Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 Da uma olhada na minha resposta nesse tópico: http://gamersboard.com.br/topic/39253-algu%C3%A9m-me-ajuda-a-fazer-1-sistema-de-radius-para-bloco/#entry334607 Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 (editado) Além que importou errado, recomendo verificar se o bloco colocado é uma pedra. (Se eu entendi certo o que você quer fazer) Apague o import DocumentatioTool.location e depois importe denovo, de certeza que irá aparecer uma lista com várias opções, escolha a que começa com org.bukkit Oque eu ja importei: http://i.imgur.com/kKnscke.png @EventHandler public void placeStone(BlockPlaceEvent e){ Block b = e.getBlock(); Location loc = b.getLocation(); if(b.getType().equals(Material.STONE){ for(int x = loc.getX()-10; x<=loc.getX()+10; x++){ for(int y = (loc.getY()-10 < 0 ? 1 : loc.getY()-10); x<=loc.getY()+10; x++){ for(int x = loc.getY()-10; x<=loc.getY()+10; x++){ Block block = loc.getWorld().getBlockAt(x, y, z); // Faz o que quiser com o block } } } } } Ta com erros: http://i.imgur.com/UqqsIEv.png o resto dos erros ta assim: http://i.imgur.com/NGM0vg6.png @Edit vou tentar um negócio e ver se resolve @Edit2 Funcionou sem os erros, mas ele está cancelando qualquer bloco que é posto e não só pedra.... @EventHandler public void onColocar(BlockPlaceEvent e){ for(int x = e.getBlock().getLocation().getBlockX() - 10; x <= e.getBlock().getLocation().getBlockX() + 10; x++){ for(int y = e.getBlock().getLocation().getBlockY() - 10; y <= e.getBlock().getLocation().getBlockY() + 10; y++){ for(int z = e.getBlock().getLocation().getBlockZ() - 10; z <= e.getBlock().getLocation().getBlockZ() + 10; z++){ Location location = new Location(e.getBlock().getLocation().getWorld(), x, y, z); if(location.getWorld().getBlockAt(location).getType() == Material.STONE){} e.setCancelled(true); } } } } http://i.imgur.com/8VuD9eL.png Editado Maio 2, 2017 por iDimaDev Link para o comentário Compartilhar em outros sites More sharing options...
zAth Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 Oque eu ja importei: http://i.imgur.com/kKnscke.png Ta com erros: http://i.imgur.com/UqqsIEv.png o resto dos erros ta assim: http://i.imgur.com/NGM0vg6.png @Edit vou tentar um negócio e ver se resolve Importou tudo menos o certo, como eu já falei......... APAGA o import DocumentationTool.location Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 Importou tudo menos o certo, como eu já falei......... APAGA o import DocumentationTool.location Ja resolvi o erro, agora ta certo, ja resolvi até a parte de nao poder colocar todos os blocos, agora ta chechando só a pedra(stone), mas msm assim, sem nenhuma stone por perto ele cancela, queria fazer ele cancelar se houver outra stone em radius de 5 em volta do bloco que ele colocou, o codigo ta certo agr so falta por pra verificar se tem alguma pedra na radius Link para o comentário Compartilhar em outros sites More sharing options...
zAth Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 (editado) Ja resolvi o erro, agora ta certo, ja resolvi até a parte de nao poder colocar todos os blocos, agora ta chechando só a pedra(stone), mas msm assim, sem nenhuma stone por perto ele cancela, queria fazer ele cancelar se houver outra stone em radius de 5 em volta do bloco que ele colocou, o codigo ta certo agr so falta por pra verificar se tem alguma pedra na radius if(e.getBlock().getType() == Material.STONE){ //código que lhe passei inicialmente } @edit Vi agora o seu edit, olha lá o e.setCancelled(true).. Você colocou fora dos {}, na linha acima tem 2 chaves sem nada dentro. Se eu tivesse no pc lhe explicava melhor.. Editado Maio 2, 2017 por zAth Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 if(e.getBlock().getType() == Material.STONE){ //código que lhe passei inicialmente } mas entao, tipo dai ele n consegue botar nenhuma pedra '-' tipo tem que botar uma pedra, ai se botar outra pedra em radius 5 em volta da pedra colocada, vai mandar uma mensagem e cancelar o evento saco? mas como faço verificar que pode colocar uma pedra e dps se tiver colocando uma pedra em 5 de radius em volta dessa pedra cancelar? Link para o comentário Compartilhar em outros sites More sharing options...
zAth Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 mas entao, tipo dai ele n consegue botar nenhuma pedra '-' tipo tem que botar uma pedra, ai se botar outra pedra em radius 5 em volta da pedra colocada, vai mandar uma mensagem e cancelar o evento saco? mas como faço verificar que pode colocar uma pedra e dps se tiver colocando uma pedra em 5 de radius em volta dessa pedra cancelar? Vai conseguir sim, porque você só cancela o evento se estiver uma pedra, se não estiver ele não cancela.. Para isso você só tem que colocar o e.setCancelled(true) dentro das chavetas.. Ou então apaga aquelas chavetas sem nada dentro, tb vai resultar. Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 Vai conseguir sim, porque você só cancela o evento se estiver uma pedra, se não estiver ele não cancela.. Para isso você só tem que colocar o e.setCancelled(true) dentro das chavetas.. Ou então apaga aquelas chavetas sem nada dentro, tb vai resultar. Cara eu to testando e quando eu boto qualquer pedra ele cancela, ele n bota a pedra e dps se botar outra perto ele cancela, ele cancela msm nem nenhuma pedra por perto, http://i.imgur.com/TM8Wmf2.png o codigo é este... Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 mas entao, tipo dai ele n consegue botar nenhuma pedra '-' tipo tem que botar uma pedra, ai se botar outra pedra em radius 5 em volta da pedra colocada, vai mandar uma mensagem e cancelar o evento saco? mas como faço verificar que pode colocar uma pedra e dps se tiver colocando uma pedra em 5 de radius em volta dessa pedra cancelar? Usa o meu exemplo, é exatamente o que vc precisa, só mudar o Material.SPONGE pra Material.STONE e colocar e.setCancelled(true) Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 Usa o meu exemplo, é exatamente o que vc precisa, só mudar o Material.SPONGE pra Material.STONE e colocar e.setCancelled(true) Eu testei o seu codigo: @EventHandler public void onColocar(BlockPlaceEvent e){ Player p = (Player) e.getPlayer(); int radius = 5; Location loc = e.getBlock().getLocation(); int x1 = loc.getBlockX() - radius; int z1 = loc.getBlockZ() - radius; int y1 = loc.getBlockY() - radius; int x2 = loc.getBlockX() + radius; int z2 = loc.getBlockZ() + radius; int y2 = loc.getBlockY() + radius; int startX = Math.min(x1, x2); int startY = Math.min(y1, y2); int startZ = Math.min(z1, z2); int endX = Math.max(x1, x2); int endY = Math.max(y1, y2); int endZ = Math.max(z1, z2); for (int x = startX; x <= endX; x++) { for (int y = startY; y <= endY; y++) { for (int z = startZ; z <= endZ; z++) { if (loc.getWorld().getBlockAt(x, y, z).getType() == Material.STONE) { p.sendMessage("§bNao pode colocar Pedras, neste local!"); e.setCancelled(true); } } } } } Tipo, eu quero que de para botar uma pedra e dps que botar ele verifica se nessa pedra em volta do radius tem alguma pedra, se tiver ele cancela, se n ele bota a pedra, mas aqui ta cancelando sem nenhuma pedra em volta ;-; http://i.imgur.com/IzHQEvl.png Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 Eu testei o seu codigo: @EventHandler public void onColocar(BlockPlaceEvent e){ Player p = (Player) e.getPlayer(); int radius = 5; Location loc = e.getBlock().getLocation(); int x1 = loc.getBlockX() - radius; int z1 = loc.getBlockZ() - radius; int y1 = loc.getBlockY() - radius; int x2 = loc.getBlockX() + radius; int z2 = loc.getBlockZ() + radius; int y2 = loc.getBlockY() + radius; int startX = Math.min(x1, x2); int startY = Math.min(y1, y2); int startZ = Math.min(z1, z2); int endX = Math.max(x1, x2); int endY = Math.max(y1, y2); int endZ = Math.max(z1, z2); for (int x = startX; x <= endX; x++) { for (int y = startY; y <= endY; y++) { for (int z = startZ; z <= endZ; z++) { if (loc.getWorld().getBlockAt(x, y, z).getType() == Material.STONE) { p.sendMessage("§bNao pode colocar Pedras, neste local!"); e.setCancelled(true); } } } } } Tipo, eu quero que de para botar uma pedra e dps que botar ele verifica se nessa pedra em volta do radius tem alguma pedra, se tiver ele cancela, se n ele bota a pedra, mas aqui ta cancelando sem nenhuma pedra em volta ;-; http://i.imgur.com/IzHQEvl.png Verifica se o x,y,z é igual o x,y,z do e.getBlock() pq o getBlockAt(x, y, z) retorna o bloco mesmo se ele n tiver sido colocado ainda Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 Verifica se o x,y,z é igual o x,y,z do e.getBlock() pq o getBlockAt(x, y, z) retorna o bloco mesmo se ele n tiver sido colocado ainda que? n entendi Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 ali em cima do if (loc.getWorld().getBlockAt(x, y, z).getType() == Material.STONE) { coloca if (x == loc.getBlockX() && y == loc.getBlockY() && z == loc.getBlockZ()) continue; Resolvido obrigado s2 resolvido para você Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 (editado) Ei mais uma coisa, eu nao consigo botar blocos perto da pedra, tem como resolver isso? tipo só não deixar colocar outra pedra em volta? Esquece resolvido! Editado Maio 2, 2017 por iDimaDev Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 Ei mais uma coisa, eu nao consigo botar blocos perto da pedra, tem como resolver isso? tipo só não deixar colocar outra pedra em volta? Esquece resolvido! Só verificar o tipo do bloco... @EventHandler public void onColocar(BlockPlaceEvent e){ if (e.getBlock().getType() != Material.STONE) { return } ..... Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 2, 2017 Denunciar Compartilhar Postado Maio 2, 2017 Só verificar o tipo do bloco... @EventHandler public void onColocar(BlockPlaceEvent e){ if (e.getBlock().getType() != Material.STONE) { return } ..... Sim eu sei eu ja consegui, kkkk eu perguntei ai eu fui la e tentei umas ganbiarra e funfo ja fiz até config hu3 Alguma dica doque eu posso por no plugin? http://i.imgur.com/86SNjAS.png Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Maio 3, 2017 Denunciar Compartilhar Postado Maio 3, 2017 Sim eu sei eu ja consegui, kkkk eu perguntei ai eu fui la e tentei umas ganbiarra e funfo ja fiz até config hu3 Alguma dica doque eu posso por no plugin? http://i.imgur.com/86SNjAS.png Naum Link para o comentário Compartilhar em outros sites More sharing options...
Gutyerrez Postado Maio 7, 2017 Denunciar Compartilhar Postado Maio 7, 2017 Sua dúvida foi marcada como [Resolvido] e movido à área de dúvidas resolvidas.Atenciosamente,Gamer's Board Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest iDimaDev
Como verifico se tem uma pedra em uma radius de 10 blocos da pedra que o player colocou no chão no java? alguem sabe? Obrigado a você que entrou no tópico pra ajudar :)
Link para o comentário
Compartilhar em outros sites
24 respostass a esta questão
Posts Recomendados