Ir para conteúdo
  • 0

[Resolvido] [Dúvida] - Cancelando Hit de flechas


Arkasher

Pergunta

17 respostass a esta questão

Posts Recomendados

/** Lista com os nomes dos participantes */
List<String> suaArray = new ArrayList<>();

@EventHandler
public void onEntityDamageByEntityEvent( EntityDamageByEntityEvent event )
{
	if ( !(event.getDamager() instanceof Arrow) || !(event.getEntity() instanceof Player) ) return;

	Arrow arrow = (Arrow) event.getDamager();
	Player shooter, victim = (Player) event.getEntity();

	if ( (shooter = (Player) arrow.getShooter()) instanceof Player && suaArray.contains(shooter.getName()) && suaArray.contains(victim.getName()) )
	{
		event.setCancelled(true);
	}
}

Se algum moderador puder juntar os posts eu agradeço, desculpe pelo double post.

 

Vê se ta funcionando... nao testei.

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

Sim,eu usei,só que não foi do mesmo geito.

	@EventHandler
	public void ondamage(EntityDamageByEntityEvent e){
		if (e.getEntity() instanceof Player){
			Player entity = (Player) e.getEntity();
			if (e.getDamager() instanceof Projectile){
				Projectile projeto = (Projectile) e.getDamager();
				ProjectileSource shooter = projeto.getShooter();
				if (shooter instanceof Player){
					if (suaLista.contains(shooter) && suaLista.contains(entity)){
						e.setCancelled(true);
					}
				}
			}
		}
	}

Testa ai, se funcionar deixa um like :p

Link para o comentário
Compartilhar em outros sites

Viiict0r, em 18 Nov 2015 - 3:06 PM, disse:

@EventHandler	public void ondamage(EntityDamageByEntityEvent e){		if (e.getEntity() instanceof Player){			Player entity = (Player) e.getEntity();			if (e.getDamager() instanceof Projectile){				Projectile projeto = (Projectile) e.getDamager();				ProjectileSource shooter = projeto.getShooter();				if (shooter instanceof Player){					if (suaLista.contains(shooter) && suaLista.contains(entity)){						e.setCancelled(true);					}				}			}		}	}
Testa ai, se funcionar deixa um like :p

Vou testar,vlw

 

@Edit

Nao foi ;-;

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

Está registrando os eventos em sua Main?

Sim,tanto que quando um player bate em outro que está com a mesma array,o hit cancela,o problema é que da para mandar flechas...

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

Sim,tanto que quando um player bate em outro que está com a mesma array,o hit cancela,o problema é que da para mandar flechas...

@EventHandler
	public void ondamage(EntityDamageByEntityEvent e){
		if (e.getEntity() instanceof Player){
			Player entity = (Player) e.getEntity();
			if (e.getDamager() instanceof Projectile){
				Projectile projeto = (Projectile) e.getDamager();
				Player shooter = (Player) projeto.getShooter();
				if (shooter instanceof Player){
					if (suaLista.contains(shooter) && suaLista.contains(entity)){
						e.setCancelled(true);
					}
				}
			}
		}
	}

Mesmo código do carinha, só que o Shooter foi convertido em player em vez de ProjectileSource

Link para o comentário
Compartilhar em outros sites

@EventHandler
	public void ondamage(EntityDamageByEntityEvent e){
		if (e.getEntity() instanceof Player){
			Player entity = (Player) e.getEntity();
			if (e.getDamager() instanceof Projectile){
				Projectile projeto = (Projectile) e.getDamager();
				Player shooter = (Player) projeto.getShooter();
				if (shooter instanceof Player){
					if (suaLista.contains(shooter) && suaLista.contains(entity)){
						e.setCancelled(true);
					}
				}
			}
		}
	}

Mesmo código do carinha, só que o Shooter foi convertido em player em vez de ProjectileSource

 

Vou testar

Link para o comentário
Compartilhar em outros sites

@EventHandler
	public void ondamage(EntityDamageByEntityEvent e){
		if (e.getEntity() instanceof Player){
			Player entity = (Player) e.getEntity();
			if (e.getDamager() instanceof Projectile){
				Projectile projeto = (Projectile) e.getDamager();
				Player shooter = (Player) projeto.getShooter();
				if (shooter instanceof Player){
					if (suaLista.contains(shooter) && suaLista.contains(entity)){
						e.setCancelled(true);
					}
				}
			}
		}
	}

Mesmo código do carinha, só que o Shooter foi convertido em player em vez de ProjectileSource

 

 

Tu ta fazendo cast pra player antes de verificar se é um player, isso vai dar erro caso a entidade que atirou a flecha não seja um player.

Link para o comentário
Compartilhar em outros sites

Então né, o certo é vcs usarem o 

ProjectileHitEvent
ProjectileLaunchEvent

 Porque uma flecha é um projectile...

Pelo que eu vi na documentação nao tem como cancelar o dano, nem pegar a entidade atingida pelo projetil, entao a melhor saida seria usar o EntityDamageByEntityEvent mesmo.

Link para o comentário
Compartilhar em outros sites

/** Lista com os nomes dos participantes */
List<String> suaArray = new ArrayList<>();
	
@EventHandler
public void onEntityDamageByEntityEvent( EntityDamageByEntityEvent event )
{
	if ( !(event.getDamager() instanceof Arrow) || !(event.getEntity() instanceof Player) ) return;
		
	Arrow arrow = (Arrow) event.getDamager();
	Player shooter, victim = (Player) event.getEntity();
		
	if ( (shooter = (Player) arrow.getShooter()) instanceof Player && suaArray.contains(shooter.getName()) && suaArray.contains(victim.getName()) )
	{
		event.setCancelled(true);
	}
}

eae ia fazer mas vc ja fez..

Link para o comentário
Compartilhar em outros sites

/** Lista com os nomes dos participantes */List suaArray = new ArrayList<>();@EventHandlerpublic void onEntityDamageByEntityEvent( EntityDamageByEntityEvent event ){	if ( !(event.getDamager() instanceof Arrow) || !(event.getEntity() instanceof Player) ) return;	Arrow arrow = (Arrow) event.getDamager();	Player shooter, victim = (Player) event.getEntity();	if ( (shooter = (Player) arrow.getShooter()) instanceof Player && suaArray.contains(shooter.getName()) && suaArray.contains(victim.getName()) )	{		event.setCancelled(true);	}}
Se algum moderador puder juntar os posts eu agradeço, desculpe pelo double post.

 

Vê se ta funcionando... nao testei.

 

Vou testar cara,vlw

 

@Edit

Foi! Vlw :D

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

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