private void updateContentsList() {
    List<ItemStack> items = tileEntity.getShowingItems();
    if (itemList.getMaximum() == 0) {
      // We need to refresh.
      for (ItemStack stack : items) {
        if (stack != null) {
          String displayName = BlockInfo.getReadableName(stack, 0);

          Panel panel = new Panel(mc, this).setLayout(new HorizontalLayout());
          panel.addChild(new BlockRender(mc, this).setRenderItem(stack));
          panel.addChild(
              new Label(mc, this)
                  .setDynamic(true)
                  .setText(displayName)
                  .setHorizontalAlignment(HorizontalAlignment.ALIGH_LEFT));
          itemList.addChild(panel);
        }
      }
    }
  }
 private InvBlockInfo getSelectedContainer() {
   int selected = storageList.getSelected();
   if (selected != -1) {
     SyncedValueList<InvBlockInfo> inventories = tileEntity.getInventories();
     if (selected < inventories.size()) {
       InvBlockInfo invBlockInfo = inventories.get(selected);
       return invBlockInfo;
     }
   }
   return null;
 }
  private void updateStorageList() {
    SyncedValueList<InvBlockInfo> inventories = tileEntity.getInventories();
    if (inventories.getClientVersion() != clientVersion) {
      clientVersion = inventories.getClientVersion();
      storageList.removeChildren();
      for (InvBlockInfo blockInfo : inventories) {
        Coordinate c = blockInfo.getCoordinate();
        Block block = mc.theWorld.getBlock(c.getX(), c.getY(), c.getZ());
        int meta = mc.theWorld.getBlockMetadata(c.getX(), c.getY(), c.getZ());
        String displayName;
        if (block == null || block.isAir(mc.theWorld, c.getX(), c.getY(), c.getZ())) {
          displayName = "[REMOVED]";
          block = null;
        } else {
          displayName = BlockInfo.getReadableName(block, meta);
        }

        Panel panel = new Panel(mc, this).setLayout(new HorizontalLayout());
        panel.addChild(new BlockRender(mc, this).setRenderItem(block));
        panel.addChild(
            new Label(mc, this)
                .setText(displayName)
                .setHorizontalAlignment(HorizontalAlignment.ALIGH_LEFT)
                .setDesiredWidth(90));
        panel.addChild(new Label(mc, this).setDynamic(true).setText(c.toString()));
        storageList.addChild(panel);
      }
    }
    storageList.clearHilightedRows();
    Set<Coordinate> coordinates = fromServer_coordinates;
    int i = 0;
    for (InvBlockInfo blockInfo : inventories) {
      Coordinate c = blockInfo.getCoordinate();
      if (coordinates.contains(c)) {
        storageList.addHilightedRow(i);
      }
      i++;
    }
  }