Package universalelectricity.api.vector

Examples of universalelectricity.api.vector.Vector3


  {
    super.updateEntity();

    if (this.anchor == null)
    {
      this.anchor = new Vector3();
    }

    if (this.getMode() != null && Settings.ENABLE_MANIPULATOR)
    {
      /**
       * Manipulator activated and passed all checks. Actually moving the blocks now.
       */
      if (!this.worldObj.isRemote)
      {
        if (this.manipulationVectors != null && this.manipulationVectors.size() > 0 && !this.isCalculatingManipulation)
        {
          /**
           * This section is called when blocks set events are set and animation packets
           * are to be sent.
           */
          NBTTagCompound nbt = new NBTTagCompound();
          NBTTagList nbtList = new NBTTagList();

          // Number of blocks we're actually moving.
          int i = 0;

          for (Vector3 position : this.manipulationVectors)
          {
            if (this.moveBlock(position) && this.isBlockVisibleByPlayer(position) && i < Settings.MAX_FORCE_FIELDS_PER_TICK)
            {
              nbtList.appendTag(position.writeToNBT(new NBTTagCompound()));
              i++;
            }
          }

          if (i > 0)
          {
            queueEvent(new DelayedEvent(this, getMoveTime())
            {
              @Override protected void onEvent()
              {
                moveEntities();
                PacketHandler.sendPacketToClients(ModularForceFieldSystem.PACKET_TILE.getPacket(TileForceManipulator.this, TilePacketType.FIELD.ordinal()));
              }
            });

            nbt.setByte("type", (byte) 2);
            nbt.setTag("list", nbtList);

            if (!this.isTeleport())
            {
              PacketHandler.sendPacketToClients(ModularForceFieldSystem.PACKET_TILE.getPacket(this, TilePacketType.FXS.ordinal(), (byte) 1, nbt), worldObj, new Vector3(this), PACKET_DISTANCE);

              if (this.getModuleCount(ModularForceFieldSystem.itemModuleSilence) <= 0)
              {
                this.worldObj.playSoundEffect(this.xCoord + 0.5D, this.yCoord + 0.5D, this.zCoord + 0.5D, ModularForceFieldSystem.PREFIX + "fieldmove", 0.6f, (1 - this.worldObj.rand.nextFloat() * 0.1f));
              }

              if (this.doAnchor)
              {
                this.anchor = this.anchor.translate(this.getDirection());
              }
            }
            else
            {
              PacketHandler.sendPacketToClients(ModularForceFieldSystem.PACKET_TILE.getPacket(this, TilePacketType.FXS.ordinal(), (byte) 2, this.getMoveTime(), this.getAbsoluteAnchor().translate(0.5), this.getTargetPosition().translate(0.5).writeToNBT(new NBTTagCompound()), false, nbt), worldObj, new Vector3(this), PACKET_DISTANCE);
              this.moveTime = this.getMoveTime();
            }
          }
          else
          {
            this.markFailMove = true;
          }

          this.manipulationVectors = null;
          this.onInventoryChanged();
        }
      }

      /**
       * While the field is being TELEPORTED ONLY.
       */
      if (this.moveTime > 0)
      {
        if (this.isTeleport() && this.requestFortron(this.getFortronCost(), true) >= this.getFortronCost())
        {
          if (this.getModuleCount(ModularForceFieldSystem.itemModuleSilence) <= 0 && this.ticks % 10 == 0)
          {
            int moveTime = this.getMoveTime();
            this.worldObj.playSoundEffect(this.xCoord + 0.5D, this.yCoord + 0.5D, this.zCoord + 0.5D, ModularForceFieldSystem.PREFIX + "fieldmove", 1.5f, 0.5f + 0.8f * (moveTime - this.moveTime) / moveTime);
          }

          if (--this.moveTime == 0)
          {
            this.worldObj.playSoundEffect(this.xCoord + 0.5D, this.yCoord + 0.5D, this.zCoord + 0.5D, ModularForceFieldSystem.PREFIX + "teleport", 0.6f, (1 - this.worldObj.rand.nextFloat() * 0.1f));
          }
        }
        else
        {
          this.markFailMove = true;
        }
      }

      /**
       * Force Manipulator activated, try start moving...
       */
      if (isActive())
      {
        markActive = true;
      }

      if (ticks % 20 == 0 && markActive)
      {
        if (moveTime <= 0 && requestFortron(this.getFortronCost(), false) > 0)
        {
          if (!worldObj.isRemote)
          {
            requestFortron(getFortronCost(), true);
            // Start multi-threading calculations
            (new ManipulatorCalculationThread(this)).start();
          }

          moveTime = 0;
        }

        if (!worldObj.isRemote)
        {
          setActive(false);
        }

        markActive = false;
      }

      /**
       * Render preview
       */
      if (!this.worldObj.isRemote)
      {
        if (!this.isCalculated)
        {
          this.calculateForceField();
        }

        // Manipulation area preview
        if (this.ticks % 120 == 0 && !this.isCalculating && Settings.HIGH_GRAPHICS && this.delayedEvents.size() <= 0 && this.displayMode > 0)
        {
          NBTTagCompound nbt = new NBTTagCompound();
          NBTTagList nbtList = new NBTTagList();

          int i = 0;
          for (Vector3 position : this.getInteriorPoints())
          {
            if (this.isBlockVisibleByPlayer(position) && (this.displayMode == 2 || !this.worldObj.isAirBlock(position.intX(), position.intY(), position.intZ()) && i < Settings.MAX_FORCE_FIELDS_PER_TICK))
            {
              i++;
              nbtList.appendTag(new Vector3(position).writeToNBT(new NBTTagCompound()));
            }
          }

          nbt.setByte("type", (byte) 1);
          nbt.setTag("list", nbtList);

          if (this.isTeleport())
          {
            Vector3 targetPosition;
            if (getTargetPosition().world == null)
            {
              targetPosition = new Vector3(getTargetPosition());
            }
            else
            {
              targetPosition = getTargetPosition();
            }

            PacketHandler.sendPacketToClients(ModularForceFieldSystem.PACKET_TILE.getPacket(this, TilePacketType.FXS.ordinal(), (byte) 2, 60, getAbsoluteAnchor().translate(0.5), targetPosition.translate(0.5).writeToNBT(new NBTTagCompound()), true, nbt), worldObj, new Vector3(this), PACKET_DISTANCE);
          }
          else
          {
            PacketHandler.sendPacketToClients(ModularForceFieldSystem.PACKET_TILE.getPacket(this, TilePacketType.FXS.ordinal(), (byte) 1, nbt), worldObj, new Vector3(this), PACKET_DISTANCE);
          }
        }
      }

      if (this.markFailMove)
      {
        this.moveTime = 0;
        delayedEvents.clear();
        this.worldObj.playSoundEffect(this.xCoord + 0.5D, this.yCoord + 0.5D, this.zCoord + 0.5D, ModularForceFieldSystem.PREFIX + "powerdown", 0.6f, (1 - this.worldObj.rand.nextFloat() * 0.1f));
        PacketHandler.sendPacketToClients(ModularForceFieldSystem.PACKET_TILE.getPacket(this, TilePacketType.RENDER.ordinal()), this.worldObj, new Vector3(this), PACKET_DISTANCE);
        this.markFailMove = false;

        /**
         * Send failed positions to client to inform them WHICH blocks are causing the field
         * to fail.
         */
        NBTTagCompound nbt = new NBTTagCompound();
        NBTTagList nbtList = new NBTTagList();

        for (Vector3 position : this.failedPositions)
        {
          nbtList.appendTag(position.writeToNBT(new NBTTagCompound()));
        }

        nbt.setByte("type", (byte) 1);
        nbt.setTag("list", nbtList);

        this.failedPositions.clear();
        PacketHandler.sendPacketToClients(ModularForceFieldSystem.PACKET_TILE.getPacket(this, TilePacketType.FXS.ordinal(), (byte) 3, nbt), this.worldObj, new Vector3(this), PACKET_DISTANCE);
      }
    }
    else if (!worldObj.isRemote && isActive())
    {
      setActive(false);
View Full Code Here


  {
    int i = 0;

    for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS)
    {
      Vector3 checkPos = position.clone().translate(direction);
      int blockID = checkPos.getBlockID(this.worldObj);

      if (blockID > 0)
      {
        if (Block.blocksList[blockID] != null)
        {
View Full Code Here

            NBTTagList nbtList = (NBTTagList) nbt.getTag("list");

            for (int i = 0; i < nbtList.tagCount(); i++)
            {
              Vector3 vector = new Vector3((NBTTagCompound) nbtList.tagAt(i)).translate(0.5);

              if (type == 1)
              {
                // Blue, PREVIEW
                ModularForceFieldSystem.proxy.renderHologram(this.worldObj, vector, 1, 1, 1, 30, vector.clone().translate(this.getDirection()));
              }
              else if (type == 2)
              {
                // Green, DO MOVE
                ModularForceFieldSystem.proxy.renderHologram(this.worldObj, vector, 0, 1, 0, 30, vector.clone().translate(this.getDirection()));
              }
            }
            break;
          }
          case 2:
          {
            int animationTime = dataStream.readInt();
            Vector3 anchorPosition = new Vector3(dataStream.readDouble(), dataStream.readDouble(), dataStream.readDouble());
            VectorWorld targetPosition = new VectorWorld(PacketHandler.readNBTTagCompound(dataStream));
            boolean isPreview = dataStream.readBoolean();

            /**
             * Holographic Orbit FXs
             */
            NBTTagCompound nbt = PacketHandler.readNBTTagCompound(dataStream);

            NBTTagList nbtList = (NBTTagList) nbt.getTag("list");

            for (int i = 0; i < nbtList.tagCount(); i++)
            {
              // Render hologram for starting position
              Vector3 vector = new Vector3((NBTTagCompound) nbtList.tagAt(i)).translate(0.5);

              if (isPreview)
              {
                ModularForceFieldSystem.proxy.renderHologramOrbit(this, this.worldObj, anchorPosition, vector, 1, 1, 1, animationTime, 30f);
              }
              else
              {
                ModularForceFieldSystem.proxy.renderHologramOrbit(this, this.worldObj, anchorPosition, vector, 0.1f, 1, 0, animationTime, 30f);
              }

              if (targetPosition.world != null && targetPosition.world.getChunkProvider().chunkExists(targetPosition.intX(), targetPosition.intZ()))
              {
                // Render hologram for destination position
                Vector3 destination = vector.clone().difference(anchorPosition).add(targetPosition);

                if (isPreview)
                {
                  ModularForceFieldSystem.proxy.renderHologramOrbit(this, targetPosition.world, targetPosition, destination, 1, 1, 1, animationTime, 30f);
                }
                else
                {
                  ModularForceFieldSystem.proxy.renderHologramOrbit(this, targetPosition.world, targetPosition, destination, 0.1f, 1, 0, animationTime, 30f);
                }
              }
            }

            this.canRenderMove = true;
            break;
          }
          case 3:
          {
            /**
             * Holographic FXs: FAILED TO MOVE
             */
            NBTTagCompound nbt = PacketHandler.readNBTTagCompound(dataStream);

            NBTTagList nbtList = (NBTTagList) nbt.getTag("list");

            for (int i = 0; i < nbtList.tagCount(); i++)
            {
              Vector3 vector = new Vector3((NBTTagCompound) nbtList.tagAt(i)).translate(0.5);
              ModularForceFieldSystem.proxy.renderHologram(this.worldObj, vector, 1, 0, 0, 30, null);
            }

            break;
          }
View Full Code Here

    for (Vector3 position : mobilizationPoints)
    {
      if (!this.worldObj.isAirBlock(position.intX(), position.intY(), position.intZ()))
      {
        // The relative position between this coordinate and the anchor.
        Vector3 relativePosition = position.clone().subtract(this.getAbsoluteAnchor());
        VectorWorld targetPosition = (VectorWorld) targetCenterPosition.clone().add(relativePosition);

        if (!this.canMove(new VectorWorld(this.worldObj, position), targetPosition))
        {
          this.failedPositions.add(position);
View Full Code Here

  protected boolean moveBlock(Vector3 position)
  {
    if (!this.worldObj.isRemote)
    {
      Vector3 relativePosition = position.clone().subtract(this.getAbsoluteAnchor());
      VectorWorld newPosition = (VectorWorld) this.getTargetPosition().clone().add(relativePosition);

      TileEntity tileEntity = position.getTileEntity(this.worldObj);
      int blockID = position.getBlockID(this.worldObj);
View Full Code Here

    return false;
  }

  public AxisAlignedBB getSearchAxisAlignedBB()
  {
    Vector3 positiveScale = new Vector3(this).translate(this.getTranslation()).add(this.getPositiveScale()).add(1);
    Vector3 negativeScale = new Vector3(this).translate(this.getTranslation()).subtract(this.getNegativeScale());

    Vector3 minScale = positiveScale.min(negativeScale);
    Vector3 maxScale = positiveScale.max(negativeScale);

    return AxisAlignedBB.getAABBPool().getAABB(minScale.intX(), minScale.intY(), minScale.intZ(), maxScale.intX(), maxScale.intY(), maxScale.intZ());
  }
View Full Code Here

  public Vector3 getAbsoluteAnchor()
  {
    if (this.anchor != null)
    {
      return new Vector3(this).add(this.anchor);
    }
    return new Vector3(this);
  }
View Full Code Here

    {
      List<Entity> entities = this.worldObj.getEntitiesWithinAABBExcludingEntity(null, axisalignedbb);

      for (Entity entity : entities)
      {
        Vector3 relativePosition = new VectorWorld(entity).clone().subtract(this.getAbsoluteAnchor().translate(0.5));
        VectorWorld newLocation = (VectorWorld) targetLocation.clone().translate(0.5).add(relativePosition);
        moveEntity(entity, newLocation);
      }
    }
  }
View Full Code Here

   */
  @Override
  public void readFromNBT(NBTTagCompound nbt)
  {
    super.readFromNBT(nbt);
    this.anchor = new Vector3(nbt.getCompoundTag("anchor"));
    this.displayMode = nbt.getInteger("displayMode");
    this.doAnchor = nbt.getBoolean("doAnchor");
  }
View Full Code Here

    if (worldObj.isRemote)
    {
      if (packetID == TilePacketType.FXS.ordinal())
      {
        int type = dataStream.readInt();
        Vector3 vector = new Vector3(dataStream.readInt(), dataStream.readInt(), dataStream.readInt()).translate(0.5);
        Vector3 root = new Vector3(this).translate(0.5);

        if (type == 1)
        {
          ModularForceFieldSystem.proxy.renderBeam(this.worldObj, root, vector, 0.6f, 0.6f, 1, 40);
          ModularForceFieldSystem.proxy.renderHologramMoving(this.worldObj, vector, 1, 1, 1, 50);
        }
        else if (type == 2)
        {
          ModularForceFieldSystem.proxy.renderBeam(this.worldObj, vector, root, 1f, 0f, 0f, 40);
          ModularForceFieldSystem.proxy.renderHologramMoving(this.worldObj, vector, 1, 0, 0, 50);
        }
      }
      else if (packetID == TilePacketType.FIELD.ordinal())
      {
        this.getCalculatedField().clear();
        NBTTagCompound nbt = PacketHandler.readNBTTagCompound(dataStream);
        NBTTagList nbtList = nbt.getTagList("blockList");

        for (int i = 0; i < nbtList.tagCount(); i++)
        {
          NBTTagCompound tagAt = (NBTTagCompound) nbtList.tagAt(i);
          this.getCalculatedField().add(new Vector3(tagAt));
        }

        this.isCalculated = true;
      }
    }
View Full Code Here

TOP

Related Classes of universalelectricity.api.vector.Vector3

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.