Ir para conteúdo
  • 0

[Resolvido] Setar um BlockType de x, y, z até x, y, z


Dery

Pergunta

Como posso setar um BlockType de um local x, y, z para outro local diferente, onde x, y, z não são iguais, tipo:

 

Quero setar grama das coordenadas 0, 4, 5 até as coordenadas 10, 4, 8?

 

Obs.: Sem o uso da API do WorldEdit.

Obs².: Já procurei na net, mas não achei nada do tipo, somente com os três valores iguais, por exemplo: de 0, 4, 5 até 10, 10, 10.

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

Os caras ficam falando para usar as coisas mas não mandam nenhum exemplo...

public static void setBlockInDistance(Location loc1, Location loc2, Material material, byte data) {
        int minX = Math.min(loc1.getBlockX(), loc2.getBlockX());
        int minY = Math.min(loc1.getBlockY(), loc2.getBlockY());
        int minZ = Math.min(loc1.getBlockZ(), loc2.getBlockZ());
        int maxX = Math.max(loc1.getBlockX(), loc2.getBlockX());
        int maxY = Math.max(loc1.getBlockY(), loc2.getBlockY());
        int maxZ = Math.max(loc1.getBlockZ(), loc2.getBlockZ());

        for(int x = minX; x <= maxX; x++){
            for(int y = minY; y <= maxY; y++){
                for(int z = minZ; z <= maxZ; z++){
                    Block block = loc1.getWorld().getBlockAt(x, y, z);
                    block.setType(material);
                    block.setData(data);
                }
            }
        }
    }
Editado por MrPowerGamerBR
Link para o comentário
Compartilhar em outros sites

 

Os caras ficam falando para usar as coisas mas não mandam nenhum exemplo...

public static void setBlockInDistance(Location loc1, Location loc2, Material material, byte data) {
        int minX = Math.min(loc1.getBlockX(), loc2.getBlockX());
        int minY = Math.min(loc1.getBlockY(), loc2.getBlockY());
        int minZ = Math.min(loc1.getBlockZ(), loc2.getBlockZ());
        int maxX = Math.max(loc1.getBlockX(), loc2.getBlockX());
        int maxY = Math.max(loc1.getBlockY(), loc2.getBlockY());
        int maxZ = Math.max(loc1.getBlockZ(), loc2.getBlockZ());

        for(int x = minX; x <= maxX; x++){
            for(int y = minY; y <= maxY; y++){
                for(int z = minZ; z <= maxZ; z++){
                    Block block = loc1.getWorld().getBlockAt(x, y, z);
                    block.setType(material);
                    block.setData(data);
                }
            }
        }
    }

Já consegui com o que disseram, mas como tu deu um exemplo, vou dar resolvido no seu.

Cuboid

Link para o comentário
Compartilhar em outros sites

Como disseram, usa um loop:

@EventHandler
	public void onBlock(BlockPlaceEvent e) {
		Player p = e.getPlayer();
		int x = e.getBlock().getLocation().getBlockX();
		int y = e.getBlock().getLocation().getBlockY();
		int z = e.getBlock().getLocation().getBlockZ();
		for(int i = 0; i < 9; i++) {
			x++;
			new Location(p.getWorld(), x, y, z).getBlock().setType(Material.BEDROCK);
		}
	}

Edit:

Ja responderam, fiquei um tempao com a pagina aberta e n dei reload e n vi, '-'

Editado por Proyx
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...