Added/modified the Recipe Page renderers so they were actually functional.

This commit is contained in:
WayofTime 2016-07-14 15:50:25 -04:00
parent 78a0de0b1f
commit ad6567c5d6
9 changed files with 403 additions and 178 deletions

View file

@ -9,10 +9,14 @@ import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe; import net.minecraft.item.crafting.IRecipe;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.Constants;
import WayofTime.bloodmagic.api.recipe.ShapedBloodOrbRecipe;
import WayofTime.bloodmagic.api.recipe.ShapelessBloodOrbRecipe;
import WayofTime.bloodmagic.api.registry.AltarRecipeRegistry.AltarRecipe; import WayofTime.bloodmagic.api.registry.AltarRecipeRegistry.AltarRecipe;
import WayofTime.bloodmagic.api.registry.OrbRegistry; import WayofTime.bloodmagic.api.registry.OrbRegistry;
import WayofTime.bloodmagic.compat.guideapi.entry.EntryText; import WayofTime.bloodmagic.compat.guideapi.entry.EntryText;
import WayofTime.bloodmagic.compat.guideapi.page.PageAltarRecipe; import WayofTime.bloodmagic.compat.guideapi.page.PageAltarRecipe;
import WayofTime.bloodmagic.compat.guideapi.page.recipeRenderer.ShapedBloodOrbRecipeRenderer;
import WayofTime.bloodmagic.compat.guideapi.page.recipeRenderer.ShapelessBloodOrbRecipeRenderer;
import WayofTime.bloodmagic.registry.ModBlocks; import WayofTime.bloodmagic.registry.ModBlocks;
import WayofTime.bloodmagic.registry.ModItems; import WayofTime.bloodmagic.registry.ModItems;
import WayofTime.bloodmagic.util.helper.RecipeHelper; import WayofTime.bloodmagic.util.helper.RecipeHelper;
@ -83,23 +87,47 @@ public class CategoryArchitect
List<IPage> incensePages = new ArrayList<IPage>(); List<IPage> incensePages = new ArrayList<IPage>();
// IRecipe incenseRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(ModBlocks.incenseAltar)); IRecipe incenseRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(ModBlocks.incenseAltar));
// if (incenseRecipe != null) if (incenseRecipe != null)
// { {
// incensePages.add(new PageIRecipe(incenseRecipe)); incensePages.add(getPageForRecipe(incenseRecipe));
// } }
incensePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "incense" + ".info.1"), 270)); incensePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "incense" + ".info.1"), 270));
// IRecipe woodPathRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(ModBlocks.pathBlock, 1, 0)); IRecipe woodPathRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(ModBlocks.pathBlock, 1, 0));
// if (woodPathRecipe != null) if (woodPathRecipe != null)
// { {
// incensePages.add(new PageIRecipe(woodPathRecipe)); incensePages.add(getPageForRecipe(woodPathRecipe));
// } }
incensePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "incense" + ".info.2"), 270)); incensePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "incense" + ".info.2"), 270));
entries.put(new ResourceLocation(keyBase + "incense"), new EntryText(incensePages, TextHelper.localize(keyBase + "incense"), false)); entries.put(new ResourceLocation(keyBase + "incense"), new EntryText(incensePages, TextHelper.localize(keyBase + "incense"), false));
List<IPage> runePages = new ArrayList<IPage>();
IRecipe runeRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(ModBlocks.bloodRune, 1, 0));
if (runeRecipe != null)
{
runePages.add(getPageForRecipe(runeRecipe));
}
runePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "bloodrune" + ".info.1"), 270));
entries.put(new ResourceLocation(keyBase + "bloodrune"), new EntryText(runePages, TextHelper.localize(keyBase + "bloodrune"), false));
return entries; return entries;
} }
public static PageIRecipe getPageForRecipe(IRecipe recipe)
{
if (recipe instanceof ShapedBloodOrbRecipe)
{
return new PageIRecipe(recipe, new ShapedBloodOrbRecipeRenderer((ShapedBloodOrbRecipe) recipe));
} else if (recipe instanceof ShapelessBloodOrbRecipe)
{
return new PageIRecipe(recipe, new ShapelessBloodOrbRecipeRenderer((ShapelessBloodOrbRecipe) recipe));
}
return new PageIRecipe(recipe);
}
} }

View file

@ -9,7 +9,9 @@ import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe; import net.minecraft.item.crafting.IRecipe;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.Constants;
import WayofTime.bloodmagic.api.recipe.TartaricForgeRecipe;
import WayofTime.bloodmagic.compat.guideapi.entry.EntryText; import WayofTime.bloodmagic.compat.guideapi.entry.EntryText;
import WayofTime.bloodmagic.compat.guideapi.page.PageTartaricForgeRecipe;
import WayofTime.bloodmagic.registry.ModBlocks; import WayofTime.bloodmagic.registry.ModBlocks;
import WayofTime.bloodmagic.registry.ModItems; import WayofTime.bloodmagic.registry.ModItems;
import WayofTime.bloodmagic.util.helper.RecipeHelper; import WayofTime.bloodmagic.util.helper.RecipeHelper;
@ -58,31 +60,31 @@ public class CategoryDemon
List<IPage> pettyPages = new ArrayList<IPage>(); List<IPage> pettyPages = new ArrayList<IPage>();
pettyPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "petty" + ".info.1"), 270)); pettyPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "petty" + ".info.1"), 270));
// TartaricForgeRecipe pettyRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(ModItems.soulGem, 1)); TartaricForgeRecipe pettyRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(ModItems.soulGem, 1));
// if (pettyRecipe != null) if (pettyRecipe != null)
// { {
// pettyPages.add(new PageRecipe(pettyRecipe)); pettyPages.add(new PageTartaricForgeRecipe(pettyRecipe));
// } }
pettyPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "petty" + ".info.2"), 270)); pettyPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "petty" + ".info.2"), 270));
entries.put(new ResourceLocation(keyBase + "petty"), new EntryText(pettyPages, TextHelper.localize(keyBase + "petty"), false)); entries.put(new ResourceLocation(keyBase + "petty"), new EntryText(pettyPages, TextHelper.localize(keyBase + "petty"), false));
List<IPage> swordPages = new ArrayList<IPage>(); List<IPage> swordPages = new ArrayList<IPage>();
swordPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "sword" + ".info.1"), 270)); swordPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "sword" + ".info.1"), 270));
// TartaricForgeRecipe swordRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(ModItems.sentientSword)); TartaricForgeRecipe swordRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(ModItems.sentientSword));
// if (swordRecipe != null) if (swordRecipe != null)
// { {
// swordPages.add(new PageRecipe(swordRecipe)); swordPages.add(new PageTartaricForgeRecipe(swordRecipe));
// } }
swordPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "sword" + ".info.2"), 270)); swordPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "sword" + ".info.2"), 270));
entries.put(new ResourceLocation(keyBase + "sword"), new EntryText(swordPages, TextHelper.localize(keyBase + "sword"), false)); entries.put(new ResourceLocation(keyBase + "sword"), new EntryText(swordPages, TextHelper.localize(keyBase + "sword"), false));
List<IPage> lesserPages = new ArrayList<IPage>(); List<IPage> lesserPages = new ArrayList<IPage>();
lesserPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "lesser" + ".info.1"), 270)); lesserPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "lesser" + ".info.1"), 270));
// TartaricForgeRecipe pettyRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(ModItems.soulGem, 1)); TartaricForgeRecipe lesserRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(ModItems.soulGem, 1));
// if (pettyRecipe != null) if (lesserRecipe != null)
// { {
// lesserPages.add(new PageRecipe(pettyRecipe)); lesserPages.add(new PageTartaricForgeRecipe(lesserRecipe));
// } }
lesserPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "lesser" + ".info.2"), 270)); lesserPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "lesser" + ".info.2"), 270));
entries.put(new ResourceLocation(keyBase + "lesser"), new EntryText(lesserPages, TextHelper.localize(keyBase + "lesser"), false)); entries.put(new ResourceLocation(keyBase + "lesser"), new EntryText(lesserPages, TextHelper.localize(keyBase + "lesser"), false));
@ -96,6 +98,33 @@ public class CategoryDemon
entries.put(new ResourceLocation(keyBase + "sentientGem"), new EntryText(sentientGemPages, TextHelper.localize(keyBase + "sentientGem"), false)); entries.put(new ResourceLocation(keyBase + "sentientGem"), new EntryText(sentientGemPages, TextHelper.localize(keyBase + "sentientGem"), false));
List<IPage> routingPages = new ArrayList<IPage>(); List<IPage> routingPages = new ArrayList<IPage>();
TartaricForgeRecipe nodeRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(ModBlocks.itemRoutingNode));
if (nodeRecipe != null)
{
routingPages.add(new PageTartaricForgeRecipe(nodeRecipe));
}
TartaricForgeRecipe inputNodeRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(ModBlocks.itemRoutingNode));
if (inputNodeRecipe != null)
{
routingPages.add(new PageTartaricForgeRecipe(inputNodeRecipe));
}
TartaricForgeRecipe outputNodeRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(ModBlocks.outputRoutingNode));
if (outputNodeRecipe != null)
{
routingPages.add(new PageTartaricForgeRecipe(outputNodeRecipe));
}
TartaricForgeRecipe masterNodeRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(ModBlocks.masterRoutingNode));
if (masterNodeRecipe != null)
{
routingPages.add(new PageTartaricForgeRecipe(masterNodeRecipe));
}
TartaricForgeRecipe nodeRouterRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(ModItems.nodeRouter));
if (nodeRouterRecipe != null)
{
routingPages.add(new PageTartaricForgeRecipe(nodeRouterRecipe));
}
routingPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "routing" + ".info"), 270)); routingPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "routing" + ".info"), 270));
entries.put(new ResourceLocation(keyBase + "routing"), new EntryText(routingPages, TextHelper.localize(keyBase + "routing"), false)); entries.put(new ResourceLocation(keyBase + "routing"), new EntryText(routingPages, TextHelper.localize(keyBase + "routing"), false));

View file

@ -41,7 +41,7 @@ public class PageAltarRecipe extends Page
public void draw(Book book, CategoryAbstract category, EntryAbstract entry, int guiLeft, int guiTop, int mouseX, int mouseY, GuiBase guiBase, FontRenderer fontRenderer) public void draw(Book book, CategoryAbstract category, EntryAbstract entry, int guiLeft, int guiTop, int mouseX, int mouseY, GuiBase guiBase, FontRenderer fontRenderer)
{ {
Minecraft.getMinecraft().getTextureManager().bindTexture(new ResourceLocation("bloodmagicguide" + ":textures/gui/altar.png")); Minecraft.getMinecraft().getTextureManager().bindTexture(new ResourceLocation("bloodmagicguide" + ":textures/gui/altar.png"));
guiBase.drawTexturedModalRect(guiLeft + 42, guiTop + 53, 0, 87, 146, 104); guiBase.drawTexturedModalRect(guiLeft + 42, guiTop + 53, 0, 0, 146, 104);
guiBase.drawCenteredString(fontRenderer, TextHelper.localize("guide.BloodMagic.page.bloodAltar"), guiLeft + guiBase.xSize / 2, guiTop + 12, 0); guiBase.drawCenteredString(fontRenderer, TextHelper.localize("guide.BloodMagic.page.bloodAltar"), guiLeft + guiBase.xSize / 2, guiTop + 12, 0);

View file

@ -0,0 +1,143 @@
package WayofTime.bloodmagic.compat.guideapi.page;
import java.util.List;
import java.util.Random;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.oredict.OreDictionary;
import WayofTime.bloodmagic.api.recipe.TartaricForgeRecipe;
import WayofTime.bloodmagic.api.registry.OrbRegistry;
import WayofTime.bloodmagic.util.helper.TextHelper;
import amerifrance.guideapi.api.impl.Book;
import amerifrance.guideapi.api.impl.Page;
import amerifrance.guideapi.api.impl.abstraction.CategoryAbstract;
import amerifrance.guideapi.api.impl.abstraction.EntryAbstract;
import amerifrance.guideapi.api.util.GuiHelper;
import amerifrance.guideapi.gui.GuiBase;
public class PageTartaricForgeRecipe extends Page
{
public List<Object> input;
public ItemStack output;
public int tier;
public double minimumWill;
public double drainedWill;
private int cycleIdx = 0;
private Random rand = new Random();
public PageTartaricForgeRecipe(TartaricForgeRecipe recipe)
{
this.input = recipe.getInput();
this.output = recipe.getRecipeOutput();
this.tier = 0;
this.minimumWill = recipe.getMinimumSouls();
this.drainedWill = recipe.getSoulsDrained();
}
@SuppressWarnings("unchecked")
@Override
@SideOnly(Side.CLIENT)
public void draw(Book book, CategoryAbstract category, EntryAbstract entry, int guiLeft, int guiTop, int mouseX, int mouseY, GuiBase guiBase, FontRenderer fontRenderer)
{
Minecraft.getMinecraft().getTextureManager().bindTexture(new ResourceLocation("bloodmagicguide" + ":textures/gui/soulForge.png"));
guiBase.drawTexturedModalRect(guiLeft + 42, guiTop + 53, 0, 0, 146, 104);
guiBase.drawCenteredString(fontRenderer, TextHelper.localize("guide.BloodMagic.page.soulForge"), guiLeft + guiBase.xSize / 2, guiTop + 12, 0);
// int inputX = (1 + 1) * 20 + (guiLeft + guiBase.xSize / 7) + 1;
// int inputY = (20) + (guiTop + guiBase.ySize / 5) - 1; //1 * 20
for (int y = 0; y < 2; y++)
{
for (int x = 0; x < 2; x++)
{
int stackX = (x + 1) * 20 + (guiLeft + guiBase.xSize / 7) + 1;
int stackY = (y + 1) * 20 + (guiTop + guiBase.ySize / 5) - 1;
Object component = input.size() > y * 2 + x ? input.get(y * 2 + x) : null;//recipe.getInput()[y * 2 + x];
if (component != null)
{
if (component instanceof ItemStack)
{
ItemStack input = (ItemStack) component;
if (input.getItemDamage() == OreDictionary.WILDCARD_VALUE)
input.setItemDamage(0);
GuiHelper.drawItemStack((ItemStack) component, stackX, stackY);
if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15))
{
// tooltips = GuiHelper.getTooltip((ItemStack) component);
guiBase.renderToolTip((ItemStack) component, mouseX, mouseY);
}
} else if (component instanceof Integer)
{
List<ItemStack> list = OrbRegistry.getOrbsDownToTier((Integer) component);
if (!list.isEmpty())
{
ItemStack stack = list.get(getRandomizedCycle(x + (y * 2), list.size()));
GuiHelper.drawItemStack(stack, stackX, stackY);
if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15))
{
// tooltips = GuiHelper.getTooltip(stack);
guiBase.renderToolTip(stack, mouseX, mouseY);
}
}
} else
{
List<ItemStack> list = (List<ItemStack>) component;
if (!list.isEmpty())
{
ItemStack stack = list.get(getRandomizedCycle(x + (y * 2), list.size()));
GuiHelper.drawItemStack(stack, stackX, stackY);
if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15))
{
// tooltips = GuiHelper.getTooltip(stack);
guiBase.renderToolTip(stack, mouseX, mouseY);
}
}
}
}
}
}
// GuiHelper.drawItemStack(input.get(0), inputX, inputY);
// if (GuiHelper.isMouseBetween(mouseX, mouseY, inputX, inputY, 15, 15))
// {
// guiBase.renderToolTip(input.get(0), mouseX, mouseY);
// }
if (output == null)
{
output = new ItemStack(Blocks.BARRIER);
}
int outputX = (5 * 20) + (guiLeft + guiBase.xSize / 7) + 1;
int outputY = (20) + (guiTop + guiBase.xSize / 5) + 10; // 1 * 20
GuiHelper.drawItemStack(output, outputX, outputY);
if (GuiHelper.isMouseBetween(mouseX, mouseY, outputX, outputY, 15, 15))
{
guiBase.renderToolTip(output, outputX, outputY);
}
if (output.getItem() == Item.getItemFromBlock(Blocks.BARRIER))
{
guiBase.drawCenteredString(fontRenderer, TextHelper.localize("text.furnace.error"), guiLeft + guiBase.xSize / 2, guiTop + 4 * guiBase.ySize / 6, 0xED073D);
guiBase.drawCenteredString(fontRenderer, TextHelper.localize("bm.string.tier") + ": " + String.valueOf(tier), guiLeft + guiBase.xSize / 2, guiTop + 4 * guiBase.ySize / 6 + 15, 0);
// guiBase.drawCenteredString(fontRenderer, "LP: " + String.valueOf(bloodRequired), guiLeft + guiBase.xSize / 2, guiTop + 4 * guiBase.ySize / 6 + 30, 0);
}
guiBase.drawCenteredString(fontRenderer, TextHelper.localize("guide.BloodMagic.page.minimumWill", String.valueOf(minimumWill)), guiLeft + guiBase.xSize / 2, guiTop + 4 * guiBase.ySize / 6 - 15, 0);
guiBase.drawCenteredString(fontRenderer, TextHelper.localize("guide.BloodMagic.page.drainedWill", String.valueOf(drainedWill)), guiLeft + guiBase.xSize / 2, guiTop + 4 * guiBase.ySize / 6, 0);
}
protected int getRandomizedCycle(int index, int max)
{
rand.setSeed(index);
return (index + rand.nextInt(max) + cycleIdx) % max;
}
}

View file

@ -1,152 +0,0 @@
package WayofTime.bloodmagic.compat.guideapi.page.recipeRenderer;
import WayofTime.bloodmagic.api.recipe.ShapedBloodOrbRecipe;
import WayofTime.bloodmagic.api.recipe.ShapelessBloodOrbRecipe;
import WayofTime.bloodmagic.api.registry.OrbRegistry;
import WayofTime.bloodmagic.util.helper.TextHelper;
import amerifrance.guideapi.GuideMod;
import amerifrance.guideapi.api.IRecipeRenderer;
import amerifrance.guideapi.api.impl.Book;
import amerifrance.guideapi.api.impl.abstraction.CategoryAbstract;
import amerifrance.guideapi.api.impl.abstraction.EntryAbstract;
import amerifrance.guideapi.api.util.GuiHelper;
import amerifrance.guideapi.gui.GuiBase;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.ReflectionHelper;
import java.util.ArrayList;
import java.util.List;
public class OrbRecipeRenderer implements IRecipeRenderer
{
public IRecipe recipe;
public OrbRecipeRenderer(IRecipe recipe)
{
this.recipe = recipe;
}
@Override
public void draw(Book book, CategoryAbstract category, EntryAbstract entry, int guiLeft, int guiTop, int mouseX, int mouseY, GuiBase guiBase, FontRenderer fontRenderer)
{
Minecraft.getMinecraft().getTextureManager().bindTexture(new ResourceLocation("gudieapi", "textures/gui/recipe_elements.png"));
guiBase.drawTexturedModalRect(guiLeft + 42, guiTop + 53, 0, 0, 105, 65);
guiBase.drawCenteredString(fontRenderer, TextHelper.localize("text.recipe.shapedOrb"), guiLeft + guiBase.xSize / 2, guiTop + 12, 0);
if (recipe instanceof ShapelessBloodOrbRecipe)
{
ShapelessBloodOrbRecipe shapelessBloodOrbRecipe = (ShapelessBloodOrbRecipe) recipe;
List<Object> list = shapelessBloodOrbRecipe.getInput();
int width = 3;
int height = 3;
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
if (list.size() - 1 < y * width + x)
{
continue;
}
int stackX = (x + 1) * 18 + (guiLeft + guiBase.xSize / 7);
int stackY = (y + 1) * 18 + (guiTop + guiBase.ySize / 5);
Object component = list.get(y * width + x);
if (component != null)
{
if (component instanceof ItemStack)
{
GuiHelper.drawItemStack((ItemStack) component, stackX, stackY);
if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15))
{
guiBase.renderToolTip((ItemStack) component, stackX, stackY);
}
} else if (component instanceof Integer)
{
GuiHelper.drawItemStack(OrbRegistry.getOrbsForTier((Integer) component).get(0), stackX, stackY);
if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15))
{
guiBase.renderToolTip(OrbRegistry.getOrbsForTier((Integer) component).get(0), stackX, stackY);
}
} else
{
if (((ArrayList<ItemStack>) component).isEmpty())
return;
GuiHelper.drawItemStack(((ArrayList<ItemStack>) component).get(0), stackX, stackY);
if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15))
{
guiBase.renderToolTip(((ArrayList<ItemStack>) component).get(0), stackX, stackY);
}
}
}
}
}
int outputX = (5 * 18) + (guiLeft + guiBase.xSize / 7);
int outputY = (2 * 18) + (guiTop + guiBase.xSize / 5);
GuiHelper.drawItemStack(shapelessBloodOrbRecipe.getRecipeOutput(), outputX, outputY);
if (GuiHelper.isMouseBetween(mouseX, mouseY, outputX, outputY, 15, 15))
{
guiBase.renderToolTip(shapelessBloodOrbRecipe.getRecipeOutput(), outputX, outputY);
}
} else if (recipe instanceof ShapedBloodOrbRecipe)
{
ShapedBloodOrbRecipe shapedBloodOrbRecipe = (ShapedBloodOrbRecipe) recipe;
int width = ReflectionHelper.getPrivateValue(ShapedBloodOrbRecipe.class, shapedBloodOrbRecipe, 4);
int height = ReflectionHelper.getPrivateValue(ShapedBloodOrbRecipe.class, shapedBloodOrbRecipe, 5);
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
int stackX = (x + 1) * 18 + (guiLeft + guiBase.xSize / 7);
int stackY = (y + 1) * 18 + (guiTop + guiBase.ySize / 5);
Object component = shapedBloodOrbRecipe.getInput()[y * width + x];
if (component != null)
{
if (component instanceof ItemStack)
{
GuiHelper.drawItemStack((ItemStack) component, stackX, stackY);
if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15))
{
guiBase.renderToolTip((ItemStack) component, stackX, stackY);
}
} else if (component instanceof Integer)
{
GuiHelper.drawItemStack(OrbRegistry.getOrbsForTier((Integer) component).get(0), stackX, stackY);
if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15))
{
guiBase.renderToolTip(OrbRegistry.getOrbsForTier((Integer) component).get(0), stackX, stackY);
}
} else
{
if (((ArrayList<ItemStack>) component).isEmpty())
return;
GuiHelper.drawItemStack(((ArrayList<ItemStack>) component).get(0), stackX, stackY);
if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15))
{
guiBase.renderToolTip(((ArrayList<ItemStack>) component).get(0), stackX, stackY);
}
}
}
}
}
int outputX = (5 * 18) + (guiLeft + guiBase.xSize / 7);
int outputY = (2 * 18) + (guiTop + guiBase.xSize / 5);
GuiHelper.drawItemStack(shapedBloodOrbRecipe.getRecipeOutput(), outputX, outputY);
if (GuiHelper.isMouseBetween(mouseX, mouseY, outputX, outputY, 15, 15))
{
guiBase.renderToolTip(shapedBloodOrbRecipe.getRecipeOutput(), outputX, outputY);
}
}
}
@Override
public void drawExtras(Book book, CategoryAbstract category, EntryAbstract entry, int guiLeft, int guiTop, int mouseX, int mouseY, GuiBase guiBase, FontRenderer fontRenderer)
{
}
}

View file

@ -0,0 +1,79 @@
package WayofTime.bloodmagic.compat.guideapi.page.recipeRenderer;
import java.util.List;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
import WayofTime.bloodmagic.api.recipe.ShapedBloodOrbRecipe;
import WayofTime.bloodmagic.api.registry.OrbRegistry;
import amerifrance.guideapi.api.impl.Book;
import amerifrance.guideapi.api.impl.abstraction.CategoryAbstract;
import amerifrance.guideapi.api.impl.abstraction.EntryAbstract;
import amerifrance.guideapi.api.util.GuiHelper;
import amerifrance.guideapi.gui.GuiBase;
import amerifrance.guideapi.page.reciperenderer.BasicRecipeRenderer;
// TODO: Fix rendering of recipe
public class ShapedBloodOrbRecipeRenderer extends BasicRecipeRenderer<ShapedBloodOrbRecipe>
{
public ShapedBloodOrbRecipeRenderer(ShapedBloodOrbRecipe recipe)
{
super(recipe);
}
@SuppressWarnings("unchecked")
@Override
public void draw(Book book, CategoryAbstract category, EntryAbstract entry, int guiLeft, int guiTop, int mouseX, int mouseY, GuiBase guiBase, FontRenderer fontRendererObj)
{
super.draw(book, category, entry, guiLeft, guiTop, mouseX, mouseY, guiBase, fontRendererObj);
for (int y = 0; y < recipe.height; y++)
{
for (int x = 0; x < recipe.width; x++)
{
int stackX = (x + 1) * 17 + (guiLeft + 29);
int stackY = (y + 1) * 17 + (guiTop + 40);
Object component = recipe.getInput()[y * recipe.width + x];
if (component != null)
{
if (component instanceof ItemStack)
{
ItemStack input = (ItemStack) component;
if (input.getItemDamage() == OreDictionary.WILDCARD_VALUE)
input.setItemDamage(0);
GuiHelper.drawItemStack((ItemStack) component, stackX, stackY);
if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15))
{
tooltips = GuiHelper.getTooltip((ItemStack) component);
}
} else if (component instanceof Integer)
{
List<ItemStack> list = OrbRegistry.getOrbsDownToTier((Integer) component);
if (!list.isEmpty())
{
ItemStack stack = list.get(getRandomizedCycle(x + (y * 3), list.size()));
GuiHelper.drawItemStack(stack, stackX, stackY);
if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15))
{
tooltips = GuiHelper.getTooltip(stack);
}
}
} else
{
List<ItemStack> list = (List<ItemStack>) component;
if (!list.isEmpty())
{
ItemStack stack = list.get(getRandomizedCycle(x + (y * 3), list.size()));
GuiHelper.drawItemStack(stack, stackX, stackY);
if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15))
{
tooltips = GuiHelper.getTooltip(stack);
}
}
}
}
}
}
}
}

View file

@ -0,0 +1,92 @@
package WayofTime.bloodmagic.compat.guideapi.page.recipeRenderer;
import java.util.List;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
import WayofTime.bloodmagic.api.recipe.ShapelessBloodOrbRecipe;
import WayofTime.bloodmagic.api.registry.OrbRegistry;
import amerifrance.guideapi.api.impl.Book;
import amerifrance.guideapi.api.impl.abstraction.CategoryAbstract;
import amerifrance.guideapi.api.impl.abstraction.EntryAbstract;
import amerifrance.guideapi.api.util.GuiHelper;
import amerifrance.guideapi.api.util.TextHelper;
import amerifrance.guideapi.gui.GuiBase;
import amerifrance.guideapi.page.reciperenderer.BasicRecipeRenderer;
public class ShapelessBloodOrbRecipeRenderer extends BasicRecipeRenderer<ShapelessBloodOrbRecipe>
{
public ShapelessBloodOrbRecipeRenderer(ShapelessBloodOrbRecipe recipe)
{
super(recipe);
}
@SuppressWarnings("unchecked")
@Override
public void draw(Book book, CategoryAbstract category, EntryAbstract entry, int guiLeft, int guiTop, int mouseX, int mouseY, GuiBase guiBase, FontRenderer fontRendererObj)
{
super.draw(book, category, entry, guiLeft, guiTop, mouseX, mouseY, guiBase, fontRendererObj);
for (int y = 0; y < 3; y++)
{
for (int x = 0; x < 3; x++)
{
int i = 3 * y + x;
if (i >= recipe.getRecipeSize())
{
} else
{
int stackX = (x + 1) * 17 + (guiLeft + 29);
int stackY = (y + 1) * 17 + (guiTop + 40);
Object component = recipe.getInput().get(i);
if (component != null)
{
if (component instanceof ItemStack)
{
ItemStack input = (ItemStack) component;
if (input.getItemDamage() == OreDictionary.WILDCARD_VALUE)
input.setItemDamage(0);
GuiHelper.drawItemStack((ItemStack) component, stackX, stackY);
if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15))
{
tooltips = GuiHelper.getTooltip((ItemStack) component);
}
} else if (component instanceof Integer)
{
List<ItemStack> list = OrbRegistry.getOrbsDownToTier((Integer) component);
if (!list.isEmpty())
{
ItemStack stack = list.get(getRandomizedCycle(x + (y * 3), list.size()));
GuiHelper.drawItemStack(stack, stackX, stackY);
if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15))
{
tooltips = GuiHelper.getTooltip(stack);
}
}
} else
{
List<ItemStack> list = (List<ItemStack>) component;
if (!list.isEmpty())
{
ItemStack stack = list.get(getRandomizedCycle(x + (y * 3), list.size()));
GuiHelper.drawItemStack(stack, stackX, stackY);
if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15))
{
tooltips = GuiHelper.getTooltip(stack);
}
}
}
}
}
}
}
}
@Override
protected String getRecipeName()
{
return TextHelper.localizeEffect("text.shapeless.crafting");
}
}

View file

@ -6,8 +6,14 @@ guide.BloodMagic.welcome=Blood Magic
# Page Information # Page Information
guide.BloodMagic.page.bloodAltar=Blood Altar Recipe guide.BloodMagic.page.bloodAltar=Blood Altar Recipe
guide.BloodMagic.page.soulForge=Hellfire Forge Recipe
guide.BloodMagic.page.tier=Tier: %d guide.BloodMagic.page.tier=Tier: %d
guide.BloodMagic.page.lp=LP: %d guide.BloodMagic.page.lp=LP: %d
guide.BloodMagic.page.minimumWill=Minimum Will: %f
guide.BloodMagic.page.drainedWill=Drained Will: %f
guide.BloodMagic.shapelessOrb=Shapeless Orb Recipe
guide.BloodMagic.shapedOrb=Shaped Orb Recipe
# Categories # Categories
guide.BloodMagic.category.architect=The Architect guide.BloodMagic.category.architect=The Architect

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB