From 9d7f897daee7d4235900e8ca3cc90a9f649c7fe3 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Wed, 3 May 2023 10:32:32 -0400 Subject: [PATCH] Get Continuity working on Fabric --- .../modernfix/util/LayeredForwardingMap.java | 16 ++++++++++++---- .../perf/dynamic_resources/ModelBakeryMixin.java | 4 ++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/org/embeddedt/modernfix/util/LayeredForwardingMap.java b/common/src/main/java/org/embeddedt/modernfix/util/LayeredForwardingMap.java index 99cc73a5..cf9f3528 100644 --- a/common/src/main/java/org/embeddedt/modernfix/util/LayeredForwardingMap.java +++ b/common/src/main/java/org/embeddedt/modernfix/util/LayeredForwardingMap.java @@ -7,8 +7,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; /** - * Simple forwarding map implementation that allows layering multiple maps together, with the last layer being - * mutable. + * Simple forwarding map implementation that allows layering multiple maps together. */ public class LayeredForwardingMap implements Map { private final Map[] layers; @@ -70,7 +69,14 @@ public class LayeredForwardingMap implements Map { public V put(K key, V value) { if(value == null) throw new IllegalArgumentException(); - return layers[layers.length - 1].put(key, value); + V originalValue = null; + for(Map map : layers) { + V oldVal = map.remove(key); + if(originalValue == null) + originalValue = oldVal; + map.put(key, value); + } + return originalValue; } @Override @@ -87,7 +93,9 @@ public class LayeredForwardingMap implements Map { if(value == null) throw new IllegalArgumentException(); } - layers[layers.length - 1].putAll(m); + for(Map map : layers) { + map.putAll(m); + } } @Override diff --git a/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java b/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java index 97e66b89..e902b4f0 100644 --- a/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java +++ b/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java @@ -295,6 +295,10 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { } else ibakedmodel = iunbakedmodel.bake((ModelBakery) (Object) this, textureGetter, arg2, arg); } + if(ibakedmodel == null) { + ModernFix.LOGGER.error("Model {} returned null baked model", arg); + ibakedmodel = bakedMissingModel; + } // TODO event this.bakedCache.put(triple, ibakedmodel); cir.setReturnValue(ibakedmodel);