Skip to content

Commit

Permalink
Fix #358 Protect against crash from broken smelting recipes
Browse files Browse the repository at this point in the history
  • Loading branch information
mezz committed Jul 14, 2016
1 parent 605d356 commit 91c2e0f
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 20 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Expand Up @@ -5,4 +5,4 @@ curse_project_id=238222

version_major=3
version_minor=7
version_patch=5
version_patch=6
25 changes: 9 additions & 16 deletions src/main/java/mezz/jei/plugins/vanilla/furnace/SmeltingRecipe.java
@@ -1,36 +1,26 @@
package mezz.jei.plugins.vanilla.furnace;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.awt.Color;
import java.awt.*;
import java.util.Collections;
import java.util.List;

import mezz.jei.plugins.vanilla.VanillaRecipeWrapper;
import mezz.jei.util.Translator;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.item.ItemStack;

import mezz.jei.plugins.vanilla.VanillaRecipeWrapper;
import mezz.jei.util.Translator;
import net.minecraft.item.crafting.FurnaceRecipes;

public class SmeltingRecipe extends VanillaRecipeWrapper {
@Nonnull
private final List<List<ItemStack>> input;
@Nonnull
private final List<ItemStack> outputs;

@Nullable
private final String experienceString;

public SmeltingRecipe(@Nonnull List<ItemStack> input, @Nonnull ItemStack output, float experience) {
public SmeltingRecipe(@Nonnull List<ItemStack> input, @Nonnull ItemStack output) {
this.input = Collections.singletonList(input);
this.outputs = Collections.singletonList(output);

if (experience > 0.0) {
experienceString = Translator.translateToLocalFormatted("gui.jei.category.smelting.experience", experience);
} else {
experienceString = null;
}
}

@Nonnull
Expand All @@ -45,7 +35,10 @@ public List<ItemStack> getOutputs() {

@Override
public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) {
if (experienceString != null) {
FurnaceRecipes furnaceRecipes = FurnaceRecipes.instance();
float experience = furnaceRecipes.getSmeltingExperience(outputs.get(0));
if (experience > 0) {
String experienceString = Translator.translateToLocalFormatted("gui.jei.category.smelting.experience", experience);
FontRenderer fontRendererObj = minecraft.fontRendererObj;
int stringWidth = fontRendererObj.getStringWidth(experienceString);
fontRendererObj.drawString(experienceString, recipeWidth - stringWidth, 0, Color.gray.getRGB());
Expand Down
Expand Up @@ -25,10 +25,8 @@ public static List<SmeltingRecipe> getFurnaceRecipes(IJeiHelpers helpers) {
ItemStack input = itemStackItemStackEntry.getKey();
ItemStack output = itemStackItemStackEntry.getValue();

float experience = furnaceRecipes.getSmeltingExperience(output);

List<ItemStack> inputs = stackHelper.getSubtypes(input);
SmeltingRecipe recipe = new SmeltingRecipe(inputs, output, experience);
SmeltingRecipe recipe = new SmeltingRecipe(inputs, output);
recipes.add(recipe);
}

Expand Down

0 comments on commit 91c2e0f

Please sign in to comment.