Энтити постоянно "скачет"

Версия Minecraft
1.7.10

tox1cozZ

aka Agravaine
8,455
598
2,892
Мне нужно сделать простое энтити, которое будет появляться в небе и лететь вниз. Когда долетит до земли - остановится и все. Нужно сделать его непроходимым.
Java:
public AxisAlignedBB getCollisionBox(Entity entity){
        return null;//entity.boundingBox;
    }

    public AxisAlignedBB getBoundingBox(){
        return boundingBox;
    }
    
    public boolean canBeCollidedWith(){
        return !isDead;
    }
    
    @Override
    public void onUpdate(){
        if(onGround && !worldObj.isRemote){
            setPlaced(true);
        }else{
            motionY = -0.18D;
        }
        moveEntity(0, motionY, 0);
    }
Вот основные методы. Но блин, когда он приземляется на землю, то начинает постоянно "скакать", а еще можно поставить блок в него и его начнет выталкивать вверх.
Может у кого-то есть нормальное решение?
 
5,018
47
783
В точке где ентити приземлится, поставить блок с моделью энтити, а энтити удалить.:)
 

tox1cozZ

aka Agravaine
8,455
598
2,892
Была такая идея, но это костыль, мне кажется.

Когда долетает до земли, сколько motionY выдает и продолжает ли работать moveEntity после приземления?
Та тут не только в этом проблема. Когда я подхожу к энтити, он начинает скакать, будто пытается вверх выдавить себя, чтоб я к нему не прикасался.
 
5,018
47
783
Великолепный костыль, никто не заметит. Да и вообще, не всегда костыли - это плохо. Порой без них вообще никак)
 
7,099
324
1,510
Лол))
Java:
public void onUpdate(){
   if(!isPlaced)
       if(onGround && !worldObj.isRemote){
           setPlaced(true);
           motionY=0;
       }else{
           motionY = -0.18D;
           moveEntity(0, motionY, 0);
       }
}
 
7,099
324
1,510
Первый раз подумал, что оно скачет при приземлении:m_faceplam:
Нужно, чтобы оно отталкивало игрока?
Если не нужно, то переопределить
Java:
public AxisAlignedBB getEntityBoundingBox(){
  return isPlaced?ZERO_AABB:this.boundingBox;
}
Если нужно, то
Java:
public void addVelocity(double x, double y, double z)
    {
        if(!isPlaced){
            this.motionX += x;
            this.motionY += y;
            this.motionZ += z;
            this.isAirBorne = true;
        }
    }
Мой onUpdate все рано лучше сделан, так что полезно
 
Последнее редактирование:
7,099
324
1,510
addVelocity подойдет, если тебе после не нужно двигать сущность
 
Сверху