在一个 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));
}
}
我认为标题具有误导性,不太确定如何放置。我是新来的。 我正在为 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));
}
}