Fix issue with anonymous classes in mixin

Related: #151
This commit is contained in:
embeddedt 2023-07-07 12:34:36 -04:00
parent 8f896f065c
commit 79219d286f
2 changed files with 17 additions and 13 deletions

View File

@ -9,10 +9,7 @@ import com.mojang.datafixers.util.Pair;
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.renderer.block.model.BlockModel;
import net.minecraft.client.resources.model.Material; import net.minecraft.client.resources.model.*;
import net.minecraft.client.resources.model.ModelBakery;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.client.resources.model.UnbakedModel;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.packs.PackResources; import net.minecraft.server.packs.PackResources;
import net.minecraft.server.packs.PackType; import net.minecraft.server.packs.PackType;
@ -24,6 +21,7 @@ import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.level.block.state.properties.Property;
import org.embeddedt.modernfix.ModernFix; import org.embeddedt.modernfix.ModernFix;
import org.embeddedt.modernfix.api.entrypoint.ModernFixClientIntegration;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@ -32,6 +30,8 @@ import java.nio.charset.StandardCharsets;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import java.util.function.Function; import java.util.function.Function;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -342,4 +342,13 @@ public class ModelBakeryHelpers {
} }
return ImmutableList.copyOf(finalList); return ImmutableList.copyOf(finalList);
} }
public static ModernFixClientIntegration bakedModelWrapper(BiFunction<ResourceLocation, Pair<UnbakedModel, BakedModel>, BakedModel> consumer) {
return new ModernFixClientIntegration() {
@Override
public BakedModel onBakedModelLoad(ResourceLocation location, UnbakedModel baseModel, BakedModel originalModel, ModelState state, ModelBakery bakery) {
return consumer.apply(location, Pair.of(baseModel, originalModel));
}
};
}
} }

View File

@ -11,7 +11,7 @@ import org.embeddedt.modernfix.ModernFix;
import org.embeddedt.modernfix.ModernFixClient; import org.embeddedt.modernfix.ModernFixClient;
import org.embeddedt.modernfix.annotation.ClientOnlyMixin; import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
import org.embeddedt.modernfix.annotation.RequiresMod; import org.embeddedt.modernfix.annotation.RequiresMod;
import org.embeddedt.modernfix.api.entrypoint.ModernFixClientIntegration; import org.embeddedt.modernfix.dynamicresources.ModelBakeryHelpers;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
@ -30,13 +30,9 @@ public class RegistrationMixin {
@Inject(method = "registerClientEvents", at = @At("TAIL"), remap = false) @Inject(method = "registerClientEvents", at = @At("TAIL"), remap = false)
private void doRegisterDynBake(CallbackInfo ci) { private void doRegisterDynBake(CallbackInfo ci) {
customizerField = ObfuscationReflectionHelper.findField(ModelOverrideComponent.class, "customizer"); customizerField = ObfuscationReflectionHelper.findField(ModelOverrideComponent.class, "customizer");
ModernFixClient.CLIENT_INTEGRATIONS.add(new ModernFixClientIntegration() { ModernFixClient.CLIENT_INTEGRATIONS.add(ModelBakeryHelpers.bakedModelWrapper((location, pair) -> {
@Override BakedModel originalModel = pair.getSecond();
public BakedModel onBakedModelLoad(ResourceLocation location, UnbakedModel baseModel, BakedModel originalModel, ModelState state, ModelBakery bakery) {
if(location.getNamespace().equals(AppEng.MOD_ID)) { if(location.getNamespace().equals(AppEng.MOD_ID)) {
BakedModel m = bakery.bake(ModelBakery.MISSING_MODEL_LOCATION, BlockModelRotation.X0_Y0);
if(originalModel == m)
return originalModel;
Iterator<IModelBakeComponent> components = Api.INSTANCE.definitions().getRegistry().getBootstrapComponents(IModelBakeComponent.class); Iterator<IModelBakeComponent> components = Api.INSTANCE.definitions().getRegistry().getBootstrapComponents(IModelBakeComponent.class);
while(components.hasNext()) { while(components.hasNext()) {
IModelBakeComponent c = components.next(); IModelBakeComponent c = components.next();
@ -55,7 +51,6 @@ public class RegistrationMixin {
} }
} }
return originalModel; return originalModel;
} }));
});
} }
} }