2017-07-19 55 views
-4

当他走过指定的区块时,我正试图给玩家一定的魔药效果。不幸的是我无法弄清楚。Minecraft Bukkit插件 - PotionEffect通过走过一个块?

我已经尝试过:

-I在YouTube上搜寻教程,但没有发现任何

+0

@ Apply55gx虽然我很感激你已经付出努力来清除问题,但你的时间将会更值得编辑,而这些问题不会被认为是SO的主题。其中一个原因是其他原因。请不要把这当作批评,事实并非如此。这只是一些友好的建议。 – Bugs

回答

5

我不知道这是绝对的最佳途径,但是这是我会怎样做到这一点。我会创建一个playerMoveEvent(每当玩家移动时调用)。然后通过获取播放器的位置来查看该播放器下面的块,然后将该块对象设置为等于位置类中的getblock方法。之后,测试它是否是您想要的区块,然后应用魔药效果!如果您需要添加事件到您的插件帮助你可以阅读更多关于它here

@EventHandler 
public void onPlayerMove(PlayerMoveEvenet event) { 
    Player p = event.getPlayer(); 
    //This might not be the way to get the players location. Bukkit vs Spigot thing 
    Location l = p.getLocation(); 
    l.add(0, -1, 0); 
    Block b = l.getBlock(); 
    if(b.getType() == Material.WHATEVERBLOCKITIS){ 
     p.addPotionEffect(WHATEVERPOTIONEFFECT); 
    } 
} 

例(以盐的粮食,我没有一个环境,现在来测试这个权利) 。

+0

这可能是唯一的方法。我不认为Bukkit有一个关于球员在球场上行走的事件(例如红石矿石在跳跃时做的事情),这个事件被广泛用于* all *块。 – Draco18s

+0

这是我认为最好的方法。另一个解决方案是创建一个调度程序,但是性能要大得多 – Squiddie