Add oredict + whitelist/blacklist to gridfilter
This commit is contained in:
@@ -16,11 +16,21 @@ public class ContainerGridFilter extends ContainerBase {
|
|||||||
this.stack = stack;
|
this.stack = stack;
|
||||||
this.filter = new ItemHandlerGridFilter(stack);
|
this.filter = new ItemHandlerGridFilter(stack);
|
||||||
|
|
||||||
for (int i = 0; i < 9; ++i) {
|
int y = 20;
|
||||||
addSlotToContainer(new SlotFilter(filter, i, 8 + (i * 18), 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() {
|
public ItemStack getStack() {
|
||||||
@@ -36,8 +46,8 @@ public class ContainerGridFilter extends ContainerBase {
|
|||||||
if (slot.getHasStack()) {
|
if (slot.getHasStack()) {
|
||||||
stack = slot.getStack();
|
stack = slot.getStack();
|
||||||
|
|
||||||
if (index > 9 - 1) {
|
if (index > 27 - 1) {
|
||||||
return mergeItemStackToFilters(stack, 0, 9);
|
return mergeItemStackToFilters(stack, 0, 27);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ItemStack.EMPTY;
|
return ItemStack.EMPTY;
|
||||||
|
|||||||
@@ -12,20 +12,33 @@ import java.io.IOException;
|
|||||||
|
|
||||||
public class GuiGridFilter extends GuiBase {
|
public class GuiGridFilter extends GuiBase {
|
||||||
private int compare;
|
private int compare;
|
||||||
|
private int mode;
|
||||||
|
|
||||||
private GuiCheckBox compareDamage;
|
private GuiCheckBox compareDamage;
|
||||||
private GuiCheckBox compareNBT;
|
private GuiCheckBox compareNBT;
|
||||||
|
private GuiCheckBox compareOredict;
|
||||||
|
private GuiButton toggleMode;
|
||||||
|
|
||||||
public GuiGridFilter(ContainerGridFilter container) {
|
public GuiGridFilter(ContainerGridFilter container) {
|
||||||
super(container, 176, 152);
|
super(container, 176, 208);
|
||||||
|
|
||||||
this.compare = ItemGridFilter.getCompare(container.getStack());
|
this.compare = ItemGridFilter.getCompare(container.getStack());
|
||||||
|
this.mode = ItemGridFilter.getMode(container.getStack());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(int x, int y) {
|
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);
|
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 + 41, 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);
|
||||||
|
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
|
@Override
|
||||||
@@ -42,7 +55,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, 58, t("container.inventory"));
|
drawString(7, 114, t("container.inventory"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -53,8 +66,13 @@ public class GuiGridFilter extends GuiBase {
|
|||||||
compare ^= IComparer.COMPARE_DAMAGE;
|
compare ^= IComparer.COMPARE_DAMAGE;
|
||||||
} else if (button == compareNBT) {
|
} else if (button == compareNBT) {
|
||||||
compare ^= IComparer.COMPARE_NBT;
|
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 {
|
public class GridFilteredItem {
|
||||||
private ItemStack stack;
|
private ItemStack stack;
|
||||||
private int compare;
|
private int compare;
|
||||||
|
private int mode;
|
||||||
|
|
||||||
public GridFilteredItem(ItemStack stack, int compare) {
|
public GridFilteredItem(ItemStack stack, int compare, int mode) {
|
||||||
this.stack = stack;
|
this.stack = stack;
|
||||||
this.compare = compare;
|
this.compare = compare;
|
||||||
|
this.mode = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack getStack() {
|
public ItemStack getStack() {
|
||||||
@@ -18,4 +20,8 @@ public class GridFilteredItem {
|
|||||||
public int getCompare() {
|
public int getCompare() {
|
||||||
return compare;
|
return compare;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getMode() {
|
||||||
|
return mode;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,9 +14,4 @@ public class GridFilterCraftable implements IGridFilter {
|
|||||||
public boolean accepts(IClientStack stack) {
|
public boolean accepts(IClientStack stack) {
|
||||||
return stack instanceof ClientStackItem && ((ClientStackItem) stack).isCraftable() == craftable;
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isStrong() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,9 +13,4 @@ public class GridFilterName implements IGridFilter {
|
|||||||
public boolean accepts(IClientStack stack) {
|
public boolean accepts(IClientStack stack) {
|
||||||
return stack.getName().toLowerCase().contains(name);
|
return stack.getName().toLowerCase().contains(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isStrong() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.gui.grid.filtering;
|
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.IGrid;
|
||||||
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
|
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
|
||||||
|
|
||||||
@@ -27,8 +26,8 @@ public class GridFilterParser {
|
|||||||
filters.add(new GridFilterCraftable(true));
|
filters.add(new GridFilterCraftable(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (GridFilteredItem filteredItem : grid.getFilteredItems()) {
|
if (!grid.getFilteredItems().isEmpty()) {
|
||||||
filters.add(new GridFilterFilteredItem(filteredItem));
|
filters.add(new GridFilterFilteredItems(grid.getFilteredItems()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return filters;
|
return filters;
|
||||||
|
|||||||
@@ -21,9 +21,4 @@ public class GridFilterTooltip implements IGridFilter {
|
|||||||
|
|
||||||
return otherTooltip.contains(tooltip);
|
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 {
|
public interface IGridFilter {
|
||||||
boolean accepts(IClientStack stack);
|
boolean accepts(IClientStack stack);
|
||||||
|
|
||||||
boolean isStrong();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ public class ItemHandlerGridFilter extends ItemStackHandler {
|
|||||||
private ItemStack stack;
|
private ItemStack stack;
|
||||||
|
|
||||||
public ItemHandlerGridFilter(ItemStack stack) {
|
public ItemHandlerGridFilter(ItemStack stack) {
|
||||||
super(9);
|
super(27);
|
||||||
|
|
||||||
this.stack = stack;
|
this.stack = stack;
|
||||||
|
|
||||||
|
|||||||
@@ -30,12 +30,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);
|
||||||
|
|
||||||
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));
|
filteredItems.add(new GridFilteredItem(item, compare, mode));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,11 @@ import net.minecraft.world.World;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ItemGridFilter extends ItemBase {
|
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_COMPARE = "Compare";
|
||||||
|
private static final String NBT_MODE = "Mode";
|
||||||
|
|
||||||
public ItemGridFilter() {
|
public ItemGridFilter() {
|
||||||
super("grid_filter");
|
super("grid_filter");
|
||||||
@@ -61,4 +65,16 @@ public class ItemGridFilter extends ItemBase {
|
|||||||
|
|
||||||
stack.getTagCompound().setInteger(NBT_COMPARE, compare);
|
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 {
|
public class MessageGridFilterUpdate extends MessageHandlerPlayerToServer<MessageGridFilterUpdate> implements IMessage {
|
||||||
private int compare;
|
private int compare;
|
||||||
|
private int mode;
|
||||||
|
|
||||||
public MessageGridFilterUpdate() {
|
public MessageGridFilterUpdate() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public MessageGridFilterUpdate(int compare) {
|
public MessageGridFilterUpdate(int compare, int mode) {
|
||||||
this.compare = compare;
|
this.compare = compare;
|
||||||
|
this.mode = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void fromBytes(ByteBuf buf) {
|
public void fromBytes(ByteBuf buf) {
|
||||||
compare = buf.readInt();
|
compare = buf.readInt();
|
||||||
|
mode = buf.readInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toBytes(ByteBuf buf) {
|
public void toBytes(ByteBuf buf) {
|
||||||
buf.writeInt(compare);
|
buf.writeInt(compare);
|
||||||
|
buf.writeInt(mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(MessageGridFilterUpdate message, EntityPlayerMP player) {
|
public void handle(MessageGridFilterUpdate message, EntityPlayerMP player) {
|
||||||
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ gui.refinedstorage:processing_pattern_encoder.pattern_create=Create Pattern
|
|||||||
gui.refinedstorage:grid_filter=Grid Filter
|
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: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
|
||||||
|
|||||||
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