Added filter for ignoring tasks created in an automated way, fixes #867
This commit is contained in:
@@ -34,6 +34,8 @@
|
|||||||
- Handle breaking and placing blocks better for Constructor and Destructor (way2muchnoise)
|
- Handle breaking and placing blocks better for Constructor and Destructor (way2muchnoise)
|
||||||
- Updated Forge to 2226 (raoulvdberge)
|
- Updated Forge to 2226 (raoulvdberge)
|
||||||
- Updated Chinese translation (TartaricAcid)
|
- 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
|
### 1.3.5
|
||||||
- Fixed TPS lag on very large crafting tasks (way2muchnoise)
|
- Fixed TPS lag on very large crafting tasks (way2muchnoise)
|
||||||
|
@@ -21,6 +21,7 @@ public interface ICraftingTask {
|
|||||||
String NBT_PATTERN_STACK = "PatternStack";
|
String NBT_PATTERN_STACK = "PatternStack";
|
||||||
String NBT_PATTERN_CONTAINER = "PatternContainer";
|
String NBT_PATTERN_CONTAINER = "PatternContainer";
|
||||||
String NBT_REQUESTED = "Requested";
|
String NBT_REQUESTED = "Requested";
|
||||||
|
String NBT_AUTOMATED = "Automated";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculates what this task will do, but doesn't run the task yet.
|
* 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.setString(NBT_PATTERN_ID, getPattern().getId());
|
||||||
tag.setTag(NBT_PATTERN_STACK, getPattern().getStack().serializeNBT());
|
tag.setTag(NBT_PATTERN_STACK, getPattern().getStack().serializeNBT());
|
||||||
tag.setLong(NBT_PATTERN_CONTAINER, getPattern().getContainer().getPosition().toLong());
|
tag.setLong(NBT_PATTERN_CONTAINER, getPattern().getContainer().getPosition().toLong());
|
||||||
|
tag.setBoolean(NBT_AUTOMATED, isAutomated());
|
||||||
|
|
||||||
if (getRequested() != null) {
|
if (getRequested() != null) {
|
||||||
tag.setTag(NBT_REQUESTED, getRequested().serializeNBT());
|
tag.setTag(NBT_REQUESTED, getRequested().serializeNBT());
|
||||||
@@ -129,7 +131,7 @@ public interface ICraftingTask {
|
|||||||
List<ICraftingPreviewElement> getPreviewStacks();
|
List<ICraftingPreviewElement> 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();
|
boolean isAutomated();
|
||||||
}
|
}
|
||||||
|
@@ -38,7 +38,6 @@ public class CraftingTask implements ICraftingTask {
|
|||||||
public static final String NBT_TO_TAKE_FLUIDS = "ToTakeFluids";
|
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_ITEMS = "ToInsertItems";
|
||||||
public static final String NBT_TO_INSERT_FLUIDS = "ToInsertFluids";
|
public static final String NBT_TO_INSERT_FLUIDS = "ToInsertFluids";
|
||||||
public static final String NBT_AUTOMATED = "Automated";
|
|
||||||
|
|
||||||
private INetworkMaster network;
|
private INetworkMaster network;
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -492,8 +491,6 @@ public class CraftingTask implements ICraftingTask {
|
|||||||
|
|
||||||
tag.setTag(NBT_TO_INSERT_FLUIDS, toInsertFluidsList);
|
tag.setTag(NBT_TO_INSERT_FLUIDS, toInsertFluidsList);
|
||||||
|
|
||||||
tag.setBoolean(NBT_AUTOMATED, automated);
|
|
||||||
|
|
||||||
return tag;
|
return tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -9,6 +9,7 @@ import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
|
|||||||
import com.raoulvdberge.refinedstorage.item.filter.Filter;
|
import com.raoulvdberge.refinedstorage.item.filter.Filter;
|
||||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
|
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
|
||||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
@@ -24,6 +25,9 @@ import java.util.List;
|
|||||||
public class NetworkNodeCraftingMonitor extends NetworkNode implements ICraftingMonitor {
|
public class NetworkNodeCraftingMonitor extends NetworkNode implements ICraftingMonitor {
|
||||||
public static final String ID = "crafting_monitor";
|
public static final String ID = "crafting_monitor";
|
||||||
|
|
||||||
|
private static final String NBT_VIEW_AUTOMATED = "ViewAutomated";
|
||||||
|
|
||||||
|
private boolean viewAutomated = true;
|
||||||
private List<Filter> filters = new ArrayList<>();
|
private List<Filter> filters = new ArrayList<>();
|
||||||
private ItemHandlerFilter filter = new ItemHandlerFilter(filters, new ArrayList<>(), new IItemHandlerListener() {
|
private ItemHandlerFilter filter = new ItemHandlerFilter(filters, new ArrayList<>(), new IItemHandlerListener() {
|
||||||
private ItemHandlerListenerNetworkNode base = new ItemHandlerListenerNetworkNode(NetworkNodeCraftingMonitor.this);
|
private ItemHandlerListenerNetworkNode base = new ItemHandlerListenerNetworkNode(NetworkNodeCraftingMonitor.this);
|
||||||
@@ -102,6 +106,8 @@ public class NetworkNodeCraftingMonitor extends NetworkNode implements ICrafting
|
|||||||
|
|
||||||
RSUtils.writeItems(filter, 0, tag);
|
RSUtils.writeItems(filter, 0, tag);
|
||||||
|
|
||||||
|
tag.setBoolean(NBT_VIEW_AUTOMATED, viewAutomated);
|
||||||
|
|
||||||
return tag;
|
return tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,6 +116,24 @@ public class NetworkNodeCraftingMonitor extends NetworkNode implements ICrafting
|
|||||||
super.read(tag);
|
super.read(tag);
|
||||||
|
|
||||||
RSUtils.readItems(filter, 0, 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() {
|
public ItemHandlerFilter getFilter() {
|
||||||
|
@@ -8,11 +8,13 @@ import net.minecraft.inventory.Slot;
|
|||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraftforge.items.SlotItemHandler;
|
import net.minecraftforge.items.SlotItemHandler;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class ContainerCraftingMonitor extends ContainerBase {
|
public class ContainerCraftingMonitor extends ContainerBase {
|
||||||
private ICraftingMonitor craftingMonitor;
|
private ICraftingMonitor craftingMonitor;
|
||||||
|
|
||||||
public ContainerCraftingMonitor(ICraftingMonitor craftingMonitor, EntityPlayer player) {
|
public ContainerCraftingMonitor(ICraftingMonitor craftingMonitor, @Nullable TileCraftingMonitor craftingMonitorTile, EntityPlayer player) {
|
||||||
super(craftingMonitor instanceof TileCraftingMonitor ? (TileCraftingMonitor) craftingMonitor : null, player);
|
super(craftingMonitorTile, player);
|
||||||
|
|
||||||
this.craftingMonitor = craftingMonitor;
|
this.craftingMonitor = craftingMonitor;
|
||||||
|
|
||||||
|
@@ -17,6 +17,8 @@ import net.minecraft.inventory.Slot;
|
|||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraftforge.items.SlotItemHandler;
|
import net.minecraftforge.items.SlotItemHandler;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class ContainerGrid extends ContainerBase {
|
public class ContainerGrid extends ContainerBase {
|
||||||
public static final int TAB_WIDTH = 28;
|
public static final int TAB_WIDTH = 28;
|
||||||
public static final int TAB_HEIGHT = 31;
|
public static final int TAB_HEIGHT = 31;
|
||||||
@@ -27,7 +29,7 @@ public class ContainerGrid extends ContainerBase {
|
|||||||
private SlotGridCraftingResult craftingResultSlot;
|
private SlotGridCraftingResult craftingResultSlot;
|
||||||
private SlotDisabled patternResultSlot;
|
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);
|
super(gridTile, player);
|
||||||
|
|
||||||
this.grid = grid;
|
this.grid = grid;
|
||||||
|
@@ -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.IElementDrawer;
|
||||||
import com.raoulvdberge.refinedstorage.api.render.IElementDrawers;
|
import com.raoulvdberge.refinedstorage.api.render.IElementDrawers;
|
||||||
import com.raoulvdberge.refinedstorage.container.ContainerCraftingMonitor;
|
import com.raoulvdberge.refinedstorage.container.ContainerCraftingMonitor;
|
||||||
|
import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonCraftingMonitorViewAutomated;
|
||||||
import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
||||||
import com.raoulvdberge.refinedstorage.network.MessageCraftingMonitorCancel;
|
import com.raoulvdberge.refinedstorage.network.MessageCraftingMonitorCancel;
|
||||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
|
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
|
||||||
@@ -67,6 +68,8 @@ public class GuiCraftingMonitor extends GuiBase {
|
|||||||
addSideButton(new SideButtonRedstoneMode(this, craftingMonitor.getRedstoneModeParameter()));
|
addSideButton(new SideButtonRedstoneMode(this, craftingMonitor.getRedstoneModeParameter()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addSideButton(new SideButtonCraftingMonitorViewAutomated(this, craftingMonitor));
|
||||||
|
|
||||||
String cancel = t("gui.cancel");
|
String cancel = t("gui.cancel");
|
||||||
String cancelAll = t("misc.refinedstorage:cancel_all");
|
String cancelAll = t("misc.refinedstorage:cancel_all");
|
||||||
|
|
||||||
|
@@ -52,7 +52,7 @@ public class GuiHandler implements IGuiHandler {
|
|||||||
case RSGui.INTERFACE:
|
case RSGui.INTERFACE:
|
||||||
return new ContainerInterface((TileInterface) tile, player);
|
return new ContainerInterface((TileInterface) tile, player);
|
||||||
case RSGui.CRAFTING_MONITOR:
|
case RSGui.CRAFTING_MONITOR:
|
||||||
return new ContainerCraftingMonitor(((TileCraftingMonitor) tile).getNode(), player);
|
return new ContainerCraftingMonitor(((TileCraftingMonitor) tile).getNode(), (TileCraftingMonitor) tile, player);
|
||||||
case RSGui.WIRELESS_TRANSMITTER:
|
case RSGui.WIRELESS_TRANSMITTER:
|
||||||
return new ContainerWirelessTransmitter((TileWirelessTransmitter) tile, player);
|
return new ContainerWirelessTransmitter((TileWirelessTransmitter) tile, player);
|
||||||
case RSGui.CRAFTER:
|
case RSGui.CRAFTER:
|
||||||
@@ -186,11 +186,11 @@ public class GuiHandler implements IGuiHandler {
|
|||||||
private GuiCraftingMonitor getWirelessCraftingMonitorGui(EntityPlayer player, int hand, int controllerDimension) {
|
private GuiCraftingMonitor getWirelessCraftingMonitorGui(EntityPlayer player, int hand, int controllerDimension) {
|
||||||
WirelessCraftingMonitor craftingMonitor = getWirelessCraftingMonitor(player, hand, 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) {
|
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) {
|
private ContainerFilter getFilterContainer(EntityPlayer player, int hand) {
|
||||||
|
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
@@ -5,14 +5,36 @@ import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
|||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessCraftingMonitor;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessCraftingMonitor;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
|
||||||
public class ItemWirelessCraftingMonitor extends ItemNetworkItem {
|
public class ItemWirelessCraftingMonitor extends ItemNetworkItem {
|
||||||
|
private static final String NBT_VIEW_AUTOMATED = "ViewAutomated";
|
||||||
|
|
||||||
public ItemWirelessCraftingMonitor() {
|
public ItemWirelessCraftingMonitor() {
|
||||||
super("wireless_crafting_monitor");
|
super("wireless_crafting_monitor");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initializeDefaults(NBTTagCompound tag) {
|
||||||
|
super.initializeDefaults(tag);
|
||||||
|
|
||||||
|
tag.setBoolean(NBT_VIEW_AUTOMATED, true);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public INetworkItem provide(INetworkItemHandler handler, EntityPlayer player, ItemStack stack) {
|
public INetworkItem provide(INetworkItemHandler handler, EntityPlayer player, ItemStack stack) {
|
||||||
return new NetworkItemWirelessCraftingMonitor(handler, player, 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -50,6 +50,10 @@ public class MessageCraftingMonitorElements implements IMessage, IMessageHandler
|
|||||||
for (ICraftingTask task : craftingMonitor.getTasks()) {
|
for (ICraftingTask task : craftingMonitor.getTasks()) {
|
||||||
ItemStack stack = task.getRequested();
|
ItemStack stack = task.getRequested();
|
||||||
|
|
||||||
|
if (!craftingMonitor.canViewAutomated() && task.isAutomated()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (stack == null || GridFilterFilter.accepts(craftingMonitor.getFilters(), stack, Item.REGISTRY.getNameForObject(stack.getItem()).getResourceDomain())) {
|
if (stack == null || GridFilterFilter.accepts(craftingMonitor.getFilters(), stack, Item.REGISTRY.getNameForObject(stack.getItem()).getResourceDomain())) {
|
||||||
elements.addAll(task.getCraftingMonitorElements());
|
elements.addAll(task.getCraftingMonitorElements());
|
||||||
}
|
}
|
||||||
|
@@ -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<MessageWirelessCraftingMonitorViewAutomated> 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -123,6 +123,7 @@ public class ProxyCommon {
|
|||||||
RS.INSTANCE.network.registerMessage(MessageSecurityManagerUpdate.class, MessageSecurityManagerUpdate.class, id++, Side.SERVER);
|
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(MessageWirelessFluidGridSettingsUpdate.class, MessageWirelessFluidGridSettingsUpdate.class, id++, Side.SERVER);
|
||||||
RS.INSTANCE.network.registerMessage(MessageNodeRemove.class, MessageNodeRemove.class, id++, Side.CLIENT);
|
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());
|
NetworkRegistry.INSTANCE.registerGuiHandler(RS.INSTANCE, new GuiHandler());
|
||||||
|
|
||||||
|
@@ -26,5 +26,9 @@ public interface ICraftingMonitor {
|
|||||||
|
|
||||||
ItemHandlerBasic getFilter();
|
ItemHandlerBasic getFilter();
|
||||||
|
|
||||||
|
boolean canViewAutomated();
|
||||||
|
|
||||||
|
void onViewAutomatedChanged(boolean viewAutomated);
|
||||||
|
|
||||||
boolean isActive();
|
boolean isActive();
|
||||||
}
|
}
|
||||||
|
@@ -2,10 +2,35 @@ package com.raoulvdberge.refinedstorage.tile.craftingmonitor;
|
|||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCraftingMonitor;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCraftingMonitor;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileNode;
|
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;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
public class TileCraftingMonitor extends TileNode<NetworkNodeCraftingMonitor> {
|
public class TileCraftingMonitor extends TileNode<NetworkNodeCraftingMonitor> {
|
||||||
|
public static final TileDataParameter<Boolean> VIEW_AUTOMATED = new TileDataParameter<>(DataSerializers.BOOLEAN, true, new ITileDataProducer<Boolean, TileCraftingMonitor>() {
|
||||||
|
@Override
|
||||||
|
public Boolean getValue(TileCraftingMonitor tile) {
|
||||||
|
return tile.getNode().canViewAutomated();
|
||||||
|
}
|
||||||
|
}, new ITileDataConsumer<Boolean, TileCraftingMonitor>() {
|
||||||
|
@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
|
@Override
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public NetworkNodeCraftingMonitor createNode() {
|
public NetworkNodeCraftingMonitor createNode() {
|
||||||
|
@@ -1,11 +1,13 @@
|
|||||||
package com.raoulvdberge.refinedstorage.tile.craftingmonitor;
|
package com.raoulvdberge.refinedstorage.tile.craftingmonitor;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
import com.raoulvdberge.refinedstorage.RSUtils;
|
import com.raoulvdberge.refinedstorage.RSUtils;
|
||||||
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
|
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFilter;
|
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFilter;
|
||||||
import com.raoulvdberge.refinedstorage.item.ItemWirelessCraftingMonitor;
|
import com.raoulvdberge.refinedstorage.item.ItemWirelessCraftingMonitor;
|
||||||
import com.raoulvdberge.refinedstorage.item.filter.Filter;
|
import com.raoulvdberge.refinedstorage.item.filter.Filter;
|
||||||
|
import com.raoulvdberge.refinedstorage.network.MessageWirelessCraftingMonitorViewAutomated;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileController;
|
import com.raoulvdberge.refinedstorage.tile.TileController;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
@@ -24,6 +26,7 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
|
|||||||
private ItemStack stack;
|
private ItemStack stack;
|
||||||
private int controllerDimension;
|
private int controllerDimension;
|
||||||
private BlockPos controller;
|
private BlockPos controller;
|
||||||
|
private boolean viewAutomated;
|
||||||
|
|
||||||
private List<Filter> filters = new ArrayList<>();
|
private List<Filter> filters = new ArrayList<>();
|
||||||
private ItemHandlerFilter filter = new ItemHandlerFilter(filters, new ArrayList<>(), null) {
|
private ItemHandlerFilter filter = new ItemHandlerFilter(filters, new ArrayList<>(), null) {
|
||||||
@@ -49,6 +52,7 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
|
|||||||
this.stack = stack;
|
this.stack = stack;
|
||||||
this.controllerDimension = controllerDimension;
|
this.controllerDimension = controllerDimension;
|
||||||
this.controller = new BlockPos(ItemWirelessCraftingMonitor.getX(stack), ItemWirelessCraftingMonitor.getY(stack), ItemWirelessCraftingMonitor.getZ(stack));
|
this.controller = new BlockPos(ItemWirelessCraftingMonitor.getX(stack), ItemWirelessCraftingMonitor.getY(stack), ItemWirelessCraftingMonitor.getZ(stack));
|
||||||
|
this.viewAutomated = ItemWirelessCraftingMonitor.canViewAutomated(stack);
|
||||||
|
|
||||||
if (stack.hasTagCompound()) {
|
if (stack.hasTagCompound()) {
|
||||||
for (int i = 0; i < 4; ++i) {
|
for (int i = 0; i < 4; ++i) {
|
||||||
@@ -102,6 +106,18 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
|
|||||||
return filter;
|
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() {
|
private TileController getController() {
|
||||||
World world = DimensionManager.getWorld(controllerDimension);
|
World world = DimensionManager.getWorld(controllerDimension);
|
||||||
|
|
||||||
@@ -114,6 +130,10 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ItemStack getStack() {
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isActive() {
|
public boolean isActive() {
|
||||||
return true;
|
return true;
|
||||||
|
@@ -134,6 +134,8 @@ sidebutton.refinedstorage:grid.size.1=Small
|
|||||||
sidebutton.refinedstorage:grid.size.2=Medium
|
sidebutton.refinedstorage:grid.size.2=Medium
|
||||||
sidebutton.refinedstorage:grid.size.3=Large
|
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=Mode
|
||||||
sidebutton.refinedstorage:mode.whitelist=Whitelist
|
sidebutton.refinedstorage:mode.whitelist=Whitelist
|
||||||
sidebutton.refinedstorage:mode.blacklist=Blacklist
|
sidebutton.refinedstorage:mode.blacklist=Blacklist
|
||||||
|
Reference in New Issue
Block a user