Skip to content

Commit 9271244

Browse files
committed
Fix HUD redirect rendering order, replaymod quick mode
1 parent a59c614 commit 9271244

File tree

4 files changed

+35
-6
lines changed

4 files changed

+35
-6
lines changed

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ org.gradle.daemon=true
66
# Versions
77
versionConnector=1.0.0-beta.11
88
versionAdapter=1.4.5-1.20.1-20230902.095059
9-
versionAdapterDefinition=1.4.6
9+
versionAdapterDefinition=1.4.7
1010

1111
versionMc=1.20.1
1212
versionForge=47.1.3

src/main/java/dev/su5ed/sinytra/connector/transformer/MixinPatchTransformer.java

+11-5
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import dev.su5ed.sinytra.adapter.patch.Patch;
1414
import dev.su5ed.sinytra.adapter.patch.PatchEnvironment;
1515
import dev.su5ed.sinytra.adapter.patch.transformer.DynamicLVTPatch;
16+
import dev.su5ed.sinytra.adapter.patch.transformer.ModifyMethodAccess;
1617
import dev.su5ed.sinytra.adapter.patch.transformer.ModifyMethodParams;
1718
import dev.su5ed.sinytra.connector.ConnectorUtil;
1819
import dev.su5ed.sinytra.connector.transformer.patch.ClassResourcesTransformer;
@@ -103,14 +104,19 @@ public class MixinPatchTransformer implements Transformer {
103104
"Lnet/minecraft/world/level/block/FireBlock;tryCatchFire(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;ILnet/minecraft/util/RandomSource;ILnet/minecraft/core/Direction;)V",
104105
(insn, list) -> list.insertBefore(insn, new FieldInsnNode(Opcodes.GETSTATIC, "net/minecraft/core/Direction", "NORTH", "Lnet/minecraft/core/Direction;")))
105106
.build(),
106-
// Redirect HUD rendering calls to Forge's replacement class
107+
// Move HUD rendering calls at Options.renderDebug to a lambda in Forge's vanilla gui overlay enum class
107108
Patch.builder()
108109
.targetClass("net/minecraft/client/gui/Gui")
109-
.targetMethod("m_280421_")
110+
.targetMethod("m_280421_(Lnet/minecraft/client/gui/GuiGraphics;F)V")
110111
.targetInjectionPoint("Lnet/minecraft/client/Options;f_92063_:Z")
111-
.modifyTarget("m_280421_(Lnet/minecraft/client/gui/GuiGraphics;F)V")
112-
.modifyInjectionPoint("TAIL", "")
113-
.modifyTargetClasses(classes -> classes.add(Type.getObjectType("net/minecraftforge/client/gui/overlay/ForgeGui")))
112+
.modifyTarget("lambda$static$18(Lnet/minecraftforge/client/gui/overlay/ForgeGui;Lnet/minecraft/client/gui/GuiGraphics;FII)V")
113+
.modifyInjectionPoint("HEAD", "")
114+
.modifyMethodAccess(new ModifyMethodAccess.AccessChange(true, Opcodes.ACC_STATIC))
115+
.modifyParams(builder -> builder
116+
.replace(0, Type.getObjectType("net/minecraftforge/client/gui/overlay/ForgeGui"))
117+
.insert(3, Type.INT_TYPE)
118+
.insert(4, Type.INT_TYPE))
119+
.modifyTargetClasses(classes -> classes.add(Type.getObjectType("net/minecraftforge/client/gui/overlay/VanillaGuiOverlay")))
114120
.build(),
115121
Patch.builder()
116122
.targetClass("net/minecraft/client/renderer/GameRenderer")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package dev.su5ed.sinytra.connector.mod.mixin.network;
2+
3+
import io.netty.channel.ChannelPipeline;
4+
import net.minecraft.network.Connection;
5+
import net.minecraftforge.network.filters.NetworkFilters;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.injection.At;
8+
import org.spongepowered.asm.mixin.injection.Inject;
9+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
10+
11+
import java.util.function.Function;
12+
13+
@Mixin(NetworkFilters.class)
14+
public class NetworkFiltersMixin {
15+
16+
@Inject(method = "lambda$injectIfNecessary$1", at = @At(value = "INVOKE", target = "Lio/netty/channel/ChannelPipeline;addBefore(Ljava/lang/String;Ljava/lang/String;Lio/netty/channel/ChannelHandler;)Lio/netty/channel/ChannelPipeline;"), remap = false, cancellable = true)
17+
private static void preventDuplicateHandler(Connection manager, ChannelPipeline pipeline, String key, Function filterFactory, CallbackInfo ci) {
18+
if (pipeline.get(key) != null) {
19+
ci.cancel();
20+
}
21+
}
22+
}

src/mod/resources/connectormod.mixins.json

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"CreativeModeInventoryScreenMixin",
1313
"network.ConnectionTypeMixin",
1414
"network.HandshakeHandlerMixin",
15+
"network.NetworkFiltersMixin",
1516
"tags.TagEntryAccessor",
1617
"tags.TagLoaderMixin",
1718
"registries.ForgeRegistryMixin",

0 commit comments

Comments
 (0)