Skip to content

Commit e244dc9

Browse files
committed
JEI recipes that have missing research will have an icon displaying its missing research, closes #54
1 parent d352c05 commit e244dc9

File tree

6 files changed

+65
-3
lines changed

6 files changed

+65
-3
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
modGroup=com.buuz135.thaumicjei.ThaumicJEI
2-
modVersion=1.5.8
2+
modVersion=1.6.0
33
minecraftVersion=1.12.2
44
modBaseName=ThaumicJEI
55
forgeVersion=1.12.2-14.23.5.2768

src/main/java/com/buuz135/thaumicjei/ThaumicJEI.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class ThaumicJEI {
3636

3737
public static final String MOD_ID = "thaumicjei";
3838
public static final String MOD_NAME = "ThaumicJEI";
39-
public static final String VERSION = "1.5.8";
39+
public static final String VERSION = "1.6.0";
4040
public static Logger LOGGER;
4141

4242
/**

src/main/java/com/buuz135/thaumicjei/category/ArcaneWorkbenchCategory.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.buuz135.thaumicjei.ThaumicJEI;
2525
import com.buuz135.thaumicjei.drawable.AlphaDrawable;
2626
import com.buuz135.thaumicjei.drawable.ItemStackDrawable;
27+
import com.buuz135.thaumicjei.util.ResearchUtils;
2728
import mezz.jei.api.IGuiHelper;
2829
import mezz.jei.api.gui.IDrawable;
2930
import mezz.jei.api.gui.IRecipeLayout;
@@ -34,13 +35,15 @@
3435
import net.minecraft.block.Block;
3536
import net.minecraft.client.Minecraft;
3637
import net.minecraft.client.gui.Gui;
38+
import net.minecraft.init.Blocks;
3739
import net.minecraft.item.ItemStack;
3840
import net.minecraft.item.crafting.Ingredient;
3941
import net.minecraft.util.ResourceLocation;
4042
import net.minecraft.util.text.TextFormatting;
4143
import org.lwjgl.opengl.GL11;
4244
import thaumcraft.api.aspects.Aspect;
4345
import thaumcraft.api.aspects.AspectList;
46+
import thaumcraft.api.capabilities.ThaumcraftCapabilities;
4447
import thaumcraft.api.crafting.IArcaneRecipe;
4548
import thaumcraft.api.crafting.ShapedArcaneRecipe;
4649
import thaumcraft.api.crafting.ShapelessArcaneRecipe;
@@ -168,14 +171,19 @@ public void getIngredients(IIngredients ingredients) {
168171
@Override
169172
public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) {
170173
minecraft.fontRenderer.drawString(TextFormatting.DARK_GRAY + String.valueOf(recipe.getVis()), 50 - minecraft.fontRenderer.getStringWidth(String.valueOf(recipe.getVis())) / 2, 12, 0);
174+
if (!ThaumcraftCapabilities.knowsResearch(Minecraft.getMinecraft().player, getResearch()))
175+
minecraft.getRenderItem().renderItemIntoGUI(new ItemStack(Blocks.BARRIER), 15, 8);
171176
}
172177

173178
@Nullable
174179
@Override
175180
public List<String> getTooltipStrings(int mouseX, int mouseY) {
176-
if (mouseX > -18 && mouseX < 34 && mouseY > 4 && mouseY < 28) {
181+
if (mouseX > 34 && mouseX < 60 && mouseY > 4 && mouseY < 28) {
177182
return Arrays.asList("Vis Cost");
178183
}
184+
if (!ThaumcraftCapabilities.knowsResearch(Minecraft.getMinecraft().player, getResearch()) && mouseX > 10 && mouseX < 34 && mouseY > 4 && mouseY < 28) {
185+
return ResearchUtils.generateMissingResearchList(getResearch());
186+
}
179187
return null;
180188
}
181189

src/main/java/com/buuz135/thaumicjei/category/CrucibleCategory.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.buuz135.thaumicjei.drawable.AlphaDrawable;
2727
import com.buuz135.thaumicjei.drawable.ItemStackDrawable;
2828
import com.buuz135.thaumicjei.ingredient.AspectIngredientRender;
29+
import com.buuz135.thaumicjei.util.ResearchUtils;
2930
import mezz.jei.api.IGuiHelper;
3031
import mezz.jei.api.gui.IDrawable;
3132
import mezz.jei.api.gui.IRecipeLayout;
@@ -36,10 +37,12 @@
3637
import net.minecraft.block.Block;
3738
import net.minecraft.client.Minecraft;
3839
import net.minecraft.client.gui.Gui;
40+
import net.minecraft.init.Blocks;
3941
import net.minecraft.item.ItemStack;
4042
import net.minecraft.util.ResourceLocation;
4143
import org.lwjgl.opengl.GL11;
4244
import thaumcraft.api.aspects.AspectList;
45+
import thaumcraft.api.capabilities.ThaumcraftCapabilities;
4346
import thaumcraft.api.crafting.CrucibleRecipe;
4447

4548
import javax.annotation.Nullable;
@@ -129,7 +132,16 @@ public void getIngredients(IIngredients ingredients) {
129132

130133
@Override
131134
public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) {
135+
if (!ThaumcraftCapabilities.knowsResearch(Minecraft.getMinecraft().player, getResearch()))
136+
minecraft.getRenderItem().renderItemIntoGUI(new ItemStack(Blocks.BARRIER), 22, 14);
137+
}
132138

139+
@Override
140+
public List<String> getTooltipStrings(int mouseX, int mouseY) {
141+
if (!ThaumcraftCapabilities.knowsResearch(Minecraft.getMinecraft().player, getResearch()) && mouseX > 22 && mouseX < 40 && mouseY > 14 && mouseY < 30) {
142+
return ResearchUtils.generateMissingResearchList(getResearch());
143+
}
144+
return null;
133145
}
134146

135147
@Override

src/main/java/com/buuz135/thaumicjei/category/InfusionCategory.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.buuz135.thaumicjei.drawable.AlphaDrawable;
2727
import com.buuz135.thaumicjei.drawable.ItemStackDrawable;
2828
import com.buuz135.thaumicjei.ingredient.AspectIngredientRender;
29+
import com.buuz135.thaumicjei.util.ResearchUtils;
2930
import mezz.jei.api.gui.IDrawable;
3031
import mezz.jei.api.gui.IRecipeLayout;
3132
import mezz.jei.api.ingredients.IIngredients;
@@ -36,6 +37,7 @@
3637
import net.minecraft.client.Minecraft;
3738
import net.minecraft.client.gui.Gui;
3839
import net.minecraft.client.resources.I18n;
40+
import net.minecraft.init.Blocks;
3941
import net.minecraft.item.ItemStack;
4042
import net.minecraft.item.crafting.Ingredient;
4143
import net.minecraft.nbt.NBTBase;
@@ -45,6 +47,7 @@
4547
import net.minecraft.util.text.TextFormatting;
4648
import org.lwjgl.opengl.GL11;
4749
import thaumcraft.api.aspects.AspectList;
50+
import thaumcraft.api.capabilities.ThaumcraftCapabilities;
4851
import thaumcraft.api.crafting.InfusionRecipe;
4952

5053
import javax.annotation.Nullable;
@@ -154,12 +157,22 @@ public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int
154157
int instability = Math.min(5, recipe.instability / 2);
155158
String inst = TextFormatting.DARK_GRAY + new TextComponentTranslation("tc.inst").getFormattedText() + new TextComponentTranslation("tc.inst." + instability).getUnformattedText();
156159
minecraft.fontRenderer.drawString(inst, (recipeWidth / 2) - (minecraft.fontRenderer.getStringWidth(inst) / 2), 158, 0);
160+
if (!ThaumcraftCapabilities.knowsResearch(Minecraft.getMinecraft().player, getResearch()))
161+
minecraft.getRenderItem().renderItemIntoGUI(new ItemStack(Blocks.BARRIER), 92, 9);
157162
}
158163

159164
@Override
160165
public String[] getResearch() {
161166
return new String[]{recipe.research};
162167
}
168+
169+
@Override
170+
public List<String> getTooltipStrings(int mouseX, int mouseY) {
171+
if (!ThaumcraftCapabilities.knowsResearch(Minecraft.getMinecraft().player, getResearch()) && mouseX > 92 && mouseX < 108 && mouseY > 9 && mouseY < 25) {
172+
return ResearchUtils.generateMissingResearchList(getResearch());
173+
}
174+
return null;
175+
}
163176
}
164177

165178
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.buuz135.thaumicjei.util;
2+
3+
import net.minecraft.client.Minecraft;
4+
import net.minecraft.util.text.TextFormatting;
5+
import thaumcraft.api.capabilities.ThaumcraftCapabilities;
6+
import thaumcraft.api.research.ResearchCategories;
7+
import thaumcraft.api.research.ResearchEntry;
8+
9+
import java.util.ArrayList;
10+
import java.util.List;
11+
12+
public class ResearchUtils {
13+
14+
public static List<String> generateMissingResearchList(String... research) {
15+
List<String> list = new ArrayList<>();
16+
list.add(TextFormatting.GOLD + "Missing research:");
17+
for (String string : research) {
18+
for (String s : string.split("&&")) {
19+
if (!ThaumcraftCapabilities.knowsResearch(Minecraft.getMinecraft().player, s)) {
20+
ResearchEntry entry = ResearchCategories.getResearch(s.contains("@") ? s.split("@")[0] : s);
21+
if (entry != null) list.add("- " + TextFormatting.RED + entry.getLocalizedName());
22+
else list.add("- " + TextFormatting.RED + s);
23+
}
24+
}
25+
26+
}
27+
return list;
28+
}
29+
}

0 commit comments

Comments
 (0)