Skip to content

Commit ecfd207

Browse files
committed
perf: avoid network wakeup when not needed
1 parent d59a980 commit ecfd207

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/main/java/com/ishland/vmp/mixins/networking/no_flush/MixinClientConnection.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
package com.ishland.vmp.mixins.networking.no_flush;
22

3+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
35
import io.netty.channel.Channel;
6+
import io.netty.channel.EventLoop;
7+
import io.netty.util.concurrent.AbstractEventExecutor;
48
import net.minecraft.network.ClientConnection;
9+
import net.minecraft.network.PacketCallbacks;
10+
import net.minecraft.network.packet.Packet;
11+
import org.jetbrains.annotations.Nullable;
512
import org.spongepowered.asm.mixin.Mixin;
613
import org.spongepowered.asm.mixin.injection.At;
714
import org.spongepowered.asm.mixin.injection.Redirect;
@@ -14,4 +21,13 @@ private Channel dontFlush(Channel instance) {
1421
return instance; // no-op
1522
}
1623

24+
@WrapOperation(method = "sendImmediately", at = @At(value = "INVOKE", target = "Lio/netty/channel/EventLoop;execute(Ljava/lang/Runnable;)V"))
25+
private void avoidImmediateExecute(EventLoop instance, Runnable runnable, Operation<Void> original, Packet<?> packet, @Nullable PacketCallbacks callbacks, boolean flush) {
26+
if (!flush && instance instanceof AbstractEventExecutor executor) {
27+
executor.lazyExecute(runnable);
28+
} else {
29+
original.call(instance, runnable);
30+
}
31+
}
32+
1733
}

0 commit comments

Comments
 (0)