我正在为一款名为Minecraft的游戏制作一个“强力场”。我评论的是我需要帮助的地方。
if (Camb.killaura)
{
nchitDelay++;
for(Object o: mc.theWorld.loadedEntityList){
Entity e = (Entity)o;
if(e != this && e instanceof EntitySkeleton || e instanceof EntityCow && getDistanceToEntity(e) <= killauraRange && mc.thePlayer.canEntityBeSeen(e) &&!Camb.friend.contains(e.getEntityName())){ // checking if the entity is either a skeleton or cow
if(e.isEntityAlive()){
if(nchitDelay >= 8){
if(Camb.auraaimbot){
facetoEntity(e); // facing the skeleton from an infinite distance.
}
if(Camb.criticals){
if(mc.thePlayer.isSprinting()==false){
if(mc.thePlayer.isJumping==false){
if(mc.thePlayer.onGround){
mc.thePlayer.jump();
}
}
}
}
Minecraft.SwitchToSword(mc.thePlayer.inventory.currentItem);
swingItem();
mc.playerController.attackEntity(this, e);
nchitDelay = 0;
break;
}
}
}
}
}
}
所以,这个想法是,如果一个骷髅或母牛进入距离(4个街区),那么它将面对它并攻击它。一切正常,但玩家从任何距离都面向骨架。不只是4个街区。我该如何解决这个问题?
由于
答案 0 :(得分:1)
我认为你的问题是:
if (
e != this
&& e instanceof EntitySkeleton
|| e instanceof EntityCow
&& getDistanceToEntity(e) <= killauraRange
&& mc.thePlayer.canEntityBeSeen(e)
&& !Camb.friend.contains(e.getEntityName())
) {
你结合了很多条件,但没有达到预期的方式。像||
和&&
这样的运营商有规则如何应用,就像2 + 2 * 10
是22而不是40。
&&
优先于||
,就像*
优先于+
一样。您的情况目前意味着
(e != this && e instanceof EntitySkeleton)
||
(e instanceof EntityCow && getDistanceToEntity(e) <= killauraRange && mc.thePlayer.canEntityBeSeen(e) && !Camb.friend.contains(e.getEntityName())).
你想要的是在牛或骨架部分周围放一些括号:
if (
e != this
&& (e instanceof EntitySkeleton || e instanceof EntityCow)
&& getDistanceToEntity(e) <= killauraRange
&& mc.thePlayer.canEntityBeSeen(e)
&& !Camb.friend.contains(e.getEntityName())
) {