add Ore Dictionary grid filter, implements #814
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -9,6 +9,8 @@ public interface IGridStack {
|
||||
|
||||
String getModId();
|
||||
|
||||
String[] getOreIds();
|
||||
|
||||
String getTooltip();
|
||||
|
||||
int getQuantity();
|
||||
|
||||
Reference in New Issue
Block a user