java - 如何制作清单在带有演员表的变量上
问题描述
所以我正在尝试制作一个 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
一个列表。我该怎么做?
解决方案
另一个答案比它需要的复杂得多。尝试这样做:
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())
这使得应用程序检查实体是否是受影响的类型之一,并相应地继续侦听器。
希望这可以帮助!
推荐阅读
- c++ - macOS Big Sur 上的编译警告:使用 Intel icpc 编译的 C++ 代码
- python - 在 PyQt5 DialogButtonBox 中使用 3 个按钮
- node.js - 实现 React 应用程序的服务器端渲染时出错
- mysql - 避免 MySQL 更新重复
- google-sheets - 如何忽略谷歌表格总和计算中的文本/字符串?
- php - Symfony 5 和 Docker:缺少 RABBITMQ_DSN 环境变量
- google-cloud-platform - 将 gcloud 虚拟机实例监控数据提取到 BigQuery
- c# - 如何在单击视图模型中的按钮时显示 Xamarin 日期选择器
- java - Java 1.5 java.security.InvalidAlgorithmParameterException:素数大小必须是 64 的倍数,并且只能从 512 到 1024(含)
- python - 如何在 Python 中洗牌已知大小的迭代器?