@Override
  public void extendedSlotChanged(GuiExtendedItemSlot slot) {
    ItemStack stack = slot.getItemStack();

    if (stack.itemID == EnhancedPortals_deprecated.proxy.blockDummyPortal.blockID) {
      stack = new ItemStack(Item.dyePowder, 1, stack.getItemDamage());
    }

    PortalTexture text = Textures.getTextureFromItemStack(stack);

    if (text != null) {
      portalModifier.texture = text.getID();
    } else {
      portalModifier.texture = "C:5";
    }

    hasInteractedWith = true;
  }
  public GuiPortalModifier(InventoryPlayer player, TileEntityPortalModifier modifier) {
    super(new ContainerPortalModifier(player, modifier), null);
    portalModifier = modifier;
    hasInteractedWith = false;
    isActive = portalModifier.isActive();

    extendedSlots.add(
        new GuiTextureSlot(
            xSize - 24, 15, Textures.getItemStackFromTexture(portalModifier.texture), this));
  }
  @Override
  protected void actionPerformed(GuiButton button) {
    if (button.id == 100) {
      mc.thePlayer.closeScreen();
    } else if (button.id == 10) {
      portalModifier.redstoneSetting = 0;
      ((GuiItemStackButton) buttonList.get(2)).isActive = false;
      ((GuiItemStackButton) buttonList.get(3)).displayString = "0";
      ((GuiItemStackButton) buttonList.get(3)).isActive = false;
      ((GuiItemStackButton) buttonList.get(4)).isActive = false;
      hasInteractedWith = true;
      ((GuiItemStackButton) button).isActive = true;
    } else if (button.id == 11) {
      portalModifier.redstoneSetting = 1;
      ((GuiItemStackButton) buttonList.get(1)).isActive = false;
      ((GuiItemStackButton) buttonList.get(3)).displayString = "0";
      ((GuiItemStackButton) buttonList.get(3)).isActive = false;
      ((GuiItemStackButton) buttonList.get(4)).isActive = false;
      hasInteractedWith = true;
      ((GuiItemStackButton) button).isActive = true;
    } else if (button.id == 12) {
      int num = 0;

      if (button.displayString != null && button.displayString != "") {
        num = Integer.parseInt(button.displayString);
      }

      if (num + 1 < 16) {
        button.displayString = "" + (num + 1);
        num++;
      } else {
        button.displayString = "1";
        num = 1;
      }

      portalModifier.redstoneSetting = (byte) (2 + num);
      ((GuiItemStackButton) buttonList.get(1)).isActive = false;
      ((GuiItemStackButton) buttonList.get(2)).isActive = false;
      ((GuiItemStackButton) buttonList.get(4)).isActive = false;
      hasInteractedWith = true;
      ((GuiItemStackButton) button).isActive = true;
    } else if (button.id == 13) {
      int num = 0;

      if (button.displayString != null && button.displayString != "") {
        num = Integer.parseInt(button.displayString);
      }

      if (num + 1 < 5) {
        button.displayString = "" + (num + 1);
        num++;
      } else {
        button.displayString = "1";
        num = 1;
      }

      portalModifier.thickness = (byte) (num - 1);
      ((GuiItemStackButton) button)
          .hoverText.set(
              1,
              EnumChatFormatting.GRAY
                  + (portalModifier.thickness == 0
                      ? Strings.Normal.toString()
                      : portalModifier.thickness == 1
                          ? Strings.Thick.toString()
                          : portalModifier.thickness == 2
                              ? Strings.Thicker.toString()
                              : Strings.FullBlock.toString()));
      hasInteractedWith = true;
    } else if (button.id == 14) {
      if (portalModifier.upgradeHandler.hasUpgrade(new UpgradeDialDevice())) {
        ((GuiItemStackButton) button).isActive = true;
        return;
      }

      portalModifier.redstoneSetting = -1;
      ((GuiItemStackButton) buttonList.get(1)).isActive = false;
      ((GuiItemStackButton) buttonList.get(2)).isActive = false;
      ((GuiItemStackButton) buttonList.get(3)).displayString = "0";
      ((GuiItemStackButton) buttonList.get(3)).isActive = false;
      hasInteractedWith = true;
      ((GuiItemStackButton) button).isActive = true;
    } else if (button.id == 50) {
      GuiItemStackButton guiButton = (GuiItemStackButton) button;

      for (Upgrade u : Upgrade.getAllUpgrades()) {
        if (u.getDisplayItemStack().isItemEqual(guiButton.itemStack)) {
          if (portalModifier.upgradeHandler.removeUpgrade(u.getUpgradeID(), portalModifier)) {
            buttonList.remove(button);
            hasInteractedWith = true;
          }

          if (u.getName().equals(new UpgradeDialDevice().getName())) {
            if (portalModifier.redstoneSetting != -1) {
              ((GuiItemStackButton) buttonList.get(4)).isActive = false;
            }
          }
        }
      }
    }
  }
  @Override
  protected void drawGuiContainerBackgroundLayer(float f, int i, int j) {
    super.drawGuiContainerBackgroundLayer(f, i, j);

    GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    mc.renderEngine.func_110577_a(
        new ResourceLocation(
            Reference.RESOURCE_NAME, Reference.GUI_LOCATION + "portalModifier.png"));
    int x = (width - xSize) / 2;
    int y = (height - ySize) / 2 - 3;
    drawTexturedModalRect(x, y, 0, 0, xSize, ySize);

    fontRenderer.drawString(
        Localization.localizeString("tile.portalModifier.name"),
        guiLeft
            + xSize / 2
            - fontRenderer.getStringWidth(Localization.localizeString("tile.portalModifier.name"))
                / 2,
        guiTop + -15,
        0xFFFFFF);
    fontRenderer.drawString(Strings.Upgrades.toString(), guiLeft + 8, guiTop + 3, 0xFF444444);
    fontRenderer.drawString(
        Strings.Modifications.toString(),
        guiLeft + xSize - 8 - fontRenderer.getStringWidth(Strings.Modifications.toString()),
        guiTop + 3,
        0xFF444444);
    fontRenderer.drawString(
        portalModifier.upgradeHandler.hasUpgrade(new UpgradeDialDevice())
            ? Strings.UniqueIdentifier.toString()
            : Strings.Network.toString(),
        guiLeft + 8,
        guiTop + 35,
        0xFF444444);

    boolean draw =
        portalModifier.isRemotelyControlled()
            ? portalModifier.dialDeviceNetwork.equals("")
            : portalModifier.modifierNetwork.equals("");

    if (draw) {
      String str =
          portalModifier.isRemotelyControlled()
              ? Strings.ClickToSetIdentifier.toString()
              : Strings.ClickToSetNetwork.toString();

      drawRect(guiLeft + 7, guiTop + 46, guiLeft + xSize - 7, guiTop + 64, 0x55000000);

      if (!EnhancedPortals_deprecated.proxy.isIdentifierTaken) {
        fontRenderer.drawStringWithShadow(
            str,
            guiLeft + xSize / 2 - fontRenderer.getStringWidth(str) / 2,
            guiTop + 51,
            0xFF00FF00);
      } else {
        fontRenderer.drawStringWithShadow(
            Strings.IdentifierInUse.toString(),
            guiLeft
                + xSize / 2
                - fontRenderer.getStringWidth(Strings.IdentifierInUse.toString()) / 2,
            guiTop + 51,
            0xEE0000);
      }
    }

    String network =
        portalModifier.isRemotelyControlled()
            ? portalModifier.dialDeviceNetwork
            : portalModifier.modifierNetwork;

    if (!network.equals("")) {
      String[] split = network.split(Reference.glyphSeperator);

      for (int i1 = 0; i1 < split.length; i1++) {
        for (int j1 = 0; j1 < Reference.glyphItems.size(); j1++) {
          if (Reference.glyphItems
              .get(j1)
              .getItemName()
              .replace("item.", "")
              .equalsIgnoreCase(split[i1])) {
            itemRenderer.renderItemIntoGUI(
                fontRenderer,
                mc.renderEngine,
                Reference.glyphItems.get(j1),
                guiLeft + 8 + i1 * 18,
                guiTop + 47);
          }
        }
      }
    }
  }