diff --git a/src/main/java/refinedstorage/api/RefinedStorageAPI.java b/src/main/java/refinedstorage/api/RefinedStorageAPI.java new file mode 100755 index 000000000..dd1005376 --- /dev/null +++ b/src/main/java/refinedstorage/api/RefinedStorageAPI.java @@ -0,0 +1,10 @@ +package refinedstorage.api; + +import refinedstorage.api.solderer.ISoldererRegistry; + +public final class RefinedStorageAPI { + /** + * The solderer registry, set in pre initialization. + */ + public static ISoldererRegistry SOLDERER_REGISTRY; +} diff --git a/src/main/java/refinedstorage/api/solderer/ISoldererRegistry.java b/src/main/java/refinedstorage/api/solderer/ISoldererRegistry.java new file mode 100755 index 000000000..83a003311 --- /dev/null +++ b/src/main/java/refinedstorage/api/solderer/ISoldererRegistry.java @@ -0,0 +1,31 @@ +package refinedstorage.api.solderer; + +import net.minecraftforge.items.IItemHandler; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.List; + +/** + * The recipe registry of the solderer. + */ +public interface ISoldererRegistry { + /** + * Adds a recipe to the registry. + * + * @param recipe The recipe to add + */ + void addRecipe(@Nonnull ISoldererRecipe recipe); + + /** + * @return A list with all the solderer recipes, do NOT modify + */ + List getRecipes(); + + /** + * @param items An item handler, where slots 0 - 2 are the row slots + * @return The recipe, or null if no recipe was found + */ + @Nullable + ISoldererRecipe getRecipe(@Nonnull IItemHandler items); +} diff --git a/src/main/java/refinedstorage/api/solderer/SoldererRegistry.java b/src/main/java/refinedstorage/apiimpl/solderer/SoldererRegistry.java similarity index 55% rename from src/main/java/refinedstorage/api/solderer/SoldererRegistry.java rename to src/main/java/refinedstorage/apiimpl/solderer/SoldererRegistry.java index eeaa73e2f..efed97dc7 100755 --- a/src/main/java/refinedstorage/api/solderer/SoldererRegistry.java +++ b/src/main/java/refinedstorage/apiimpl/solderer/SoldererRegistry.java @@ -1,44 +1,31 @@ -package refinedstorage.api.solderer; +package refinedstorage.apiimpl.solderer; -import com.google.common.collect.ImmutableList; import net.minecraftforge.items.IItemHandler; import refinedstorage.RefinedStorageUtils; +import refinedstorage.api.solderer.ISoldererRecipe; +import refinedstorage.api.solderer.ISoldererRegistry; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; -// @todo: Non API import +public class SoldererRegistry implements ISoldererRegistry { + private List recipes = new ArrayList(); -/** - * The recipe registry of the solderer. - */ -public class SoldererRegistry { - private static List recipes = new ArrayList(); - - /** - * Adds a recipe to the registry. - * - * @param recipe The recipe to add - */ - public static void addRecipe(@Nonnull ISoldererRecipe recipe) { + @Override + public void addRecipe(@Nonnull ISoldererRecipe recipe) { recipes.add(recipe); } - /** - * @return An immutable recipe list - */ - public static ImmutableList getRecipes() { - return ImmutableList.copyOf(recipes); + @Override + public List getRecipes() { + return recipes; } - /** - * @param items An item handler, where slots 0 - 2 are the row slots - * @return The recipe, or null if no recipe was found - */ + @Override @Nullable - public static ISoldererRecipe getRecipe(@Nonnull IItemHandler items) { + public ISoldererRecipe getRecipe(@Nonnull IItemHandler items) { for (ISoldererRecipe recipe : recipes) { boolean found = true; diff --git a/src/main/java/refinedstorage/jei/SoldererRecipeMaker.java b/src/main/java/refinedstorage/jei/SoldererRecipeMaker.java index e695ccba3..d042d2aa3 100755 --- a/src/main/java/refinedstorage/jei/SoldererRecipeMaker.java +++ b/src/main/java/refinedstorage/jei/SoldererRecipeMaker.java @@ -1,8 +1,8 @@ package refinedstorage.jei; import net.minecraft.item.ItemStack; +import refinedstorage.api.RefinedStorageAPI; import refinedstorage.api.solderer.ISoldererRecipe; -import refinedstorage.api.solderer.SoldererRegistry; import java.util.ArrayList; import java.util.List; @@ -11,7 +11,7 @@ public class SoldererRecipeMaker { public static List getRecipes() { List recipes = new ArrayList(); - for (ISoldererRecipe recipe : SoldererRegistry.getRecipes()) { + for (ISoldererRecipe recipe : RefinedStorageAPI.SOLDERER_REGISTRY.getRecipes()) { List inputs = new ArrayList(); inputs.add(recipe.getRow(0)); diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index 500ff7c0c..c2f1e7d8e 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -17,7 +17,7 @@ import net.minecraftforge.oredict.ShapedOreRecipe; import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageBlocks; import refinedstorage.RefinedStorageItems; -import refinedstorage.api.solderer.SoldererRegistry; +import refinedstorage.api.RefinedStorageAPI; import refinedstorage.apiimpl.network.NetworkMasterEventHandler; import refinedstorage.apiimpl.solderer.*; import refinedstorage.apiimpl.storage.NBTStorage; @@ -37,6 +37,8 @@ import static refinedstorage.RefinedStorage.ID; public class CommonProxy { public void preInit(FMLPreInitializationEvent e) { + RefinedStorageAPI.SOLDERER_REGISTRY = new SoldererRegistry(); + int id = 0; RefinedStorage.NETWORK.registerMessage(MessageTileContainerUpdate.class, MessageTileContainerUpdate.class, id++, Side.CLIENT); @@ -113,14 +115,14 @@ public class CommonProxy { OreDictionary.registerOre("itemSilicon", RefinedStorageItems.SILICON); // Processors - SoldererRegistry.addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_BASIC)); - SoldererRegistry.addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_IMPROVED)); - SoldererRegistry.addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_ADVANCED)); - SoldererRegistry.addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_SILICON)); + RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_BASIC)); + RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_IMPROVED)); + RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_ADVANCED)); + RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_SILICON)); - SoldererRegistry.addRecipe(new SoldererRecipeProcessor(ItemProcessor.TYPE_BASIC)); - SoldererRegistry.addRecipe(new SoldererRecipeProcessor(ItemProcessor.TYPE_IMPROVED)); - SoldererRegistry.addRecipe(new SoldererRecipeProcessor(ItemProcessor.TYPE_ADVANCED)); + RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeProcessor(ItemProcessor.TYPE_BASIC)); + RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeProcessor(ItemProcessor.TYPE_IMPROVED)); + RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeProcessor(ItemProcessor.TYPE_ADVANCED)); // Silicon GameRegistry.addSmelting(Items.QUARTZ, new ItemStack(RefinedStorageItems.SILICON), 0.5f); @@ -191,7 +193,7 @@ public class CommonProxy { ); // Disk Drive - SoldererRegistry.addRecipe(new SoldererRecipeBasic( + RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeBasic( new ItemStack(RefinedStorageBlocks.DISK_DRIVE), 500, new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), @@ -233,7 +235,7 @@ public class CommonProxy { ); // Crafting Grid - SoldererRegistry.addRecipe(new SoldererRecipeBasic( + RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeBasic( new ItemStack(RefinedStorageBlocks.GRID, 1, EnumGridType.CRAFTING.getId()), 500, new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), @@ -242,7 +244,7 @@ public class CommonProxy { )); // Pattern Grid - SoldererRegistry.addRecipe(new SoldererRecipeBasic( + RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeBasic( new ItemStack(RefinedStorageBlocks.GRID, 1, EnumGridType.PATTERN.getId()), 500, new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), @@ -438,9 +440,9 @@ public class CommonProxy { 'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON) ); - SoldererRegistry.addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_RANGE)); - SoldererRegistry.addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_SPEED)); - SoldererRegistry.addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_CRAFTING)); + RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_RANGE)); + RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_SPEED)); + RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_CRAFTING)); GameRegistry.addShapedRecipe(new ItemStack(RefinedStorageItems.UPGRADE, 1, ItemUpgrade.TYPE_STACK), "USU", @@ -451,10 +453,10 @@ public class CommonProxy { ); // Storage Blocks - SoldererRegistry.addRecipe(new SoldererRecipeStorage(EnumStorageType.TYPE_1K, ItemStoragePart.TYPE_1K)); - SoldererRegistry.addRecipe(new SoldererRecipeStorage(EnumStorageType.TYPE_4K, ItemStoragePart.TYPE_4K)); - SoldererRegistry.addRecipe(new SoldererRecipeStorage(EnumStorageType.TYPE_16K, ItemStoragePart.TYPE_16K)); - SoldererRegistry.addRecipe(new SoldererRecipeStorage(EnumStorageType.TYPE_64K, ItemStoragePart.TYPE_64K)); + RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeStorage(EnumStorageType.TYPE_1K, ItemStoragePart.TYPE_1K)); + RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeStorage(EnumStorageType.TYPE_4K, ItemStoragePart.TYPE_4K)); + RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeStorage(EnumStorageType.TYPE_16K, ItemStoragePart.TYPE_16K)); + RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeStorage(EnumStorageType.TYPE_64K, ItemStoragePart.TYPE_64K)); // Crafting Monitor GameRegistry.addRecipe(new ItemStack(RefinedStorageBlocks.CRAFTING_MONITOR), @@ -468,7 +470,7 @@ public class CommonProxy { ); // Interface - SoldererRegistry.addRecipe(new SoldererRecipeBasic( + RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeBasic( new ItemStack(RefinedStorageBlocks.INTERFACE), 200, new ItemStack(RefinedStorageBlocks.IMPORTER), diff --git a/src/main/java/refinedstorage/tile/TileSolderer.java b/src/main/java/refinedstorage/tile/TileSolderer.java index aa48d5b38..ae4fdd6de 100755 --- a/src/main/java/refinedstorage/tile/TileSolderer.java +++ b/src/main/java/refinedstorage/tile/TileSolderer.java @@ -11,8 +11,8 @@ import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageUtils; +import refinedstorage.api.RefinedStorageAPI; import refinedstorage.api.solderer.ISoldererRecipe; -import refinedstorage.api.solderer.SoldererRegistry; import refinedstorage.container.ContainerSolderer; import refinedstorage.inventory.BasicItemHandler; import refinedstorage.inventory.BasicItemValidator; @@ -45,7 +45,7 @@ public class TileSolderer extends TileSlave { if (items.getStackInSlot(1) == null && items.getStackInSlot(2) == null && items.getStackInSlot(3) == null) { stop(); } else { - ISoldererRecipe newRecipe = SoldererRegistry.getRecipe(items); + ISoldererRecipe newRecipe = RefinedStorageAPI.SOLDERER_REGISTRY.getRecipe(items); if (newRecipe == null) { stop(); @@ -112,7 +112,7 @@ public class TileSolderer extends TileSlave { RefinedStorageUtils.readItems(items, 0, nbt); RefinedStorageUtils.readItems(upgrades, 1, nbt); - recipe = SoldererRegistry.getRecipe(items); + recipe = RefinedStorageAPI.SOLDERER_REGISTRY.getRecipe(items); if (nbt.hasKey(NBT_WORKING)) { working = nbt.getBoolean(NBT_WORKING);