Package appeng.util

Examples of appeng.util.InventoryAdaptor


  {
    if ( packetPatternSlot.slotItem != null && cellInv != null )
    {
      IAEItemStack out = packetPatternSlot.slotItem.copy();

      InventoryAdaptor inv = new AdaptorPlayerHand( getPlayerInv().player );
      InventoryAdaptor playerInv = InventoryAdaptor.getAdaptor( getPlayerInv().player, ForgeDirection.UNKNOWN );
      if ( packetPatternSlot.shift )
        inv = playerInv;

      if ( inv.simulateAdd( out.getItemStack() ) != null )
        return;

      IAEItemStack extracted = Platform.poweredExtraction( powerSrc, cellInv, out, mySrc );
      EntityPlayer p = getPlayerInv().player;

      if ( extracted != null )
      {
        inv.addItems( extracted.getItemStack() );
        if ( p instanceof EntityPlayerMP )
          updateHeld( (EntityPlayerMP) p );
        detectAndSendChanges();
        return;
      }

      InventoryCrafting ic = new InventoryCrafting( new ContainerNull(), 3, 3 );
      InventoryCrafting real = new InventoryCrafting( new ContainerNull(), 3, 3 );
      for (int x = 0; x < 9; x++)
      {
        ic.setInventorySlotContents( x, packetPatternSlot.pattern[x] == null ? null : packetPatternSlot.pattern[x].getItemStack() );
      }

      IRecipe r = Platform.findMatchingRecipe( ic, p.worldObj );

      if ( r == null )
        return;

      IMEMonitor<IAEItemStack> storage = ct.getItemInventory();
      IItemList<IAEItemStack> all = storage.getStorageList();

      ItemStack is = r.getCraftingResult( ic );

      for (int x = 0; x < ic.getSizeInventory(); x++)
      {
        if ( ic.getStackInSlot( x ) != null )
        {
          ItemStack pulled = Platform.extractItemsByRecipe( powerSrc, mySrc, storage, p.worldObj, r, is, ic, ic.getStackInSlot( x ), x, all,
              Actionable.MODULATE, ItemViewCell.createFilter( getViewCells() ) );
          real.setInventorySlotContents( x, pulled );
        }
      }

      IRecipe rr = Platform.findMatchingRecipe( real, p.worldObj );

      if ( rr == r && Platform.isSameItemPrecise( rr.getCraftingResult( real ), is ) )
      {
        SlotCrafting sc = new SlotCrafting( p, real, cOut, 0, 0, 0 );
        sc.onPickupFromSlot( p, is );

        for (int x = 0; x < real.getSizeInventory(); x++)
        {
          ItemStack failed = playerInv.addItems( real.getStackInSlot( x ) );
          if ( failed != null )
            p.dropPlayerItemWithRandomChoice( failed, false );
        }

        inv.addItems( is );
View Full Code Here


        InscriberRecipe out = getTask();
        if ( out != null )
        {
          ItemStack is = out.output.copy();
          InventoryAdaptor ad = InventoryAdaptor.getAdaptor( new WrapperInventoryRange( inv, 3, 1, true ), ForgeDirection.UNKNOWN );

          if ( ad.addItems( is ) == null )
          {
            processingTime = 0;
            if ( out.usePlates )
            {
              setInventorySlotContents( 0, null );
              setInventorySlotContents( 1, null );
            }
            setInventorySlotContents( 2, null );
          }
        }

        markDirty();

      }
      else if ( finalStep == 16 )
      {
        finalStep = 0;
        smash = false;
        markForUpdate();
      }
    }
    else
    {
      IEnergyGrid eg;
      try
      {
        eg = gridProxy.getEnergy();
        IEnergySource src = this;

        // Base 1, increase by 1 for each card
        int speedFactor = 1 + upgrades.getInstalledUpgrades( Upgrades.SPEED );
        int powerConsumption = 10 * speedFactor;
        double powerThreshold = powerConsumption - 0.01;
        double powerReq = extractAEPower( powerConsumption, Actionable.SIMULATE, PowerMultiplier.CONFIG );

        if ( powerReq <= powerThreshold )
        {
          src = eg;
          powerReq = eg.extractAEPower( powerConsumption, Actionable.SIMULATE, PowerMultiplier.CONFIG );
        }

        if ( powerReq > powerThreshold )
        {
          src.extractAEPower( powerConsumption, Actionable.MODULATE, PowerMultiplier.CONFIG );

          if ( processingTime == 0 )
            processingTime = processingTime + speedFactor;
          else
            processingTime += TicksSinceLastCall * speedFactor;
        }
      }
      catch (GridAccessException e)
      {
        // :P
      }

      if ( processingTime > maxProcessingTime )
      {
        processingTime = maxProcessingTime;
        InscriberRecipe out = getTask();
        if ( out != null )
        {
          ItemStack is = out.output.copy();
          InventoryAdaptor ad = InventoryAdaptor.getAdaptor( new WrapperInventoryRange( inv, 3, 1, true ), ForgeDirection.UNKNOWN );
          if ( ad.simulateAdd( is ) == null )
          {
            smash = true;
            finalStep = 0;
            markForUpdate();
          }
View Full Code Here

      InventoryPlayer playerInventory = player.inventory;
      IMEInventory<IAEItemStack> inv = AEApi.instance().registries().cell().getCellInventory( stack, null, StorageChannel.ITEMS );
      if ( inv != null && playerInventory.getCurrentItem() == stack )
      {
        InventoryAdaptor ia = InventoryAdaptor.getAdaptor( player, ForgeDirection.UNKNOWN );
        IItemList<IAEItemStack> list = inv.getAvailableItems( StorageChannel.ITEMS.createList() );
        if ( list.isEmpty() && ia != null )
        {
          playerInventory.setInventorySlotContents( playerInventory.currentItem, null );

          ItemStack extraB = ia.addItems( this.component.stack( 1 ) );
          ItemStack extraA = ia.addItems( AEApi.instance().materials().materialEmptyStorageCell.stack( 1 ) );

          if ( extraA != null )
            player.dropPlayerItemWithRandomChoice( extraA, false );
          if ( extraB != null )
            player.dropPlayerItemWithRandomChoice( extraB, false );
View Full Code Here

  }

  @Override
  public IMEInventory getInventory(TileEntity te, ForgeDirection d, StorageChannel channel, BaseActionSource src)
  {
    InventoryAdaptor ad = InventoryAdaptor.getAdaptor( te, d );
   
    if ( channel == StorageChannel.ITEMS && ad != null )
      return new MEMonitorIInventory( ad );
   
    return null;
View Full Code Here

    TileEntity te = getWorldObj().getTileEntity( xCoord + d.offsetX, yCoord + d.offsetY, zCoord + d.offsetZ );

    if ( te == null )
      return output;

    InventoryAdaptor adaptor = InventoryAdaptor.getAdaptor( te, d.getOpposite() );

    if ( adaptor == null )
      return output;

    int size = output.stackSize;
    output = adaptor.addItems( output );
    int newSize = output == null ? 0 : output.stackSize;

    if ( size != newSize )
      markDirty();
View Full Code Here

    if ( inv != null )
    {
      ItemStack is = inv.server.getStackInSlot( slot );
      boolean hasItemInHand = player.inventory.getItemStack() != null;

      InventoryAdaptor playerHand = new AdaptorPlayerHand( player );

      WrapperInvSlot slotInv = new PatternInvSlot( inv.server );

      IInventory theSlot = slotInv.getWrapper( slot );
      InventoryAdaptor interfaceSlot = new AdaptorIInventory( theSlot );

      switch (action)
      {
      case PICKUP_OR_SET_DOWN:

        if ( hasItemInHand )
        {
          ItemStack inSlot = theSlot.getStackInSlot( 0 );
          if ( inSlot == null )
            player.inventory.setItemStack( interfaceSlot.addItems( player.inventory.getItemStack() ) );
          else
          {
            inSlot = inSlot.copy();
            ItemStack inHand = player.inventory.getItemStack().copy();

            theSlot.setInventorySlotContents( 0, null );
            player.inventory.setItemStack( null );

            player.inventory.setItemStack( interfaceSlot.addItems( inHand.copy() ) );

            if ( player.inventory.getItemStack() == null )
              player.inventory.setItemStack( inSlot );
            else
            {
              player.inventory.setItemStack( inHand );
              theSlot.setInventorySlotContents( 0, inSlot );
            }
          }
        }
        else
        {
          IInventory mySlot = slotInv.getWrapper( slot );
          mySlot.setInventorySlotContents( 0, playerHand.addItems( mySlot.getStackInSlot( 0 ) ) );
        }

        break;
      case SPLIT_OR_PLACE_SINGLE:

        if ( hasItemInHand )
        {
          ItemStack extra = playerHand.removeItems( 1, null, null );
          if ( extra != null )
            extra = interfaceSlot.addItems( extra );
          if ( extra != null )
            playerHand.addItems( extra );
        }
        else if ( is != null )
        {
          ItemStack extra = interfaceSlot.removeItems( (is.stackSize + 1) / 2, null, null );
          if ( extra != null )
            extra = playerHand.addItems( extra );
          if ( extra != null )
            interfaceSlot.addItems( extra );
        }

        break;
      case SHIFT_CLICK:

        IInventory mySlot = slotInv.getWrapper( slot );
        InventoryAdaptor playerInv = InventoryAdaptor.getAdaptor( player, ForgeDirection.UNKNOWN );
        mySlot.setInventorySlotContents( 0, playerInv.addItems( mySlot.getStackInSlot( 0 ) ) );

        break;
      case MOVE_REGION:

        InventoryAdaptor playerInvAd = InventoryAdaptor.getAdaptor( player, ForgeDirection.UNKNOWN );
        for (int x = 0; x < inv.server.getSizeInventory(); x++)
        {
          inv.server.setInventorySlotContents( x, playerInvAd.addItems( inv.server.getStackInSlot( x ) ) );
        }

        break;
      case CREATIVE_DUPLICATE:
View Full Code Here

        IAEItemStack ais = slotItem.copy();
        ItemStack myItem = ais.getItemStack();

        ais.setStackSize( myItem.getMaxStackSize() );

        InventoryAdaptor adp = InventoryAdaptor.getAdaptor( player, ForgeDirection.UNKNOWN );
        myItem.stackSize = (int) ais.getStackSize();
        myItem = adp.simulateAdd( myItem );

        if ( myItem != null )
          ais.setStackSize( ais.getStackSize() - myItem.stackSize );

        ais = Platform.poweredExtraction( powerSrc, cellInv, ais, mySrc );
        if ( ais != null )
          adp.addItems( ais.getItemStack() );
      }
      break;
    case ROLL_DOWN:
      if ( powerSrc == null || cellInv == null )
        return;

      int releaseQty = 1;
      ItemStack isg = player.inventory.getItemStack();

      if ( isg != null && releaseQty > 0 )
      {
        IAEItemStack ais = AEApi.instance().storage().createItemStack( isg );
        ais.setStackSize( 1 );
        IAEItemStack extracted = ais.copy();

        ais = Platform.poweredInsert( powerSrc, cellInv, ais, mySrc );
        if ( ais == null )
        {
          InventoryAdaptor ia = new AdaptorPlayerHand( player );

          ItemStack fail = ia.removeItems( 1, extracted.getItemStack(), null );
          if ( fail == null )
            cellInv.extractItems( extracted, Actionable.MODULATE, mySrc );

          updateHeld( player );
        }
      }

      break;
    case ROLL_UP:
    case PICKUP_SINGLE:
      if ( powerSrc == null || cellInv == null )
        return;

      if ( slotItem != null )
      {
        int liftQty = 1;
        ItemStack item = player.inventory.getItemStack();

        if ( item != null )
        {
          if ( item.stackSize >= item.getMaxStackSize() )
            liftQty = 0;
          if ( !Platform.isSameItemPrecise( slotItem.getItemStack(), item ) )
            liftQty = 0;
        }

        if ( liftQty > 0 )
        {
          IAEItemStack ais = slotItem.copy();
          ais.setStackSize( 1 );
          ais = Platform.poweredExtraction( powerSrc, cellInv, ais, mySrc );
          if ( ais != null )
          {
            InventoryAdaptor ia = new AdaptorPlayerHand( player );

            ItemStack fail = ia.addItems( ais.getItemStack() );
            if ( fail != null )
              cellInv.injectItems( ais, Actionable.MODULATE, mySrc );

            updateHeld( player );
          }
        }
      }
      break;
    case PICKUP_OR_SET_DOWN:
      if ( powerSrc == null || cellInv == null )
        return;

      if ( player.inventory.getItemStack() == null )
      {
        if ( slotItem != null )
        {
          IAEItemStack ais = slotItem.copy();
          ais.setStackSize( ais.getItemStack().getMaxStackSize() );
          ais = Platform.poweredExtraction( powerSrc, cellInv, ais, mySrc );
          if ( ais != null )
            player.inventory.setItemStack( ais.getItemStack() );
          else
            player.inventory.setItemStack( null );
          updateHeld( player );
        }
      }
      else
      {
        IAEItemStack ais = AEApi.instance().storage().createItemStack( player.inventory.getItemStack() );
        ais = Platform.poweredInsert( powerSrc, cellInv, ais, mySrc );
        if ( ais != null )
          player.inventory.setItemStack( ais.getItemStack() );
        else
          player.inventory.setItemStack( null );
        updateHeld( player );
      }

      break;
    case SPLIT_OR_PLACE_SINGLE:
      if ( powerSrc == null || cellInv == null )
        return;

      if ( player.inventory.getItemStack() == null )
      {
        if ( slotItem != null )
        {
          IAEItemStack ais = slotItem.copy();
          long maxSize = ais.getItemStack().getMaxStackSize();
          ais.setStackSize( maxSize );
          ais = cellInv.extractItems( ais, Actionable.SIMULATE, mySrc );

          if ( ais != null )
          {
            long stackSize = Math.min( maxSize, ais.getStackSize() );
            ais.setStackSize( (stackSize + 1) >> 1 );
            ais = Platform.poweredExtraction( powerSrc, cellInv, ais, mySrc );
          }

          if ( ais != null )
            player.inventory.setItemStack( ais.getItemStack() );
          else
            player.inventory.setItemStack( null );
          updateHeld( player );
        }
      }
      else
      {
        IAEItemStack ais = AEApi.instance().storage().createItemStack( player.inventory.getItemStack() );
        ais.setStackSize( 1 );
        ais = Platform.poweredInsert( powerSrc, cellInv, ais, mySrc );
        if ( ais == null )
        {
          ItemStack is = player.inventory.getItemStack();
          is.stackSize--;
          if ( is.stackSize <= 0 )
            player.inventory.setItemStack( null );
          updateHeld( player );
        }
      }

      break;
    case CREATIVE_DUPLICATE:
      if ( player.capabilities.isCreativeMode && slotItem != null )
      {
        ItemStack is = slotItem.getItemStack();
        is.stackSize = is.getMaxStackSize();
        player.inventory.setItemStack( is );
        updateHeld( player );
      }
      break;
    case MOVE_REGION:

      if ( powerSrc == null || cellInv == null )
        return;

      if ( slotItem != null )
      {
        int playerInv = 9 * 4;
        for (int slotNum = 0; slotNum < playerInv; slotNum++)
        {
          IAEItemStack ais = slotItem.copy();
          ItemStack myItem = ais.getItemStack();

          ais.setStackSize( myItem.getMaxStackSize() );

          InventoryAdaptor adp = InventoryAdaptor.getAdaptor( player, ForgeDirection.UNKNOWN );
          myItem.stackSize = (int) ais.getStackSize();
          myItem = adp.simulateAdd( myItem );

          if ( myItem != null )
            ais.setStackSize( ais.getStackSize() - myItem.stackSize );

          ais = Platform.poweredExtraction( powerSrc, cellInv, ais, mySrc );
          if ( ais != null )
            adp.addItems( ais.getItemStack() );
          else
            return;
        }
      }

View Full Code Here

    IMEMonitor<IAEItemStack> inv = storage.getItemInventory();
    int howManyPerCraft = getStack().stackSize;
    int maxTimesToCraft = 0;

    InventoryAdaptor ia = null;
    if ( action == InventoryAction.CRAFT_SHIFT ) // craft into player inventory...
    {
      ia = InventoryAdaptor.getAdaptor( who, null );
      maxTimesToCraft = ( int ) Math.floor( ( double ) getStack().getMaxStackSize() / ( double ) howManyPerCraft );
    }
    else if ( action == InventoryAction.CRAFT_STACK ) // craft into hand, full stack
    {
      ia = new AdaptorPlayerHand( who );
      maxTimesToCraft = ( int ) Math.floor( ( double ) getStack().getMaxStackSize() / ( double ) howManyPerCraft );
    }
    else
    // pick up what was crafted...
    {
      ia = new AdaptorPlayerHand( who );
      maxTimesToCraft = 1;
    }

    maxTimesToCraft = CapCraftingAttempts( maxTimesToCraft );

    if ( ia == null )
      return;

    ItemStack rs = Platform.cloneItemStack( getStack() );
    if ( rs == null )
      return;

    for ( int x = 0; x < maxTimesToCraft; x++ )
    {
      if ( ia.simulateAdd( rs ) == null )
      {
        IItemList<IAEItemStack> all = inv.getStorageList();
        ItemStack extra = ia.addItems( craftItem( who, rs, inv, all ) );
        if ( extra != null )
        {
          List<ItemStack> drops = new ArrayList<ItemStack>();
          drops.add( extra );
          Platform.spawnDrops( who.worldObj, ( int ) who.posX, ( int ) who.posY, ( int ) who.posZ, drops );
View Full Code Here

    {
      if ( r.getEnergyCost() > points )
        return;

      points = 0;
      InventoryAdaptor sia = InventoryAdaptor.getAdaptor( new WrapperInventoryRange( this, 3, 3, true ), ForgeDirection.EAST );

      addItem( sia, r.getOutput() );

      float chance = (Platform.getRandomInt() % 2000) / 2000.0f;
      if ( chance <= r.getOptionalChance() )
View Full Code Here

  }

  private boolean usePlan(int x, IAEItemStack itemStack)
  {
    boolean changed = false;
    InventoryAdaptor adaptor = getAdaptor( x );
    interfaceRequest = isWorking = true;

    try
    {
      destination = gridProxy.getStorage().getItemInventory();
      IEnergySource src = gridProxy.getEnergy();

      if ( craftingTracker.isBusy( x ) )
        changed = handleCrafting( x, adaptor, itemStack ) || changed;
      else if ( itemStack.getStackSize() > 0 )
      {
        // make sure strange things didn't happen...
        if ( adaptor.simulateAdd( itemStack.getItemStack() ) != null )
        {
          changed = true;
          throw new GridAccessException();
        }

        IAEItemStack acquired = Platform.poweredExtraction( src, destination, itemStack, mySrc );
        if ( acquired != null )
        {
          changed = true;
          ItemStack issue = adaptor.addItems( acquired.getItemStack() );
          if ( issue != null )
            throw new RuntimeException( "bad attempt at managing inventory. ( addItems )" );
        }
        else
          changed = handleCrafting( x, adaptor, itemStack ) || changed;
      }
      else if ( itemStack.getStackSize() < 0 )
      {
        IAEItemStack toStore = itemStack.copy();
        toStore.setStackSize( -toStore.getStackSize() );

        long diff = toStore.getStackSize();

        // make sure strange things didn't happen...
        ItemStack canExtract = adaptor.simulateRemove( (int) diff, toStore.getItemStack(), null );
        if ( canExtract == null || canExtract.stackSize != diff )
        {
          changed = true;
          throw new GridAccessException();
        }

        toStore = Platform.poweredInsert( src, destination, toStore, mySrc );

        if ( toStore != null )
          diff -= toStore.getStackSize();

        if ( diff != 0 )
        {
          // extract items!
          changed = true;
          ItemStack removed = adaptor.removeItems( (int) diff, null, null );
          if ( removed == null )
            throw new RuntimeException( "bad attempt at managing inventory. ( removeItems )" );
          else if ( removed.stackSize != diff )
            throw new RuntimeException( "bad attempt at managing inventory. ( removeItems )" );
        }
View Full Code Here

TOP

Related Classes of appeng.util.InventoryAdaptor

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.