add Ore Dictionary grid filter, implements #814

This commit is contained in:
way2muchnoise
2017-01-05 18:13:59 +01:00
parent 38a64e74f4
commit 75bb8d2622
5 changed files with 41 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
package com.raoulvdberge.refinedstorage.gui.grid.filtering;
import com.raoulvdberge.refinedstorage.gui.grid.stack.IGridStack;
import java.util.Arrays;
import java.util.function.Predicate;
public class GridFilterOreDict implements Predicate<IGridStack> {
private String oreName;
public GridFilterOreDict(String oreName) {
this.oreName = oreName.toLowerCase();
}
@Override
public boolean test(IGridStack stack) {
return Arrays.stream(stack.getOreIds()).anyMatch(oreName -> oreName.toLowerCase().contains(this.oreName));
}
}

View File

@@ -18,6 +18,8 @@ public class GridFilterParser {
filters.add(new GridFilterMod(part.substring(1)));
} else if (part.startsWith("#")) {
filters.add(new GridFilterTooltip(part.substring(1)));
} else if (part.startsWith("$")) {
filters.add(new GridFilterOreDict(part.substring(1)));
} else {
filters.add(new GridFilterName(part));
}

View File

@@ -33,6 +33,11 @@ public class GridStackFluid implements IGridStack {
return stack.getFluid().getStill(stack).getResourceDomain();
}
@Override
public String[] getOreIds() {
return new String[]{ stack.getFluid().getName() };
}
@Override
public String getTooltip() {
return stack.getFluid().getLocalizedName(stack);

View File

@@ -9,19 +9,24 @@ import net.minecraft.client.resources.I18n;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.oredict.OreDictionary;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class GridStackItem implements IGridStack {
private int hash;
private ItemStack stack;
private boolean craftable;
private boolean displayCraftText;
private String[] oreIds;
public GridStackItem(ByteBuf buf) {
stack = RSUtils.readItemStack(buf);
hash = buf.readInt();
craftable = buf.readBoolean();
oreIds = null;
setDisplayCraftText(buf.readBoolean());
}
@@ -61,6 +66,14 @@ public class GridStackItem implements IGridStack {
return Item.REGISTRY.getNameForObject(stack.getItem()).getResourceDomain();
}
@Override
public String[] getOreIds() {
if (oreIds == null) {
oreIds = Arrays.stream(OreDictionary.getOreIDs(stack)).mapToObj(OreDictionary::getOreName).collect(Collectors.toList()).toArray(new String[0]);
}
return oreIds;
}
@Override
public String getTooltip() {
List<String> lines = stack.getTooltip(Minecraft.getMinecraft().player, Minecraft.getMinecraft().gameSettings.advancedItemTooltips);

View File

@@ -9,6 +9,8 @@ public interface IGridStack {
String getModId();
String[] getOreIds();
String getTooltip();
int getQuantity();