Add crafting monitor filtering
This commit is contained in:
@@ -1,18 +1,29 @@
|
|||||||
package com.raoulvdberge.refinedstorage.apiimpl.network.node;
|
package com.raoulvdberge.refinedstorage.apiimpl.network.node;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
|
import com.raoulvdberge.refinedstorage.RSUtils;
|
||||||
|
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFilter;
|
||||||
|
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.ICraftingMonitor;
|
||||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
||||||
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;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
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 List<Filter> filters = new ArrayList<>();
|
||||||
|
private ItemHandlerFilter filter = new ItemHandlerFilter(filters, new ArrayList<>(), new ItemHandlerListenerNetworkNode(this));
|
||||||
|
|
||||||
public NetworkNodeCraftingMonitor(INetworkNodeHolder holder) {
|
public NetworkNodeCraftingMonitor(INetworkNodeHolder holder) {
|
||||||
super(holder);
|
super(holder);
|
||||||
}
|
}
|
||||||
@@ -55,9 +66,39 @@ public class NetworkNodeCraftingMonitor extends NetworkNode implements ICrafting
|
|||||||
return network != null ? network.getPosition() : null;
|
return network != null ? network.getPosition() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Filter> getFilters() {
|
||||||
|
return filters;
|
||||||
|
}
|
||||||
|
|
||||||
public void onOpened(EntityPlayer player) {
|
public void onOpened(EntityPlayer player) {
|
||||||
if (network != null) {
|
if (network != null) {
|
||||||
network.sendCraftingMonitorUpdate((EntityPlayerMP) player);
|
network.sendCraftingMonitorUpdate((EntityPlayerMP) player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public NBTTagCompound write(NBTTagCompound tag) {
|
||||||
|
super.write(tag);
|
||||||
|
|
||||||
|
RSUtils.writeItems(filter, 0, tag);
|
||||||
|
|
||||||
|
return tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void read(NBTTagCompound tag) {
|
||||||
|
super.read(tag);
|
||||||
|
|
||||||
|
RSUtils.readItems(filter, 0, tag);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemHandlerFilter getFilter() {
|
||||||
|
return filter;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IItemHandler getDrops() {
|
||||||
|
return filter;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
|
|||||||
private ItemHandlerBasic patterns = new ItemHandlerBasic(2, new ItemHandlerListenerNetworkNode(this), new ItemValidatorBasic(RSItems.PATTERN));
|
private ItemHandlerBasic patterns = new ItemHandlerBasic(2, new ItemHandlerListenerNetworkNode(this), new ItemValidatorBasic(RSItems.PATTERN));
|
||||||
private List<Filter> filters = new ArrayList<>();
|
private List<Filter> filters = new ArrayList<>();
|
||||||
private List<FilterTab> tabs = new ArrayList<>();
|
private List<FilterTab> tabs = new ArrayList<>();
|
||||||
private ItemHandlerFilter filter = new ItemHandlerFilter(filters, tabs);
|
private ItemHandlerFilter filter = new ItemHandlerFilter(filters, tabs, new ItemHandlerListenerNetworkNode(this));
|
||||||
|
|
||||||
private EnumGridType type;
|
private EnumGridType type;
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage.container;
|
|||||||
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 net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraftforge.items.SlotItemHandler;
|
||||||
|
|
||||||
public class ContainerCraftingMonitor extends ContainerBase {
|
public class ContainerCraftingMonitor extends ContainerBase {
|
||||||
private ICraftingMonitor craftingMonitor;
|
private ICraftingMonitor craftingMonitor;
|
||||||
@@ -13,6 +14,10 @@ public class ContainerCraftingMonitor extends ContainerBase {
|
|||||||
this.craftingMonitor = craftingMonitor;
|
this.craftingMonitor = craftingMonitor;
|
||||||
|
|
||||||
addPlayerInventory(8, 148);
|
addPlayerInventory(8, 148);
|
||||||
|
|
||||||
|
for (int i = 0; i < 4; ++i) {
|
||||||
|
addSlotToContainer(new SlotItemHandler(craftingMonitor.getFilter(), i, 187, 6 + (18 * i)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ICraftingMonitor getCraftingMonitor() {
|
public ICraftingMonitor getCraftingMonitor() {
|
||||||
|
|||||||
@@ -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.grid.filtering.GridFilterFilter;
|
||||||
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;
|
||||||
@@ -12,8 +13,11 @@ import net.minecraft.client.gui.GuiButton;
|
|||||||
import net.minecraft.client.renderer.GlStateManager;
|
import net.minecraft.client.renderer.GlStateManager;
|
||||||
import net.minecraft.client.renderer.RenderHelper;
|
import net.minecraft.client.renderer.RenderHelper;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -38,6 +42,8 @@ public class GuiCraftingMonitor extends GuiBase {
|
|||||||
private static final int ITEM_WIDTH = 143;
|
private static final int ITEM_WIDTH = 143;
|
||||||
private static final int ITEM_HEIGHT = 18;
|
private static final int ITEM_HEIGHT = 18;
|
||||||
|
|
||||||
|
private static boolean markedForSorting;
|
||||||
|
|
||||||
private GuiButton cancelButton;
|
private GuiButton cancelButton;
|
||||||
private GuiButton cancelAllButton;
|
private GuiButton cancelAllButton;
|
||||||
|
|
||||||
@@ -45,20 +51,26 @@ public class GuiCraftingMonitor extends GuiBase {
|
|||||||
|
|
||||||
private IElementDrawers drawers = new CraftingMonitorElementDrawers();
|
private IElementDrawers drawers = new CraftingMonitorElementDrawers();
|
||||||
|
|
||||||
|
private List<ICraftingMonitorElement> elements = new ArrayList<>();
|
||||||
|
|
||||||
private int itemSelected = -1;
|
private int itemSelected = -1;
|
||||||
|
|
||||||
private int itemSelectedX = -1;
|
private int itemSelectedX = -1;
|
||||||
private int itemSelectedY = -1;
|
private int itemSelectedY = -1;
|
||||||
|
|
||||||
public GuiCraftingMonitor(ContainerCraftingMonitor container, ICraftingMonitor craftingMonitor) {
|
public GuiCraftingMonitor(ContainerCraftingMonitor container, ICraftingMonitor craftingMonitor) {
|
||||||
super(container, 176, 230);
|
super(container, 210, 230);
|
||||||
|
|
||||||
this.craftingMonitor = craftingMonitor;
|
this.craftingMonitor = craftingMonitor;
|
||||||
this.scrollbar = new Scrollbar(157, 20, 12, 89);
|
this.scrollbar = new Scrollbar(157, 20, 12, 89);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<ICraftingMonitorElement> getElements() {
|
private List<ICraftingMonitorElement> getElements() {
|
||||||
return craftingMonitor.isActive() ? ELEMENTS : Collections.emptyList();
|
return craftingMonitor.isActive() ? elements : Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void markForSorting() {
|
||||||
|
markedForSorting = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -79,6 +91,23 @@ public class GuiCraftingMonitor extends GuiBase {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(int x, int y) {
|
public void update(int x, int y) {
|
||||||
|
if (markedForSorting) {
|
||||||
|
markedForSorting = false;
|
||||||
|
|
||||||
|
List<ICraftingMonitorElement> newElements = new ArrayList<>();
|
||||||
|
|
||||||
|
for (ICraftingMonitorElement element : ELEMENTS) {
|
||||||
|
// @TODO: We need the top level element here!
|
||||||
|
ItemStack stack = null;
|
||||||
|
|
||||||
|
if (stack == null || GridFilterFilter.accepts(craftingMonitor.getFilters(), stack, Item.REGISTRY.getNameForObject(stack.getItem()).getResourceDomain())) {
|
||||||
|
newElements.add(element);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.elements = newElements;
|
||||||
|
}
|
||||||
|
|
||||||
scrollbar.setEnabled(getRows() > VISIBLE_ROWS);
|
scrollbar.setEnabled(getRows() > VISIBLE_ROWS);
|
||||||
scrollbar.setMaxOffset(getRows() - VISIBLE_ROWS);
|
scrollbar.setMaxOffset(getRows() - VISIBLE_ROWS);
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.raoulvdberge.refinedstorage.gui.grid.stack.GridStackItem;
|
|||||||
import com.raoulvdberge.refinedstorage.gui.grid.stack.IGridStack;
|
import com.raoulvdberge.refinedstorage.gui.grid.stack.IGridStack;
|
||||||
import com.raoulvdberge.refinedstorage.item.filter.Filter;
|
import com.raoulvdberge.refinedstorage.item.filter.Filter;
|
||||||
import com.raoulvdberge.refinedstorage.item.filter.ItemFilter;
|
import com.raoulvdberge.refinedstorage.item.filter.ItemFilter;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
@@ -18,16 +19,24 @@ public class GridFilterFilter implements Predicate<IGridStack> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean test(IGridStack stack) {
|
public boolean test(IGridStack stack) {
|
||||||
|
return accepts(filters, ((GridStackItem) stack).getStack(), stack.getModId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean accepts(List<Filter> filters, ItemStack stack, String stackModId) {
|
||||||
|
if (filters.isEmpty()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
int lastMode = ItemFilter.MODE_WHITELIST;
|
int lastMode = ItemFilter.MODE_WHITELIST;
|
||||||
|
|
||||||
for (Filter filter : filters) {
|
for (Filter filter : filters) {
|
||||||
lastMode = filter.getMode();
|
lastMode = filter.getMode();
|
||||||
|
|
||||||
if (filter.isModFilter()) {
|
if (filter.isModFilter()) {
|
||||||
if (filter.getStack().getItem().getRegistryName().getResourceDomain().equalsIgnoreCase(stack.getModId())) {
|
if (filter.getStack().getItem().getRegistryName().getResourceDomain().equalsIgnoreCase(stackModId)) {
|
||||||
return filter.getMode() == ItemFilter.MODE_WHITELIST;
|
return filter.getMode() == ItemFilter.MODE_WHITELIST;
|
||||||
}
|
}
|
||||||
} else if (API.instance().getComparer().isEqual(((GridStackItem) stack).getStack(), filter.getStack(), filter.getCompare())) {
|
} else if (API.instance().getComparer().isEqual(stack, filter.getStack(), filter.getCompare())) {
|
||||||
return filter.getMode() == ItemFilter.MODE_WHITELIST;
|
return filter.getMode() == ItemFilter.MODE_WHITELIST;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,13 +4,14 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraftforge.items.ItemStackHandler;
|
import net.minecraftforge.items.ItemStackHandler;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class ItemHandlerBasic extends ItemStackHandler {
|
public class ItemHandlerBasic extends ItemStackHandler {
|
||||||
private IItemHandlerListener listener;
|
private IItemHandlerListener listener;
|
||||||
|
|
||||||
protected IItemValidator[] validators;
|
protected IItemValidator[] validators;
|
||||||
|
|
||||||
public ItemHandlerBasic(int size, IItemHandlerListener listener, IItemValidator... validators) {
|
public ItemHandlerBasic(int size, @Nullable IItemHandlerListener listener, IItemValidator... validators) {
|
||||||
super(size);
|
super(size);
|
||||||
|
|
||||||
this.listener = listener;
|
this.listener = listener;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.raoulvdberge.refinedstorage.inventory;
|
package com.raoulvdberge.refinedstorage.inventory;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RSItems;
|
import com.raoulvdberge.refinedstorage.RSItems;
|
||||||
|
import com.raoulvdberge.refinedstorage.gui.GuiCraftingMonitor;
|
||||||
import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid;
|
import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid;
|
||||||
import com.raoulvdberge.refinedstorage.item.filter.Filter;
|
import com.raoulvdberge.refinedstorage.item.filter.Filter;
|
||||||
import com.raoulvdberge.refinedstorage.item.filter.FilterTab;
|
import com.raoulvdberge.refinedstorage.item.filter.FilterTab;
|
||||||
@@ -9,6 +10,7 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -16,8 +18,8 @@ public class ItemHandlerFilter extends ItemHandlerBasic {
|
|||||||
private List<Filter> filters;
|
private List<Filter> filters;
|
||||||
private List<FilterTab> tabs;
|
private List<FilterTab> tabs;
|
||||||
|
|
||||||
public ItemHandlerFilter(List<Filter> filters, List<FilterTab> tabs) {
|
public ItemHandlerFilter(List<Filter> filters, List<FilterTab> tabs, @Nullable IItemHandlerListener listener) {
|
||||||
super(4, new ItemValidatorBasic(RSItems.FILTER));
|
super(4, listener, new ItemValidatorBasic(RSItems.FILTER));
|
||||||
|
|
||||||
this.filters = filters;
|
this.filters = filters;
|
||||||
this.tabs = tabs;
|
this.tabs = tabs;
|
||||||
@@ -60,6 +62,7 @@ public class ItemHandlerFilter extends ItemHandlerBasic {
|
|||||||
|
|
||||||
if (FMLCommonHandler.instance().getSide() == Side.CLIENT) {
|
if (FMLCommonHandler.instance().getSide() == Side.CLIENT) {
|
||||||
GuiGrid.markForSorting();
|
GuiGrid.markForSorting();
|
||||||
|
GuiCraftingMonitor.markForSorting();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ public class MessageCraftingMonitorElements implements IMessage, IMessageHandler
|
|||||||
@Override
|
@Override
|
||||||
public IMessage onMessage(MessageCraftingMonitorElements message, MessageContext ctx) {
|
public IMessage onMessage(MessageCraftingMonitorElements message, MessageContext ctx) {
|
||||||
GuiCraftingMonitor.ELEMENTS = message.elements;
|
GuiCraftingMonitor.ELEMENTS = message.elements;
|
||||||
|
GuiCraftingMonitor.markForSorting();
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,13 @@
|
|||||||
package com.raoulvdberge.refinedstorage.tile.craftingmonitor;
|
package com.raoulvdberge.refinedstorage.tile.craftingmonitor;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
|
||||||
|
import com.raoulvdberge.refinedstorage.item.filter.Filter;
|
||||||
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;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface ICraftingMonitor {
|
public interface ICraftingMonitor {
|
||||||
String getGuiTitle();
|
String getGuiTitle();
|
||||||
@@ -16,5 +19,9 @@ public interface ICraftingMonitor {
|
|||||||
@Nullable
|
@Nullable
|
||||||
BlockPos getNetworkPosition();
|
BlockPos getNetworkPosition();
|
||||||
|
|
||||||
|
List<Filter> getFilters();
|
||||||
|
|
||||||
|
ItemHandlerBasic getFilter();
|
||||||
|
|
||||||
boolean isActive();
|
boolean isActive();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,52 @@
|
|||||||
package com.raoulvdberge.refinedstorage.tile.craftingmonitor;
|
package com.raoulvdberge.refinedstorage.tile.craftingmonitor;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.RSUtils;
|
||||||
|
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
|
||||||
|
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.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;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.DimensionManager;
|
import net.minecraftforge.common.DimensionManager;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class WirelessCraftingMonitor implements ICraftingMonitor {
|
public class WirelessCraftingMonitor implements ICraftingMonitor {
|
||||||
|
private ItemStack stack;
|
||||||
private int controllerDimension;
|
private int controllerDimension;
|
||||||
private BlockPos controller;
|
private BlockPos controller;
|
||||||
|
|
||||||
|
private List<Filter> filters = new ArrayList<>();
|
||||||
|
private ItemHandlerFilter filter = new ItemHandlerFilter(filters, new ArrayList<>(), null) {
|
||||||
|
@Override
|
||||||
|
protected void onContentsChanged(int slot) {
|
||||||
|
super.onContentsChanged(slot);
|
||||||
|
|
||||||
|
if (!stack.hasTagCompound()) {
|
||||||
|
stack.setTagCompound(new NBTTagCompound());
|
||||||
|
}
|
||||||
|
|
||||||
|
RSUtils.writeItems(this, slot, stack.getTagCompound());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
public WirelessCraftingMonitor(int controllerDimension, ItemStack stack) {
|
public WirelessCraftingMonitor(int controllerDimension, ItemStack 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));
|
||||||
|
|
||||||
|
if (stack.hasTagCompound()) {
|
||||||
|
for (int i = 0; i < 4; ++i) {
|
||||||
|
RSUtils.readItems(filter, i, stack.getTagCompound());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -43,6 +73,16 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
|
|||||||
return controller;
|
return controller;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Filter> getFilters() {
|
||||||
|
return filters;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemHandlerBasic getFilter() {
|
||||||
|
return filter;
|
||||||
|
}
|
||||||
|
|
||||||
private TileController getController() {
|
private TileController getController() {
|
||||||
World world = DimensionManager.getWorld(controllerDimension);
|
World world = DimensionManager.getWorld(controllerDimension);
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ public class WirelessGrid implements IGrid {
|
|||||||
|
|
||||||
private List<Filter> filters = new ArrayList<>();
|
private List<Filter> filters = new ArrayList<>();
|
||||||
private List<FilterTab> tabs = new ArrayList<>();
|
private List<FilterTab> tabs = new ArrayList<>();
|
||||||
private ItemHandlerFilter filter = new ItemHandlerFilter(filters, tabs) {
|
private ItemHandlerFilter filter = new ItemHandlerFilter(filters, tabs, null) {
|
||||||
@Override
|
@Override
|
||||||
protected void onContentsChanged(int slot) {
|
protected void onContentsChanged(int slot) {
|
||||||
super.onContentsChanged(slot);
|
super.onContentsChanged(slot);
|
||||||
|
|||||||
Reference in New Issue
Block a user