Added mod filter to grid filter, fixes #359
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user