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)));
|
filters.add(new GridFilterMod(part.substring(1)));
|
||||||
} else if (part.startsWith("#")) {
|
} else if (part.startsWith("#")) {
|
||||||
filters.add(new GridFilterTooltip(part.substring(1)));
|
filters.add(new GridFilterTooltip(part.substring(1)));
|
||||||
|
} else if (part.startsWith("$")) {
|
||||||
|
filters.add(new GridFilterOreDict(part.substring(1)));
|
||||||
} else {
|
} else {
|
||||||
filters.add(new GridFilterName(part));
|
filters.add(new GridFilterName(part));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,11 @@ public class GridStackFluid implements IGridStack {
|
|||||||
return stack.getFluid().getStill(stack).getResourceDomain();
|
return stack.getFluid().getStill(stack).getResourceDomain();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String[] getOreIds() {
|
||||||
|
return new String[]{ stack.getFluid().getName() };
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getTooltip() {
|
public String getTooltip() {
|
||||||
return stack.getFluid().getLocalizedName(stack);
|
return stack.getFluid().getLocalizedName(stack);
|
||||||
|
|||||||
@@ -9,19 +9,24 @@ import net.minecraft.client.resources.I18n;
|
|||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.text.TextFormatting;
|
import net.minecraft.util.text.TextFormatting;
|
||||||
|
import net.minecraftforge.oredict.OreDictionary;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class GridStackItem implements IGridStack {
|
public class GridStackItem implements IGridStack {
|
||||||
private int hash;
|
private int hash;
|
||||||
private ItemStack stack;
|
private ItemStack stack;
|
||||||
private boolean craftable;
|
private boolean craftable;
|
||||||
private boolean displayCraftText;
|
private boolean displayCraftText;
|
||||||
|
private String[] oreIds;
|
||||||
|
|
||||||
public GridStackItem(ByteBuf buf) {
|
public GridStackItem(ByteBuf buf) {
|
||||||
stack = RSUtils.readItemStack(buf);
|
stack = RSUtils.readItemStack(buf);
|
||||||
hash = buf.readInt();
|
hash = buf.readInt();
|
||||||
craftable = buf.readBoolean();
|
craftable = buf.readBoolean();
|
||||||
|
oreIds = null;
|
||||||
|
|
||||||
setDisplayCraftText(buf.readBoolean());
|
setDisplayCraftText(buf.readBoolean());
|
||||||
}
|
}
|
||||||
@@ -61,6 +66,14 @@ public class GridStackItem implements IGridStack {
|
|||||||
return Item.REGISTRY.getNameForObject(stack.getItem()).getResourceDomain();
|
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
|
@Override
|
||||||
public String getTooltip() {
|
public String getTooltip() {
|
||||||
List<String> lines = stack.getTooltip(Minecraft.getMinecraft().player, Minecraft.getMinecraft().gameSettings.advancedItemTooltips);
|
List<String> lines = stack.getTooltip(Minecraft.getMinecraft().player, Minecraft.getMinecraft().gameSettings.advancedItemTooltips);
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ public interface IGridStack {
|
|||||||
|
|
||||||
String getModId();
|
String getModId();
|
||||||
|
|
||||||
|
String[] getOreIds();
|
||||||
|
|
||||||
String getTooltip();
|
String getTooltip();
|
||||||
|
|
||||||
int getQuantity();
|
int getQuantity();
|
||||||
|
|||||||
Reference in New Issue
Block a user