@Override
  public void drawBackground(int recipeIndex) {
    GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    GuiDraw.changeTexture(getGuiTexture());
    GuiDraw.drawTexturedModalRect(0, 0, 0, 0, 166, 130);

    Point focus = ((CachedChiselRecipe) this.arecipes.get(recipeIndex)).focus;
    if (focus != null) {
      GuiDraw.drawTexturedModalRect(focus.x, focus.y, 166, 0, 18, 18);
    }
  }
 @Override
 public void drawBackground(int recipe) {
   GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
   GuiDraw.changeTexture(getGuiTexture());
   GuiDraw.drawTexturedModalRect(0, 0, 0, 0, 166, 65);
   if (((CachedHeatRecipe) this.arecipes.get(recipe)).isBlockRecipe)
     GUIHelper.DrawStringCentered(
         GuiDraw.fontRenderer, StringHelper.localize("gui.placed"), 26, 44, Colours.BLACK);
   int heat = ((CachedHeatRecipe) this.arecipes.get(recipe)).heatRequired;
   GUIHelper.DrawStringCentered(GuiDraw.fontRenderer, "" + heat, 84, 22, Colours.RED);
   GUIHelper.DrawStringCentered(
       GuiDraw.fontRenderer, StringHelper.localize("gui.heat"), 84, 34, Colours.RED);
 }
  @Override
  public List<String> handleTooltip(GuiRecipe gui, List<String> currenttip, int recipe) {
    Point point = GuiDraw.getMousePosition();

    int xAxis =
        point.x
            - (Integer)
                MekanismUtils.getPrivateValue(
                    gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiLeft);
    int yAxis =
        point.y
            - (Integer)
                MekanismUtils.getPrivateValue(
                    gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiTop);

    if (xAxis >= 6 && xAxis <= 22 && yAxis >= 11 + 7 && yAxis <= 69 + 7) {
      currenttip.add(
          LangUtils.localizeFluidStack(
              ((CachedIORecipe) arecipes.get(recipe)).fluidInput.ingredient));
    } else if (xAxis >= 59 && xAxis <= 75 && yAxis >= 19 + 7 && yAxis <= 47 + 7) {
      currenttip.add(
          ((CachedIORecipe) arecipes.get(recipe)).outputPair.leftGas.getGas().getLocalizedName());
    } else if (xAxis >= 101 && xAxis <= 117 && yAxis >= 19 + 7 && yAxis <= 47 + 7) {
      currenttip.add(
          ((CachedIORecipe) arecipes.get(recipe)).outputPair.rightGas.getGas().getLocalizedName());
    }

    return super.handleTooltip(gui, currenttip, recipe);
  }
  @Override
  public boolean mouseClicked(GuiRecipe gui, int button, int recipe) {
    Point point = GuiDraw.getMousePosition();
    Point offset = gui.getRecipePosition(recipe);

    int xAxis =
        point.x
            - (Integer)
                MekanismUtils.getPrivateValue(
                    gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiLeft)
            - offset.x;
    int yAxis =
        point.y
            - (Integer)
                MekanismUtils.getPrivateValue(
                    gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiTop)
            - offset.y;

    GasStack gas = null;
    FluidStack fluid = null;

    if (xAxis >= 6 - 5 && xAxis <= 22 - 5 && yAxis >= 11 - 10 && yAxis <= 69 - 10) {
      fluid = ((CachedIORecipe) arecipes.get(recipe)).pressurizedRecipe.getInput().getFluid();
    } else if (xAxis >= 29 - 5 && xAxis <= 45 - 5 && yAxis >= 11 - 10 && yAxis <= 69 - 10) {
      gas = ((CachedIORecipe) arecipes.get(recipe)).pressurizedRecipe.getInput().getGas();
    } else if (xAxis >= 141 - 5 && xAxis <= 157 - 5 && yAxis >= 41 - 10 && yAxis <= 69 - 10) {
      gas = ((CachedIORecipe) arecipes.get(recipe)).pressurizedRecipe.getOutput().getGasOutput();
    }

    if (gas != null) {
      if (button == 0) {
        if (doGasLookup(gas, false)) {
          return true;
        }
      } else if (button == 1) {
        if (doGasLookup(gas, true)) {
          return true;
        }
      }
    } else if (fluid != null) {
      if (button == 0) {
        if (doFluidLookup(fluid, false)) {
          return true;
        }
      } else if (button == 1) {
        if (doFluidLookup(fluid, true)) {
          return true;
        }
      }
    }

    return super.mouseClicked(gui, button, recipe);
  }
  @Override
  public boolean mouseClicked(GuiRecipe gui, int button, int recipe) {
    Point point = GuiDraw.getMousePosition();

    int xAxis =
        point.x
            - (Integer)
                MekanismUtils.getPrivateValue(
                    gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiLeft);
    int yAxis =
        point.y
            - (Integer)
                MekanismUtils.getPrivateValue(
                    gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiTop);

    GasStack gas = null;
    FluidStack fluid = null;

    if (xAxis >= 6 && xAxis <= 22 && yAxis >= 11 + 7 && yAxis <= 69 + 7) {
      fluid = ((CachedIORecipe) arecipes.get(recipe)).fluidInput.ingredient;
    } else if (xAxis >= 59 && xAxis <= 75 && yAxis >= 19 + 7 && yAxis <= 47 + 7) {
      gas = ((CachedIORecipe) arecipes.get(recipe)).outputPair.leftGas;
    } else if (xAxis >= 101 && xAxis <= 117 && yAxis >= 19 + 7 && yAxis <= 47 + 7) {
      gas = ((CachedIORecipe) arecipes.get(recipe)).outputPair.rightGas;
    }

    if (gas != null) {
      if (button == 0) {
        if (doGasLookup(gas, false)) {
          return true;
        }
      } else if (button == 1) {
        if (doGasLookup(gas, true)) {
          return true;
        }
      }
    } else if (fluid != null) {
      if (button == 0) {
        if (doFluidLookup(fluid, false)) {
          return true;
        }
      } else if (button == 1) {
        if (doFluidLookup(fluid, true)) {
          return true;
        }
      }
    }

    return super.mouseClicked(gui, button, recipe);
  }
  @Override
  public boolean keyTyped(GuiRecipe gui, char keyChar, int keyCode, int recipe) {
    Point point = GuiDraw.getMousePosition();

    int xAxis =
        point.x
            - (Integer)
                MekanismUtils.getPrivateValue(
                    gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiLeft);
    int yAxis =
        point.y
            - (Integer)
                MekanismUtils.getPrivateValue(
                    gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiTop);

    GasStack gas = null;
    FluidStack fluid = null;

    if (xAxis >= 6 && xAxis <= 22 && yAxis >= 11 + 7 && yAxis <= 69 + 7) {
      fluid = ((CachedIORecipe) arecipes.get(recipe)).fluidInput.ingredient;
    } else if (xAxis >= 59 && xAxis <= 75 && yAxis >= 19 + 7 && yAxis <= 47 + 7) {
      gas = ((CachedIORecipe) arecipes.get(recipe)).outputPair.leftGas;
    } else if (xAxis >= 101 && xAxis <= 117 && yAxis >= 19 + 7 && yAxis <= 47 + 7) {
      gas = ((CachedIORecipe) arecipes.get(recipe)).outputPair.rightGas;
    }

    if (gas != null) {
      if (keyCode == NEIClientConfig.getKeyBinding("gui.recipe")) {
        if (doGasLookup(gas, false)) {
          return true;
        }
      } else if (keyCode == NEIClientConfig.getKeyBinding("gui.usage")) {
        if (doGasLookup(gas, true)) {
          return true;
        }
      }
    } else if (fluid != null) {
      if (keyCode == NEIClientConfig.getKeyBinding("gui.recipe")) {
        if (doFluidLookup(fluid, false)) {
          return true;
        }
      } else if (keyCode == NEIClientConfig.getKeyBinding("gui.usage")) {
        if (doFluidLookup(fluid, true)) {
          return true;
        }
      }
    }

    return super.keyTyped(gui, keyChar, keyCode, recipe);
  }
  @Override
  public List<String> handleTooltip(GuiRecipe gui, List<String> currenttip, int recipe) {
    Point point = GuiDraw.getMousePosition();
    Point offset = gui.getRecipePosition(recipe);

    int xAxis =
        point.x
            - (Integer)
                MekanismUtils.getPrivateValue(
                    gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiLeft)
            - offset.x;
    int yAxis =
        point.y
            - (Integer)
                MekanismUtils.getPrivateValue(
                    gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiTop)
            - offset.y;

    if (xAxis >= 6 - 5 && xAxis <= 22 - 5 && yAxis >= 11 - 10 && yAxis <= 69 - 10) {
      currenttip.add(
          LangUtils.localizeFluidStack(
              ((CachedIORecipe) arecipes.get(recipe)).pressurizedRecipe.getInput().getFluid()));
    } else if (xAxis >= 29 - 5 && xAxis <= 45 - 5 && yAxis >= 11 - 10 && yAxis <= 69 - 10) {
      currenttip.add(
          LangUtils.localizeGasStack(
              ((CachedIORecipe) arecipes.get(recipe)).pressurizedRecipe.getInput().getGas()));
    } else if (xAxis >= 141 - 5 && xAxis <= 157 - 5 && yAxis >= 41 - 10 && yAxis <= 69 - 10) {
      currenttip.add(
          LangUtils.localizeGasStack(
              ((CachedIORecipe) arecipes.get(recipe))
                  .pressurizedRecipe
                  .getOutput()
                  .getGasOutput()));
    }

    return super.handleTooltip(gui, currenttip, recipe);
  }
 @Override
 public void drawBackground(int recipe) {
   GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
   GuiDraw.changeTexture(getGuiTexture());
   GuiDraw.drawTexturedModalRect(0, 0, 0, 0, 166, 65);
 }