package gr8pefish.ironbackpacks.integration.jei.removeUpgrade; import gr8pefish.ironbackpacks.crafting.BackpackRemoveUpgradeRecipe; import gr8pefish.ironbackpacks.util.TextUtils; import mezz.jei.api.gui.ITooltipCallback; import mezz.jei.api.ingredients.IIngredients; import mezz.jei.api.recipe.IRecipeWrapper; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.awt.*; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; public class RemoveUpgradeRecipeWrapper implements IRecipeWrapper, ITooltipCallback<ItemStack> { private BackpackRemoveUpgradeRecipe removeUpgradeRecipe; private final String[] description; private final String[] descriptionAdditional; private final String craftingType; private final String removeSlot1; private final String removeSlot2; public RemoveUpgradeRecipeWrapper(BackpackRemoveUpgradeRecipe recipe){ this.craftingType = TextUtils.localize("jei.description.shapedCrafting"); this.removeSlot1 = TextUtils.localize("jei.description.removeUpgrade.slot1"); this.removeSlot2 = TextUtils.localize("jei.description.removeUpgrade.slot2"); this.description = TextUtils.cutLongString(TextUtils.localize("jei.description.removeUpgrade")); this.descriptionAdditional = TextUtils.cutLongString(TextUtils.localize("jei.description.removeUpgrade.additional")); removeUpgradeRecipe = recipe; } @Override public void getIngredients(@Nonnull IIngredients ingredients) { //ToDo // ingredients.setInput(ItemStack.class, ); // ingredients.setOutputs(ItemStack.class, new ArrayList<>(Collections.singletonList(removeUpgradeRecipe.getRecipeOutput()))); } @Nonnull @Override public List getInputs() { //ToDo: move to ingredients return removeUpgradeRecipe.getInput(); } @Nonnull @Override public List getOutputs() { //ToDo: move to ingredients return Collections.singletonList(removeUpgradeRecipe.getRecipeOutput()); } @Nonnull @Override public List<FluidStack> getFluidInputs() { return new ArrayList<>(); //none } @Nonnull @Override public List<FluidStack> getFluidOutputs() { return new ArrayList<>(); //none } @Override public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { //draw the type of recipes minecraft.fontRendererObj.drawString(craftingType, 43, 0, Color.darkGray.getRGB()); //draw the special text so the user knows it is location dependent minecraft.fontRendererObj.drawString(removeSlot1, 8, 15, Color.darkGray.getRGB()); //Location minecraft.fontRendererObj.drawString(removeSlot2, 4, 23, Color.darkGray.getRGB()); //Dependent for (int i = 0; i < description.length; i++) minecraft.fontRendererObj.drawString(description[i], 11, 40 + (i*8), Color.black.getRGB()); for (int i = 0; i < descriptionAdditional.length; i++) minecraft.fontRendererObj.drawString(descriptionAdditional[i], 11, 80 + (i*8), Color.black.getRGB()); } @Override public void drawAnimations(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight) { } @Nullable @Override public List<String> getTooltipStrings(int mouseX, int mouseY) { //if mouse is over the 'Location Dependent' string, display this tooltip if (mouseX >= 4 && mouseX <= 53 && mouseY <= 31 && mouseY >= 15) return Arrays.asList(TextUtils.cutLongString(TextUtils.localize("jei.description.removeUpgrade.locationDependent"))); return null; } @Override public boolean handleClick(@Nonnull Minecraft minecraft, int mouseX, int mouseY, int mouseButton) { return false; } @Override public void onTooltip(int slotIndex, boolean input, @Nonnull ItemStack ingredient, @Nonnull List<String> tooltip) { //input backpack if (slotIndex == 0) { tooltip.remove(tooltip.size()-1); //remove 'shift for more info' tooltip.add("With the upgrade."); //add my tooltip } //output backpack if (slotIndex == 1) { tooltip.remove(tooltip.size()-1); //remove 'shift for more info' tooltip.add("Without the upgrade."); //add my tooltip } } }