diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/model_optimizations/MultiVariantMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/model_optimizations/MultiVariantMixin.java deleted file mode 100644 index 9e762b0f..00000000 --- a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/model_optimizations/MultiVariantMixin.java +++ /dev/null @@ -1,41 +0,0 @@ -package org.embeddedt.modernfix.common.mixin.perf.model_optimizations; - -import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; -import net.minecraft.client.renderer.block.model.MultiVariant; -import net.minecraft.client.renderer.block.model.Variant; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.resources.ResourceLocation; -import org.embeddedt.modernfix.annotation.ClientOnlyMixin; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Overwrite; -import org.spongepowered.asm.mixin.Shadow; - -import java.util.List; -import java.util.function.Function; - -@Mixin(value = MultiVariant.class, priority = 700) -@ClientOnlyMixin -public abstract class MultiVariantMixin { - @Shadow public abstract List getVariants(); - - /** - * @author embeddedt - * @reason avoid streams, try to optimize for common case - */ - @Overwrite - public void resolveParents(Function modelGetter) { - var variants = this.getVariants(); - // There is usually only a single variant - if (variants.size() == 1) { - modelGetter.apply(variants.get(0).getModelLocation()).resolveParents(modelGetter); - } else if(variants.size() > 1) { - ObjectOpenHashSet seenLocations = new ObjectOpenHashSet<>(variants.size()); - for (var variant : variants) { - var location = variant.getModelLocation(); - if (seenLocations.add(location)) { - modelGetter.apply(location).resolveParents(modelGetter); - } - } - } - } -} diff --git a/neoforge/src/main/java/org/embeddedt/modernfix/neoforge/dynresources/ModelLocationBuilder.java b/neoforge/src/main/java/org/embeddedt/modernfix/neoforge/dynresources/ModelLocationBuilder.java deleted file mode 100644 index 6dbf84d3..00000000 --- a/neoforge/src/main/java/org/embeddedt/modernfix/neoforge/dynresources/ModelLocationBuilder.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.embeddedt.modernfix.neoforge.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; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.properties.Property; - -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Set; - -public class ModelLocationBuilder { - private final Map, PropertyData> propertyToOptionStrings = new Object2ObjectOpenHashMap<>(); - private final StringBuilder builder = new StringBuilder(); - - 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()); - int requiredBuilderSize = Math.max(0, props.size() - 1); // commas - for (var prop : props) { - var data = propertyToOptionStrings.computeIfAbsent(prop, ModelLocationBuilder::computePropertyOptions); - optionsList.add(data.nameValuePairs); - requiredBuilderSize += data.maxPairLength; - } - var product = Lists.cartesianProduct(optionsList); - int count = product.size(); - int tupleEntryCount = optionsList.size(); - StringBuilder stringbuilder = this.builder; - stringbuilder.ensureCapacity(requiredBuilderSize); - for (int i = 0; i < count; i++) { - stringbuilder.setLength(0); - var result = product.get(i); - for (int j = 0; j < tupleEntryCount; j++) { - if (j != 0) { - stringbuilder.append(','); - } - stringbuilder.append(result.get(j)); - } - destinationSet.add(new ModelResourceLocation(baseLocation, stringbuilder.toString())); - } - } - - private static PropertyData computePropertyOptions(Property prop) { - 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(valuesList.build(), maxLength); - } - - private static > String getValueName(Property property, Comparable value) { - return property.getName((T)value); - } -}