Skip to content

Commit a5b5733

Browse files
committed
Change permanentOverrides to ConcurrentHashMap
Should help address thread contention noted while profiling
1 parent b567658 commit a5b5733

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.google.common.collect.ImmutableSet;
44
import com.mojang.math.Transformation;
5-
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
65
import net.minecraft.client.renderer.block.model.BakedQuad;
76
import net.minecraft.client.renderer.block.model.ItemOverrides;
87
import net.minecraft.client.renderer.block.model.ItemTransforms;
@@ -22,6 +21,7 @@
2221
import org.jetbrains.annotations.Nullable;
2322

2423
import java.util.*;
24+
import java.util.concurrent.ConcurrentHashMap;
2525
import java.util.function.BiFunction;
2626
import java.util.stream.Collectors;
2727

@@ -85,7 +85,7 @@ public ItemOverrides getOverrides() {
8585
public DynamicBakedModelProvider(ModelBakery bakery, Map<Triple<ResourceLocation, Transformation, Boolean>, BakedModel> cache) {
8686
this.bakery = bakery;
8787
this.bakedCache = cache;
88-
this.permanentOverrides = Collections.synchronizedMap(new Object2ObjectOpenHashMap<>());
88+
this.permanentOverrides = new ConcurrentHashMap<>();
8989
if(currentInstance == null)
9090
currentInstance = this;
9191
}
@@ -109,12 +109,12 @@ public boolean isEmpty() {
109109

110110
@Override
111111
public boolean containsKey(Object o) {
112-
return permanentOverrides.getOrDefault(o, SENTINEL) != null;
112+
return o != null && permanentOverrides.getOrDefault(o, SENTINEL) != null;
113113
}
114114

115115
@Override
116116
public boolean containsValue(Object o) {
117-
return permanentOverrides.containsValue(o) || bakedCache.containsValue(o);
117+
return o != null && (permanentOverrides.containsValue(o) || bakedCache.containsValue(o));
118118
}
119119

120120
private static boolean isVanillaTopLevelModel(ResourceLocation location) {
@@ -164,6 +164,9 @@ public BakedModel get(Object o) {
164164

165165
@Override
166166
public BakedModel put(ResourceLocation resourceLocation, BakedModel bakedModel) {
167+
if(resourceLocation == null)
168+
return null;
169+
167170
BakedModel m = permanentOverrides.put(resourceLocation, bakedModel);
168171
if(m != null)
169172
return m;
@@ -173,6 +176,9 @@ public BakedModel put(ResourceLocation resourceLocation, BakedModel bakedModel)
173176

174177
@Override
175178
public BakedModel remove(Object o) {
179+
if(o == null)
180+
return null;
181+
176182
BakedModel m = permanentOverrides.remove(o);
177183
if(m != null)
178184
return m;

0 commit comments

Comments
 (0)