Added mod filter to grid filter, fixes #359

This commit is contained in:
Raoul Van den Berge
2016-12-07 18:16:46 +01:00
parent 729ff97620
commit 215240c9a7
8 changed files with 60 additions and 10 deletions

View File

@@ -1,5 +1,10 @@
# Refined Storage Changelog # 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 ### 1.3.3
- Updated Forge to 2188 (raoulvdberge) - Updated Forge to 2188 (raoulvdberge)
- Fixed not being able to start a crafting task (raoulvdberge) - Fixed not being able to start a crafting task (raoulvdberge)

View File

@@ -13,10 +13,12 @@ import java.io.IOException;
public class GuiGridFilter extends GuiBase { public class GuiGridFilter extends GuiBase {
private int compare; private int compare;
private int mode; private int mode;
private boolean modFilter;
private GuiCheckBox compareDamage; private GuiCheckBox compareDamage;
private GuiCheckBox compareNBT; private GuiCheckBox compareNBT;
private GuiCheckBox compareOredict; private GuiCheckBox compareOredict;
private GuiCheckBox toggleModFilter;
private GuiButton toggleMode; private GuiButton toggleMode;
public GuiGridFilter(ContainerGridFilter container) { public GuiGridFilter(ContainerGridFilter container) {
@@ -24,6 +26,7 @@ public class GuiGridFilter extends GuiBase {
this.compare = ItemGridFilter.getCompare(container.getStack()); this.compare = ItemGridFilter.getCompare(container.getStack());
this.mode = ItemGridFilter.getMode(container.getStack()); this.mode = ItemGridFilter.getMode(container.getStack());
this.modFilter = ItemGridFilter.isModFilter(container.getStack());
} }
@Override @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); 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); 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); 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); updateModeButton(mode);
} }
private void updateModeButton(int mode) { private void updateModeButton(int mode) {
String text = mode == ItemGridFilter.MODE_WHITELIST ? t("sidebutton.refinedstorage:mode.whitelist") : t("sidebutton.refinedstorage:mode.blacklist"); 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; toggleMode.displayString = text;
toggleModFilter.xPosition = toggleMode.xPosition + toggleMode.getButtonWidth() + 4;
} }
@Override @Override
@@ -55,7 +60,7 @@ public class GuiGridFilter extends GuiBase {
@Override @Override
public void drawForeground(int mouseX, int mouseY) { public void drawForeground(int mouseX, int mouseY) {
drawString(7, 7, t("gui.refinedstorage:grid_filter")); drawString(7, 7, t("gui.refinedstorage:grid_filter"));
drawString(7, 114, t("container.inventory")); drawString(7, 115, t("container.inventory"));
} }
@Override @Override
@@ -71,8 +76,10 @@ public class GuiGridFilter extends GuiBase {
} else if (button == toggleMode) { } else if (button == toggleMode) {
mode = mode == ItemGridFilter.MODE_WHITELIST ? ItemGridFilter.MODE_BLACKLIST : ItemGridFilter.MODE_WHITELIST; mode = mode == ItemGridFilter.MODE_WHITELIST ? ItemGridFilter.MODE_BLACKLIST : ItemGridFilter.MODE_WHITELIST;
updateModeButton(mode); 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));
} }
} }

View File

@@ -6,11 +6,13 @@ public class GridFilteredItem {
private ItemStack stack; private ItemStack stack;
private int compare; private int compare;
private int mode; 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.stack = stack;
this.compare = compare; this.compare = compare;
this.mode = mode; this.mode = mode;
this.modFilter = modFilter;
} }
public ItemStack getStack() { public ItemStack getStack() {
@@ -24,4 +26,8 @@ public class GridFilteredItem {
public int getMode() { public int getMode() {
return mode; return mode;
} }
public boolean isModFilter() {
return modFilter;
}
} }

View File

@@ -20,11 +20,15 @@ public class GridFilterFilteredItems implements IGridFilter {
int lastMode = ItemGridFilter.MODE_WHITELIST; int lastMode = ItemGridFilter.MODE_WHITELIST;
for (GridFilteredItem filteredItem : filteredItems) { 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; return filteredItem.getMode() == ItemGridFilter.MODE_WHITELIST;
} }
lastMode = filteredItem.getMode();
} }
return lastMode != ItemGridFilter.MODE_WHITELIST; return lastMode != ItemGridFilter.MODE_WHITELIST;

View File

@@ -31,12 +31,13 @@ public class ItemHandlerGridFilterInGrid extends ItemHandlerBasic {
if (!filter.isEmpty()) { if (!filter.isEmpty()) {
int compare = ItemGridFilter.getCompare(filter); int compare = ItemGridFilter.getCompare(filter);
int mode = ItemGridFilter.getMode(filter); int mode = ItemGridFilter.getMode(filter);
boolean modFilter = ItemGridFilter.isModFilter(filter);
ItemHandlerGridFilter items = new ItemHandlerGridFilter(filter); ItemHandlerGridFilter items = new ItemHandlerGridFilter(filter);
for (ItemStack item : items.getFilteredItems()) { for (ItemStack item : items.getFilteredItems()) {
if (!item.isEmpty()) { if (!item.isEmpty()) {
filteredItems.add(new GridFilteredItem(item, compare, mode)); filteredItems.add(new GridFilteredItem(item, compare, mode, modFilter));
} }
} }
} }

View File

@@ -5,12 +5,14 @@ import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.RSItems; import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerGridFilter; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerGridFilter;
import net.minecraft.client.resources.I18n;
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; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import java.util.List; 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_COMPARE = "Compare";
private static final String NBT_MODE = "Mode"; private static final String NBT_MODE = "Mode";
private static final String NBT_MOD_FILTER = "ModFilter";
public ItemGridFilter() { public ItemGridFilter() {
super("grid_filter"); super("grid_filter");
@@ -49,6 +52,12 @@ public class ItemGridFilter extends ItemBase {
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) { public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) {
super.addInformation(stack, player, tooltip, 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); ItemHandlerGridFilter items = new ItemHandlerGridFilter(stack);
ItemPattern.combineItems(tooltip, false, items.getFilteredItems()); ItemPattern.combineItems(tooltip, false, items.getFilteredItems());
@@ -77,4 +86,16 @@ public class ItemGridFilter extends ItemBase {
stack.getTagCompound().setInteger(NBT_MODE, mode); 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);
}
} }

View File

@@ -9,25 +9,29 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
public class MessageGridFilterUpdate extends MessageHandlerPlayerToServer<MessageGridFilterUpdate> implements IMessage { public class MessageGridFilterUpdate extends MessageHandlerPlayerToServer<MessageGridFilterUpdate> implements IMessage {
private int compare; private int compare;
private int mode; private int mode;
private boolean modFilter;
public MessageGridFilterUpdate() { public MessageGridFilterUpdate() {
} }
public MessageGridFilterUpdate(int compare, int mode) { public MessageGridFilterUpdate(int compare, int mode, boolean modFilter) {
this.compare = compare; this.compare = compare;
this.mode = mode; this.mode = mode;
this.modFilter = modFilter;
} }
@Override @Override
public void fromBytes(ByteBuf buf) { public void fromBytes(ByteBuf buf) {
compare = buf.readInt(); compare = buf.readInt();
mode = buf.readInt(); mode = buf.readInt();
modFilter = buf.readBoolean();
} }
@Override @Override
public void toBytes(ByteBuf buf) { public void toBytes(ByteBuf buf) {
buf.writeInt(compare); buf.writeInt(compare);
buf.writeInt(mode); buf.writeInt(mode);
buf.writeBoolean(modFilter);
} }
@Override @Override
@@ -35,6 +39,7 @@ public class MessageGridFilterUpdate extends MessageHandlerPlayerToServer<Messag
if (player.openContainer instanceof ContainerGridFilter) { if (player.openContainer instanceof ContainerGridFilter) {
ItemGridFilter.setCompare(((ContainerGridFilter) player.openContainer).getStack(), message.compare); ItemGridFilter.setCompare(((ContainerGridFilter) player.openContainer).getStack(), message.compare);
ItemGridFilter.setMode(((ContainerGridFilter) player.openContainer).getStack(), message.mode); ItemGridFilter.setMode(((ContainerGridFilter) player.openContainer).getStack(), message.mode);
ItemGridFilter.setModFilter(((ContainerGridFilter) player.openContainer).getStack(), message.modFilter);
} }
} }
} }

View File

@@ -38,6 +38,7 @@ gui.refinedstorage:grid_filter=Grid Filter
gui.refinedstorage:grid_filter.compare_damage=Damage gui.refinedstorage:grid_filter.compare_damage=Damage
gui.refinedstorage:grid_filter.compare_nbt=NBT gui.refinedstorage:grid_filter.compare_nbt=NBT
gui.refinedstorage:grid_filter.compare_oredict=Oredict gui.refinedstorage:grid_filter.compare_oredict=Oredict
gui.refinedstorage:grid_filter.mod_filter=Mod filter
gui.refinedstorage:network_transmitter=Network Transmitter gui.refinedstorage:network_transmitter=Network Transmitter
gui.refinedstorage:network_transmitter.distance=%d blocks gui.refinedstorage:network_transmitter.distance=%d blocks
gui.refinedstorage:network_transmitter.dimension=Dimension %d gui.refinedstorage:network_transmitter.dimension=Dimension %d