diff --git a/src/main/java/refinedstorage/gui/GuiBase.java b/src/main/java/refinedstorage/gui/GuiBase.java index 5c89c34cd..d0db6efd5 100755 --- a/src/main/java/refinedstorage/gui/GuiBase.java +++ b/src/main/java/refinedstorage/gui/GuiBase.java @@ -7,6 +7,7 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.translation.I18n; +import net.minecraftforge.fml.client.config.GuiCheckBox; import org.lwjgl.opengl.GL11; import refinedstorage.RefinedStorage; import refinedstorage.gui.sidebutton.SideButton; @@ -112,8 +113,14 @@ public abstract class GuiBase extends GuiContainer { } public GuiButton addButton(int x, int y, int w, int h, String text) { - GuiButton button = new GuiButton(lastButtonId++, x, y, w, h, text); + return addButton(new GuiButton(lastButtonId++, x, y, w, h, text)); + } + public GuiButton addCheckBox(int x, int y, String text) { + return addButton(new GuiCheckBox(lastButtonId++, x, y, text, false)); + } + + public GuiButton addButton(GuiButton button) { buttonList.add(button); return button; diff --git a/src/main/java/refinedstorage/gui/GuiCrafter.java b/src/main/java/refinedstorage/gui/GuiCrafter.java index aeb5fb23c..36fd4493e 100755 --- a/src/main/java/refinedstorage/gui/GuiCrafter.java +++ b/src/main/java/refinedstorage/gui/GuiCrafter.java @@ -45,7 +45,7 @@ public class GuiCrafter extends GuiBase { RenderHelper.enableGUIStandardItemLighting(); - for (int i = 0; i < 6; ++i) { + for (int i = 0; i < TileCrafter.PATTERN_SLOTS; ++i) { int x = 27; int y = 19 + (i * 18); diff --git a/src/main/java/refinedstorage/gui/GuiGrid.java b/src/main/java/refinedstorage/gui/GuiGrid.java index 156366df9..c3cd0377f 100755 --- a/src/main/java/refinedstorage/gui/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/GuiGrid.java @@ -7,6 +7,7 @@ import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.init.SoundEvents; import net.minecraft.inventory.Slot; +import net.minecraftforge.fml.client.config.GuiCheckBox; import net.minecraftforge.fml.common.FMLCommonHandler; import refinedstorage.RefinedStorage; import refinedstorage.block.EnumGridType; @@ -35,6 +36,7 @@ public class GuiGrid extends GuiBase { private List items = new ArrayList(); private GuiTextField searchField; + private GuiCheckBox processingCheckbox; private int hoveringSlot; private int hoveringItemId; @@ -65,6 +67,10 @@ public class GuiGrid extends GuiBase { addSideButton(new SideButtonGridSortingDirection(grid)); addSideButton(new SideButtonGridSortingType(grid)); addSideButton(new SideButtonGridSearchBoxMode(grid)); + + if (grid.getType() == EnumGridType.PATTERN) { + processingCheckbox = (GuiCheckBox) addCheckBox(x + 65, y + 148, t("misc.refinedstorage:processing")); + } } public IGrid getGrid() { @@ -302,7 +308,7 @@ public class GuiGrid extends GuiBase { if (grid.isConnected()) { if (clickedCreatePattern) { - RefinedStorage.NETWORK.sendToServer(new MessageGridPatternCreate((TileGrid) grid)); + RefinedStorage.NETWORK.sendToServer(new MessageGridPatternCreate((TileGrid) grid, processingCheckbox.isChecked())); } else if (isHoveringOverSlot() && container.getPlayer().inventory.getItemStack() != null && (clickedButton == 0 || clickedButton == 1)) { grid.onItemPush(-1, clickedButton == 1); } else if (isHoveringOverItemInSlot() && container.getPlayer().inventory.getItemStack() == null) { diff --git a/src/main/java/refinedstorage/item/ItemPattern.java b/src/main/java/refinedstorage/item/ItemPattern.java index 7458a2cf3..31fad5a7b 100755 --- a/src/main/java/refinedstorage/item/ItemPattern.java +++ b/src/main/java/refinedstorage/item/ItemPattern.java @@ -4,6 +4,8 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.text.TextFormatting; +import net.minecraft.util.text.translation.I18n; import net.minecraftforge.common.util.Constants; import java.util.List; @@ -11,6 +13,7 @@ import java.util.List; public class ItemPattern extends ItemBase { public static final String NBT_RESULT = "Result"; public static final String NBT_INGREDIENTS = "Ingredients"; + public static final String NBT_PROCESSING = "Processing"; public ItemPattern() { super("pattern"); @@ -20,6 +23,10 @@ public class ItemPattern extends ItemBase { public void addInformation(ItemStack pattern, EntityPlayer player, List list, boolean b) { if (hasResult(pattern)) { list.add(getResult(pattern).getDisplayName()); + + if (isProcessing(pattern)) { + list.add(TextFormatting.ITALIC + I18n.translateToLocal("misc.refinedstorage:processing") + TextFormatting.RESET); + } } } @@ -66,6 +73,22 @@ public class ItemPattern extends ItemBase { pattern.getTagCompound().setTag(NBT_RESULT, stackTag); } + public static void setProcessing(ItemStack pattern, boolean processing) { + if (pattern.getTagCompound() == null) { + pattern.setTagCompound(new NBTTagCompound()); + } + + pattern.getTagCompound().setBoolean(NBT_PROCESSING, processing); + } + + public static boolean isProcessing(ItemStack pattern) { + if (pattern.getTagCompound() == null) { + return false; + } + + return pattern.getTagCompound().getBoolean(NBT_PROCESSING); + } + public static boolean hasResult(ItemStack pattern) { if (pattern.getTagCompound() == null) { return false; diff --git a/src/main/java/refinedstorage/network/MessageGridPatternCreate.java b/src/main/java/refinedstorage/network/MessageGridPatternCreate.java index 6d4cf42cf..9e41e3802 100755 --- a/src/main/java/refinedstorage/network/MessageGridPatternCreate.java +++ b/src/main/java/refinedstorage/network/MessageGridPatternCreate.java @@ -12,14 +12,16 @@ public class MessageGridPatternCreate extends MessageHandlerPlayerToServer clientSideMachines = new ArrayList(); private List patterns = new ArrayList(); - private List craftingTasks = new ArrayList(); - private List craftingTasksToAdd = new ArrayList(); + private List craftingTasks = new ArrayList(); + private List craftingTasksToAdd = new ArrayList(); private Set visited = new HashSet(); @@ -174,10 +175,10 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor craftingTasks.addAll(craftingTasksToAdd); craftingTasksToAdd.clear(); - Iterator crIt = craftingTasks.iterator(); + Iterator crIt = craftingTasks.iterator(); while (crIt.hasNext()) { - CraftingTask task = crIt.next(); + ICraftingTask task = crIt.next(); if (ticks % task.getPattern().getSpeed() == 0 && task.update(this)) { crIt.remove(); @@ -250,11 +251,11 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor return itemGroups; } - public List getCraftingTasks() { + public List getCraftingTasks() { return craftingTasks; } - public void addCraftingTask(CraftingTask task) { + public void addCraftingTask(ICraftingTask task) { craftingTasksToAdd.add(task); } @@ -682,7 +683,7 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor CraftingPattern pattern = getPatternForItem(itemGroups.get(id).toItemStack()); if (pattern != null) { - addCraftingTask(new CraftingTask(pattern)); + addCraftingTask(new BasicCraftingTask(pattern)); quantity -= pattern.getResult().stackSize; } else { diff --git a/src/main/java/refinedstorage/tile/autocrafting/CraftingTask.java b/src/main/java/refinedstorage/tile/autocrafting/BasicCraftingTask.java similarity index 84% rename from src/main/java/refinedstorage/tile/autocrafting/CraftingTask.java rename to src/main/java/refinedstorage/tile/autocrafting/BasicCraftingTask.java index e50f7cdd7..f2af689f4 100755 --- a/src/main/java/refinedstorage/tile/autocrafting/CraftingTask.java +++ b/src/main/java/refinedstorage/tile/autocrafting/BasicCraftingTask.java @@ -1,18 +1,14 @@ package refinedstorage.tile.autocrafting; import net.minecraft.item.ItemStack; -import refinedstorage.item.ItemPattern; import refinedstorage.tile.TileController; -import java.util.ArrayList; -import java.util.List; - -public class CraftingTask { +public class BasicCraftingTask implements ICraftingTask { private CraftingPattern pattern; private boolean satisfied[]; private boolean childTasks[]; - public CraftingTask(CraftingPattern pattern) { + public BasicCraftingTask(CraftingPattern pattern) { this.pattern = pattern; this.satisfied = new boolean[pattern.getIngredients().length]; this.childTasks = new boolean[pattern.getIngredients().length]; @@ -39,7 +35,7 @@ public class CraftingTask { CraftingPattern pattern = controller.getPatternForItem(ingredient); if (pattern != null) { - controller.addCraftingTask(new CraftingTask(pattern)); + controller.addCraftingTask(new BasicCraftingTask(pattern)); childTasks[i] = true; diff --git a/src/main/java/refinedstorage/tile/autocrafting/ICraftingTask.java b/src/main/java/refinedstorage/tile/autocrafting/ICraftingTask.java new file mode 100755 index 000000000..7d52e63bf --- /dev/null +++ b/src/main/java/refinedstorage/tile/autocrafting/ICraftingTask.java @@ -0,0 +1,9 @@ +package refinedstorage.tile.autocrafting; + +import refinedstorage.tile.TileController; + +public interface ICraftingTask { + CraftingPattern getPattern(); + + boolean update(TileController controller); +} diff --git a/src/main/java/refinedstorage/tile/autocrafting/ProcessingCraftingTask.java b/src/main/java/refinedstorage/tile/autocrafting/ProcessingCraftingTask.java new file mode 100755 index 000000000..3c6a280f8 --- /dev/null +++ b/src/main/java/refinedstorage/tile/autocrafting/ProcessingCraftingTask.java @@ -0,0 +1,21 @@ +package refinedstorage.tile.autocrafting; + +import refinedstorage.tile.TileController; + +public class ProcessingCraftingTask implements ICraftingTask { + private CraftingPattern pattern; + + public ProcessingCraftingTask(CraftingPattern pattern) { + this.pattern = pattern; + } + + @Override + public CraftingPattern getPattern() { + return pattern; + } + + @Override + public boolean update(TileController controller) { + return false; + } +} diff --git a/src/main/java/refinedstorage/tile/autocrafting/TileCraftingMonitor.java b/src/main/java/refinedstorage/tile/autocrafting/TileCraftingMonitor.java index 1756df48d..7404443dc 100755 --- a/src/main/java/refinedstorage/tile/autocrafting/TileCraftingMonitor.java +++ b/src/main/java/refinedstorage/tile/autocrafting/TileCraftingMonitor.java @@ -29,7 +29,7 @@ public class TileCraftingMonitor extends TileMachine { if (connected) { buf.writeInt(controller.getCraftingTasks().size()); - for (CraftingTask task : controller.getCraftingTasks()) { + for (ICraftingTask task : controller.getCraftingTasks()) { ByteBufUtils.writeItemStack(buf, task.getPattern().getResult()); } } else { diff --git a/src/main/java/refinedstorage/tile/grid/TileGrid.java b/src/main/java/refinedstorage/tile/grid/TileGrid.java index 5afd9a4d1..5fdceed95 100755 --- a/src/main/java/refinedstorage/tile/grid/TileGrid.java +++ b/src/main/java/refinedstorage/tile/grid/TileGrid.java @@ -165,7 +165,7 @@ public class TileGrid extends TileMachine implements IGrid { } } - public void onCreatePattern() { + public void onCreatePattern(boolean processing) { ItemStack crafted = craftingResultInventory.getStackInSlot(0); if (patternsInventory.getStackInSlot(1) == null && patternsInventory.getStackInSlot(0) != null && patternsInventory.getStackInSlot(0).stackSize > 0) { @@ -174,6 +174,7 @@ public class TileGrid extends TileMachine implements IGrid { ItemStack pattern = new ItemStack(RefinedStorageItems.PATTERN); ItemPattern.setResult(pattern, crafted); + ItemPattern.setProcessing(pattern, processing); for (int i = 0; i < 9; ++i) { ItemStack ingredient = craftingInventory.getStackInSlot(i); diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index e2c039535..6a5dbaf23 100755 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -46,6 +46,7 @@ misc.refinedstorage:no=No misc.refinedstorage:start=Start misc.refinedstorage:clear=Clear misc.refinedstorage:priority=Priority +misc.refinedstorage:processing=Processing sidebutton.refinedstorage:compare.1=Compare Damage sidebutton.refinedstorage:compare.2=Compare NBT diff --git a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang index 8079a889d..0c3751ce5 100755 --- a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang +++ b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang @@ -46,6 +46,7 @@ misc.refinedstorage:no=Nee misc.refinedstorage:start=Start misc.refinedstorage:clear=Legen misc.refinedstorage:priority=Prioriteit +misc.refinedstorage:processing=Verwerking sidebutton.refinedstorage:compare.1=Vergelijken op damage sidebutton.refinedstorage:compare.2=Vergelijken op NBT