Lev*_*han 2 java ambiguous minecraft bukkit
这是我的插件代码.
public boolean reapSoul(Player player, Player tplayer, double damage)
{
if(player.hasPermission("myrace.wraith.reap"))
{
player.sendMessage(ChatColor.DARK_GRAY + "You have reaped " + tplayer.getName() + "'s soul.");
damage = player.getLevel()/10;
double heal = damage/2;
tplayer.damage(damage);
player.setHealth(player.getHealth() + heal);
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
我知道可能存在很多错误,我可以自己处理它们.我无法处理的那个是
player.setHealth(player.getHealth() + heal);
Run Code Online (Sandbox Code Playgroud)
Eclipse(我的IDE)告诉我getHealth()方法对于Player类型是不明确的.
我知道自从Bukkit 1.6.x发布以来,这可能是一个非常受欢迎的问题,但我所做的搜索都没有给我一个我能理解的解决方案.
如果这确实是解决方案,请你帮我理解我能做些什么......
谢谢.
你能尝试加倍h = player.getHealth()吗?据我所知,由于向后兼容性,有两种getHealth方法.可能有一些反射魔法来确定是否请求new(类型double)或old(类型int).
同样,setHealth有两个版本,因此编译器无法弄清楚它是否应该转换getHealth() + health为int并使用setHealth(int)或者是否应该强制转换getHealth() + health为double并使用setHealth(double)因为getHealth()是ambigious.
@Yourcomment它已被弃用,但仍然支持向后兼容性,此时我对于为什么会发生这种情况一无所知,似乎bukkit有一个复杂的构建程序及其罐子因此可能出现问题,但是我在谷歌上发现了一个解决方案建议将播放器转换为Damageable可以解决问题.
Damageable d = (Damageable) player;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8884 次 |
| 最近记录: |