Use WrapOperation

This commit is contained in:
HaHaWTH 2024-10-22 02:14:35 +08:00
parent c7a2205cb2
commit 37b756c99e

View File

@ -1,6 +1,7 @@
package org.embeddedt.modernfix.common.mixin.perf.fix_loop_spin_waiting; package org.embeddedt.modernfix.common.mixin.perf.fix_loop_spin_waiting;
import com.llamalad7.mixinextras.injector.WrapWithCondition; import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import net.minecraft.Util; import net.minecraft.Util;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraft.util.thread.ReentrantBlockableEventLoop; import net.minecraft.util.thread.ReentrantBlockableEventLoop;
@ -20,14 +21,14 @@ public abstract class MinecraftServerMixin {
@Unique @Unique
private boolean mfix$isWaitingForNextTick = false; private boolean mfix$isWaitingForNextTick = false;
@WrapWithCondition( @WrapOperation(
method = "waitUntilNextTick", method = "waitUntilNextTick",
at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;managedBlock(Ljava/util/function/BooleanSupplier;)V") at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;managedBlock(Ljava/util/function/BooleanSupplier;)V")
) )
private boolean manageBlockWithCondition(MinecraftServer instance, BooleanSupplier booleanSupplier) { private void managedBlock(MinecraftServer instance, BooleanSupplier isDone, Operation<Void> original) {
try { try {
this.mfix$isWaitingForNextTick = true; this.mfix$isWaitingForNextTick = true;
return true; original.call(instance, isDone);
} finally { } finally {
this.mfix$isWaitingForNextTick = false; this.mfix$isWaitingForNextTick = false;
} }