Ir para conteúdo
  • 0

[Resolvido] Shooting Egg


Guest Wheeze

Pergunta

Estou fazendo um plugin de Splegg porem na hora de atirar os ovos simplesmente não acontece nada

 

Código:

 

public class Eventos implements Listener  {
 
@EventHandler
public void onPlayerInteract(PlayerInteractEvent e) {
Player p = e.getPlayer();
if(p.getItemInHand().getType() == Material.STICK) {
   if(e.getAction() == Action.RIGHT_CLICK_AIR) {
    p.launchProjectile(Egg.class);
   }
}
}
 
}
 

 

Main:

 

public class Main extends JavaPlugin {
 
public void onEnable() {
getLogger().info("Plugin inicializado");
Bukkit.getServer().getPluginManager().registerEvents(new Eventos(), this);
}
 
public void onDisable() {
getLogger().info("Plugin desligado");
}
 
}

 

Eu só consegui fazer um modo para que ovos fossem lançados porem invés de isso acontecer ao clicar com o botão direito em qualquer lugar ele só atira no bloco setado:

 

 

public class Eventos implements Listener  {
 
@EventHandler
public void onPlayerInteract(PlayerInteractEvent e) {
Player p = e.getPlayer();
if(p.getItemInHand().getType() == Material.STICK) {
   if((e.getAction() == Action.RIGHT_CLICK_BLOCK) && (e.getClickedBlock().getType() == Material.GRASS)) {
    p.launchProjectile(Egg.class);
   }
}
}
 
}

 

Estou precisando bastante que me ajudem quanto a isso antes de eu continuar o plugin.

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

 if(e.getAction() == Action.RIGHT_CLICK_AIR)

 

Ele só vai atirar se você clicar no "ar"

 

Coloque assim

 

 

if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK)

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

if(e.getAction() == Action.RIGHT_CLICK_AIR)

 

Ele só vai atirar se você clicar no "ar"

 

Coloque assim

 

 

if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK)

 

Opa muito obrigado, agora, como faço para que esse ovo possa quebrar os blocos que ele encostar e que também bloqueie nascer as galinhas que saiem dos ovos atirados

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

Opa muito obrigado, agora, como faço para que esse ovo possa quebrar os blocos que ele encostar e que também bloqueie nascer as galinhas que saiem dos ovos atirados

Item Egg = p.getWorld().dropItem(p.getEyeLocation(),  new ItemStack(Material.EGG));
                Egg.setVelocity(p.getEyeLocation().getDirection());
 
Dentro da condição
Editado por Karamujo
Link para o comentário
Compartilhar em outros sites

Item Egg = p.getWorld().dropItem(p.getEyeLocation(),  new ItemStack(Material.EGG));
                Egg.setVelocity(p.getEyeLocation().getDirection());

 

Dentro da condição

Mas ai no caso vai dropar um ovo não haveria como retirar o drop

Link para o comentário
Compartilhar em outros sites

Mas ai no caso vai dropar um ovo não haveria como retirar o drop

  Egg egg = player.throwEgg();
                          egg.setVelocity((egg.getVelocity().multiply(use 0.5 acho que é o ideal)));

Like + resolvido

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

Guest Healthay

Mas ai não quebra blocos e ainda nascem as galinhas

  @EventHandler
  public void onChickenSpawn(CreatureSpawnEvent e)
  {
    if ((e.getEntity() instanceof Chicken)) {
      e.setCancelled(true);
    }
  }
Link para o comentário
Compartilhar em outros sites

Mas ai não quebra blocos e ainda nascem as galinhas

Caraca, se tbm hein

 

usa esse evento 

@EventHandler
    public void onEggThrow(PlayerEggThrowEvent event){
      Egg egg = event.getEgg();
      event.setHatching(false);
    }

acredito que isso cancela as galinhas

 

E isso tallvez de certo tambem 

	@EventHandler
    public void onEntityDamage(BlockDamageEvent e){
		if(e instanceof Egg)
		{
			Block b = e.getBlock();
			b.setType(Material.AIR);
		}
	}

Like + Resolvido

Link para o comentário
Compartilhar em outros sites

Caraca, se tbm hein

 

usa esse evento 

@EventHandler
    public void onEggThrow(PlayerEggThrowEvent event){
      Egg egg = event.getEgg();
      event.setHatching(false);
    }
acredito que isso cancela as galinhas

 

E isso tallvez de certo tambem 

@EventHandler
    public void onEntityDamage(BlockDamageEvent e){
		if(e instanceof Egg)
		{
			Block b = e.getBlock();
			b.setType(Material.AIR);
		}
	}
Like + Resolvido

Vlw

A parte de quebrar bloco n funcionou mas agora eu dou meu jeito.

 


 

Podem fechar!

Link para o comentário
Compartilhar em outros sites

Caraca, se tbm hein

 

usa esse evento 

@EventHandler
    public void onEggThrow(PlayerEggThrowEvent event){
      Egg egg = event.getEgg();
      event.setHatching(false);
    }

acredito que isso cancela as galinhas

 

E isso tallvez de certo tambem 

	@EventHandler
    public void onEntityDamage(BlockDamageEvent e){
		if(e instanceof Egg)
		{
			Block b = e.getBlock();
			b.setType(Material.AIR);
		}
	}

Like + Resolvido

 

if(e instanceof Egg) ?

 

"e" é o evento... ele não pode ser o ovo...

logo-forum.png

 

 

Sua dúvida foi marcada como [Resolvido] e movido à área de dúvidas resolvidas.

 

 

Atenciosamente,

Gamer's Board

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

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