diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/dynresources/ModelLocationBuilder.java b/forge/src/main/java/org/embeddedt/modernfix/forge/dynresources/ModelLocationBuilder.java index 85793986..87d0098b 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/dynresources/ModelLocationBuilder.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/dynresources/ModelLocationBuilder.java @@ -1,5 +1,6 @@ package org.embeddedt.modernfix.forge.dynresources; +import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.minecraft.client.resources.model.ModelResourceLocation; @@ -17,11 +18,11 @@ public class ModelLocationBuilder { private final Map, PropertyData> propertyToOptionStrings = new Object2ObjectOpenHashMap<>(); private final StringBuilder builder = new StringBuilder(); - private record PropertyData(List nameValuePairs, int maxPairLength) {} + private record PropertyData(ImmutableList nameValuePairs, int maxPairLength) {} public void generateForBlock(Set destinationSet, Block block, ResourceLocation baseLocation) { var props = block.getStateDefinition().getProperties(); - List> optionsList = new ArrayList<>(props.size()); + List> optionsList = new ArrayList<>(props.size()); int requiredBuilderSize = Math.max(0, props.size() - 1); // commas for (var prop : props) { var data = propertyToOptionStrings.computeIfAbsent(prop, ModelLocationBuilder::computePropertyOptions); @@ -47,14 +48,14 @@ public class ModelLocationBuilder { } private static PropertyData computePropertyOptions(Property prop) { - List valuesList = new ArrayList<>(prop.getPossibleValues().size()); + ImmutableList.Builder valuesList = ImmutableList.builderWithExpectedSize(prop.getPossibleValues().size()); int maxLength = 0; for (var val : prop.getPossibleValues()) { String pair = prop.getName() + "=" + getValueName(prop, val); valuesList.add(pair.toLowerCase(Locale.ROOT)); maxLength = Math.max(pair.length(), maxLength); } - return new PropertyData(List.copyOf(valuesList), maxLength); + return new PropertyData(valuesList.build(), maxLength); } private static > String getValueName(Property property, Comparable value) {