@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());
  }
Example #3
0
  /**
   * Used for easily adding entity-dependent animations. The second and third float params here are
   * the same second and third as in the setRotationAngles method.
   */
  public void setLivingAnimations(
      EntityLivingBase par1EntityLivingBase, float par2, float par3, float par4) {
    EntityWither var5 = (EntityWither) par1EntityLivingBase;

    for (int var6 = 1; var6 < 3; ++var6) {
      this.field_82904_b[var6].rotateAngleY =
          (var5.func_82207_a(var6 - 1) - par1EntityLivingBase.renderYawOffset)
              / (180F / (float) Math.PI);
      this.field_82904_b[var6].rotateAngleX =
          var5.func_82210_r(var6 - 1) / (180F / (float) Math.PI);
    }
  }
  @Override
  public void e(float inXMotion, float inZMotion) {
    float[] motion = new float[] {inXMotion, inZMotion, 0};
    if (this.m_remoteEntity.getMind().hasBehaviour("Ride"))
      ((RideBehavior) this.m_remoteEntity.getMind().getBehaviour("Ride")).ride(motion);

    super.e(motion[0], motion[1]);
    this.motY = motion[2];
  }
  /** This method attempts to create a wither at the given location and skull */
  public void makeWither(
      World par1World, int par2, int par3, int par4, TileEntitySkull par5TileEntitySkull) {
    if (par5TileEntitySkull.func_82117_a() == 1 && par3 >= 2 && par1World.difficultySetting > 0) {
      int var6 = Block.slowSand.blockID;
      int var7;
      EntityWither var8;
      int var9;

      for (var7 = -2; var7 <= 0; ++var7) {
        if (par1World.getBlockId(par2, par3 - 1, par4 + var7) == var6
            && par1World.getBlockId(par2, par3 - 1, par4 + var7 + 1) == var6
            && par1World.getBlockId(par2, par3 - 2, par4 + var7 + 1) == var6
            && par1World.getBlockId(par2, par3 - 1, par4 + var7 + 2) == var6
            && this.func_82528_d(par1World, par2, par3, par4 + var7, 1)
            && this.func_82528_d(par1World, par2, par3, par4 + var7 + 1, 1)
            && this.func_82528_d(par1World, par2, par3, par4 + var7 + 2, 1)) {
          par1World.setBlockMetadata(par2, par3, par4 + var7, 8);
          par1World.setBlockMetadata(par2, par3, par4 + var7 + 1, 8);
          par1World.setBlockMetadata(par2, par3, par4 + var7 + 2, 8);
          par1World.setBlock(par2, par3, par4 + var7, 0);
          par1World.setBlock(par2, par3, par4 + var7 + 1, 0);
          par1World.setBlock(par2, par3, par4 + var7 + 2, 0);
          par1World.setBlock(par2, par3 - 1, par4 + var7, 0);
          par1World.setBlock(par2, par3 - 1, par4 + var7 + 1, 0);
          par1World.setBlock(par2, par3 - 1, par4 + var7 + 2, 0);
          par1World.setBlock(par2, par3 - 2, par4 + var7 + 1, 0);

          if (!par1World.isRemote) {
            var8 = new EntityWither(par1World);
            var8.setLocationAndAngles(
                (double) par2 + 0.5D,
                (double) par3 - 1.45D,
                (double) (par4 + var7) + 1.5D,
                90.0F,
                0.0F);
            var8.renderYawOffset = 90.0F;
            var8.func_82206_m();
            par1World.spawnEntityInWorld(var8);
          }

          for (var9 = 0; var9 < 120; ++var9) {
            par1World.spawnParticle(
                "snowballpoof",
                (double) par2 + par1World.rand.nextDouble(),
                (double) (par3 - 2) + par1World.rand.nextDouble() * 3.9D,
                (double) (par4 + var7 + 1) + par1World.rand.nextDouble(),
                0.0D,
                0.0D,
                0.0D);
          }

          par1World.notifyBlockChange(par2, par3, par4 + var7, 0);
          par1World.notifyBlockChange(par2, par3, par4 + var7 + 1, 0);
          par1World.notifyBlockChange(par2, par3, par4 + var7 + 2, 0);
          par1World.notifyBlockChange(par2, par3 - 1, par4 + var7, 0);
          par1World.notifyBlockChange(par2, par3 - 1, par4 + var7 + 1, 0);
          par1World.notifyBlockChange(par2, par3 - 1, par4 + var7 + 2, 0);
          par1World.notifyBlockChange(par2, par3 - 2, par4 + var7 + 1, 0);
          return;
        }
      }

      for (var7 = -2; var7 <= 0; ++var7) {
        if (par1World.getBlockId(par2 + var7, par3 - 1, par4) == var6
            && par1World.getBlockId(par2 + var7 + 1, par3 - 1, par4) == var6
            && par1World.getBlockId(par2 + var7 + 1, par3 - 2, par4) == var6
            && par1World.getBlockId(par2 + var7 + 2, par3 - 1, par4) == var6
            && this.func_82528_d(par1World, par2 + var7, par3, par4, 1)
            && this.func_82528_d(par1World, par2 + var7 + 1, par3, par4, 1)
            && this.func_82528_d(par1World, par2 + var7 + 2, par3, par4, 1)) {
          par1World.setBlockMetadata(par2 + var7, par3, par4, 8);
          par1World.setBlockMetadata(par2 + var7 + 1, par3, par4, 8);
          par1World.setBlockMetadata(par2 + var7 + 2, par3, par4, 8);
          par1World.setBlock(par2 + var7, par3, par4, 0);
          par1World.setBlock(par2 + var7 + 1, par3, par4, 0);
          par1World.setBlock(par2 + var7 + 2, par3, par4, 0);
          par1World.setBlock(par2 + var7, par3 - 1, par4, 0);
          par1World.setBlock(par2 + var7 + 1, par3 - 1, par4, 0);
          par1World.setBlock(par2 + var7 + 2, par3 - 1, par4, 0);
          par1World.setBlock(par2 + var7 + 1, par3 - 2, par4, 0);

          if (!par1World.isRemote) {
            var8 = new EntityWither(par1World);
            var8.setLocationAndAngles(
                (double) (par2 + var7) + 1.5D,
                (double) par3 - 1.45D,
                (double) par4 + 0.5D,
                0.0F,
                0.0F);
            var8.func_82206_m();
            par1World.spawnEntityInWorld(var8);
          }

          for (var9 = 0; var9 < 120; ++var9) {
            par1World.spawnParticle(
                "snowballpoof",
                (double) (par2 + var7 + 1) + par1World.rand.nextDouble(),
                (double) (par3 - 2) + par1World.rand.nextDouble() * 3.9D,
                (double) par4 + par1World.rand.nextDouble(),
                0.0D,
                0.0D,
                0.0D);
          }

          par1World.notifyBlockChange(par2 + var7, par3, par4, 0);
          par1World.notifyBlockChange(par2 + var7 + 1, par3, par4, 0);
          par1World.notifyBlockChange(par2 + var7 + 2, par3, par4, 0);
          par1World.notifyBlockChange(par2 + var7, par3 - 1, par4, 0);
          par1World.notifyBlockChange(par2 + var7 + 1, par3 - 1, par4, 0);
          par1World.notifyBlockChange(par2 + var7 + 2, par3 - 1, par4, 0);
          par1World.notifyBlockChange(par2 + var7 + 1, par3 - 2, par4, 0);
          return;
        }
      }
    }
  }
  @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 l_() {
   super.l_();
   if (this.getRemoteEntity() != null) this.getRemoteEntity().getMind().tick();
 }
 @Override
 public void die(DamageSource damagesource) {
   ((RemoteBaseEntity) this.m_remoteEntity).onDeath();
   super.die(damagesource);
 }