Ir para conteúdo
  • 0

[Resolvido] Erro Plugin Que Estou tentado criar


joao100101

Pergunta

Olá, Bom Estou Criando um plugin aqui com a seguinte funcionalidade: quando um player clica com o botão direito usando uma blaze rod há uma explosão proximo a ele, porém so funciona quando o player clica em um bloco, quando ele clica no ar aparece um erro no console , gostaria de saber se alguem poderia ajudar.

 

Versão: 1.5.2 até agora

 

 

Codigo do Plugin: http://hastebin.com/cejipigewa.avrasm

Erro: pelo que parece o erro está nesse getTargetBlock

 

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

Guest Mateus Demarchi

Acho que você deveria remover isso;

action == Action.RIGHT_CLICK_AIR

Pelo que entendi você não quer que a Ação seja ao clicar no ar, então é só remover.

Link para o comentário
Compartilhar em outros sites

Testa ai.

	@EventHandler
	public void explodir(PlayerInteractEvent e)
	{
		Player p = e.getPlayer();
		if(e.getPlayer().getItemInHand().getType() == Material.BLAZE_ROD) {
	   if ((e.getAction() == Action.RIGHT_CLICK_BLOCK) || 
		  (e.getAction() == Action.RIGHT_CLICK_AIR) || 
		 (e.getAction() == Action.LEFT_CLICK_AIR) || 
		 (e.getAction() == Action.LEFT_CLICK_BLOCK)) {

		  e.setCancelled(true);
		  Block clickedBlock = e.getClickedBlock();
		  
	      p.getWorld().createExplosion(clickedBlock.getLocation(), 2.0F); //Força da explosao 
		  
		}
	}

	}
Link para o comentário
Compartilhar em outros sites

Primeiro, p.getItemInHand pode retornar nulo, você tem que checar isso, e o getTargetBlock tabem pode retornar nulo, provavelmente é ai o erro.

 

basta checar se ele é nulo ou não... tipo assim

 

Block b = blabla.getTargetBlock(null, sla);

 

if ( b == null )

    return;

 

Location loc = b.getLocation();

 

bla bkla .....

Link para o comentário
Compartilhar em outros sites

Primeiro, p.getItemInHand pode retornar nulo, você tem que checar isso, e o getTargetBlock tabem pode retornar nulo, provavelmente é ai o erro.

 

basta checar se ele é nulo ou não... tipo assim

 

Block b = blabla.getTargetBlock(null, sla);

 

if ( b == null )

    return;

 

Location loc = b.getLocation();

 

bla bkla .....

eu coloco getTargetBlock nulo mas ele da esse problema (Description Resource Path Location Type

The method getTargetBlock(HashSet<Byte>, int) is ambiguous for the type Player)
Link para o comentário
Compartilhar em outros sites

 

Testa ai.

	@EventHandler
	public void explodir(PlayerInteractEvent e)
	{
		Player p = e.getPlayer();
		if(e.getPlayer().getItemInHand().getType() == Material.BLAZE_ROD) {
	   if ((e.getAction() == Action.RIGHT_CLICK_BLOCK) || 
		  (e.getAction() == Action.RIGHT_CLICK_AIR) || 
		 (e.getAction() == Action.LEFT_CLICK_AIR) || 
		 (e.getAction() == Action.LEFT_CLICK_BLOCK)) {

		  e.setCancelled(true);
		  Block clickedBlock = e.getClickedBlock();
		  
	      p.getWorld().createExplosion(clickedBlock.getLocation(), 2.0F); //Força da explosao 
		  
		}
	}

	}

nao funfo :(

Link para o comentário
Compartilhar em outros sites

Qq tu ta tentando fazer? você quer explodir onde o jogador clicar?

Problema Resolvido Obrigado Pela Antenção :)

Acho que você deveria remover isso;

action == Action.RIGHT_CLICK_AIR

Pelo que entendi você não quer que a Ação seja ao clicar no ar, então é só remover.

era isso mesmo valeu :)

Link para o comentário
Compartilhar em outros sites

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