Merge remote-tracking branch 'origin/main' into 1.18

This commit is contained in:
embeddedt 2023-05-05 09:44:15 -04:00
commit 385d12e159
No known key found for this signature in database
GPG Key ID: A69433EC199B5613
2 changed files with 44 additions and 2 deletions

View File

@ -6,7 +6,7 @@ import net.minecraft.client.resources.model.ModelManager;
import net.minecraft.world.level.block.state.BlockState;
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
import org.embeddedt.modernfix.dynamicresources.ModelLocationCache;
import org.embeddedt.modernfix.util.DynamicMap;
import org.embeddedt.modernfix.util.DynamicOverridableMap;
import org.spongepowered.asm.mixin.*;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@ -26,7 +26,7 @@ public class BlockModelShaperMixin {
@Inject(method = "<init>", at = @At("RETURN"))
private void replaceModelMap(CallbackInfo ci) {
// replace the backing map for mods which will access it
this.modelByStateCache = new DynamicMap<>(state -> modelManager.getModel(ModelLocationCache.get(state)));
this.modelByStateCache = new DynamicOverridableMap<>(state -> modelManager.getModel(ModelLocationCache.get(state)));
}
/**

View File

@ -0,0 +1,42 @@
package org.embeddedt.modernfix.util;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
import java.util.function.Function;
public class DynamicOverridableMap<K, V> extends DynamicMap<K, V> {
private final Map<K, V> overrideMap;
public DynamicOverridableMap(Function<K, V> function) {
super(function);
overrideMap = new Object2ObjectOpenHashMap<>();
}
@Override
public @Nullable V put(K k, V v) {
if(v == null)
throw new IllegalArgumentException();
overrideMap.put(k, v);
return null;
}
@Override
public V get(Object o) {
V val = overrideMap.get(o);
if(val != null)
return val;
return super.get(o);
}
@Override
public void putAll(@NotNull Map<? extends K, ? extends V> map) {
for(V val : map.values()) {
if(val == null)
throw new IllegalArgumentException();
}
overrideMap.putAll(map);
}
}