Add oredict + whitelist/blacklist to gridfilter
This commit is contained in:
@@ -16,11 +16,21 @@ public class ContainerGridFilter extends ContainerBase {
|
||||
this.stack = stack;
|
||||
this.filter = new ItemHandlerGridFilter(stack);
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
addSlotToContainer(new SlotFilter(filter, i, 8 + (i * 18), 20));
|
||||
int y = 20;
|
||||
int x = 8;
|
||||
|
||||
for (int i = 0; i < 27; ++i) {
|
||||
addSlotToContainer(new SlotFilter(filter, i, x, y));
|
||||
|
||||
if ((i + 1) % 9 == 0) {
|
||||
x = 8;
|
||||
y += 18;
|
||||
} else {
|
||||
x += 18;
|
||||
}
|
||||
}
|
||||
|
||||
addPlayerInventory(8, 70);
|
||||
addPlayerInventory(8, 126);
|
||||
}
|
||||
|
||||
public ItemStack getStack() {
|
||||
@@ -36,8 +46,8 @@ public class ContainerGridFilter extends ContainerBase {
|
||||
if (slot.getHasStack()) {
|
||||
stack = slot.getStack();
|
||||
|
||||
if (index > 9 - 1) {
|
||||
return mergeItemStackToFilters(stack, 0, 9);
|
||||
if (index > 27 - 1) {
|
||||
return mergeItemStackToFilters(stack, 0, 27);
|
||||
}
|
||||
|
||||
return ItemStack.EMPTY;
|
||||
|
||||
@@ -12,20 +12,33 @@ import java.io.IOException;
|
||||
|
||||
public class GuiGridFilter extends GuiBase {
|
||||
private int compare;
|
||||
private int mode;
|
||||
|
||||
private GuiCheckBox compareDamage;
|
||||
private GuiCheckBox compareNBT;
|
||||
private GuiCheckBox compareOredict;
|
||||
private GuiButton toggleMode;
|
||||
|
||||
public GuiGridFilter(ContainerGridFilter container) {
|
||||
super(container, 176, 152);
|
||||
super(container, 176, 208);
|
||||
|
||||
this.compare = ItemGridFilter.getCompare(container.getStack());
|
||||
this.mode = ItemGridFilter.getMode(container.getStack());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(int x, int y) {
|
||||
compareDamage = addCheckBox(x + 7, y + 41, t("gui.refinedstorage:grid_filter.compare_damage"), (compare & IComparer.COMPARE_DAMAGE) == IComparer.COMPARE_DAMAGE);
|
||||
compareNBT = addCheckBox(x + 7 + compareDamage.getButtonWidth() + 4, y + 41, t("gui.refinedstorage:grid_filter.compare_nbt"), (compare & IComparer.COMPARE_NBT) == IComparer.COMPARE_NBT);
|
||||
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, "");
|
||||
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.displayString = text;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -42,7 +55,7 @@ public class GuiGridFilter extends GuiBase {
|
||||
@Override
|
||||
public void drawForeground(int mouseX, int mouseY) {
|
||||
drawString(7, 7, t("gui.refinedstorage:grid_filter"));
|
||||
drawString(7, 58, t("container.inventory"));
|
||||
drawString(7, 114, t("container.inventory"));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -53,8 +66,13 @@ public class GuiGridFilter extends GuiBase {
|
||||
compare ^= IComparer.COMPARE_DAMAGE;
|
||||
} else if (button == compareNBT) {
|
||||
compare ^= IComparer.COMPARE_NBT;
|
||||
} else if (button == compareOredict) {
|
||||
compare ^= IComparer.COMPARE_OREDICT;
|
||||
} else if (button == toggleMode) {
|
||||
mode = mode == ItemGridFilter.MODE_WHITELIST ? ItemGridFilter.MODE_BLACKLIST : ItemGridFilter.MODE_WHITELIST;
|
||||
updateModeButton(mode);
|
||||
}
|
||||
|
||||
RS.INSTANCE.network.sendToServer(new MessageGridFilterUpdate(compare));
|
||||
RS.INSTANCE.network.sendToServer(new MessageGridFilterUpdate(compare, mode));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,10 +5,12 @@ import net.minecraft.item.ItemStack;
|
||||
public class GridFilteredItem {
|
||||
private ItemStack stack;
|
||||
private int compare;
|
||||
private int mode;
|
||||
|
||||
public GridFilteredItem(ItemStack stack, int compare) {
|
||||
public GridFilteredItem(ItemStack stack, int compare, int mode) {
|
||||
this.stack = stack;
|
||||
this.compare = compare;
|
||||
this.mode = mode;
|
||||
}
|
||||
|
||||
public ItemStack getStack() {
|
||||
@@ -18,4 +20,8 @@ public class GridFilteredItem {
|
||||
public int getCompare() {
|
||||
return compare;
|
||||
}
|
||||
|
||||
public int getMode() {
|
||||
return mode;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,9 +14,4 @@ public class GridFilterCraftable implements IGridFilter {
|
||||
public boolean accepts(IClientStack stack) {
|
||||
return stack instanceof ClientStackItem && ((ClientStackItem) stack).isCraftable() == craftable;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isStrong() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.gui.grid.filtering;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.GridFilteredItem;
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.stack.ClientStackItem;
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.stack.IClientStack;
|
||||
|
||||
public class GridFilterFilteredItem implements IGridFilter {
|
||||
private GridFilteredItem filteredItem;
|
||||
|
||||
public GridFilterFilteredItem(GridFilteredItem filteredItem) {
|
||||
this.filteredItem = filteredItem;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean accepts(IClientStack stack) {
|
||||
return API.instance().getComparer().isEqual(((ClientStackItem) stack).getStack(), filteredItem.getStack(), filteredItem.getCompare());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isStrong() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.raoulvdberge.refinedstorage.gui.grid.filtering;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.GridFilteredItem;
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.stack.ClientStackItem;
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.stack.IClientStack;
|
||||
import com.raoulvdberge.refinedstorage.item.ItemGridFilter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class GridFilterFilteredItems implements IGridFilter {
|
||||
private List<GridFilteredItem> filteredItems;
|
||||
|
||||
public GridFilterFilteredItems(List<GridFilteredItem> filteredItems) {
|
||||
this.filteredItems = filteredItems;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean accepts(IClientStack stack) {
|
||||
int lastMode = ItemGridFilter.MODE_WHITELIST;
|
||||
|
||||
for (GridFilteredItem filteredItem : filteredItems) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -30,9 +30,4 @@ public class GridFilterMod implements IGridFilter {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isStrong() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,9 +13,4 @@ public class GridFilterName implements IGridFilter {
|
||||
public boolean accepts(IClientStack stack) {
|
||||
return stack.getName().toLowerCase().contains(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isStrong() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.raoulvdberge.refinedstorage.gui.grid.filtering;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.GridFilteredItem;
|
||||
import com.raoulvdberge.refinedstorage.tile.grid.IGrid;
|
||||
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
|
||||
|
||||
@@ -27,8 +26,8 @@ public class GridFilterParser {
|
||||
filters.add(new GridFilterCraftable(true));
|
||||
}
|
||||
|
||||
for (GridFilteredItem filteredItem : grid.getFilteredItems()) {
|
||||
filters.add(new GridFilterFilteredItem(filteredItem));
|
||||
if (!grid.getFilteredItems().isEmpty()) {
|
||||
filters.add(new GridFilterFilteredItems(grid.getFilteredItems()));
|
||||
}
|
||||
|
||||
return filters;
|
||||
|
||||
@@ -21,9 +21,4 @@ public class GridFilterTooltip implements IGridFilter {
|
||||
|
||||
return otherTooltip.contains(tooltip);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isStrong() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,4 @@ import com.raoulvdberge.refinedstorage.gui.grid.stack.IClientStack;
|
||||
|
||||
public interface IGridFilter {
|
||||
boolean accepts(IClientStack stack);
|
||||
|
||||
boolean isStrong();
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ public class ItemHandlerGridFilter extends ItemStackHandler {
|
||||
private ItemStack stack;
|
||||
|
||||
public ItemHandlerGridFilter(ItemStack stack) {
|
||||
super(9);
|
||||
super(27);
|
||||
|
||||
this.stack = stack;
|
||||
|
||||
|
||||
@@ -30,12 +30,13 @@ public class ItemHandlerGridFilterInGrid extends ItemHandlerBasic {
|
||||
|
||||
if (!filter.isEmpty()) {
|
||||
int compare = ItemGridFilter.getCompare(filter);
|
||||
int mode = ItemGridFilter.getMode(filter);
|
||||
|
||||
ItemHandlerGridFilter items = new ItemHandlerGridFilter(filter);
|
||||
|
||||
for (ItemStack item : items.getFilteredItems()) {
|
||||
if (!item.isEmpty()) {
|
||||
filteredItems.add(new GridFilteredItem(item, compare));
|
||||
filteredItems.add(new GridFilteredItem(item, compare, mode));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,11 @@ import net.minecraft.world.World;
|
||||
import java.util.List;
|
||||
|
||||
public class ItemGridFilter extends ItemBase {
|
||||
public static final int MODE_WHITELIST = 0;
|
||||
public static final int MODE_BLACKLIST = 1;
|
||||
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
private static final String NBT_MODE = "Mode";
|
||||
|
||||
public ItemGridFilter() {
|
||||
super("grid_filter");
|
||||
@@ -61,4 +65,16 @@ public class ItemGridFilter extends ItemBase {
|
||||
|
||||
stack.getTagCompound().setInteger(NBT_COMPARE, compare);
|
||||
}
|
||||
|
||||
public static int getMode(ItemStack stack) {
|
||||
return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NBT_MODE)) ? stack.getTagCompound().getInteger(NBT_MODE) : MODE_WHITELIST;
|
||||
}
|
||||
|
||||
public static void setMode(ItemStack stack, int mode) {
|
||||
if (!stack.hasTagCompound()) {
|
||||
stack.setTagCompound(new NBTTagCompound());
|
||||
}
|
||||
|
||||
stack.getTagCompound().setInteger(NBT_MODE, mode);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,28 +8,33 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
|
||||
public class MessageGridFilterUpdate extends MessageHandlerPlayerToServer<MessageGridFilterUpdate> implements IMessage {
|
||||
private int compare;
|
||||
private int mode;
|
||||
|
||||
public MessageGridFilterUpdate() {
|
||||
}
|
||||
|
||||
public MessageGridFilterUpdate(int compare) {
|
||||
public MessageGridFilterUpdate(int compare, int mode) {
|
||||
this.compare = compare;
|
||||
this.mode = mode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromBytes(ByteBuf buf) {
|
||||
compare = buf.readInt();
|
||||
mode = buf.readInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toBytes(ByteBuf buf) {
|
||||
buf.writeInt(compare);
|
||||
buf.writeInt(mode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(MessageGridFilterUpdate message, EntityPlayerMP player) {
|
||||
if (player.openContainer instanceof ContainerGridFilter) {
|
||||
ItemGridFilter.setCompare(((ContainerGridFilter) player.openContainer).getStack(), message.compare);
|
||||
ItemGridFilter.setMode(((ContainerGridFilter) player.openContainer).getStack(), message.mode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,6 +37,7 @@ gui.refinedstorage:processing_pattern_encoder.pattern_create=Create Pattern
|
||||
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:network_transmitter=Network Transmitter
|
||||
gui.refinedstorage:network_transmitter.distance=%d blocks
|
||||
gui.refinedstorage:network_transmitter.dimension=Dimension %d
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Reference in New Issue
Block a user