diff --git a/src/main/java/storagecraft/StorageCraft.java b/src/main/java/storagecraft/StorageCraft.java index 31dbb81c6..794f017f0 100644 --- a/src/main/java/storagecraft/StorageCraft.java +++ b/src/main/java/storagecraft/StorageCraft.java @@ -15,7 +15,7 @@ import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper; import storagecraft.item.ItemStorageCell; import storagecraft.proxy.CommonProxy; -@Mod(modid = StorageCraft.ID, version = StorageCraft.VERSION) +@Mod(modid = StorageCraft.ID, version = StorageCraft.VERSION, dependencies = "required-after:JEI@[2.18,);") public final class StorageCraft { public static final String ID = "storagecraft"; diff --git a/src/main/java/storagecraft/gui/GuiBase.java b/src/main/java/storagecraft/gui/GuiBase.java index 01e54805b..fec2e4c37 100644 --- a/src/main/java/storagecraft/gui/GuiBase.java +++ b/src/main/java/storagecraft/gui/GuiBase.java @@ -198,7 +198,7 @@ public abstract class GuiBase extends GuiContainer public void drawTexture(int x, int y, int textureX, int textureY, int width, int height) { - this.drawTexturedModalRect(x, y, textureX, textureY, width, height); + drawTexturedModalRect(x, y, textureX, textureY, width, height); } public String t(String name, Object... format) diff --git a/src/main/java/storagecraft/jei/PluginStorageCraft.java b/src/main/java/storagecraft/jei/PluginStorageCraft.java new file mode 100644 index 000000000..628b3e5e5 --- /dev/null +++ b/src/main/java/storagecraft/jei/PluginStorageCraft.java @@ -0,0 +1,45 @@ +package storagecraft.jei; + +import mezz.jei.api.IGuiHelper; +import mezz.jei.api.IItemRegistry; +import mezz.jei.api.IJeiHelpers; +import mezz.jei.api.IModPlugin; +import mezz.jei.api.IModRegistry; +import mezz.jei.api.IRecipeRegistry; +import mezz.jei.api.JEIPlugin; + +@JEIPlugin +public class PluginStorageCraft implements IModPlugin +{ + private IItemRegistry itemRegistry; + private IJeiHelpers jeiHelpers; + + @Override + public void onJeiHelpersAvailable(IJeiHelpers jeiHelpers) + { + this.jeiHelpers = jeiHelpers; + } + + @Override + public void onItemRegistryAvailable(IItemRegistry itemRegistry) + { + this.itemRegistry = itemRegistry; + } + + @Override + public void register(IModRegistry registry) + { + IGuiHelper guiHelper = jeiHelpers.getGuiHelper(); + + registry.addRecipeCategories(new SoldererRecipeCategory(guiHelper)); + + registry.addRecipeHandlers(new SoldererRecipeHandler()); + + registry.addRecipes(SoldererRecipeMaker.getRecipes()); + } + + @Override + public void onRecipeRegistryAvailable(IRecipeRegistry recipeRegistry) + { + } +} diff --git a/src/main/java/storagecraft/jei/SoldererRecipeCategory.java b/src/main/java/storagecraft/jei/SoldererRecipeCategory.java new file mode 100644 index 000000000..91f662827 --- /dev/null +++ b/src/main/java/storagecraft/jei/SoldererRecipeCategory.java @@ -0,0 +1,78 @@ +package storagecraft.jei; + +import mezz.jei.api.IGuiHelper; +import mezz.jei.api.gui.IDrawable; +import mezz.jei.api.gui.IGuiItemStackGroup; +import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.recipe.IRecipeCategory; +import mezz.jei.api.recipe.IRecipeWrapper; +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; + +public class SoldererRecipeCategory implements IRecipeCategory +{ + private IDrawable background; + + public SoldererRecipeCategory(IGuiHelper helper) + { + background = helper.createDrawable(new ResourceLocation("storagecraft", "textures/gui/solderer.png"), 0, 0, 176, 177); + } + + @Override + public String getUid() + { + return "storagecraft.solderer"; + } + + @Override + public String getTitle() + { + return StatCollector.translateToLocal("gui.storagecraft:solderer"); + } + + @Override + public IDrawable getBackground() + { + return background; + } + + @Override + public void drawExtras(Minecraft minecraft) + { + } + + @Override + public void drawAnimations(Minecraft minecraft) + { + } + + @Override + public void setRecipe(IRecipeLayout recipeLayout, IRecipeWrapper recipeWrapper) + { + IGuiItemStackGroup group = recipeLayout.getItemStacks(); + + int x = 44; + int y = 20; + + for (int i = 0; i < 3; ++i) + { + group.init(i, true, x, y); + + y += 18; + } + + group.init(3, false, 134, 38); + + if (recipeWrapper instanceof SoldererRecipeWrapper) + { + for (int i = 0; i < 3; ++i) + { + group.set(i, (ItemStack) recipeWrapper.getInputs().get(i)); + } + + group.set(3, (ItemStack) recipeWrapper.getOutputs().get(0)); + } + } +} diff --git a/src/main/java/storagecraft/jei/SoldererRecipeHandler.java b/src/main/java/storagecraft/jei/SoldererRecipeHandler.java new file mode 100644 index 000000000..d33902be5 --- /dev/null +++ b/src/main/java/storagecraft/jei/SoldererRecipeHandler.java @@ -0,0 +1,31 @@ +package storagecraft.jei; + +import mezz.jei.api.recipe.IRecipeHandler; +import mezz.jei.api.recipe.IRecipeWrapper; + +public class SoldererRecipeHandler implements IRecipeHandler +{ + @Override + public Class getRecipeClass() + { + return SoldererRecipeWrapper.class; + } + + @Override + public String getRecipeCategoryUid() + { + return "storagecraft.solderer"; + } + + @Override + public IRecipeWrapper getRecipeWrapper(SoldererRecipeWrapper recipe) + { + return recipe; + } + + @Override + public boolean isRecipeValid(SoldererRecipeWrapper recipe) + { + return true; + } +} diff --git a/src/main/java/storagecraft/jei/SoldererRecipeMaker.java b/src/main/java/storagecraft/jei/SoldererRecipeMaker.java new file mode 100644 index 000000000..f559b66b6 --- /dev/null +++ b/src/main/java/storagecraft/jei/SoldererRecipeMaker.java @@ -0,0 +1,30 @@ +package storagecraft.jei; + +import java.util.ArrayList; +import java.util.List; +import net.minecraft.item.ItemStack; +import storagecraft.tile.solderer.ISoldererRecipe; +import storagecraft.tile.solderer.SoldererRegistry; + +public class SoldererRecipeMaker +{ + public static List getRecipes() + { + List recipes = new ArrayList(); + + for (ISoldererRecipe recipe : SoldererRegistry.recipes) + { + List inputs = new ArrayList(); + + inputs.add(recipe.getRow(0)); + inputs.add(recipe.getRow(1)); + inputs.add(recipe.getRow(2)); + + ItemStack output = recipe.getResult(); + + recipes.add(new SoldererRecipeWrapper(inputs, output)); + } + + return recipes; + } +} diff --git a/src/main/java/storagecraft/jei/SoldererRecipeWrapper.java b/src/main/java/storagecraft/jei/SoldererRecipeWrapper.java new file mode 100644 index 000000000..d1012f3e5 --- /dev/null +++ b/src/main/java/storagecraft/jei/SoldererRecipeWrapper.java @@ -0,0 +1,79 @@ +package storagecraft.jei; + +import com.google.common.base.Objects; +import java.util.Collections; +import java.util.List; +import mezz.jei.plugins.vanilla.VanillaRecipeWrapper; +import net.minecraft.item.ItemStack; + +public class SoldererRecipeWrapper extends VanillaRecipeWrapper +{ + private int hashCode; + private List inputs; + private ItemStack output; + + public SoldererRecipeWrapper(List inputs, ItemStack output) + { + this.inputs = inputs; + this.output = output; + + int available = 0; + + for (int i = 0; i < 3; ++i) + { + if (inputs.get(i) != null) + { + available = i; + + break; + } + } + + hashCode = Objects.hashCode(inputs.get(available), output); + } + + @Override + public List getInputs() + { + return inputs; + } + + @Override + public List getOutputs() + { + return Collections.singletonList(output); + } + + @Override + public boolean equals(Object obj) + { + if (!(obj instanceof SoldererRecipeWrapper)) + { + return false; + } + + SoldererRecipeWrapper other = (SoldererRecipeWrapper) obj; + + for (int i = 0; i < inputs.size(); i++) + { + if (!ItemStack.areItemStacksEqual(inputs.get(i), other.inputs.get(i))) + { + return false; + } + } + + return ItemStack.areItemStacksEqual(output, other.output); + } + + @Override + public int hashCode() + { + return hashCode; + } + + @Override + public String toString() + { + return inputs + " = " + output; + } +}