From 33f689ba9aa56b2b5e533b8473b55308497006db Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Mon, 8 May 2023 16:15:15 -0400 Subject: [PATCH 1/2] Make RenderType EqualsStrategy more predictable --- .../RenderTypeEqualsStrategyMixin.java | 17 +++++++++++++++++ .../src/main/resources/modernfix.accesswidener | 3 ++- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 common/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/concurrency/RenderTypeEqualsStrategyMixin.java diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/concurrency/RenderTypeEqualsStrategyMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/concurrency/RenderTypeEqualsStrategyMixin.java new file mode 100644 index 00000000..c3afbe3d --- /dev/null +++ b/common/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/concurrency/RenderTypeEqualsStrategyMixin.java @@ -0,0 +1,17 @@ +package org.embeddedt.modernfix.common.mixin.bugfix.concurrency; + +import net.minecraft.client.renderer.RenderType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import java.util.Objects; + +@Mixin(targets = { "net/minecraft/client/renderer/RenderType$CompositeRenderType$EqualsStrategy"}) +public class RenderTypeEqualsStrategyMixin { + @Redirect(method = "equals(Lnet/minecraft/client/renderer/RenderType$CompositeRenderType;Lnet/minecraft/client/renderer/RenderType$CompositeRenderType;)Z", at = @At(value = "INVOKE", target = "Ljava/util/Objects;equals(Ljava/lang/Object;Ljava/lang/Object;)Z", ordinal = 0)) + private boolean alsoCheckName(Object a, Object b, RenderType.CompositeRenderType type1, RenderType.CompositeRenderType type2) { + boolean supposedlyEqual = Objects.equals(a, b); + return supposedlyEqual && Objects.equals(type1.name, type2.name); + } +} diff --git a/common/src/main/resources/modernfix.accesswidener b/common/src/main/resources/modernfix.accesswidener index 5081dfe7..bf157c09 100644 --- a/common/src/main/resources/modernfix.accesswidener +++ b/common/src/main/resources/modernfix.accesswidener @@ -36,4 +36,5 @@ accessible field net/minecraft/client/Minecraft reserve [B accessible method net/minecraft/resources/ResourceKey (Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)V accessible method net/minecraft/client/renderer/texture/TextureAtlasSprite (Lnet/minecraft/client/renderer/texture/TextureAtlas;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite$Info;IIIIILcom/mojang/blaze3d/platform/NativeImage;)V accessible field net/minecraft/client/renderer/block/model/BlockModel GSON Lcom/google/gson/Gson; -accessible field net/minecraft/server/MinecraftServer resources Lnet/minecraft/server/ServerResources; \ No newline at end of file +accessible field net/minecraft/server/MinecraftServer resources Lnet/minecraft/server/ServerResources; +accessible field net/minecraft/client/renderer/RenderStateShard name Ljava/lang/String; \ No newline at end of file From 9e44e00e70c17fb73a94ed5f9c63664d45891365 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Mon, 8 May 2023 16:39:01 -0400 Subject: [PATCH 2/2] Fix Continuity emissives --- .../mixin/perf/faster_texture_loading/TextureAtlasMixin.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_texture_loading/TextureAtlasMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_texture_loading/TextureAtlasMixin.java index 2a749f5c..f24add16 100644 --- a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_texture_loading/TextureAtlasMixin.java +++ b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_texture_loading/TextureAtlasMixin.java @@ -25,14 +25,14 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; -@Mixin(value = TextureAtlas.class, priority = 1500) +@Mixin(value = TextureAtlas.class, priority = 600) @ClientOnlyMixin public abstract class TextureAtlasMixin { @Shadow protected abstract ResourceLocation getResourceLocation(ResourceLocation location); @Shadow protected abstract Collection getBasicSpriteInfos(ResourceManager resourceManager, Set spriteLocations); - private Map> loadedImages; + private Map> loadedImages = new ConcurrentHashMap<>(); private boolean usingFasterLoad; private Collection storedResults; /** @@ -48,7 +48,6 @@ public abstract class TextureAtlasMixin { } List> futures = new ArrayList<>(); ConcurrentLinkedQueue results = new ConcurrentLinkedQueue<>(); - loadedImages = new ConcurrentHashMap<>(); for(ResourceLocation location : imageLocations) { if(MissingTextureAtlasSprite.getLocation().equals(location)) continue;