|
2 | 2 |
|
3 | 3 | import com.google.common.collect.ImmutableList; |
4 | 4 | import net.minecraft.client.renderer.block.model.BlockModel; |
| 5 | +import net.minecraft.client.resources.model.BakedModel; |
5 | 6 | import net.minecraft.client.resources.model.ModelBakery; |
6 | 7 | import net.minecraft.client.resources.model.ModelManager; |
7 | 8 | import net.minecraft.resources.ResourceLocation; |
|
14 | 15 | import org.embeddedt.modernfix.annotation.ClientOnlyMixin; |
15 | 16 | import org.embeddedt.modernfix.util.LambdaMap; |
16 | 17 | import org.spongepowered.asm.mixin.Mixin; |
| 18 | +import org.spongepowered.asm.mixin.Shadow; |
17 | 19 | import org.spongepowered.asm.mixin.injection.At; |
| 20 | +import org.spongepowered.asm.mixin.injection.Inject; |
18 | 21 | import org.spongepowered.asm.mixin.injection.Redirect; |
| 22 | +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; |
19 | 23 |
|
20 | 24 | import java.io.BufferedReader; |
21 | 25 | import java.io.IOException; |
| 26 | +import java.util.HashMap; |
22 | 27 | import java.util.List; |
23 | 28 | import java.util.Map; |
24 | 29 | import java.util.Objects; |
|
29 | 34 | @Mixin(ModelManager.class) |
30 | 35 | @ClientOnlyMixin |
31 | 36 | public class ModelManagerMixin { |
| 37 | + @Shadow private Map<ResourceLocation, BakedModel> bakedRegistry; |
| 38 | + |
| 39 | + @Inject(method = "<init>", at = @At("RETURN")) |
| 40 | + private void injectDummyBakedRegistry(CallbackInfo ci) { |
| 41 | + if(this.bakedRegistry == null) { |
| 42 | + this.bakedRegistry = new HashMap<>(); |
| 43 | + } |
| 44 | + } |
| 45 | + |
32 | 46 | @Redirect(method = "reload", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/resources/model/ModelManager;loadBlockModels(Lnet/minecraft/server/packs/resources/ResourceManager;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;")) |
33 | 47 | private CompletableFuture<Map<ResourceLocation, BlockModel>> deferBlockModelLoad(ResourceManager manager, Executor executor) { |
34 | 48 | return CompletableFuture.completedFuture(new LambdaMap<>(location -> loadSingleBlockModel(manager, location))); |
|
0 commit comments