@Override
 public void actionPerformed(IGuiWidget guiWidget) {
   if (guiWidget instanceof GuiCheckBox) {
     GuiCheckBox checkBox = (GuiCheckBox) guiWidget;
     switch (checkBox.getID()) {
       case 0:
         widg.useMetadata = checkBox.checked;
         incButton.enabled = checkBoxUseDamage.enabled && checkBoxUseDamage.checked;
         decButton.enabled = checkBoxUseDamage.enabled && checkBoxUseDamage.checked;
         break;
       case 2:
         widg.useNBT = checkBox.checked;
         break;
       case 3:
         widg.useOreDict = checkBox.checked;
         checkBoxUseDamage.enabled = !checkBox.checked;
         checkBoxUseNBT.enabled = !checkBox.checked;
         checkBoxUseModSimilarity.enabled = !checkBox.checked;
         incButton.enabled = checkBoxUseDamage.enabled && checkBoxUseDamage.checked;
         decButton.enabled = checkBoxUseDamage.enabled && checkBoxUseDamage.checked;
         break;
       case 4:
         widg.useModSimilarity = checkBox.checked;
         checkBoxUseDamage.enabled = !checkBox.checked;
         checkBoxUseNBT.enabled = !checkBox.checked;
         checkBoxUseOreDict.enabled = !checkBox.checked;
         incButton.enabled = checkBoxUseDamage.enabled && checkBoxUseDamage.checked;
         decButton.enabled = checkBoxUseDamage.enabled && checkBoxUseDamage.checked;
         break;
     }
   }
   super.actionPerformed(guiWidget);
 }
  @Override
  public void initGui() {
    super.initGui();

    //  metaInfoStat = new GuiAnimatedStat(this, "Metadata?", Textures.GUI_INFO_LOCATION, xStart +
    // xSize, yStart + 5, 0xFF00AA00, null, false);

    buttonList.add(new GuiButton(0, guiLeft + 4, guiTop + 20, 70, 20, "Search item..."));
    buttonList.add(new GuiButton(1, guiLeft + 78, guiTop + 20, 100, 20, "Search inventory..."));
    decButton = new GuiButton(2, guiLeft + 140, guiTop + 85, 10, 20, "-");
    incButton = new GuiButton(3, guiLeft + 167, guiTop + 85, 10, 20, "+");
    buttonList.add(decButton);
    buttonList.add(incButton);
    checkBoxUseDamage =
        new GuiCheckBox(0, guiLeft + 4, guiTop + 72, 0xFF000000, "Use metadata / damage values");
    checkBoxUseDamage.setTooltip(
        Arrays.asList(
            new String[] {
              "Check to handle differently damaged tools",
              "or different colors of Wool as different."
            }));
    checkBoxUseDamage.checked = widg.useMetadata;
    addWidget(checkBoxUseDamage);
    checkBoxUseNBT = new GuiCheckBox(2, guiLeft + 4, guiTop + 108, 0xFF000000, "Use NBT");
    checkBoxUseNBT.setTooltip(
        Arrays.asList(
            new String[] {
              "Check to handle items like Enchanted Books", "or Firework as different."
            }));
    checkBoxUseNBT.checked = widg.useNBT;
    addWidget(checkBoxUseNBT);
    checkBoxUseOreDict =
        new GuiCheckBox(3, guiLeft + 4, guiTop + 120, 0xFF000000, "Use Ore Dictionary");
    checkBoxUseOreDict.setTooltip(
        Arrays.asList(
            new String[] {
              "Check to handle items registered in the", "Ore Dictionary (like Wood) as the same."
            }));
    checkBoxUseOreDict.checked = widg.useOreDict;
    addWidget(checkBoxUseOreDict);
    checkBoxUseModSimilarity =
        new GuiCheckBox(4, guiLeft + 4, guiTop + 132, 0xFF000000, "Use Mod similarity");
    checkBoxUseModSimilarity.setTooltip(
        Arrays.asList(new String[] {"Check to handle items from the", "same mod as the same."}));
    checkBoxUseModSimilarity.checked = widg.useModSimilarity;
    addWidget(checkBoxUseModSimilarity);

    variableField =
        new WidgetComboBox(
            fontRendererObj, guiLeft + 90, guiTop + 56, 80, fontRendererObj.FONT_HEIGHT + 1);
    variableField.setElements(guiProgrammer.te.getAllVariables());
    variableField.setText(widg.getVariable());

    if (Config.getProgrammerDifficulty() == 2) {
      addWidget(variableField);
    }

    checkBoxUseDamage.enabled = !checkBoxUseOreDict.checked && !checkBoxUseModSimilarity.checked;
    incButton.enabled = checkBoxUseDamage.enabled && checkBoxUseDamage.checked;
    decButton.enabled = checkBoxUseDamage.enabled && checkBoxUseDamage.checked;
    checkBoxUseNBT.enabled = !checkBoxUseOreDict.checked && !checkBoxUseModSimilarity.checked;
    checkBoxUseOreDict.enabled = !checkBoxUseModSimilarity.checked;
    checkBoxUseModSimilarity.enabled = !checkBoxUseOreDict.checked;

    if (searchGui != null) widg.setFilter(searchGui.getSearchStack());
    if (invSearchGui != null) widg.setFilter(invSearchGui.getSearchStack());
  }