diff --git a/CHANGELOG.md b/CHANGELOG.md index f6591a581..65516032d 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Refined Storage Changelog +### 1.3.4 +- Added option to check for oredict in the Grid Filter (raoulvdberge) +- Added option to use a mod filter in the Grid Filter (raoulvdberge) +- Added option to use a whitelist or blacklist in the Grid Filter (raoulvdberge) + ### 1.3.3 - Updated Forge to 2188 (raoulvdberge) - Fixed not being able to start a crafting task (raoulvdberge) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiGridFilter.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiGridFilter.java index 83e5c1f49..2a8ec84c8 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiGridFilter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiGridFilter.java @@ -13,10 +13,12 @@ import java.io.IOException; public class GuiGridFilter extends GuiBase { private int compare; private int mode; + private boolean modFilter; private GuiCheckBox compareDamage; private GuiCheckBox compareNBT; private GuiCheckBox compareOredict; + private GuiCheckBox toggleModFilter; private GuiButton toggleMode; public GuiGridFilter(ContainerGridFilter container) { @@ -24,6 +26,7 @@ public class GuiGridFilter extends GuiBase { this.compare = ItemGridFilter.getCompare(container.getStack()); this.mode = ItemGridFilter.getMode(container.getStack()); + this.modFilter = ItemGridFilter.isModFilter(container.getStack()); } @Override @@ -31,14 +34,16 @@ public class GuiGridFilter extends GuiBase { compareDamage = addCheckBox(x + 7, y + 77, t("gui.refinedstorage:grid_filter.compare_damage"), (compare & IComparer.COMPARE_DAMAGE) == IComparer.COMPARE_DAMAGE); compareNBT = addCheckBox(x + 7 + compareDamage.getButtonWidth() + 4, y + 77, t("gui.refinedstorage:grid_filter.compare_nbt"), (compare & IComparer.COMPARE_NBT) == IComparer.COMPARE_NBT); compareOredict = addCheckBox(x + 7 + compareDamage.getButtonWidth() + 4 + compareNBT.getButtonWidth() + 4, y + 77, t("gui.refinedstorage:grid_filter.compare_oredict"), (compare & IComparer.COMPARE_OREDICT) == IComparer.COMPARE_OREDICT); - toggleMode = addButton(x + 7, y + 71 + 20, 0, 20, ""); + toggleModFilter = addCheckBox(0, y + 71 + 25, t("gui.refinedstorage:grid_filter.mod_filter"), modFilter); + toggleMode = addButton(x + 7, y + 71 + 21, 0, 20, ""); updateModeButton(mode); } private void updateModeButton(int mode) { String text = mode == ItemGridFilter.MODE_WHITELIST ? t("sidebutton.refinedstorage:mode.whitelist") : t("sidebutton.refinedstorage:mode.blacklist"); - toggleMode.setWidth(fontRendererObj.getStringWidth(text) + 7); + toggleMode.setWidth(fontRendererObj.getStringWidth(text) + 12); toggleMode.displayString = text; + toggleModFilter.xPosition = toggleMode.xPosition + toggleMode.getButtonWidth() + 4; } @Override @@ -55,7 +60,7 @@ public class GuiGridFilter extends GuiBase { @Override public void drawForeground(int mouseX, int mouseY) { drawString(7, 7, t("gui.refinedstorage:grid_filter")); - drawString(7, 114, t("container.inventory")); + drawString(7, 115, t("container.inventory")); } @Override @@ -71,8 +76,10 @@ public class GuiGridFilter extends GuiBase { } else if (button == toggleMode) { mode = mode == ItemGridFilter.MODE_WHITELIST ? ItemGridFilter.MODE_BLACKLIST : ItemGridFilter.MODE_WHITELIST; updateModeButton(mode); + } else if (button == toggleModFilter) { + modFilter = !modFilter; } - RS.INSTANCE.network.sendToServer(new MessageGridFilterUpdate(compare, mode)); + RS.INSTANCE.network.sendToServer(new MessageGridFilterUpdate(compare, mode, modFilter)); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GridFilteredItem.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GridFilteredItem.java index 57e11e81e..9af0ea7f9 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GridFilteredItem.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GridFilteredItem.java @@ -6,11 +6,13 @@ public class GridFilteredItem { private ItemStack stack; private int compare; private int mode; + private boolean modFilter; - public GridFilteredItem(ItemStack stack, int compare, int mode) { + public GridFilteredItem(ItemStack stack, int compare, int mode, boolean modFilter) { this.stack = stack; this.compare = compare; this.mode = mode; + this.modFilter = modFilter; } public ItemStack getStack() { @@ -24,4 +26,8 @@ public class GridFilteredItem { public int getMode() { return mode; } + + public boolean isModFilter() { + return modFilter; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterFilteredItems.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterFilteredItems.java index 3d11fa24c..8758679e1 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterFilteredItems.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterFilteredItems.java @@ -20,11 +20,15 @@ public class GridFilterFilteredItems implements IGridFilter { int lastMode = ItemGridFilter.MODE_WHITELIST; for (GridFilteredItem filteredItem : filteredItems) { - if (API.instance().getComparer().isEqual(((ClientStackItem) stack).getStack(), filteredItem.getStack(), filteredItem.getCompare())) { + lastMode = filteredItem.getMode(); + + if (filteredItem.isModFilter()) { + if (filteredItem.getStack().getItem().getRegistryName().getResourceDomain().equalsIgnoreCase(stack.getModId())) { + return filteredItem.getMode() == ItemGridFilter.MODE_WHITELIST; + } + } else if (API.instance().getComparer().isEqual(((ClientStackItem) stack).getStack(), filteredItem.getStack(), filteredItem.getCompare())) { return filteredItem.getMode() == ItemGridFilter.MODE_WHITELIST; } - - lastMode = filteredItem.getMode(); } return lastMode != ItemGridFilter.MODE_WHITELIST; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilterInGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilterInGrid.java index ed4762b82..a4039afda 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilterInGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilterInGrid.java @@ -31,12 +31,13 @@ public class ItemHandlerGridFilterInGrid extends ItemHandlerBasic { if (!filter.isEmpty()) { int compare = ItemGridFilter.getCompare(filter); int mode = ItemGridFilter.getMode(filter); + boolean modFilter = ItemGridFilter.isModFilter(filter); ItemHandlerGridFilter items = new ItemHandlerGridFilter(filter); for (ItemStack item : items.getFilteredItems()) { if (!item.isEmpty()) { - filteredItems.add(new GridFilteredItem(item, compare, mode)); + filteredItems.add(new GridFilteredItem(item, compare, mode, modFilter)); } } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemGridFilter.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemGridFilter.java index cb03900e4..429e6904d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemGridFilter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemGridFilter.java @@ -5,12 +5,14 @@ import com.raoulvdberge.refinedstorage.RSGui; import com.raoulvdberge.refinedstorage.RSItems; import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerGridFilter; +import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ActionResult; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumHand; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; import java.util.List; @@ -21,6 +23,7 @@ public class ItemGridFilter extends ItemBase { private static final String NBT_COMPARE = "Compare"; private static final String NBT_MODE = "Mode"; + private static final String NBT_MOD_FILTER = "ModFilter"; public ItemGridFilter() { super("grid_filter"); @@ -49,6 +52,12 @@ public class ItemGridFilter extends ItemBase { public void addInformation(ItemStack stack, EntityPlayer player, List tooltip, boolean advanced) { super.addInformation(stack, player, tooltip, advanced); + tooltip.add(TextFormatting.YELLOW + I18n.format("sidebutton.refinedstorage:mode." + (getMode(stack) == MODE_WHITELIST ? "whitelist" : "blacklist")) + TextFormatting.RESET); + + if (isModFilter(stack)) { + tooltip.add(TextFormatting.BLUE + I18n.format("gui.refinedstorage:grid_filter.mod_filter") + TextFormatting.RESET); + } + ItemHandlerGridFilter items = new ItemHandlerGridFilter(stack); ItemPattern.combineItems(tooltip, false, items.getFilteredItems()); @@ -77,4 +86,16 @@ public class ItemGridFilter extends ItemBase { stack.getTagCompound().setInteger(NBT_MODE, mode); } + + public static boolean isModFilter(ItemStack stack) { + return stack.hasTagCompound() && stack.getTagCompound().hasKey(NBT_MOD_FILTER) && stack.getTagCompound().getBoolean(NBT_MOD_FILTER); + } + + public static void setModFilter(ItemStack stack, boolean modFilter) { + if (!stack.hasTagCompound()) { + stack.setTagCompound(new NBTTagCompound()); + } + + stack.getTagCompound().setBoolean(NBT_MOD_FILTER, modFilter); + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridFilterUpdate.java b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridFilterUpdate.java index de7d55627..04aff23c6 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridFilterUpdate.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridFilterUpdate.java @@ -9,25 +9,29 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessage; public class MessageGridFilterUpdate extends MessageHandlerPlayerToServer implements IMessage { private int compare; private int mode; + private boolean modFilter; public MessageGridFilterUpdate() { } - public MessageGridFilterUpdate(int compare, int mode) { + public MessageGridFilterUpdate(int compare, int mode, boolean modFilter) { this.compare = compare; this.mode = mode; + this.modFilter = modFilter; } @Override public void fromBytes(ByteBuf buf) { compare = buf.readInt(); mode = buf.readInt(); + modFilter = buf.readBoolean(); } @Override public void toBytes(ByteBuf buf) { buf.writeInt(compare); buf.writeInt(mode); + buf.writeBoolean(modFilter); } @Override @@ -35,6 +39,7 @@ public class MessageGridFilterUpdate extends MessageHandlerPlayerToServer