/
AbstractShapelessRecipeWrapper.java
64 lines (53 loc) · 2.49 KB
/
AbstractShapelessRecipeWrapper.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package mezz.jei.plugins.vanilla.crafting;
import mezz.jei.api.IGuiHelper;
import mezz.jei.api.gui.IDrawable;
import mezz.jei.api.recipe.wrapper.ICraftingRecipeWrapper;
import mezz.jei.config.Constants;
import mezz.jei.plugins.vanilla.VanillaRecipeWrapper;
import mezz.jei.util.Translator;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.client.config.HoverChecker;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.Collections;
import java.util.List;
public abstract class AbstractShapelessRecipeWrapper extends VanillaRecipeWrapper implements ICraftingRecipeWrapper {
private static final double shapelessIconScale = 0.5;
@Nonnull
private final IDrawable shapelessIcon;
@Nonnull
private final HoverChecker shapelessIconHoverChecker;
public AbstractShapelessRecipeWrapper(IGuiHelper guiHelper) {
ResourceLocation shapelessIconLocation = new ResourceLocation(Constants.RESOURCE_DOMAIN, Constants.TEXTURE_GUI_PATH + "recipeBackground.png");
shapelessIcon = guiHelper.createDrawable(shapelessIconLocation, 196, 0, 19, 15);
int iconBottom = (int) (shapelessIcon.getHeight() * shapelessIconScale);
int iconLeft = CraftingRecipeCategory.width - (int) (shapelessIcon.getWidth() * shapelessIconScale);
int iconRight = iconLeft + (int) (shapelessIcon.getWidth() * shapelessIconScale);
shapelessIconHoverChecker = new HoverChecker(0, iconBottom, iconLeft, iconRight, 0);
}
@Override
public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) {
super.drawInfo(minecraft, recipeWidth, recipeHeight, mouseX, mouseY);
if (hasMultipleIngredients()) {
int shapelessIconX = recipeWidth - (int) (shapelessIcon.getWidth() * shapelessIconScale);
GlStateManager.pushMatrix();
GlStateManager.scale(shapelessIconScale, shapelessIconScale, 1.0);
GlStateManager.color(1f, 1f, 1f, 1f);
shapelessIcon.draw(minecraft, (int) (shapelessIconX / shapelessIconScale), 0);
GlStateManager.popMatrix();
}
}
@Nullable
@Override
public List<String> getTooltipStrings(int mouseX, int mouseY) {
if (hasMultipleIngredients() && shapelessIconHoverChecker.checkHover(mouseX, mouseY)) {
return Collections.singletonList(Translator.translateToLocal("jei.tooltip.shapeless.recipe"));
}
return super.getTooltipStrings(mouseX, mouseY);
}
private boolean hasMultipleIngredients() {
return getInputs().size() > 1;
}
}