Ir para conteúdo
  • 0

[Dúvida] Báu comum e Báu Duplo


Artcheer

Pergunta

[bukkit/Spigot] 1.8

 

Olá  Terráqueos, minha dúvida é a seguinte:

 

Como criar um chest, e fazer com que ele não possa virar um Báu Duplo quando um player por um báu comum ao lado dele,cancele e retorne uma mensagem se ele (player) tentar fazer isso.

 

Estou criando um plugin mas preciso que ele seja um Báu comum durante a execução do evento, procurei nos eventos do bukkit e não encontrei (eu não encontrei..) algum evento que controle isso.

 

Edit: O player só não vai poder criar um báu duplo se aquele báu foi o mesmo que eu criei, ou seja, ele poderá fazer com outros báus.

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

6 respostass a esta questão

Posts Recomendados

basicamente é isso

Block bloco = bloco colocado;
BlockFace[] lados = new BlockFace[] { BlockFace.EAST, BlockFace.WEST, BlockFace.NORTH, BlockFace.SOUTH };
for (BlockFace lado : lados) {
  if (bloco.getRelative(lado).getType() == Material.CHEST) {
    
  }
}
Link para o comentário
Compartilhar em outros sites

private BlockFace[] FACES = {BlockFace.SELF, BlockFace.EAST, BlockFace.NORTH, BlockFace.WEST, BlockFace.SOUTH};

private Location CHEST = null; //Localização do baú que não pode ser duplo. (Você pode salvar na config, e pegar quando o plugin iniciar)

 

@EventHandler

public void onPlace(BlockPlaceEvent event) {

Player player = event.getPlayer();

ItemStack item = player.getItemInHand();

Block block = event.getBlockPlaced();

 

if (item != null && item.getType() == Material.CHEST) {

for (BlockFace faces : FACES) { //Vai percorrer todos os lados do baú que foi colocado

Block side = block.getRelative(faces);

 

if (side.getType() == Material.CHEST && side.getLocation().equals(CHEST)) { //Vai verificar se o bloco do lado é CHEST e se é o que está salvo

player.sendMessage("Esse baú não pode ser duplo.");

return;

}

}

}

}

Link para o comentário
Compartilhar em outros sites

 

basicamente é isso

Block bloco = bloco colocado;
BlockFace[] lados = new BlockFace[] { BlockFace.EAST, BlockFace.WEST, BlockFace.NORTH, BlockFace.SOUTH };
for (BlockFace lado : lados) {
  if (bloco.getRelative(lado).getType() == Material.CHEST) {
    
  }
}

 

Simples. 

 

Armazene a localizaçao do bau em uma config, e no evento BlockPlaceEvent, verifica se o bloco posto é um bau, tambem verifique se os blocos do lado estão na localização armazenada, caso estiver cancele o evento.

 

private BlockFace[] FACES = {BlockFace.SELF, BlockFace.EAST, BlockFace.NORTH, BlockFace.WEST, BlockFace.SOUTH};
private Location CHEST = null; //Localização do baú que não pode ser duplo. (Você pode salvar na config, e pegar quando o plugin iniciar)

@EventHandler
public void onPlace(BlockPlaceEvent event) {
    Player player = event.getPlayer();
    ItemStack item = player.getItemInHand();
    Block block = event.getBlockPlaced();

    if (item != null && item.getType() == Material.CHEST) {
        for (BlockFace faces : FACES) { //Vai percorrer todos os lados do baú que foi colocado
            Block side = block.getRelative(faces);

            if (side.getType() == Material.CHEST && side.getLocation().equals(CHEST)) { //Vai verificar se o bloco do lado é CHEST e se é o que está salvo
                player.sendMessage("Esse baú não pode ser duplo.");
                return;
            }
        }
    }
}

Vlw pela ajuda ! Agora posso descansar em paz...

Link para o comentário
Compartilhar em outros sites

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