Theoretical performance fix for #2062 "Massive search lag with external storage". Needs confirmation.
This commit is contained in:
@@ -34,7 +34,10 @@ public class GridFilterFilter implements Predicate<IGridStack> {
|
|||||||
ItemStack stackInFilter = (ItemStack) filter.getStack();
|
ItemStack stackInFilter = (ItemStack) filter.getStack();
|
||||||
|
|
||||||
if (filter.isModFilter()) {
|
if (filter.isModFilter()) {
|
||||||
if (stackInFilter.getItem().getRegistryName().getNamespace().equalsIgnoreCase(stack.getModId())) {
|
String stackModId = stack.getModId();
|
||||||
|
String filterModId = stackInFilter.getItem().getCreatorModId(stackInFilter);
|
||||||
|
|
||||||
|
if (filterModId != null && filterModId.equals(stackModId)) {
|
||||||
return filter.getMode() == IFilter.MODE_WHITELIST;
|
return filter.getMode() == IFilter.MODE_WHITELIST;
|
||||||
}
|
}
|
||||||
} else if (API.instance().getComparer().isEqual(((GridStackItem) stack).getStack(), stackInFilter, filter.getCompare())) {
|
} else if (API.instance().getComparer().isEqual(((GridStackItem) stack).getStack(), stackInFilter, filter.getCompare())) {
|
||||||
|
|||||||
@@ -8,11 +8,32 @@ public class GridFilterMod implements Predicate<IGridStack> {
|
|||||||
private String inputModName;
|
private String inputModName;
|
||||||
|
|
||||||
public GridFilterMod(String inputModName) {
|
public GridFilterMod(String inputModName) {
|
||||||
this.inputModName = inputModName.toLowerCase().replace(" ", "");
|
this.inputModName = standardify(inputModName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean test(IGridStack stack) {
|
public boolean test(IGridStack stack) {
|
||||||
return stack.getModId().contains(inputModName) || stack.getModName().contains(inputModName);
|
String modId = stack.getModId();
|
||||||
|
|
||||||
|
if (modId != null) {
|
||||||
|
if (modId.contains(inputModName)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
String modName = stack.getModName();
|
||||||
|
if (modName != null) {
|
||||||
|
modName = standardify(modName);
|
||||||
|
|
||||||
|
if (modName.contains(inputModName)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String standardify(String input) {
|
||||||
|
return input.toLowerCase().replace(" ", "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.raoulvdberge.refinedstorage.api.storage.IStorageTracker;
|
|||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import com.raoulvdberge.refinedstorage.gui.GuiBase;
|
import com.raoulvdberge.refinedstorage.gui.GuiBase;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
|
import net.minecraftforge.fluids.FluidRegistry;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
@@ -58,7 +59,11 @@ public class GridStackFluid implements IGridStack {
|
|||||||
@Override
|
@Override
|
||||||
public String getModId() {
|
public String getModId() {
|
||||||
if (modId == null) {
|
if (modId == null) {
|
||||||
modId = stack.getFluid().getStill(stack).getNamespace();
|
modId = FluidRegistry.getModId(stack);
|
||||||
|
|
||||||
|
if (modId == null) {
|
||||||
|
modId = "???";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return modId;
|
return modId;
|
||||||
@@ -68,6 +73,10 @@ public class GridStackFluid implements IGridStack {
|
|||||||
public String getModName() {
|
public String getModName() {
|
||||||
if (modName == null) {
|
if (modName == null) {
|
||||||
modName = GridStackItem.getModNameByModId(getModId());
|
modName = GridStackItem.getModNameByModId(getModId());
|
||||||
|
|
||||||
|
if (modName == null) {
|
||||||
|
modName = "???";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return modName;
|
return modName;
|
||||||
|
|||||||
@@ -45,13 +45,14 @@ public class GridStackItem implements IGridStack {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
static String getModNameByModId(String modId) {
|
static String getModNameByModId(String modId) {
|
||||||
ModContainer container = Loader.instance().getActiveModList().stream()
|
ModContainer container = Loader.instance().getActiveModList().stream()
|
||||||
.filter(m -> m.getModId().toLowerCase().equals(modId))
|
.filter(m -> m.getModId().toLowerCase().equals(modId))
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
|
|
||||||
return container == null ? modId : container.getName().toLowerCase().replace(" ", "");
|
return container == null ? null : container.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack getStack() {
|
public ItemStack getStack() {
|
||||||
@@ -99,6 +100,10 @@ public class GridStackItem implements IGridStack {
|
|||||||
public String getModId() {
|
public String getModId() {
|
||||||
if (modId == null) {
|
if (modId == null) {
|
||||||
modId = stack.getItem().getCreatorModId(stack);
|
modId = stack.getItem().getCreatorModId(stack);
|
||||||
|
|
||||||
|
if (modId == null) {
|
||||||
|
modId = "???";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return modId;
|
return modId;
|
||||||
@@ -108,6 +113,10 @@ public class GridStackItem implements IGridStack {
|
|||||||
public String getModName() {
|
public String getModName() {
|
||||||
if (modName == null) {
|
if (modName == null) {
|
||||||
modName = getModNameByModId(getModId());
|
modName = getModNameByModId(getModId());
|
||||||
|
|
||||||
|
if (modName == null) {
|
||||||
|
modName = "???";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return modName;
|
return modName;
|
||||||
|
|||||||
Reference in New Issue
Block a user