Fix occasional crash due to unsafe concurrency with RenderTypes
This commit is contained in:
parent
9a4952aa42
commit
e50859f10d
|
|
@ -0,0 +1,28 @@
|
||||||
|
package org.embeddedt.modernfix.mixin;
|
||||||
|
|
||||||
|
import com.google.common.base.Preconditions;
|
||||||
|
import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
import net.minecraft.client.renderer.vertex.VertexFormat;
|
||||||
|
import org.spongepowered.asm.mixin.Final;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Overwrite;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
@Mixin(targets = {"net/minecraft/client/renderer/RenderType$Type"})
|
||||||
|
public class RenderTypeMixin {
|
||||||
|
@Shadow @Final private static ObjectOpenCustomHashSet<RenderType.Type> TYPES;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author embeddedt
|
||||||
|
* @reason synchronize, can be accessed by multiple mods during modloading
|
||||||
|
*/
|
||||||
|
@Overwrite
|
||||||
|
private static RenderType.Type getOrCreate(String name, VertexFormat format, int drawMode, int bufferSize, boolean useDelegate, boolean needsSorting, RenderType.State renderState) {
|
||||||
|
synchronized (TYPES){
|
||||||
|
return TYPES.addOrGet(new RenderType.Type(name, format, drawMode, bufferSize, useDelegate, needsSorting, renderState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1 +1,3 @@
|
||||||
public net.minecraft.client.Minecraft$WorldSelectionType
|
public net.minecraft.client.Minecraft$WorldSelectionType
|
||||||
|
public net.minecraft.client.renderer.RenderType$Type
|
||||||
|
public net.minecraft.client.renderer.RenderType$Type <init>(Ljava/lang/String;Lnet/minecraft/client/renderer/vertex/VertexFormat;IIZZLnet/minecraft/client/renderer/RenderType$State;)V
|
||||||
|
|
@ -11,7 +11,8 @@
|
||||||
"SaveFormatAccessor"
|
"SaveFormatAccessor"
|
||||||
],
|
],
|
||||||
"client": [
|
"client": [
|
||||||
"MinecraftMixin"
|
"MinecraftMixin",
|
||||||
|
"RenderTypeMixin"
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user