Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么';";EntityDamageByEntityEvent“;激活?_Java_Bukkit - Fatal编程技术网

Java 为什么';";EntityDamageByEntityEvent“;激活?

Java 为什么';";EntityDamageByEntityEvent“;激活?,java,bukkit,Java,Bukkit,所以,我尝试做一个团队插件,每个团队都有一个player1和player2。 现在我想使用EntityDamageByEntityEvent添加friendyfire,但要么我的代码不起作用,要么事件没有被激活。我对插件还很陌生,所以我的代码可能有点愚蠢。 顺便说一句,“teams2”是一个包含“Team”对象的ArrayList,每个对象包含player1、player2和teamname 这就是功能: public void onEntityDamageByEntity(EntityDama

所以,我尝试做一个团队插件,每个团队都有一个player1和player2。 现在我想使用EntityDamageByEntityEvent添加friendyfire,但要么我的代码不起作用,要么事件没有被激活。我对插件还很陌生,所以我的代码可能有点愚蠢。 顺便说一句,“teams2”是一个包含“Team”对象的ArrayList,每个对象包含player1、player2和teamname

这就是功能:

public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {

        if (((event.getEntity() instanceof Player)) && ((event.getDamager() instanceof Player))) {
            Player player = (Player)event.getEntity();
            Player damager = (Player)event.getDamager();
            for(int i = 0; i < teams2.size(); i++){
                if((teams2.get(i).player1 == player || teams2.get(i).player2 == player) && (teams2.get(i).player1 == damager || teams2.get(i).player2 == damager)){
                    event.setCancelled(true);
                }
            }
        }
        else if (((event.getEntity() instanceof Arrow)) && ((event.getDamager() instanceof Player))) {
            Entity arrow = event.getEntity();
            if ((((Projectile)arrow).getShooter() instanceof Player)) {
                Player player = (Player)arrow;
                Player damager = (Player)event.getDamager();
                for(int i = 0; i < teams2.size(); i++){
                    if((teams2.get(i).player1 == player || teams2.get(i).player2 == player) && (teams2.get(i).player1 == damager || teams2.get(i).player2 == damager)){
                        event.setCancelled(true);
                    }
                }
            }
        }
    }
public void onEntityDamageByEntity(EntityDamageByEntityEvent事件){
if(((event.getEntity()instanceof Player))&((event.getDamager()instanceof Player))){
Player=(Player)event.getEntity();
Player damager=(Player)event.getDamager();
对于(int i=0;i

它应该取消比赛,这样同一队的球员就不能互相攻击,但事实并非如此。为什么?您还可以建议创建FriendlyFire函数的其他方法。

由于您没有发布全部源代码,我将从一个简单的问题开始,即许多刚接触Bukkit编程的人都犯了错误(有时甚至发生在我身上):您注册了您的事件吗

public类YourPlugin扩展了JavaPlugin{
@凌驾
public void onEnable(){
super.onEnable();
Bukkit.getServer().getPluginManager().registerEvents(侦听器,this);
}
}
listener
是listener类的一个实例。因此,如果您在MainClass中的问题中发布了此代码,则应如下所示:

public类YourPlugin扩展JavaPlugin实现监听器{
@凌驾
public void onEnable(){
super.onEnable();
Bukkit.getServer().getPluginManager().registerEvents(这个,这个);
}
@事件处理程序
公共void OneTityDamageByEntity(EntityDamageByEntityEvent事件){
//你的活动
}
}
如果你有一个单独的类,它应该是这样的:

public类YourPlugin扩展了JavaPlugin{
@凌驾
public void onEnable(){
super.onEnable();
Bukkit.getServer().getPluginManager().registerEvents(新的YourListener(),这个);
}
}
公共类YourListener实现Listener{
@事件处理程序
公共void OneTityDamageByEntity(EntityDamageByEntityEvent事件){
//你的活动
}
}
将此
@EventHandler
放在
EntityDamageByEntyEvent
上方一行非常重要。这也可能是一个问题,为什么您的活动不起作用

我看透了你的听众,它应该工作得很好。我只是花了点时间把它收紧了一点:

@EventHandler
公共无效OneTityDamageByEntity(EntityDamageByEntityEvent e){
如果(!(e.getEntity()instanceof Player))返回;
Player=(Player)e.getEntity();
球员达马杰;
if(如getDamager()实例of Arrow){
箭头a=(箭头)e.getDamager();
如果(!(a.getShooter()玩家实例))返回;
damager=(玩家)a.getShooter();
}否则{
如果(!(如getDamager()玩家实例))返回;
达马格=(玩家)e.getDamager();
}
对于(t组:第2组){
如果((t.player1==player | t.player2==player)和&(t.player1==damager | t.player2==damager)){
e、 setCancelled(真);
}
}
}

我不知道
teams2
中存储了什么类,但我猜测它应该是
Team
,所以如果您使用其他类名,您可能需要更改它,因为您想尝试我的代码

如果
条件正确,是否输入了
?可能是因为使用了
==
而不是
.equals()