55import net .minecraft .client .renderer .block .dispatch .BlockStateModel ;
66import net .minecraft .client .resources .model .BlockStateModelLoader ;
77import net .minecraft .client .resources .model .ClientItemInfoLoader ;
8+ import net .minecraft .client .resources .model .ModelDiscovery ;
89import net .minecraft .client .resources .model .ModelManager ;
10+ import net .minecraft .client .resources .model .ResolvedModel ;
911import net .minecraft .client .resources .model .UnbakedModel ;
12+ import net .minecraft .client .resources .model .cuboid .ItemModelGenerator ;
1013import net .minecraft .resources .Identifier ;
1114import net .minecraft .server .packs .resources .Resource ;
1215import net .minecraft .world .level .block .state .BlockState ;
16+ import net .neoforged .neoforge .client .model .standalone .StandaloneModelLoader ;
1317import org .embeddedt .modernfix .annotation .ClientOnlyMixin ;
1418import org .embeddedt .modernfix .dynresources .BlockStateModelMap ;
1519import org .embeddedt .modernfix .dynresources .DynamicModelSystem ;
1620import org .spongepowered .asm .mixin .Mixin ;
1721import org .spongepowered .asm .mixin .Overwrite ;
1822import org .spongepowered .asm .mixin .injection .At ;
1923import org .spongepowered .asm .mixin .injection .ModifyArg ;
24+ import org .spongepowered .asm .mixin .injection .Redirect ;
2025
2126import java .util .Map ;
2227import java .util .concurrent .CompletableFuture ;
@@ -40,11 +45,20 @@ public class MixinModelManager {
4045 * @author embeddedt
4146 * @reason Model resolution is not necessary, because we dynamically find models as they are referenced
4247 */
43- @ Overwrite
44- private static ModelManager .ResolvedModels discoverModelDependencies (
45- Map <Identifier , UnbakedModel > inputModels , BlockStateModelLoader .LoadedModels loadedModels , ClientItemInfoLoader .LoadedClientInfos loadedClientInfos , net .neoforged .neoforge .client .model .standalone .StandaloneModelLoader .LoadedModels standaloneModels
48+ @ Redirect (
49+ method = "discoverModelDependencies(Ljava/util/Map;Lnet/minecraft/client/resources/model/BlockStateModelLoader$LoadedModels;Lnet/minecraft/client/resources/model/ClientItemInfoLoader$LoadedClientInfos;Lnet/neoforged/neoforge/client/model/standalone/StandaloneModelLoader$LoadedModels;)Lnet/minecraft/client/resources/model/ModelManager$ResolvedModels;" ,
50+ at = @ At (value = "INVOKE" , target = "Lnet/minecraft/client/resources/model/ModelDiscovery;resolve()Ljava/util/Map;" )
51+ )
52+ private static Map <Identifier , ResolvedModel > resolveModelDependenciesDynamically (
53+ ModelDiscovery discovery , Map <Identifier , UnbakedModel > inputModels , BlockStateModelLoader .LoadedModels loadedModels , ClientItemInfoLoader .LoadedClientInfos loadedClientInfos , StandaloneModelLoader .LoadedModels standaloneModels
4654 ) {
47- return new DynamicModelSystem .DynamicResolver (inputModels , loadedModels , loadedClientInfos , standaloneModels ).resolvedModels ();
55+ UnbakedModel generatedItemModel = new ItemModelGenerator ();
56+ var generatedItemWrapper = ((ModelDiscoveryAccessor ) discovery ).mfix$getModelWrappers ().get (ItemModelGenerator .GENERATED_ITEM_MODEL_ID );
57+ if (generatedItemWrapper != null ) {
58+ generatedItemModel = ((ModelDiscoveryModelWrapperAccessor ) generatedItemWrapper ).mfix$getWrapped ();
59+ }
60+
61+ return new DynamicModelSystem .DynamicResolver (inputModels , loadedModels , loadedClientInfos , standaloneModels , generatedItemModel ).resolvedModels ().models ();
4862 }
4963
5064 /**
0 commit comments