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 85dc7d72..34e7e5f7 100644 --- a/common/src/main/java/org/embeddedt/modernfix/dynamicresources/DynamicBakedModelProvider.java +++ b/common/src/main/java/org/embeddedt/modernfix/dynamicresources/DynamicBakedModelProvider.java @@ -73,7 +73,7 @@ public class DynamicBakedModelProvider implements Map cache) { this.bakery = bakery; this.bakedCache = cache; - this.permanentOverrides = new Object2ObjectOpenHashMap<>(); + this.permanentOverrides = Collections.synchronizedMap(new Object2ObjectOpenHashMap<>()); } public void setMissingModel(BakedModel model) { @@ -170,6 +170,18 @@ public class DynamicBakedModelProvider implements Map new AbstractMap.SimpleImmutableEntry<>(entry.getKey().id(), 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();