From e37691fec4ba4fc338617699594ca4fa0208007c Mon Sep 17 00:00:00 2001 From: Arcaratus Date: Sat, 13 Dec 2014 10:17:53 -0500 Subject: [PATCH] Added Binding Rituals for NEI --- .../client/nei/NEIBindingRitualHandler.java | 137 ++++++++++++++++++ .../client/nei/NEIConfig.java | 2 + .../gui/nei/bindingRitual.png | Bin 0 -> 1008 bytes 3 files changed, 139 insertions(+) create mode 100644 src/main/java/WayofTime/alchemicalWizardry/client/nei/NEIBindingRitualHandler.java create mode 100644 src/main/resources/assets/alchemicalwizardry/gui/nei/bindingRitual.png diff --git a/src/main/java/WayofTime/alchemicalWizardry/client/nei/NEIBindingRitualHandler.java b/src/main/java/WayofTime/alchemicalWizardry/client/nei/NEIBindingRitualHandler.java new file mode 100644 index 00000000..7ef876aa --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/client/nei/NEIBindingRitualHandler.java @@ -0,0 +1,137 @@ +package WayofTime.alchemicalWizardry.client.nei; + +import WayofTime.alchemicalWizardry.api.bindingRegistry.BindingRecipe; +import WayofTime.alchemicalWizardry.api.bindingRegistry.BindingRegistry; +import codechicken.nei.NEIServerUtils; +import codechicken.nei.PositionedStack; +import codechicken.nei.recipe.TemplateRecipeHandler; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.input.Mouse; + +import java.awt.*; + +/** + * Binding Ritual Handler by Arcaratus + */ +public class NEIBindingRitualHandler extends TemplateRecipeHandler +{ + public class CachedBindingRecipe extends CachedRecipe + { + PositionedStack input; + PositionedStack output; + + public CachedBindingRecipe(BindingRecipe recipe) + { + input = new PositionedStack(recipe.requiredItem, 37, 21, false); + output = new PositionedStack(recipe.outputItem, 110, 21, false); + } + + @Override + public PositionedStack getIngredient() + { + return input; + } + + @Override + public PositionedStack getResult() + { + return output; + } + } + + @Override + public void loadCraftingRecipes(String outputId, Object... results) + { + if (outputId.equals("alchemicalwizardry.binding") && getClass() == NEIBindingRitualHandler.class) + { + for (BindingRecipe recipe : BindingRegistry.bindingRecipes) + { + if (recipe != null && recipe.outputItem != null) + { + arecipes.add(new CachedBindingRecipe(recipe)); + } + } + } + else + { + super.loadCraftingRecipes(outputId, results); + } + } + + @Override + public void loadCraftingRecipes(ItemStack result) + { + for (BindingRecipe recipe: BindingRegistry.bindingRecipes) + { + if (NEIServerUtils.areStacksSameTypeCrafting(recipe.outputItem, result)) + { + if (recipe != null && recipe.outputItem != null) + { + arecipes.add(new CachedBindingRecipe(recipe)); + } + } + } + } + + @Override + public void loadUsageRecipes(ItemStack ingredient) + { + for (BindingRecipe recipe: BindingRegistry.bindingRecipes) + { + if (NEIServerUtils.areStacksSameTypeCrafting(recipe.requiredItem, ingredient)) + { + if (recipe != null && recipe.outputItem != null) + { + arecipes.add(new CachedBindingRecipe(recipe)); + } + } + } + } + + @Override + public String getOverlayIdentifier() + { + return "bindingritual"; + } + + @Override + public void loadTransferRects() + { + transferRects.add(new RecipeTransferRect(new Rectangle(90, 32, 22, 16), "alchemicalwizardry.bindingritual")); + } + + @Override + public String getRecipeName() + { + return "Binding Ritual"; + } + + @Override + public String getGuiTexture() + { + return new ResourceLocation("alchemicalwizardry", "gui/nei/bindingRitual.png").toString(); + } + + public static Point getMousePosition() + { + Dimension size = displaySize(); + Dimension res = displayRes(); + return new Point(Mouse.getX() * size.width / res.width, size.height - Mouse.getY() * size.height / res.height - 1); + } + + public static Dimension displaySize() + { + Minecraft mc = Minecraft.getMinecraft(); + ScaledResolution res = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); + return new Dimension(res.getScaledWidth(), res.getScaledHeight()); + } + + public static Dimension displayRes() + { + Minecraft mc = Minecraft.getMinecraft(); + return new Dimension(mc.displayWidth, mc.displayHeight); + } +} \ No newline at end of file diff --git a/src/main/java/WayofTime/alchemicalWizardry/client/nei/NEIConfig.java b/src/main/java/WayofTime/alchemicalWizardry/client/nei/NEIConfig.java index 5e1e4d55..c1ef8769 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/client/nei/NEIConfig.java +++ b/src/main/java/WayofTime/alchemicalWizardry/client/nei/NEIConfig.java @@ -19,6 +19,8 @@ public class NEIConfig implements IConfigureNEI { API.registerUsageHandler(new NEIBloodOrbShapedHandler()); API.registerRecipeHandler(new NEIBloodOrbShapelessHandler()); API.registerUsageHandler(new NEIBloodOrbShapelessHandler()); + API.registerRecipeHandler(new NEIBindingRitualHandler()); + API.registerUsageHandler(new NEIBindingRitualHandler()); } @Override diff --git a/src/main/resources/assets/alchemicalwizardry/gui/nei/bindingRitual.png b/src/main/resources/assets/alchemicalwizardry/gui/nei/bindingRitual.png new file mode 100644 index 0000000000000000000000000000000000000000..75ba828f97b10beb8a637c53fc28da8ce451d262 GIT binary patch literal 1008 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6&6|H(?D8gCb z5m^k>u^xmOo%TQ10t&L1c>21s-{awCU{%<_ky*sRz+CI;;uunK>+PL`y|W!e8Xmeo zS>+>Lyns`F!ZLoYMze-ZCsZ|})IS|;Htcx6+pTKaG3)<_a!f-1Y-O3_oXWW^_C#vr zn|i-b&e5St8z#n^*{2)(PFBChJD;JBC1GCr>O%`lW5oppYwuSJ-FU!x;2Aq30}F!y zg9FF|#4x@UY-V}>xx%LG_nKvyi`Hd#>oLf9UN+fX<9F_6>Bl%murUQ}8)k3I?M`1Z zMJDZ_B=d&62SR+C4`?4)cdT#=2S)=(149P`l&YEgpKH(OXR^mH&R71(qM)Y0F#QQ9 z!+Hks8(aSW_RatNnA5?g3&^<}emXKVoVPwYpE1~LV)3`!gQCm<*SDUw zIiSs;z|g?JAa23@VEM94nJy)U@TUPH>p@~n3>*+iBnA=_Q<8v)!^+#M>vL{z`@tOK zWysTP`D~Bv@^#tPU!@r%_BRMwK9^`aC{uiIp7Ht3b6<(#3tdo%Kgf!^$37vbYfkaU z_8G~1$3t9?Y|`;|IbtuazeDiE9OW~W`vh0K-qq3Z;&rS9s4xfKm9Cwd{#r=t!0yJRvJbkLTAiD9a<)JyxqZ@B(f*rSZJIHYsZ}I#6 zfDkCUo`fY7^VzqbFVr?z{x~cFV(fvZa{q50(^XovYSpyNSvq<#UpN=+y8k|``Emin pj^5|2F*=;;e{ZrfP#66B!TV