Skip to content

Commit 5450a16

Browse files
committed
Rewrite dynamic resources once again
1 parent d8b8670 commit 5450a16

File tree

6 files changed

+252
-166
lines changed

6 files changed

+252
-166
lines changed

common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MinecraftMixin_ModelTicking.java

Lines changed: 0 additions & 22 deletions
This file was deleted.

common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/ModelManagerMixin.java

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,32 @@
11
package org.embeddedt.modernfix.common.mixin.perf.dynamic_resources;
22

33
import com.google.common.collect.ImmutableList;
4+
import it.unimi.dsi.fastutil.objects.Object2IntMap;
5+
import net.minecraft.client.Minecraft;
46
import net.minecraft.client.renderer.block.model.BlockModel;
7+
import net.minecraft.client.resources.model.AtlasSet;
58
import net.minecraft.client.resources.model.BakedModel;
69
import net.minecraft.client.resources.model.BlockStateModelLoader;
10+
import net.minecraft.client.resources.model.ModelBakery;
711
import net.minecraft.client.resources.model.ModelManager;
12+
import net.minecraft.client.resources.model.ModelResourceLocation;
813
import net.minecraft.resources.ResourceLocation;
914
import net.minecraft.server.packs.resources.ResourceManager;
15+
import net.minecraft.util.profiling.ProfilerFiller;
1016
import net.minecraft.world.level.block.Block;
1117
import net.minecraft.world.level.block.state.BlockState;
1218
import net.minecraft.world.level.block.state.StateDefinition;
1319
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
14-
import org.embeddedt.modernfix.duck.IExtendedModelManager;
20+
import org.embeddedt.modernfix.dynamicresources.DynamicModelProvider;
1521
import org.spongepowered.asm.mixin.Mixin;
22+
import org.spongepowered.asm.mixin.Overwrite;
1623
import org.spongepowered.asm.mixin.Shadow;
24+
import org.spongepowered.asm.mixin.Unique;
1725
import org.spongepowered.asm.mixin.injection.At;
1826
import org.spongepowered.asm.mixin.injection.Inject;
1927
import org.spongepowered.asm.mixin.injection.Redirect;
2028
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
29+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
2130

2231
import java.util.HashMap;
2332
import java.util.Map;
@@ -26,9 +35,16 @@
2635

2736
@Mixin(ModelManager.class)
2837
@ClientOnlyMixin
29-
public class ModelManagerMixin implements IExtendedModelManager {
38+
public class ModelManagerMixin {
3039
@Shadow private Map<ResourceLocation, BakedModel> bakedRegistry;
3140

41+
@Shadow private BakedModel missingModel;
42+
@Unique
43+
private DynamicModelProvider mfix$modelProvider;
44+
45+
@Unique
46+
private Map<ResourceLocation, AtlasSet.StitchResult> mfix$stitchResults;
47+
3248
@Inject(method = "<init>", at = @At("RETURN"))
3349
private void injectDummyBakedRegistry(CallbackInfo ci) {
3450
if(this.bakedRegistry == null) {
@@ -51,8 +67,31 @@ private ImmutableList<BlockState> skipCollection(StateDefinition<Block, BlockSta
5167
return ImmutableList.of();
5268
}
5369

54-
@Override
55-
public void mfix$tick() {
70+
@Inject(method = "loadModels", at = @At("HEAD"))
71+
private void saveStitchResults(ProfilerFiller profilerFiller, Map<ResourceLocation, AtlasSet.StitchResult> map, ModelBakery modelBakery, Object2IntMap<BlockState> object2IntMap, CallbackInfoReturnable<?> cir) {
72+
this.mfix$stitchResults = map;
73+
}
5674

75+
@Inject(method = "apply", at = @At("RETURN"))
76+
private void createModelProvider(CallbackInfo ci) {
77+
this.mfix$modelProvider = new DynamicModelProvider(
78+
null, // TODO
79+
this.missingModel,
80+
Minecraft.getInstance().getResourceManager(),
81+
this.mfix$stitchResults
82+
);
83+
}
84+
85+
/**
86+
* @author embeddedt
87+
* @reason use dynamic model system
88+
*/
89+
@Overwrite
90+
public BakedModel getModel(ModelResourceLocation modelLocation) {
91+
if(this.mfix$modelProvider != null) {
92+
return this.mfix$modelProvider.getModel(modelLocation);
93+
} else {
94+
return this.missingModel;
95+
}
5796
}
5897
}

common/src/main/java/org/embeddedt/modernfix/dynamicresources/DynamicModelCache.java

Lines changed: 0 additions & 79 deletions
This file was deleted.

0 commit comments

Comments
 (0)