Skip to content

Commit a7247df

Browse files
committed
Make emulated registry easier to debug
1 parent 8841af8 commit a7247df

File tree

2 files changed

+30
-25
lines changed

2 files changed

+30
-25
lines changed

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

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.embeddedt.modernfix.common.mixin.perf.dynamic_resources;
22

3-
import com.google.common.collect.ForwardingMap;
43
import com.google.common.collect.Maps;
54
import com.llamalad7.mixinextras.sugar.Local;
65
import net.minecraft.client.Minecraft;
@@ -65,30 +64,7 @@ private CompletableFuture<BlockStateModelLoader.LoadedModels> deferBlockStateLoa
6564
private static Map<BlockState, BlockStateModel> createBlockStateToModelDispatch(Map<BlockState, BlockStateModel> map, BlockStateModel missingModel) {
6665
var dynamicProvider = Objects.requireNonNull(DynamicModelProvider.currentReloadingModelProvider.get());
6766

68-
var dynamicRegistry = dynamicProvider.getTopLevelEmulatedRegistry();
69-
70-
return new ForwardingMap<>() {
71-
@Override
72-
protected Map<BlockState, BlockStateModel> delegate() {
73-
return dynamicRegistry;
74-
}
75-
76-
@Override
77-
public BlockStateModel get(Object key) {
78-
BlockStateModel result;
79-
if (key instanceof IModelHoldingBlockState state) {
80-
result = state.mfix$getModel();
81-
if (result != null) {
82-
return result;
83-
}
84-
}
85-
result = dynamicRegistry.getOrDefault(key, dynamicProvider.getMissingBakedModel());
86-
if (key instanceof IModelHoldingBlockState state) {
87-
state.mfix$setModel(result);
88-
}
89-
return result;
90-
}
91-
};
67+
return dynamicProvider.getFastTopLevelEmulatedRegistry();
9268
}
9369

9470
@Redirect(method = "reload", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/resources/model/ClientItemInfoLoader;scheduleLoad(Lnet/minecraft/server/packs/resources/ResourceManager;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"))

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.google.common.cache.CacheBuilder;
44
import com.google.common.cache.CacheLoader;
55
import com.google.common.cache.LoadingCache;
6+
import com.google.common.collect.ForwardingMap;
67
import com.google.common.collect.Iterators;
78
import com.google.common.collect.Maps;
89
import com.google.gson.JsonObject;
@@ -40,6 +41,7 @@
4041
import net.minecraft.world.level.block.state.BlockState;
4142
import net.minecraft.world.level.block.state.StateDefinition;
4243
import org.embeddedt.modernfix.ModernFix;
44+
import org.embeddedt.modernfix.duck.IModelHoldingBlockState;
4345
import org.jetbrains.annotations.NotNull;
4446
import org.jetbrains.annotations.Nullable;
4547

@@ -202,6 +204,33 @@ public Map<BlockState, BlockStateModel> getTopLevelEmulatedRegistry() {
202204
return new EmulatedRegistry<>(BlockState.class, this.loadedBakedModels, BlockStateSet::instance, this.mrlModelOverrides);
203205
}
204206

207+
public Map<BlockState, BlockStateModel> getFastTopLevelEmulatedRegistry() {
208+
var dynamicRegistry = getTopLevelEmulatedRegistry();
209+
210+
return new ForwardingMap<>() {
211+
@Override
212+
protected Map<BlockState, BlockStateModel> delegate() {
213+
return dynamicRegistry;
214+
}
215+
216+
@Override
217+
public BlockStateModel get(Object key) {
218+
BlockStateModel result;
219+
if (key instanceof IModelHoldingBlockState state) {
220+
result = state.mfix$getModel();
221+
if (result != null) {
222+
return result;
223+
}
224+
}
225+
result = dynamicRegistry.getOrDefault(key, getMissingBakedModel());
226+
if (key instanceof IModelHoldingBlockState state) {
227+
state.mfix$setModel(result);
228+
}
229+
return result;
230+
}
231+
};
232+
}
233+
205234
/*
206235
public Map<ResourceLocation, BakedModel> getStandaloneEmulatedRegistry() {
207236
return new EmulatedRegistry<>(ResourceLocation.class, this.loadedStandaloneModels, Set::of, this.standaloneModelOverrides);

0 commit comments

Comments
 (0)