Craft if needed on interface

This commit is contained in:
Raoul Van den Berge
2016-05-05 11:00:33 +02:00
parent c61982ef18
commit 43369fbe29
9 changed files with 34 additions and 6 deletions

View File

@@ -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);
}
}));
}

View File

@@ -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"));

View File

@@ -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));

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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;

View File

@@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "refinedstorage:items/crafting_upgrade"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 B