Fix concurrency bugs in Mantle models
Backports eb111d2083
Related: https://github.com/embeddedt/embeddium/issues/251
This commit is contained in:
parent
8873a055bc
commit
ec189b55a2
|
|
@ -0,0 +1,24 @@
|
|||
package org.embeddedt.modernfix.forge.mixin.bugfix.mantle_model_cme;
|
||||
|
||||
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
|
||||
import org.embeddedt.modernfix.annotation.RequiresMod;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Mutable;
|
||||
import org.spongepowered.asm.mixin.Pseudo;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@Pseudo
|
||||
@Mixin(targets = { "slimeknights/mantle/client/model/connected/ConnectedModel$Baked" }, remap = false)
|
||||
@RequiresMod("mantle")
|
||||
@ClientOnlyMixin
|
||||
public class ConnectedModelMixin {
|
||||
@SuppressWarnings("unused")
|
||||
@Shadow
|
||||
@Final
|
||||
@Mutable
|
||||
private final Map<String, String> nameMappingCache = new ConcurrentHashMap<>();
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
package org.embeddedt.modernfix.forge.mixin.bugfix.mantle_model_cme;
|
||||
|
||||
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
|
||||
import org.embeddedt.modernfix.annotation.RequiresMod;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Mutable;
|
||||
import org.spongepowered.asm.mixin.Pseudo;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@Pseudo
|
||||
@Mixin(targets = { "slimeknights/mantle/client/model/fluid/FluidTextureModel$Loader" }, remap = false)
|
||||
@RequiresMod("mantle")
|
||||
@ClientOnlyMixin
|
||||
public class FluidTextureModelLoaderMixin {
|
||||
@SuppressWarnings("unused")
|
||||
@Shadow
|
||||
@Final
|
||||
@Mutable
|
||||
private final Map<?, ?> modelCache = new ConcurrentHashMap<>();
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package org.embeddedt.modernfix.forge.mixin.bugfix.mantle_model_cme;
|
||||
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
|
||||
import org.embeddedt.modernfix.annotation.RequiresMod;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Mutable;
|
||||
import org.spongepowered.asm.mixin.Pseudo;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
* Fix ConcurrentModificationException from Mantle models by making the cache thread-safe.
|
||||
*/
|
||||
@Pseudo
|
||||
@Mixin(targets = { "slimeknights/mantle/client/model/RetexturedModel$BakedModel" }, remap = false)
|
||||
@RequiresMod("mantle")
|
||||
@ClientOnlyMixin
|
||||
public class RetexturedModelBakedMixin {
|
||||
@SuppressWarnings("unused")
|
||||
@Shadow
|
||||
@Final
|
||||
@Mutable
|
||||
private final Map<ResourceLocation, BakedModel> cache = new ConcurrentHashMap<>();
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user