Added mod filter to grid filter, fixes #359
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<String> 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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,25 +9,29 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
public class MessageGridFilterUpdate extends MessageHandlerPlayerToServer<MessageGridFilterUpdate> 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<Messag
|
||||
if (player.openContainer instanceof ContainerGridFilter) {
|
||||
ItemGridFilter.setCompare(((ContainerGridFilter) player.openContainer).getStack(), message.compare);
|
||||
ItemGridFilter.setMode(((ContainerGridFilter) player.openContainer).getStack(), message.mode);
|
||||
ItemGridFilter.setModFilter(((ContainerGridFilter) player.openContainer).getStack(), message.modFilter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ gui.refinedstorage:grid_filter=Grid Filter
|
||||
gui.refinedstorage:grid_filter.compare_damage=Damage
|
||||
gui.refinedstorage:grid_filter.compare_nbt=NBT
|
||||
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.distance=%d blocks
|
||||
gui.refinedstorage:network_transmitter.dimension=Dimension %d
|
||||
|
||||
Reference in New Issue
Block a user