【发布时间】:2019-06-06 20:35:54
【问题描述】:
所以,我正在尝试制作一个团队插件,其中每个团队都有一个 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);
}
}
}
}
}
应该取消活动,让同队的玩家不能互相攻击,但事实并非如此。为什么?您还可以建议其他方法来创建 FriendlyFire 函数。
【问题讨论】:
-
是否正确输入了
if条件?可能是因为使用==而不是.equals()?