diff --git a/CHANGELOG.md b/CHANGELOG.md index 2393bd1c9..9ef0bb040 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,8 @@ - Handle breaking and placing blocks better for Constructor and Destructor (way2muchnoise) - Updated Forge to 2226 (raoulvdberge) - Updated Chinese translation (TartaricAcid) +- Added filtering slots for the Crafting Monitor (raoulvdberge) +- Added way to hide tasks created in an automated way in the Crafting Monitor (raoulvdberge) ### 1.3.5 - Fixed TPS lag on very large crafting tasks (way2muchnoise) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/task/ICraftingTask.java b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/task/ICraftingTask.java index c62bcaca2..842d37d07 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/task/ICraftingTask.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/task/ICraftingTask.java @@ -21,6 +21,7 @@ public interface ICraftingTask { String NBT_PATTERN_STACK = "PatternStack"; String NBT_PATTERN_CONTAINER = "PatternContainer"; String NBT_REQUESTED = "Requested"; + String NBT_AUTOMATED = "Automated"; /** * Calculates what this task will do, but doesn't run the task yet. @@ -76,6 +77,7 @@ public interface ICraftingTask { tag.setString(NBT_PATTERN_ID, getPattern().getId()); tag.setTag(NBT_PATTERN_STACK, getPattern().getStack().serializeNBT()); tag.setLong(NBT_PATTERN_CONTAINER, getPattern().getContainer().getPosition().toLong()); + tag.setBoolean(NBT_AUTOMATED, isAutomated()); if (getRequested() != null) { tag.setTag(NBT_REQUESTED, getRequested().serializeNBT()); @@ -129,7 +131,7 @@ public interface ICraftingTask { List getPreviewStacks(); /** - * @return whether this crafting task is created in an automated way + * @return whether this crafting task is created in an automated way (through a Crafting Upgrade or the "Trigger task with redstone signal" option in the Crafter) for example */ boolean isAutomated(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java index 0fcd2450d..5e2681499 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java @@ -38,7 +38,6 @@ public class CraftingTask implements ICraftingTask { public static final String NBT_TO_TAKE_FLUIDS = "ToTakeFluids"; public static final String NBT_TO_INSERT_ITEMS = "ToInsertItems"; public static final String NBT_TO_INSERT_FLUIDS = "ToInsertFluids"; - public static final String NBT_AUTOMATED = "Automated"; private INetworkMaster network; @Nullable @@ -492,8 +491,6 @@ public class CraftingTask implements ICraftingTask { tag.setTag(NBT_TO_INSERT_FLUIDS, toInsertFluidsList); - tag.setBoolean(NBT_AUTOMATED, automated); - return tag; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCraftingMonitor.java index 19d2cd95c..698b6d530 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCraftingMonitor.java @@ -9,6 +9,7 @@ import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode; import com.raoulvdberge.refinedstorage.item.filter.Filter; import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor; import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor; +import com.raoulvdberge.refinedstorage.tile.data.TileDataManager; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -24,6 +25,9 @@ import java.util.List; public class NetworkNodeCraftingMonitor extends NetworkNode implements ICraftingMonitor { public static final String ID = "crafting_monitor"; + private static final String NBT_VIEW_AUTOMATED = "ViewAutomated"; + + private boolean viewAutomated = true; private List filters = new ArrayList<>(); private ItemHandlerFilter filter = new ItemHandlerFilter(filters, new ArrayList<>(), new IItemHandlerListener() { private ItemHandlerListenerNetworkNode base = new ItemHandlerListenerNetworkNode(NetworkNodeCraftingMonitor.this); @@ -102,6 +106,8 @@ public class NetworkNodeCraftingMonitor extends NetworkNode implements ICrafting RSUtils.writeItems(filter, 0, tag); + tag.setBoolean(NBT_VIEW_AUTOMATED, viewAutomated); + return tag; } @@ -110,6 +116,24 @@ public class NetworkNodeCraftingMonitor extends NetworkNode implements ICrafting super.read(tag); RSUtils.readItems(filter, 0, tag); + + if (tag.hasKey(NBT_VIEW_AUTOMATED)) { + viewAutomated = tag.getBoolean(NBT_VIEW_AUTOMATED); + } + } + + @Override + public boolean canViewAutomated() { + return holder.world().isRemote ? TileCraftingMonitor.VIEW_AUTOMATED.getValue() : viewAutomated; + } + + @Override + public void onViewAutomatedChanged(boolean viewAutomated) { + TileDataManager.setParameter(TileCraftingMonitor.VIEW_AUTOMATED, viewAutomated); + } + + public void setViewAutomated(boolean viewAutomated) { + this.viewAutomated = viewAutomated; } public ItemHandlerFilter getFilter() { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerCraftingMonitor.java index d9cb56f8c..f217be14d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerCraftingMonitor.java @@ -8,11 +8,13 @@ import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import net.minecraftforge.items.SlotItemHandler; +import javax.annotation.Nullable; + public class ContainerCraftingMonitor extends ContainerBase { private ICraftingMonitor craftingMonitor; - public ContainerCraftingMonitor(ICraftingMonitor craftingMonitor, EntityPlayer player) { - super(craftingMonitor instanceof TileCraftingMonitor ? (TileCraftingMonitor) craftingMonitor : null, player); + public ContainerCraftingMonitor(ICraftingMonitor craftingMonitor, @Nullable TileCraftingMonitor craftingMonitorTile, EntityPlayer player) { + super(craftingMonitorTile, player); this.craftingMonitor = craftingMonitor; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGrid.java index 8a5e9ba1f..03b5d33c6 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGrid.java @@ -17,6 +17,8 @@ import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import net.minecraftforge.items.SlotItemHandler; +import javax.annotation.Nullable; + public class ContainerGrid extends ContainerBase { public static final int TAB_WIDTH = 28; public static final int TAB_HEIGHT = 31; @@ -27,7 +29,7 @@ public class ContainerGrid extends ContainerBase { private SlotGridCraftingResult craftingResultSlot; private SlotDisabled patternResultSlot; - public ContainerGrid(IGrid grid, IGridDisplay display, TileGrid gridTile, EntityPlayer player) { + public ContainerGrid(IGrid grid, IGridDisplay display, @Nullable TileGrid gridTile, EntityPlayer player) { super(gridTile, player); this.grid = grid; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingMonitor.java index 9e07a8675..98f221c41 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingMonitor.java @@ -5,6 +5,7 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftin import com.raoulvdberge.refinedstorage.api.render.IElementDrawer; import com.raoulvdberge.refinedstorage.api.render.IElementDrawers; import com.raoulvdberge.refinedstorage.container.ContainerCraftingMonitor; +import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonCraftingMonitorViewAutomated; import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonRedstoneMode; import com.raoulvdberge.refinedstorage.network.MessageCraftingMonitorCancel; import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor; @@ -67,6 +68,8 @@ public class GuiCraftingMonitor extends GuiBase { addSideButton(new SideButtonRedstoneMode(this, craftingMonitor.getRedstoneModeParameter())); } + addSideButton(new SideButtonCraftingMonitorViewAutomated(this, craftingMonitor)); + String cancel = t("gui.cancel"); String cancelAll = t("misc.refinedstorage:cancel_all"); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiHandler.java index d2efdb942..9f670a835 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiHandler.java @@ -52,7 +52,7 @@ public class GuiHandler implements IGuiHandler { case RSGui.INTERFACE: return new ContainerInterface((TileInterface) tile, player); case RSGui.CRAFTING_MONITOR: - return new ContainerCraftingMonitor(((TileCraftingMonitor) tile).getNode(), player); + return new ContainerCraftingMonitor(((TileCraftingMonitor) tile).getNode(), (TileCraftingMonitor) tile, player); case RSGui.WIRELESS_TRANSMITTER: return new ContainerWirelessTransmitter((TileWirelessTransmitter) tile, player); case RSGui.CRAFTER: @@ -186,11 +186,11 @@ public class GuiHandler implements IGuiHandler { private GuiCraftingMonitor getWirelessCraftingMonitorGui(EntityPlayer player, int hand, int controllerDimension) { WirelessCraftingMonitor craftingMonitor = getWirelessCraftingMonitor(player, hand, controllerDimension); - return new GuiCraftingMonitor(new ContainerCraftingMonitor(craftingMonitor, player), craftingMonitor); + return new GuiCraftingMonitor(new ContainerCraftingMonitor(craftingMonitor, null, player), craftingMonitor); } private ContainerCraftingMonitor getWirelessCraftingMonitorContainer(EntityPlayer player, int hand, int controllerDimension) { - return new ContainerCraftingMonitor(getWirelessCraftingMonitor(player, hand, controllerDimension), player); + return new ContainerCraftingMonitor(getWirelessCraftingMonitor(player, hand, controllerDimension), null, player); } private ContainerFilter getFilterContainer(EntityPlayer player, int hand) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/sidebutton/SideButtonCraftingMonitorViewAutomated.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/sidebutton/SideButtonCraftingMonitorViewAutomated.java new file mode 100644 index 000000000..b2bd67cb3 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/sidebutton/SideButtonCraftingMonitorViewAutomated.java @@ -0,0 +1,30 @@ +package com.raoulvdberge.refinedstorage.gui.sidebutton; + +import com.raoulvdberge.refinedstorage.gui.GuiBase; +import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor; +import net.minecraft.util.text.TextFormatting; + +public class SideButtonCraftingMonitorViewAutomated extends SideButton { + private ICraftingMonitor craftingMonitor; + + public SideButtonCraftingMonitorViewAutomated(GuiBase gui, ICraftingMonitor craftingMonitor) { + super(gui); + + this.craftingMonitor = craftingMonitor; + } + + @Override + public String getTooltip() { + return TextFormatting.GREEN + GuiBase.t("sidebutton.refinedstorage:crafting_monitor.view_automated") + TextFormatting.RESET + "\n" + GuiBase.t("gui." + (craftingMonitor.canViewAutomated() ? "yes" : "no")); + } + + @Override + protected void drawButtonIcon(int x, int y) { + gui.drawTexture(x, y, craftingMonitor.canViewAutomated() ? 0 : 16, 144, 16, 16); + } + + @Override + public void actionPerformed() { + craftingMonitor.onViewAutomatedChanged(!craftingMonitor.canViewAutomated()); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessCraftingMonitor.java index c4b9204ea..e4cc72f7e 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessCraftingMonitor.java @@ -5,14 +5,36 @@ import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessCraftingMonitor; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; public class ItemWirelessCraftingMonitor extends ItemNetworkItem { + private static final String NBT_VIEW_AUTOMATED = "ViewAutomated"; + public ItemWirelessCraftingMonitor() { super("wireless_crafting_monitor"); } + @Override + public void initializeDefaults(NBTTagCompound tag) { + super.initializeDefaults(tag); + + tag.setBoolean(NBT_VIEW_AUTOMATED, true); + } + @Override public INetworkItem provide(INetworkItemHandler handler, EntityPlayer player, ItemStack stack) { return new NetworkItemWirelessCraftingMonitor(handler, player, stack); } + + public static void setViewAutomated(ItemStack stack, boolean viewAutomated) { + if (!stack.hasTagCompound()) { + stack.setTagCompound(new NBTTagCompound()); + } + + stack.getTagCompound().setBoolean(NBT_VIEW_AUTOMATED, viewAutomated); + } + + public static boolean canViewAutomated(ItemStack stack) { + return stack.hasTagCompound() && stack.getTagCompound().hasKey(NBT_VIEW_AUTOMATED) && stack.getTagCompound().getBoolean(NBT_VIEW_AUTOMATED); + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageCraftingMonitorElements.java b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageCraftingMonitorElements.java index 4baee6c43..5dc19a7c7 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageCraftingMonitorElements.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageCraftingMonitorElements.java @@ -50,6 +50,10 @@ public class MessageCraftingMonitorElements implements IMessage, IMessageHandler for (ICraftingTask task : craftingMonitor.getTasks()) { ItemStack stack = task.getRequested(); + if (!craftingMonitor.canViewAutomated() && task.isAutomated()) { + continue; + } + if (stack == null || GridFilterFilter.accepts(craftingMonitor.getFilters(), stack, Item.REGISTRY.getNameForObject(stack.getItem()).getResourceDomain())) { elements.addAll(task.getCraftingMonitorElements()); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessCraftingMonitorViewAutomated.java b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessCraftingMonitorViewAutomated.java new file mode 100644 index 000000000..8ed98ddf4 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessCraftingMonitorViewAutomated.java @@ -0,0 +1,44 @@ +package com.raoulvdberge.refinedstorage.network; + +import com.raoulvdberge.refinedstorage.container.ContainerCraftingMonitor; +import com.raoulvdberge.refinedstorage.item.ItemWirelessCraftingMonitor; +import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor; +import com.raoulvdberge.refinedstorage.tile.craftingmonitor.WirelessCraftingMonitor; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; + +public class MessageWirelessCraftingMonitorViewAutomated extends MessageHandlerPlayerToServer implements IMessage { + private boolean viewAutomated; + + public MessageWirelessCraftingMonitorViewAutomated() { + } + + public MessageWirelessCraftingMonitorViewAutomated(boolean viewAutomated) { + this.viewAutomated = viewAutomated; + } + + @Override + public void fromBytes(ByteBuf buf) { + viewAutomated = buf.readBoolean(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeBoolean(viewAutomated); + } + + @Override + public void handle(MessageWirelessCraftingMonitorViewAutomated message, EntityPlayerMP player) { + if (player.openContainer instanceof ContainerCraftingMonitor) { + ICraftingMonitor craftingMonitor = ((ContainerCraftingMonitor) player.openContainer).getCraftingMonitor(); + + if (craftingMonitor instanceof WirelessCraftingMonitor) { + ItemStack stack = ((WirelessCraftingMonitor) craftingMonitor).getStack(); + + ItemWirelessCraftingMonitor.setViewAutomated(stack, message.viewAutomated); + } + } + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java index 52653f0b2..ff073aa50 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java @@ -123,6 +123,7 @@ public class ProxyCommon { RS.INSTANCE.network.registerMessage(MessageSecurityManagerUpdate.class, MessageSecurityManagerUpdate.class, id++, Side.SERVER); RS.INSTANCE.network.registerMessage(MessageWirelessFluidGridSettingsUpdate.class, MessageWirelessFluidGridSettingsUpdate.class, id++, Side.SERVER); RS.INSTANCE.network.registerMessage(MessageNodeRemove.class, MessageNodeRemove.class, id++, Side.CLIENT); + RS.INSTANCE.network.registerMessage(MessageWirelessCraftingMonitorViewAutomated.class, MessageWirelessCraftingMonitorViewAutomated.class, id++, Side.SERVER); NetworkRegistry.INSTANCE.registerGuiHandler(RS.INSTANCE, new GuiHandler()); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/ICraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/ICraftingMonitor.java index 63196591e..96f841ea5 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/ICraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/ICraftingMonitor.java @@ -26,5 +26,9 @@ public interface ICraftingMonitor { ItemHandlerBasic getFilter(); + boolean canViewAutomated(); + + void onViewAutomatedChanged(boolean viewAutomated); + boolean isActive(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java index 5e947f21f..95e2a1e5c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java @@ -2,10 +2,35 @@ package com.raoulvdberge.refinedstorage.tile.craftingmonitor; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCraftingMonitor; import com.raoulvdberge.refinedstorage.tile.TileNode; +import com.raoulvdberge.refinedstorage.tile.data.ITileDataConsumer; +import com.raoulvdberge.refinedstorage.tile.data.ITileDataProducer; +import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; +import net.minecraft.network.datasync.DataSerializers; import javax.annotation.Nonnull; public class TileCraftingMonitor extends TileNode { + public static final TileDataParameter VIEW_AUTOMATED = new TileDataParameter<>(DataSerializers.BOOLEAN, true, new ITileDataProducer() { + @Override + public Boolean getValue(TileCraftingMonitor tile) { + return tile.getNode().canViewAutomated(); + } + }, new ITileDataConsumer() { + @Override + public void setValue(TileCraftingMonitor tile, Boolean value) { + tile.getNode().setViewAutomated(value); + tile.getNode().markDirty(); + + if (tile.getNode().getNetwork() != null) { + tile.getNode().getNetwork().sendCraftingMonitorUpdate(); + } + } + }); + + public TileCraftingMonitor() { + dataManager.addWatchedParameter(VIEW_AUTOMATED); + } + @Override @Nonnull public NetworkNodeCraftingMonitor createNode() { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/WirelessCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/WirelessCraftingMonitor.java index 4d0844001..0592a4886 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/WirelessCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/WirelessCraftingMonitor.java @@ -1,11 +1,13 @@ package com.raoulvdberge.refinedstorage.tile.craftingmonitor; +import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RSUtils; import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFilter; import com.raoulvdberge.refinedstorage.item.ItemWirelessCraftingMonitor; import com.raoulvdberge.refinedstorage.item.filter.Filter; +import com.raoulvdberge.refinedstorage.network.MessageWirelessCraftingMonitorViewAutomated; import com.raoulvdberge.refinedstorage.tile.TileController; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import net.minecraft.entity.player.EntityPlayerMP; @@ -24,6 +26,7 @@ public class WirelessCraftingMonitor implements ICraftingMonitor { private ItemStack stack; private int controllerDimension; private BlockPos controller; + private boolean viewAutomated; private List filters = new ArrayList<>(); private ItemHandlerFilter filter = new ItemHandlerFilter(filters, new ArrayList<>(), null) { @@ -49,6 +52,7 @@ public class WirelessCraftingMonitor implements ICraftingMonitor { this.stack = stack; this.controllerDimension = controllerDimension; this.controller = new BlockPos(ItemWirelessCraftingMonitor.getX(stack), ItemWirelessCraftingMonitor.getY(stack), ItemWirelessCraftingMonitor.getZ(stack)); + this.viewAutomated = ItemWirelessCraftingMonitor.canViewAutomated(stack); if (stack.hasTagCompound()) { for (int i = 0; i < 4; ++i) { @@ -102,6 +106,18 @@ public class WirelessCraftingMonitor implements ICraftingMonitor { return filter; } + @Override + public boolean canViewAutomated() { + return viewAutomated; + } + + @Override + public void onViewAutomatedChanged(boolean viewAutomated) { + RS.INSTANCE.network.sendToServer(new MessageWirelessCraftingMonitorViewAutomated(viewAutomated)); + + this.viewAutomated = viewAutomated; + } + private TileController getController() { World world = DimensionManager.getWorld(controllerDimension); @@ -114,6 +130,10 @@ public class WirelessCraftingMonitor implements ICraftingMonitor { return null; } + public ItemStack getStack() { + return stack; + } + @Override public boolean isActive() { return true; diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index ee38071c4..ee2d2ea06 100755 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -134,6 +134,8 @@ sidebutton.refinedstorage:grid.size.1=Small sidebutton.refinedstorage:grid.size.2=Medium sidebutton.refinedstorage:grid.size.3=Large +sidebutton.refinedstorage:crafting_monitor.view_automated=View tasks started in an automated way + sidebutton.refinedstorage:mode=Mode sidebutton.refinedstorage:mode.whitelist=Whitelist sidebutton.refinedstorage:mode.blacklist=Blacklist