Make BlockColors thread-safe
Workaround for issues like https://github.com/vadis365/Mob-Grinding-Utils/issues/240, as too many mods do this
This commit is contained in:
parent
24990ba089
commit
572cbaf9bd
|
|
@ -32,6 +32,7 @@ public class ModernFixEarlyConfig {
|
|||
this.addMixinRule("perf.preload_block_classes", true);
|
||||
this.addMixinRule("perf.parallel_potentially_unsafe", false);
|
||||
this.addMixinRule("perf.parallel_blockstate_cache_rebuild", true);
|
||||
this.addMixinRule("safety", true);
|
||||
|
||||
/* Mod compat */
|
||||
if(FMLLoader.getLoadingModList().getModFileById("smoothboot") != null) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
package org.embeddedt.modernfix.mixin.safety;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.color.BlockColors;
|
||||
import net.minecraft.client.renderer.color.IBlockColor;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
import java.util.concurrent.locks.Lock;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
@Mixin(value = BlockColors.class, priority = 700)
|
||||
public class BlockColorsMixin {
|
||||
private Lock mapLock = new ReentrantLock();
|
||||
@Inject(method = "register", at = @At("HEAD"))
|
||||
private void lockMapBeforeAccess(IBlockColor pBlockColor, Block[] pBlocks, CallbackInfo ci) {
|
||||
mapLock.lock();
|
||||
}
|
||||
@Inject(method = "register", at = @At("TAIL"))
|
||||
private void unlockMap(IBlockColor pBlockColor, Block[] pBlocks, CallbackInfo ci) {
|
||||
mapLock.unlock();
|
||||
}
|
||||
}
|
||||
|
|
@ -38,7 +38,8 @@
|
|||
"perf.async_jei.JeiStarterMixin",
|
||||
"perf.async_jei.PluginCallerMixin",
|
||||
"perf.async_jei.RecipeManagerInternalMixin",
|
||||
"perf.thread_priorities.IntegratedServerMixin"
|
||||
"perf.thread_priorities.IntegratedServerMixin",
|
||||
"safety.BlockColorsMixin"
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user