From 43369fbe297f9098a548f8aedc68713af2b36f44 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Thu, 5 May 2016 11:00:33 +0200 Subject: [PATCH] Craft if needed on interface --- CHANGELOG.md | 1 - .../container/ContainerInterface.java | 2 +- .../java/refinedstorage/proxy/ClientProxy.java | 1 + .../java/refinedstorage/proxy/CommonProxy.java | 3 ++- .../java/refinedstorage/tile/TileController.java | 12 +++++++++--- .../java/refinedstorage/tile/TileInterface.java | 13 +++++++++++++ .../tile/solderer/SoldererRecipeUpgrade.java | 2 ++ .../models/item/crafting_upgrade.json | 6 ++++++ .../textures/items/crafting_upgrade.png | Bin 0 -> 217 bytes 9 files changed, 34 insertions(+), 6 deletions(-) create mode 100755 src/main/resources/assets/refinedstorage/models/item/crafting_upgrade.json create mode 100755 src/main/resources/assets/refinedstorage/textures/items/crafting_upgrade.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 21ff6b281..6f0363991 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,6 @@ WIP **TODO** - Saving crafting task state - Cancelling crafting tasks -- "Craft if needed" upgrade on interface - Textures - Update wiki diff --git a/src/main/java/refinedstorage/container/ContainerInterface.java b/src/main/java/refinedstorage/container/ContainerInterface.java index cb80fc5a6..0db2922fd 100755 --- a/src/main/java/refinedstorage/container/ContainerInterface.java +++ b/src/main/java/refinedstorage/container/ContainerInterface.java @@ -32,7 +32,7 @@ public class ContainerInterface extends ContainerBase { addSlotToContainer(new SlotFiltered(tile.getUpgradesInventory(), i, 187, 6 + (i * 18), new IItemValidator() { @Override public boolean isValid(ItemStack stack) { - return stack.getItem() == RefinedStorageItems.UPGRADE && stack.getMetadata() == ItemUpgrade.TYPE_SPEED; + return stack.getItem() == RefinedStorageItems.UPGRADE && (stack.getMetadata() == ItemUpgrade.TYPE_SPEED || stack.getMetadata() == ItemUpgrade.TYPE_CRAFTING); } })); } diff --git a/src/main/java/refinedstorage/proxy/ClientProxy.java b/src/main/java/refinedstorage/proxy/ClientProxy.java index c4200f830..f7d43092d 100755 --- a/src/main/java/refinedstorage/proxy/ClientProxy.java +++ b/src/main/java/refinedstorage/proxy/ClientProxy.java @@ -90,6 +90,7 @@ public class ClientProxy extends CommonProxy { ModelLoader.setCustomModelResourceLocation(RefinedStorageItems.UPGRADE, 0, new ModelResourceLocation("refinedstorage:upgrade", "inventory")); ModelLoader.setCustomModelResourceLocation(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_RANGE, new ModelResourceLocation("refinedstorage:range_upgrade", "inventory")); ModelLoader.setCustomModelResourceLocation(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_SPEED, new ModelResourceLocation("refinedstorage:speed_upgrade", "inventory")); + ModelLoader.setCustomModelResourceLocation(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_CRAFTING, new ModelResourceLocation("refinedstorage:crafting_upgrade", "inventory")); // Blocks ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.CABLE), 0, new ModelResourceLocation("refinedstorage:cable", "inventory")); diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index 805972232..b6b1dcd1e 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -80,6 +80,7 @@ public class CommonProxy { registerBlock(RefinedStorageBlocks.GRID); registerBlock(RefinedStorageBlocks.CRAFTING_MONITOR); registerBlock(RefinedStorageBlocks.CRAFTER); + registerBlock(RefinedStorageBlocks.PROCESSING_PATTERN_ENCODER); registerBlock(RefinedStorageBlocks.DISK_DRIVE); registerBlock(RefinedStorageBlocks.STORAGE); registerBlock(RefinedStorageBlocks.EXTERNAL_STORAGE); @@ -94,7 +95,6 @@ public class CommonProxy { registerBlock(RefinedStorageBlocks.WIRELESS_TRANSMITTER); registerBlock(RefinedStorageBlocks.MACHINE_CASING); registerBlock(RefinedStorageBlocks.CABLE); - registerBlock(RefinedStorageBlocks.PROCESSING_PATTERN_ENCODER); registerItem(RefinedStorageItems.QUARTZ_ENRICHED_IRON); registerItem(RefinedStorageItems.STORAGE_DISK); @@ -417,6 +417,7 @@ public class CommonProxy { SoldererRegistry.addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_RANGE)); SoldererRegistry.addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_SPEED)); + SoldererRegistry.addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_CRAFTING)); // Storage Blocks SoldererRegistry.addRecipe(new SoldererRecipeStorage(EnumStorageType.TYPE_1K, ItemStoragePart.TYPE_1K)); diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index af1af758f..5f7f80a15 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -260,14 +260,20 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor craftingTasksToAdd.add(task); } - public boolean hasCraftingTaskWithPattern(CraftingPattern pattern, int flags) { + public int getAmountOfCraftingTasksWithPattern(CraftingPattern pattern, int flags) { + int amount = 0; + for (int i = 0; i < craftingTasks.size(); ++i) { if (craftingTasks.get(i).getPattern().comparePattern(pattern, flags)) { - return true; + amount++; } } - return false; + return amount; + } + + public boolean hasCraftingTaskWithPattern(CraftingPattern pattern, int flags) { + return getAmountOfCraftingTasksWithPattern(pattern, flags) > 0; } public void addCraftingTaskForPattern(CraftingPattern pattern) { diff --git a/src/main/java/refinedstorage/tile/TileInterface.java b/src/main/java/refinedstorage/tile/TileInterface.java index f1fbe1a0f..8605a6e81 100755 --- a/src/main/java/refinedstorage/tile/TileInterface.java +++ b/src/main/java/refinedstorage/tile/TileInterface.java @@ -12,6 +12,7 @@ import net.minecraft.util.text.ITextComponent; import refinedstorage.container.ContainerInterface; import refinedstorage.inventory.InventorySimple; import refinedstorage.item.ItemUpgrade; +import refinedstorage.tile.autocrafting.CraftingPattern; import refinedstorage.tile.config.ICompareConfig; import refinedstorage.util.InventoryUtils; @@ -117,6 +118,18 @@ public class TileInterface extends TileMachine implements ICompareConfig, ISided got.stackSize += took.stackSize; } } + + if (hasCrafting(upgradesInventory)) { + CraftingPattern pattern = controller.getPatternForItem(wanted, compare); + + if (pattern != null && took == null || took.stackSize != needed) { + int tasksToCreate = needed - controller.getAmountOfCraftingTasksWithPattern(pattern, compare); + + for (int j = 0; j < tasksToCreate; ++j) { + controller.addCraftingTaskForPattern(pattern); + } + } + } } } } else if (got != null) { diff --git a/src/main/java/refinedstorage/tile/solderer/SoldererRecipeUpgrade.java b/src/main/java/refinedstorage/tile/solderer/SoldererRecipeUpgrade.java index b957a6710..71cefbf69 100755 --- a/src/main/java/refinedstorage/tile/solderer/SoldererRecipeUpgrade.java +++ b/src/main/java/refinedstorage/tile/solderer/SoldererRecipeUpgrade.java @@ -32,6 +32,8 @@ public class SoldererRecipeUpgrade implements ISoldererRecipe { return new ItemStack(Items.ender_pearl); case ItemUpgrade.TYPE_SPEED: return new ItemStack(Blocks.redstone_block); + case ItemUpgrade.TYPE_CRAFTING: + return new ItemStack(Blocks.crafting_table); } return null; diff --git a/src/main/resources/assets/refinedstorage/models/item/crafting_upgrade.json b/src/main/resources/assets/refinedstorage/models/item/crafting_upgrade.json new file mode 100755 index 000000000..0f1f6f1f5 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/item/crafting_upgrade.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "refinedstorage:items/crafting_upgrade" + } +} diff --git a/src/main/resources/assets/refinedstorage/textures/items/crafting_upgrade.png b/src/main/resources/assets/refinedstorage/textures/items/crafting_upgrade.png new file mode 100755 index 0000000000000000000000000000000000000000..7fe85ab9358d2f43a0357f5e40cab4b08e100ec0 GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ zI&7X+oDDtpKF=)i8td#2j*ZtH-?KH%E@-)Au5*^5kg3x8?D5jGeSJVv89ZJ6T-G@y GGywnypF}zU literal 0 HcmV?d00001