Skip to content

Commit

Permalink
Reduce memory used by IngredientListElementInfo
Browse files Browse the repository at this point in the history
  • Loading branch information
mezz committed Oct 4, 2020
1 parent b90d220 commit fb0edcb
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 60 deletions.
20 changes: 10 additions & 10 deletions src/main/java/mezz/jei/config/EditModeConfig.java
@@ -1,15 +1,5 @@
package mezz.jei.config;

import mezz.jei.api.ingredients.IIngredientHelper;
import mezz.jei.api.ingredients.subtypes.UidContext;
import mezz.jei.api.runtime.IIngredientManager;
import mezz.jei.gui.ingredients.IIngredientListElement;
import mezz.jei.ingredients.IIngredientListElementInfo;
import mezz.jei.ingredients.IngredientFilter;
import org.apache.commons.io.IOUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import javax.annotation.Nullable;
import java.io.File;
import java.io.FileReader;
Expand All @@ -20,6 +10,16 @@
import java.util.List;
import java.util.Set;

import mezz.jei.api.ingredients.IIngredientHelper;
import mezz.jei.api.ingredients.subtypes.UidContext;
import mezz.jei.api.runtime.IIngredientManager;
import mezz.jei.gui.ingredients.IIngredientListElement;
import mezz.jei.ingredients.IIngredientListElementInfo;
import mezz.jei.ingredients.IngredientFilter;
import org.apache.commons.io.IOUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class EditModeConfig implements IEditModeConfig {
private static final Logger LOGGER = LogManager.getLogger();
private static final boolean defaultEditModeEnabled = false;
Expand Down
Expand Up @@ -4,29 +4,25 @@
import java.util.List;
import java.util.Set;

import mezz.jei.api.ingredients.IIngredientHelper;
import mezz.jei.api.ingredients.IIngredientRenderer;
import mezz.jei.api.runtime.IIngredientManager;
import mezz.jei.config.IIngredientFilterConfig;
import mezz.jei.gui.ingredients.IIngredientListElement;

public interface IIngredientListElementInfo<V> {
IIngredientHelper<V> getIngredientHelper();

IIngredientRenderer<V> getIngredientRenderer();

Collection<String> getNameStrings();

String getModNameForSorting();

Set<String> getModNameStrings();

List<String> getTooltipStrings(IIngredientFilterConfig config);
List<String> getTooltipStrings(IIngredientFilterConfig config, IIngredientManager ingredientManager);

Collection<String> getTagStrings();
Collection<String> getTagStrings(IIngredientManager ingredientManager);

Collection<String> getCreativeTabsStrings();
Collection<String> getCreativeTabsStrings(IIngredientManager ingredientManager);

Collection<String> getColorStrings();
Collection<String> getColorStrings(IIngredientManager ingredientManager);

String getResourceId();

Expand Down
8 changes: 4 additions & 4 deletions src/main/java/mezz/jei/ingredients/IngredientFilter.java
Expand Up @@ -74,10 +74,10 @@ public IngredientFilter(
}

this.prefixInfos.put('@', new PrefixInfo(config::getModNameSearchMode, IIngredientListElementInfo::getModNameStrings));
this.prefixInfos.put('#', new PrefixInfo(config::getTooltipSearchMode, (e) -> e.getTooltipStrings(config)));
this.prefixInfos.put('$', new PrefixInfo(config::getTagSearchMode, IIngredientListElementInfo::getTagStrings));
this.prefixInfos.put('%', new PrefixInfo(config::getCreativeTabSearchMode, IIngredientListElementInfo::getCreativeTabsStrings));
this.prefixInfos.put('^', new PrefixInfo(config::getColorSearchMode, IIngredientListElementInfo::getColorStrings));
this.prefixInfos.put('#', new PrefixInfo(config::getTooltipSearchMode, e -> e.getTooltipStrings(config, ingredientManager)));
this.prefixInfos.put('$', new PrefixInfo(config::getTagSearchMode, e -> e.getTagStrings(ingredientManager)));
this.prefixInfos.put('%', new PrefixInfo(config::getCreativeTabSearchMode, e -> e.getCreativeTabsStrings(ingredientManager)));
this.prefixInfos.put('^', new PrefixInfo(config::getColorSearchMode, e -> e.getColorStrings(ingredientManager)));
this.prefixInfos.put('&', new PrefixInfo(config::getResourceIdSearchMode, element -> Collections.singleton(element.getResourceId())));

for (PrefixInfo prefixInfo : this.prefixInfos.values()) {
Expand Down
60 changes: 23 additions & 37 deletions src/main/java/mezz/jei/ingredients/IngredientListElementInfo.java
@@ -1,37 +1,33 @@
package mezz.jei.ingredients;

import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

import net.minecraft.util.ResourceLocation;

import com.google.common.collect.ImmutableSet;
import mezz.jei.api.helpers.IModIdHelper;
import mezz.jei.api.ingredients.IIngredientHelper;
import mezz.jei.api.ingredients.IIngredientRenderer;
import mezz.jei.api.ingredients.IIngredientType;
import mezz.jei.api.runtime.IIngredientManager;
import mezz.jei.config.IIngredientFilterConfig;
import mezz.jei.gui.ingredients.IIngredientListElement;
import mezz.jei.util.Translator;
import net.minecraft.util.ResourceLocation;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

public class IngredientListElementInfo<V> implements IIngredientListElementInfo<V> {
private static final Logger LOGGER = LogManager.getLogger();
private static final Pattern SPACE_PATTERN = Pattern.compile("\\s");

private final IIngredientListElement<V> element;
private final IIngredientHelper<V> ingredientHelper;
private final IIngredientRenderer<V> ingredientRenderer;
private final String displayName;
private final List<String> modIds;
private final List<String> modNames;
Expand All @@ -40,11 +36,9 @@ public class IngredientListElementInfo<V> implements IIngredientListElementInfo<
@Nullable
public static <V> IIngredientListElementInfo<V> create(IIngredientListElement<V> element, IIngredientManager ingredientManager, IModIdHelper modIdHelper) {
V ingredient = element.getIngredient();
IIngredientType<V> ingredientType = ingredientManager.getIngredientType(ingredient);
IIngredientHelper<V> ingredientHelper = ingredientManager.getIngredientHelper(ingredientType);
IIngredientRenderer<V> ingredientRenderer = ingredientManager.getIngredientRenderer(ingredientType);
IIngredientHelper<V> ingredientHelper = ingredientManager.getIngredientHelper(ingredient);
try {
return new IngredientListElementInfo<>(element, ingredientHelper, ingredientRenderer, modIdHelper);
return new IngredientListElementInfo<>(element, ingredientHelper, modIdHelper);
} catch (RuntimeException e) {
try {
String ingredientInfo = ingredientHelper.getErrorInfo(ingredient);
Expand All @@ -56,10 +50,8 @@ public static <V> IIngredientListElementInfo<V> create(IIngredientListElement<V>
}
}

protected IngredientListElementInfo(IIngredientListElement<V> element, IIngredientHelper<V> ingredientHelper, IIngredientRenderer<V> ingredientRenderer, IModIdHelper modIdHelper) {
protected IngredientListElementInfo(IIngredientListElement<V> element, IIngredientHelper<V> ingredientHelper, IModIdHelper modIdHelper) {
this.element = element;
this.ingredientHelper = ingredientHelper;
this.ingredientRenderer = ingredientRenderer;
V ingredient = element.getIngredient();
String displayModId = ingredientHelper.getDisplayModId(ingredient);
String modId = ingredientHelper.getModId(ingredient);
Expand All @@ -73,16 +65,6 @@ protected IngredientListElementInfo(IIngredientListElement<V> element, IIngredie
this.resourceId = ingredientHelper.getResourceId(ingredient);
}

@Override
public IIngredientHelper<V> getIngredientHelper() {
return ingredientHelper;
}

@Override
public IIngredientRenderer<V> getIngredientRenderer() {
return ingredientRenderer;
}

@Override
public Collection<String> getNameStrings() {
String displayNameLowercase = Translator.toLowercaseWithLocale(this.displayName);
Expand Down Expand Up @@ -115,36 +97,40 @@ private static void addModNameStrings(Set<String> modNames, String modId, String
}

@Override
public final List<String> getTooltipStrings(IIngredientFilterConfig config) {
public final List<String> getTooltipStrings(IIngredientFilterConfig config, IIngredientManager ingredientManager) {
String modName = this.modNames.get(0);
String modId = this.modIds.get(0);
String modNameLowercase = modName.toLowerCase(Locale.ENGLISH);
String displayNameLowercase = Translator.toLowercaseWithLocale(this.displayName);
V ingredient = element.getIngredient();
IIngredientRenderer<V> ingredientRenderer = ingredientManager.getIngredientRenderer(ingredient);
return IngredientInformation.getTooltipStrings(ingredient, ingredientRenderer, ImmutableSet.of(modId, modNameLowercase, displayNameLowercase, resourceId), config);
}

@Override
public Collection<String> getTagStrings() {
public Collection<String> getTagStrings(IIngredientManager ingredientManager) {
V ingredient = element.getIngredient();
IIngredientHelper<V> ingredientHelper = ingredientManager.getIngredientHelper(ingredient);
Collection<ResourceLocation> tags = ingredientHelper.getTags(ingredient);
return tags.stream()
.map(ResourceLocation::getPath)
.collect(Collectors.toList());
}

@Override
public Collection<String> getCreativeTabsStrings() {
public Collection<String> getCreativeTabsStrings(IIngredientManager ingredientManager) {
V ingredient = element.getIngredient();
IIngredientHelper<V> ingredientHelper = ingredientManager.getIngredientHelper(ingredient);
Collection<String> creativeTabsStrings = ingredientHelper.getCreativeTabNames(ingredient);
return creativeTabsStrings.stream()
.map(Translator::toLowercaseWithLocale)
.collect(Collectors.toList());
}

@Override
public Collection<String> getColorStrings() {
public Collection<String> getColorStrings(IIngredientManager ingredientManager) {
V ingredient = element.getIngredient();
IIngredientHelper<V> ingredientHelper = ingredientManager.getIngredientHelper(ingredient);
return IngredientInformation.getColorStrings(ingredient, ingredientHelper);
}

Expand Down

0 comments on commit fb0edcb

Please sign in to comment.