RUSHyoutuber Postado Maio 1, 2018 Denunciar Compartilhar Postado Maio 1, 2018 Olá pessoal! Eu tenho uma chunk (x,z) gostaria que bloco inicia ou que bloco termina aquela chunk por exemplo, quais as coordenadas da chunk 10,4... alias tem como calcular isso? de forma precisa? Link para o comentário Compartilhar em outros sites More sharing options...
bieel1503 Postado Maio 2, 2018 Denunciar Compartilhar Postado Maio 2, 2018 É para isso que o "getBlock" da classe existe. Por exemplo, se caso você fazer "getBlock(0, y, 0)", ele vai te retorna o primeiro da chunk.source: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Chunk.html#getBlock-int-int-int-. Link para o comentário Compartilhar em outros sites More sharing options...
RUSHyoutuber Postado Maio 3, 2018 Autor Denunciar Compartilhar Postado Maio 3, 2018 É para isso que o "getBlock" da classe existe. Por exemplo, se caso você fazer "getBlock(0, y, 0)", ele vai te retorna o primeiro da chunk. source: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Chunk.html#getBlock-int-int-int-. ?????????? véi isso ai não tem nada haver '-' se eu colocar isso vai retorna o bloco mas como eu vou pegar a localização do bloco não faz o minimo sentido essa parada ai Link para o comentário Compartilhar em outros sites More sharing options...
bieel1503 Postado Maio 3, 2018 Denunciar Compartilhar Postado Maio 3, 2018 ?????????? véi isso ai não tem nada haver '-' se eu colocar isso vai retorna o bloco mas como eu vou pegar a localização do bloco não faz o minimo sentido essa parada ai Não entendi... o "getBlock" vai retornar um objeto do tipo "Block", é só você usar o método "getLocation" da classe. Link para o comentário Compartilhar em outros sites More sharing options...
Sauran Postado Maio 3, 2018 Denunciar Compartilhar Postado Maio 3, 2018 Olá pessoal! Eu tenho uma chunk (x,z) gostaria que bloco inicia ou que bloco termina aquela chunk por exemplo, quais as coordenadas da chunk 10,4... alias tem como calcular isso? de forma precisa? player.getLocation().getChunk().getBlock(x,y,z); X = 0 a 15 Y = 0 a 127 Z = 0 a 15 Link para o comentário Compartilhar em outros sites More sharing options...
RUSHyoutuber Postado Maio 3, 2018 Autor Denunciar Compartilhar Postado Maio 3, 2018 Não entendi... o "getBlock" vai retornar um objeto do tipo "Block", é só você usar o método "getLocation" da classe. getBlock vai retornar o bloco daquelas coordenadas ai '-' a unica informação que eu tenho é as cordenadas da chunk 10, 20 se eu fizer getBlock (10,0,20) vai retornar o bloco que ta no x:10 y:0 z:20 '-' player.getLocation().getChunk().getBlock(x,y,z); X = 0 a 15 Y = 0 a 127 Z = 0 a 15 vou testar... não da pegar acima de 127? '-' 127 é a camada do céu se eu não me engano mas sei la loco Link para o comentário Compartilhar em outros sites More sharing options...
bieel1503 Postado Maio 3, 2018 Denunciar Compartilhar Postado Maio 3, 2018 getBlock vai retornar o bloco daquelas coordenadas ai '-' a unica informação que eu tenho é as cordenadas da chunk 10, 20 se eu fizer getBlock (10,0,20) vai retornar o bloco que ta no x:10 y:0 z:20 '-' vou testar... não da pegar acima de 127? '-' 127 é a camada do céu se eu não me engano mas sei la loco se eu fizer getBlock (10,0,20) vai retornar o bloco que ta no x:10 y:0 z:20 '-' Não tem como fazer isso... você pelo menos testou, ou pelo menos viu a API? o "getBlock" da classe vai retornar apenas o bloco dentro da chunk. Link para o comentário Compartilhar em outros sites More sharing options...
Manolo8 Postado Maio 3, 2018 Denunciar Compartilhar Postado Maio 3, 2018 Pra pegar a CHUNK do player, sem dar o getChunk: chunk x = (player x >> 4); chunk z = (player z >> 4); pra fazer o inverso, é só usar chunk x * 16; chunk z * 16, o valor acima vai pegar o bloco 0,0 da chunk, é só somar 0-15 para pegar os outros... Isso é bastante útil para sistema de proteção baseado em chunks, ou otimizados... Por exemplo, tem 10 mil áreas protegidas no servidor, e você quer otimizar isso (Não quer que cada coisa que o jogador faça, executa um for em 10 mil proteções); Então você cria uma mega grande chunk (Kappa) MegaGrandeChunk x = player x >> 11; MegaGrandeChunk z = player z >> 11; ai quando for criar uma proteção, verifica em qual MegaGrandeChunk a proteção está (Se estiver em mais de uma, coloque em todas que estiver) Ai quando o player fazer uma ação: BlockBreakEvent(e) -> Location loc = e.getBlock().getLocation(); x = loc x >> 11; z = loc x >> 11; MegaGrandeChunk mgc = MegaGrandeChunkService.getBy(x, z); for(Protecaco protecao : mgc.getProtecoes()) { if(protecao.isInArea(loc) { protecao.canBreakBlock(e.getPlayer()) .... } } Dá de usar para várias outras coisas, como por exemplo, meu sistema de plot 1 Link para o comentário Compartilhar em outros sites More sharing options...
RUSHyoutuber Postado Junho 25, 2018 Autor Denunciar Compartilhar Postado Junho 25, 2018 Pra pegar a CHUNK do player, sem dar o getChunk: chunk x = (player x >> 4); chunk z = (player z >> 4); pra fazer o inverso, é só usar chunk x * 16; chunk z * 16, o valor acima vai pegar o bloco 0,0 da chunk, é só somar 0-15 para pegar os outros... Isso é bastante útil para sistema de proteção baseado em chunks, ou otimizados... Por exemplo, tem 10 mil áreas protegidas no servidor, e você quer otimizar isso (Não quer que cada coisa que o jogador faça, executa um for em 10 mil proteções); Então você cria uma mega grande chunk (Kappa) MegaGrandeChunk x = player x >> 11; MegaGrandeChunk z = player z >> 11; ai quando for criar uma proteção, verifica em qual MegaGrandeChunk a proteção está (Se estiver em mais de uma, coloque em todas que estiver) Ai quando o player fazer uma ação: BlockBreakEvent(e) -> Location loc = e.getBlock().getLocation(); x = loc x >> 11; z = loc x >> 11; MegaGrandeChunk mgc = MegaGrandeChunkService.getBy(x, z); for(Protecaco protecao : mgc.getProtecoes()) { if(protecao.isInArea(loc) { protecao.canBreakBlock(e.getPlayer()) .... } } Dá de usar para várias outras coisas, como por exemplo, meu sistema de plot Muito obrigado pela explicação! Podem fechar o tópico! RESOLVIDO! Link para o comentário Compartilhar em outros sites More sharing options...
Lightwood Postado Junho 28, 2019 Denunciar Compartilhar Postado Junho 28, 2019 Seu tópico foi marcado como Inativo. Para reverter está 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