2016-04-29 38 views
0

产卵所以我得到了别人的验证码,他说这会工作,我很感激(现在也是),但它似乎以某种方式闪电箭,但闪电不会在

代码不工作这是我的主文件

package me.Pixel; 

import java.util.ArrayList; 
import java.util.List; 

import org.bukkit.entity.Arrow; 
import org.bukkit.event.EventHandler; 
import org.bukkit.event.Listener; 
import org.bukkit.event.entity.EntityShootBowEvent; 
import org.bukkit.plugin.java.JavaPlugin; 

public class Main extends JavaPlugin implements Listener { 

    public Main plugin; 
    public List<String> spells = new ArrayList<String>(); 
    public getTargets getTargets = new getTargets(); 

    @Override 
    public void onEnable() { 
     plugin = this; 
     getCommand("bow").setExecutor(new BowCommand()); 
    } 

    @EventHandler 
    public void onEntityShootBow(EntityShootBowEvent event) { 
     if(event.getProjectile() instanceof Arrow) { 
      Arrow arrow = (Arrow) event.getProjectile(); 
      new LightningShot(arrow).runTaskTimer(this, 0, 1); 
     } 
    } 
} 

这是我LightningShot文件

package me.Pixel; 

import org.bukkit.entity.Arrow; 
import org.bukkit.scheduler.BukkitRunnable; 

public class LightningShot extends BukkitRunnable { 

    private Arrow arrow; 
    private int tick = 1; 

    public LightningShot(Arrow arrow) { 
     this.arrow = arrow; 
    } 

    @Override 
    public void run() { 
     if (arrow == null || arrow.isOnGround() || tick++ > 20 * 10) { 
      this.cancel(); 
     } else { 
      arrow.getWorld().strikeLightning(arrow.getLocation()); 
     } 
    } 
} 

要清楚This is what i want it to look like但随后代替雪球的散发出来弓的箭。 我希望你们能帮助我。这一定非常棒。

回答

0

看来你还没有注册你的听众。尽管听众是你的主类,你仍然需要在你的onEnable法进行注册:

this.getServer().getPluginManager().registerEvents(this, this); 

然后代码将在箭头位置产卵闪电如预期(我测试的代码)。

+0

Ty ty,我可以问你,从 – Pixel

+0

学到什么指南或其他来源是非常棒的。如果你是google“bukkit listener”,最好的结果是[Event API Reference](http://wiki.bukkit。 org/Event_API_Reference)(在寻找解决方案时首先查阅API文档总是很好的)。你也可以试着用google搜索这个问题,有时甚至会找到有用的教程,或者看看[Bukkit插件开发论坛](https://bukkit.org/forums/plugin-development.5/)。 –

+0

真棒,感谢兄弟 – Pixel