@Override
  public void collide(Entity inEntity) {
    if (this.getRemoteEntity() == null) {
      super.collide(inEntity);
      return;
    }

    if (((RemoteBaseEntity) this.m_remoteEntity).onCollide(inEntity.getBukkitEntity()))
      super.collide(inEntity);
  }
  @Override
  public void g(double x, double y, double z) {
    if (this.m_remoteEntity == null) {
      super.g(x, y, z);
      return;
    }

    Vector vector = ((RemoteBaseEntity) this.m_remoteEntity).onPush(x, y, z);
    if (vector != null) super.g(vector.getX(), vector.getY(), vector.getZ());
  }
  @Override
  public void e(float inXMotion, float inZMotion) {
    float[] motion = new float[] {inXMotion, inZMotion, (float) this.motY};
    if (this.m_remoteEntity.getMind().hasBehaviour("Ride"))
      ((RideBehavior) this.m_remoteEntity.getMind().getBehaviour("Ride")).ride(motion);

    this.motY = (double) motion[2];
    super.e(motion[0], motion[1]);
  }
  @Override
  public void move(double d0, double d1, double d2) {
    if (this.m_remoteEntity != null && this.m_remoteEntity.isStationary()) return;

    super.move(d0, d1, d2);
  }
 @Override
 public void h() {
   super.h();
   if (this.getRemoteEntity() != null) this.getRemoteEntity().getMind().tick();
 }
 @Override
 public void die(DamageSource damagesource) {
   ((RemoteBaseEntity) this.m_remoteEntity).onDeath();
   super.die(damagesource);
 }