diff --git a/src/main/java/ellpeck/actuallyadditions/ActuallyAdditions.java b/src/main/java/ellpeck/actuallyadditions/ActuallyAdditions.java index ea92eaac2..9364fb267 100644 --- a/src/main/java/ellpeck/actuallyadditions/ActuallyAdditions.java +++ b/src/main/java/ellpeck/actuallyadditions/ActuallyAdditions.java @@ -35,9 +35,9 @@ import ellpeck.actuallyadditions.misc.*; import ellpeck.actuallyadditions.network.PacketHandler; import ellpeck.actuallyadditions.ore.InitOreDict; import ellpeck.actuallyadditions.proxy.IProxy; -import ellpeck.actuallyadditions.recipe.AtomicReconstructorRecipeHandler; import ellpeck.actuallyadditions.recipe.FuelHandler; import ellpeck.actuallyadditions.recipe.HairyBallHandler; +import ellpeck.actuallyadditions.recipe.ReconstructorRecipeHandler; import ellpeck.actuallyadditions.recipe.TreasureChestHandler; import ellpeck.actuallyadditions.tile.TileEntityBase; import ellpeck.actuallyadditions.update.UpdateChecker; @@ -100,7 +100,7 @@ public class ActuallyAdditions{ ItemCrafting.initMashedFoodRecipes(); HairyBallHandler.init(); TreasureChestHandler.init(); - AtomicReconstructorRecipeHandler.init(); + ReconstructorRecipeHandler.init(); InitForeignPaxels.init(); proxy.postInit(event); diff --git a/src/main/java/ellpeck/actuallyadditions/booklet/chapter/BookletChapterReconstructor.java b/src/main/java/ellpeck/actuallyadditions/booklet/chapter/BookletChapterReconstructor.java index c37244739..c0dad6212 100644 --- a/src/main/java/ellpeck/actuallyadditions/booklet/chapter/BookletChapterReconstructor.java +++ b/src/main/java/ellpeck/actuallyadditions/booklet/chapter/BookletChapterReconstructor.java @@ -15,7 +15,7 @@ import ellpeck.actuallyadditions.booklet.page.BookletPage; import ellpeck.actuallyadditions.booklet.page.PageCrafting; import ellpeck.actuallyadditions.booklet.page.PageReconstructor; import ellpeck.actuallyadditions.crafting.MiscCrafting; -import ellpeck.actuallyadditions.recipe.AtomicReconstructorRecipeHandler; +import ellpeck.actuallyadditions.recipe.ReconstructorRecipeHandler; import net.minecraft.item.ItemStack; import java.util.ArrayList; @@ -45,7 +45,7 @@ public class BookletChapterReconstructor extends BookletChapter{ } }.setNoText()); - for(AtomicReconstructorRecipeHandler.Recipe recipe : AtomicReconstructorRecipeHandler.recipes){ + for(ReconstructorRecipeHandler.Recipe recipe : ReconstructorRecipeHandler.recipes){ BookletPage page = new PageReconstructor(allPages.size()+1, recipe.getFirstOutput()).setNoText(); allPages.add(page); } diff --git a/src/main/java/ellpeck/actuallyadditions/booklet/page/PageReconstructor.java b/src/main/java/ellpeck/actuallyadditions/booklet/page/PageReconstructor.java index db24be64a..11313b6a0 100644 --- a/src/main/java/ellpeck/actuallyadditions/booklet/page/PageReconstructor.java +++ b/src/main/java/ellpeck/actuallyadditions/booklet/page/PageReconstructor.java @@ -13,7 +13,7 @@ package ellpeck.actuallyadditions.booklet.page; import ellpeck.actuallyadditions.blocks.InitBlocks; import ellpeck.actuallyadditions.booklet.GuiBooklet; import ellpeck.actuallyadditions.proxy.ClientProxy; -import ellpeck.actuallyadditions.recipe.AtomicReconstructorRecipeHandler; +import ellpeck.actuallyadditions.recipe.ReconstructorRecipeHandler; import ellpeck.actuallyadditions.util.ModUtil; import ellpeck.actuallyadditions.util.StringUtil; import ellpeck.actuallyadditions.util.Util; @@ -95,7 +95,7 @@ public class PageReconstructor extends BookletPage{ } private ItemStack getInputForOutput(ItemStack output){ - for(AtomicReconstructorRecipeHandler.Recipe recipe : AtomicReconstructorRecipeHandler.recipes){ + for(ReconstructorRecipeHandler.Recipe recipe : ReconstructorRecipeHandler.recipes){ ArrayList stacks = OreDictionary.getOres(recipe.output); for(ItemStack stack : stacks){ if(output.isItemEqual(stack)){ diff --git a/src/main/java/ellpeck/actuallyadditions/nei/AtomicReconstructorRecipeHandler.java b/src/main/java/ellpeck/actuallyadditions/nei/AtomicReconstructorRecipeHandler.java new file mode 100644 index 000000000..82f5fe207 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/nei/AtomicReconstructorRecipeHandler.java @@ -0,0 +1,137 @@ +/* + * This file ("AtomicReconstructorRecipeHandler.java") is part of the Actually Additions Mod for Minecraft. + * It is created and owned by Ellpeck and distributed + * under the Actually Additions License to be found at + * http://github.com/Ellpeck/ActuallyAdditions/blob/master/README.md + * View the source code at https://github.com/Ellpeck/ActuallyAdditions + * + * © 2015 Ellpeck + */ + +package ellpeck.actuallyadditions.nei; + +import codechicken.lib.gui.GuiDraw; +import codechicken.nei.PositionedStack; +import codechicken.nei.recipe.RecipeInfo; +import codechicken.nei.recipe.TemplateRecipeHandler; +import ellpeck.actuallyadditions.blocks.InitBlocks; +import ellpeck.actuallyadditions.recipe.ReconstructorRecipeHandler; +import ellpeck.actuallyadditions.util.ItemUtil; +import ellpeck.actuallyadditions.util.ModUtil; +import ellpeck.actuallyadditions.util.StringUtil; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; +import org.lwjgl.opengl.GL11; + +import java.awt.*; +import java.util.ArrayList; +import java.util.Collections; + +public class AtomicReconstructorRecipeHandler extends TemplateRecipeHandler implements INeiRecipeHandler{ + + public static final String NAME = "actuallyadditions.reconstructor"; + + public AtomicReconstructorRecipeHandler(){ + super(); + RecipeInfo.setGuiOffset(this.getGuiClass(), 0, 0); + } + + @Override + public ItemStack getStackForInfo(int page){ + return new ItemStack(InitBlocks.blockAtomicReconstructor); + } + + @Override + public String getRecipeName(){ + return StringUtil.localize("container.nei."+NAME+".name"); + } + + @Override + public void loadTransferRects(){ + transferRects.add(new RecipeTransferRect(new Rectangle(31+32, 18, 22, 16), NAME)); + } + + @Override + public void loadCraftingRecipes(String outputId, Object... results){ + if(outputId.equals(NAME) && getClass() == AtomicReconstructorRecipeHandler.class){ + ArrayList recipes = ReconstructorRecipeHandler.recipes; + for(ReconstructorRecipeHandler.Recipe recipe : recipes){ + arecipes.add(new CachedReconstructorRecipe(recipe.input, recipe.output)); + } + } + else{ + super.loadCraftingRecipes(outputId, results); + } + } + + @Override + public void loadCraftingRecipes(ItemStack result){ + ArrayList recipes = ReconstructorRecipeHandler.recipes; + for(ReconstructorRecipeHandler.Recipe recipe : recipes){ + if(ItemUtil.contains(OreDictionary.getOres(recipe.output), result, true)){ + arecipes.add(new CachedReconstructorRecipe(recipe.input, recipe.output)); + } + } + } + + @Override + public void loadUsageRecipes(ItemStack ingredient){ + ArrayList recipes = ReconstructorRecipeHandler.recipes; + for(ReconstructorRecipeHandler.Recipe recipe : recipes){ + if(ItemUtil.contains(OreDictionary.getOres(recipe.input), ingredient, true)){ + CachedReconstructorRecipe theRecipe = new CachedReconstructorRecipe(recipe.input, recipe.output); + theRecipe.setIngredientPermutation(Collections.singletonList(theRecipe.input), ingredient); + arecipes.add(theRecipe); + } + } + } + + @Override + public String getGuiTexture(){ + return ModUtil.MOD_ID_LOWER+":textures/gui/guiNEISimple.png"; + } + + @Override + public String getOverlayIdentifier(){ + return NAME; + } + + @Override + public Class getGuiClass(){ + return null; + } + + @Override + public void drawBackground(int recipeIndex){ + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GuiDraw.changeTexture(getGuiTexture()); + GuiDraw.drawTexturedModalRect(32, 0, 0, 0, 96, 60); + } + + @Override + public int recipiesPerPage(){ + return 2; + } + + public class CachedReconstructorRecipe extends CachedRecipe{ + + public PositionedStack result; + public PositionedStack input; + + public CachedReconstructorRecipe(String input, String result){ + this.result = new PositionedStack(OreDictionary.getOres(result), 67+32, 19); + this.input = new PositionedStack(OreDictionary.getOres(input), 5+32, 19); + } + + @Override + public PositionedStack getResult(){ + return result; + } + + @Override + public PositionedStack getIngredient(){ + return input; + } + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/nei/NEIActuallyAdditionsConfig.java b/src/main/java/ellpeck/actuallyadditions/nei/NEIActuallyAdditionsConfig.java index a81cd005e..513cd18b9 100644 --- a/src/main/java/ellpeck/actuallyadditions/nei/NEIActuallyAdditionsConfig.java +++ b/src/main/java/ellpeck/actuallyadditions/nei/NEIActuallyAdditionsConfig.java @@ -56,6 +56,10 @@ public class NEIActuallyAdditionsConfig implements IConfigureNEI{ API.registerRecipeHandler(coffeeMachineRecipeHandler); API.registerUsageHandler(coffeeMachineRecipeHandler); + AtomicReconstructorRecipeHandler atomicReconstructorRecipeHandler = new AtomicReconstructorRecipeHandler(); + API.registerRecipeHandler(atomicReconstructorRecipeHandler); + API.registerUsageHandler(atomicReconstructorRecipeHandler); + BookletInfoRecipeHandler bookletInfoRecipeHandler = new BookletInfoRecipeHandler(); API.registerRecipeHandler(bookletInfoRecipeHandler); API.registerUsageHandler(bookletInfoRecipeHandler); diff --git a/src/main/java/ellpeck/actuallyadditions/recipe/AtomicReconstructorRecipeHandler.java b/src/main/java/ellpeck/actuallyadditions/recipe/ReconstructorRecipeHandler.java similarity index 97% rename from src/main/java/ellpeck/actuallyadditions/recipe/AtomicReconstructorRecipeHandler.java rename to src/main/java/ellpeck/actuallyadditions/recipe/ReconstructorRecipeHandler.java index 45636c3ff..1abf1314b 100644 --- a/src/main/java/ellpeck/actuallyadditions/recipe/AtomicReconstructorRecipeHandler.java +++ b/src/main/java/ellpeck/actuallyadditions/recipe/ReconstructorRecipeHandler.java @@ -16,7 +16,7 @@ import net.minecraftforge.oredict.OreDictionary; import java.util.ArrayList; import java.util.Objects; -public class AtomicReconstructorRecipeHandler{ +public class ReconstructorRecipeHandler{ public static ArrayList recipes = new ArrayList(); diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityAtomicReconstructor.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityAtomicReconstructor.java index 4bde4b51b..a778251b8 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityAtomicReconstructor.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityAtomicReconstructor.java @@ -17,7 +17,7 @@ import ellpeck.actuallyadditions.config.values.ConfigIntValues; import ellpeck.actuallyadditions.misc.DamageSources; import ellpeck.actuallyadditions.network.PacketAtomicReconstructor; import ellpeck.actuallyadditions.network.PacketHandler; -import ellpeck.actuallyadditions.recipe.AtomicReconstructorRecipeHandler; +import ellpeck.actuallyadditions.recipe.ReconstructorRecipeHandler; import ellpeck.actuallyadditions.util.WorldPos; import ellpeck.actuallyadditions.util.WorldUtil; import net.minecraft.block.Block; @@ -67,7 +67,7 @@ public class TileEntityAtomicReconstructor extends TileEntityBase implements IEn for(int reachY = -range; reachY < range+1; reachY++){ if(this.storage.getEnergyStored() >= usePerBlock){ WorldPos pos = new WorldPos(worldObj, coordsBlock.getX()+reachX, coordsBlock.getY()+reachY, coordsBlock.getZ()+reachZ); - AtomicReconstructorRecipeHandler.Recipe recipe = AtomicReconstructorRecipeHandler.getRecipe(new ItemStack(pos.getBlock(), pos.getMetadata())); + ReconstructorRecipeHandler.Recipe recipe = ReconstructorRecipeHandler.getRecipe(new ItemStack(pos.getBlock(), pos.getMetadata())); if(recipe != null){ ItemStack output = recipe.getFirstOutput(); if(output != null){ @@ -93,7 +93,7 @@ public class TileEntityAtomicReconstructor extends TileEntityBase implements IEn if(this.storage.getEnergyStored() >= usePerBlock){ ItemStack stack = item.getEntityItem(); if(stack != null){ - AtomicReconstructorRecipeHandler.Recipe recipe = AtomicReconstructorRecipeHandler.getRecipe(stack); + ReconstructorRecipeHandler.Recipe recipe = ReconstructorRecipeHandler.getRecipe(stack); if(recipe != null){ ItemStack output = recipe.getFirstOutput(); if(output != null){