Ir para conteúdo
  • 0

Mundo com baús


iVictor777z

Pergunta

8 respostass a esta questão

Posts Recomendados

Block block = world.getBlockAt(x, y, z);
block.setType(Material.CHEST);
Chest chest = (Chest) block;
Inventory chestInv = chest.getInventory();
chestInv.addItem(new ItemStack(Material.DIAMOND_SWORD, 1)); 

Queria fazer de um jeito como se fosse natural do mundo, aí não teria que determinar uma quantia exata de baús... Teria como será?

Link para o comentário
Compartilhar em outros sites

Faz com random sla.. '-'

Random rand = new Random();
// <= 350 é a porcentagem
if(rand.nextInt(1000) <= 350) {
     Location chestloc = new Location(Bukkit.getWorld("world"), rand.nextInt(999999), rand.nextInt(999999), rand.nextInt(999999));            Block block = (Block) chestloc.getBlock(); //Pegando o bloco.
            chestloc.getBlock().setType(Material.CHEST); //Setando o BAU.
            Chest chest = (Chest)block.getBlockData(); //Criando a variavel do BAU.
            Inventory inv = ((HumanEntity) chest).getInventory(); //Pegar inv do bau
inv.setItem(0 /*slot*/, new ItemStack(Material.DIAMOND /*item*/));}

Não testei, pode não dar certo..

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

Faz com random sla.. '-'

Random rand = new Random();
// <= 350 é a porcentagem
if(rand.nextInt(1000) <= 350) {
     Location chestloc = new Location(Bukkit.getWorld("world"), rand.nextInt(999999), rand.nextInt(999999), rand.nextInt(999999));            Block block = (Block) chestloc.getBlock(); //Pegando o bloco.
            chestloc.getBlock().setType(Material.CHEST); //Setando o BAU.
            Chest chest = (Chest)block.getBlockData(); //Criando a variavel do BAU.
            Inventory inv = ((HumanEntity) chest).getInventory(); //Pegar inv do bau
inv.setItem(0 /*slot*/, new ItemStack(Material.DIAMOND /*item*/));}

Não testei, pode não dar certo..

Queria fazer de um jeito como se fosse natural do mundo, aí não teria que determinar uma quantia exata de baús... Teria como será?

Link para o comentário
Compartilhar em outros sites

Queria fazer de um jeito como se fosse natural do mundo, aí não teria que determinar uma quantia exata de baús... Teria como será?

Unica forma que eu sei, é TerrainControl.

Link para o comentário
Compartilhar em outros sites

Olha o exemplo que o jeta deu mas não precisa criar um ChunkGenerator, apenas um BlockPopulator e ae usa o WorldInitEvent e seta o BlockPopulator com

 event.getWorld().getPopulators.add(new SeuBlockPopulator());

Então só precisa olhar essa classe e ter em conta que:

  • o método populate() só é chamado 1 vez em cada chunk que é gerada
  • para pegar as verdadeiras coordenadas da chunk tem que usar (source.getX() << 4), se por exemplo uma chunk começar em x:48 z:48 o source.getX() não retorna 48 .. mas o (source.getX() << 4), por isso que no exemplo tem int centerX = (source.getX() << 4) + random.nextInt(16);, para pegar o canto da chunk e adicionar um número randômico de 0 a 15.
  • para pegar o block à superficie int centerY = world.getHighestBlockYAt(centerX, centerZ);

O resto acho que dá para entender do exemplo e como spawnar o baú e setar itens já falaram aqui.

Link para o comentário
Compartilhar em outros sites

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