diff --git a/common/src/main/java/org/embeddedt/modernfix/dynamicresources/DynamicBakedModelProvider.java b/common/src/main/java/org/embeddedt/modernfix/dynamicresources/DynamicBakedModelProvider.java index 5803fb77..250a8272 100644 --- a/common/src/main/java/org/embeddedt/modernfix/dynamicresources/DynamicBakedModelProvider.java +++ b/common/src/main/java/org/embeddedt/modernfix/dynamicresources/DynamicBakedModelProvider.java @@ -71,7 +71,7 @@ public class DynamicBakedModelProvider implements Map, BakedModel> cache) { this.bakery = bakery; this.bakedCache = cache; - this.permanentOverrides = new Object2ObjectOpenHashMap<>(); + this.permanentOverrides = Collections.synchronizedMap(new Object2ObjectOpenHashMap<>()); } public void setMissingModel(BakedModel model) { @@ -167,6 +167,18 @@ public class DynamicBakedModelProvider implements Map new AbstractMap.SimpleImmutableEntry<>(entry.getKey().getLeft(), entry.getValue())).collect(Collectors.toSet()); } + @Nullable + @Override + public BakedModel replace(ResourceLocation key, BakedModel value) { + BakedModel existingOverride = permanentOverrides.get(key); + // as long as no valid override was put in (null can mean unable to load model, so we treat as invalid), replace + // the model + if(existingOverride == null) + return this.put(key, value); + else + return existingOverride; + } + @Override public void replaceAll(BiFunction function) { Set overridenLocations = permanentOverrides.keySet();