Bukkit将事件播放器传递给另一个班级

时间:2017-12-29 14:04:04

标签: java bukkit

所以我正在努力解决问题。我有两个单独的课程。 1个类用于runnable,1个类用于事件处理。有什么方法可以将事件播放器(e.getPlayer)传递给另一个类吗?我正在尝试更新项目的名称以达到冷却目的。这是我的代码

@SuppressWarnings("deprecation")
@EventHandler
public void ItemRightClick(PlayerInteractEvent e) {
    Player p = e.getPlayer();
    Action a = e.getAction();
    ItemStack item = p.getItemInHand();
    ItemMeta itemmeta = item.getItemMeta();



    if(a == Action.PHYSICAL) return;
    if(!p.getItemInHand().getType().equals(Material.DIAMOND_HOE)) return;
    if(!itemmeta.getDisplayName().contains("Wand of Regen")) return;
    if(cooldown.containsKey(p)) {
        if(cooldown.get(p) + cooldownTime <= System.currentTimeMillis()) { 
            cooldown.remove(p);
            } else {
                if((int) (cooldown.get(p) + cooldownTime - System.currentTimeMillis()) / 1000 != 0) {
                itemmeta.setDisplayName(ChatColor.RED + "Wand of Regen" + ChatColor.GRAY + " - " + ChatColor.AQUA + "Remaining " + ChatColor.GREEN + (int) (cooldown.get(p) + cooldownTime - System.currentTimeMillis()) / 1000 + ChatColor.AQUA + " seconds");
                item.setItemMeta(itemmeta);
                return;
                }
                itemmeta.setDisplayName(ChatColor.RED + "Wand of Regen" + ChatColor.GRAY + " - " + ChatColor.GREEN + "Ready");
                item.setItemMeta(itemmeta);
            }
        }

        p.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 5 * 100, 3));
        p.sendMessage("Regen activated");
        cooldown.put(p, System.currentTimeMillis());

    }
}

这是可运行的类

    public class StepEvent extends BukkitRunnable {


    @Override
    public void run() {

    }
}

1 个答案:

答案 0 :(得分:0)

您可以使用其中的播放器构建您的StepEvent课程,如下所示:

public class StepEvent extends BukkitRunnable {
    private Player passedPlayer;

    public StepEvent(Player passedPlayer) {
        this.passedPlayer = passedPlayer;
    }

    @Override
    public void run() {
        passedPlayer.doStuff();
    }


}

每当你需要在播放器中使用这个Runnable时,就像你通常那样创建它的一个实例:

StepEvent stepEventWithPlayer = new StepEvent(playerToBePassed);