首页 > 解决方案 > 如何制作清单在带有演员表的变量上

问题描述

所以我正在尝试制作一个 Minecraft 插件,它可以监听配置文件以输入哪些生物不以玩家为目标。这是我到目前为止所拥有的

public class ZombieListener implements Listener {
    private final List<String> entities;
    public ZombieListener(List<String> entities){
        this.entities = entities;
    }
    @EventHandler
    public void onEntityTargetEvent(EntityTargetLivingEntityEvent event) {
        if (event.getTarget() event.getTarget() instanceof Player ) {
            final Player targeted = (Player) event.getTarget();
            if (targeted.hasPermission("dont.target.me") && entities.contains(targeted)){
                event.setCancelled(true);
            }
        }
    }
}

我意识到我无法从对象中检查实体,因此我需要创建targeted一个列表。我该怎么做?

标签: javaminecraftbukkit

解决方案


另一个答案比它需要的复杂得多。尝试这样做:

public class ZombieListener implements Listener {

    private final List<String> entities;

    public ZombieListener(List<String> entities){
        this.entities = entities;
    }

    @EventHandler
    public void onEntityTargetEvent(EntityTargetLivingEntityEvent event) {
        if (event.getTarget() instanceof Player && entities.contains(event.getEntityType().getName())) {
            final Player targeted = (Player) event.getTarget();
            if (targeted.hasPermission("dont.target.me") && entities.contains(targeted)) {
                event.setCancelled(true);
            }
        }
    }
}

我所做的只是在第一个 if 语句中添加一小段代码:

entities.contains(event.getEntityType().getName())

这使得应用程序检查实体是否是受影响的类型之一,并相应地继续侦听器。

希望这可以帮助!


推荐阅读