player.setFoodLevel不起作用

时间:2014-10-25 17:12:03

标签: java minecraft bukkit

我正在为Bukkit制作一个KitPvP插件。我遇到了一个错误,我想知道是否有人可以帮助我。

所以,我有一个Main.java作为我的主类。我在Hunger.java注册了活动,但代码不会在Minecraft中执行。除此之外,插件的所有其他方面都可以工作。以下是Hunger.java的代码:

package com.lobbyist.junk.kitpvp;

import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;

public class Hunger implements Listener{

    public void onPlayerInteractEvent(PlayerInteractEvent event){
        Player player = event.getPlayer();
        player.setFoodLevel(20);
    }

}

如何让player.setFoodLevel工作?

编辑:我忘了添加一个EventHandler注释。 愚蠢的我

2 个答案:

答案 0 :(得分:1)

根据我从the documentation收集的内容,您尚未将此事件处理程序注册为EventHandler

类似的东西:

@EventHandler
public void onPlayerInteractEvent(PlayerInteractEvent event) {
    Player player = event.getPlayer();
    player.setFoodLevel(20);
}

答案 1 :(得分:0)

您必须拥有@EventHandler注释,并且还必须使用onEnable()方法注册事件:

在您的主类(扩展JavaPlugin的类)中:

public class MyMainClass extends JavaPlugin{

  public void onEnable(){
    //format:
    //this.getServer().getPluginManager().registerEvents(this, new MyClassThatImplementsListener());
    this.getServer().getPluginManager().registerEvents(this, new Hunger());

    //onEnable() stuff that you currently have
  }

  //other stuff
}
在您的饥饿课程中

(您的倾听者,您在问题中发布的内容):

public class Hunger implements Listener{

  @EventHandler //you need this annotation above ALL events
  public void onPlayerInteractEvent(PlayerInteractEvent event){
    Player player = event.getPlayer();
    player.setFoodLevel(20);
  }
}