在一个 class 中选择的事件侦听器实体,我想将其转移到另一个 class

Event listener entity selected in one class and I want to transfer it to a another class

我认为标题具有误导性,不太确定如何放置。我是新来的。 我正在为 eclipse 中的 minecraft 服务器制作插件,我有一个事件监听器

package me.rumic.speedrun.commands;

import org.bukkit.Bukkit;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEntityEvent;

import me.rumic.speedrun.Main;

public class PlayerSelec implements Listener{
    private Main plugin;
    
    public PlayerSelec(Main plugin) {
        this.plugin = plugin;
        Bukkit.getPluginManager().registerEvents(this, plugin);
    }
    
    @EventHandler
    public void plslEvent(PlayerInteractEntityEvent e) {
        Entity ent = e.getRightClicked();
        ent.sendMessage("You have been selected");
        Player p = e.getPlayer();
        p.sendMessage("You selected an entity");
        
    }

}

有了这个,我右键单击并选择了一个实体。但不同的是 class 我想调用我选择的那个实体并对其应用药水。

package me.rumic.speedrun.commands;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;

import me.rumic.speedrun.Main;

public class WeaknessCommand implements CommandExecutor{
    private Main plugin;
    
    public WeaknessCommand(Main plugin) {
        this.plugin = plugin;
        plugin.getCommand("WC").setExecutor(this);
    }
    
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        ent.addPotionEffect(new PotionEffect(PotionEffectType.WEAKNESS, 200, 1));
        return false;
    }

}

我想也许我可以导入它,但我真的不知道。如果有人能帮忙,我将不胜感激。

首先,您的 Listener 的代码看起来有点奇怪。通常你在 onEnable() 函数的主 class 中注册你的事件。所以你可以确定它被注册了。您还必须对您的侦听器进行一些更改。我建议这样:

@EventHandler
public void onInteract(PlayerInteractAtEntityEvent event) {

    // check if the entity right-clicked is a player
    if (event.getRightClicked().getType().equals(EntityType.PLAYER)) {

        // apply the potion effect
        ent.addPotionEffect(new PotionEffect(PotionEffectType.WEAKNESS, 200, 1));
    }
}