diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/general/ConnectionMixin_Optimize.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/general/ConnectionMixin_Optimize.java new file mode 100644 index 00000000..6438543d --- /dev/null +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/general/ConnectionMixin_Optimize.java @@ -0,0 +1,18 @@ +package io.izzel.arclight.common.mixin.optimization.general; + +import io.netty.util.concurrent.AbstractEventExecutor; +import net.minecraft.network.Connection; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.Slice; + +@Mixin(Connection.class) +public class ConnectionMixin_Optimize { + + @ModifyArg(method = "sendPacket", at = @At(value = "INVOKE", remap = false, target = "Lio/netty/channel/EventLoop;execute(Ljava/lang/Runnable;)V"), + slice = @Slice(from = @At(value = "INVOKE", remap = false, target = "Lio/netty/channel/EventLoop;inEventLoop()Z"))) + private Runnable arclight$useLazyRunnable(Runnable runnable) { + return (AbstractEventExecutor.LazyRunnable) runnable::run; + } +} diff --git a/arclight-common/src/main/resources/mixins.arclight.impl.forge.optimization.json b/arclight-common/src/main/resources/mixins.arclight.impl.forge.optimization.json index 9bc01c77..36560763 100644 --- a/arclight-common/src/main/resources/mixins.arclight.impl.forge.optimization.json +++ b/arclight-common/src/main/resources/mixins.arclight.impl.forge.optimization.json @@ -6,6 +6,7 @@ "compatibilityLevel": "JAVA_11", "mixins": [ "ClassInheritanceMultiMapMixin", + "ConnectionMixin_Optimize", "EntityDataManagerMixin_Optimize", "GoalMixin", "MobMixin_Optimization",