LTDServerPatch/src/main/java/top/leisuretimedock/serverpatch/mixin/MixinWirelessTransceiverBlockEntity.java

43 lines
1.6 KiB
Java

package top.leisuretimedock.serverpatch.mixin;
import com.extendedae_plus.content.wireless.WirelessTransceiverBlockEntity;
import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import net.minecraft.core.BlockPos;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState;
import org.spongepowered.asm.mixin.Mixin;
@Mixin(value = WirelessTransceiverBlockEntity.class ,remap = false)
public class MixinWirelessTransceiverBlockEntity {
/**
* 如果服务器正在关闭,直接跳过 updateState
*/
@WrapMethod(
method = "updateState"
)
private void SP$onUpdateState(Operation<Void> original) {
Level level = ((WirelessTransceiverBlockEntity)(Object)this).getLevel();
if (level instanceof ServerLevel serverLevel) {
MinecraftServer server = serverLevel.getServer();
if (server != null && server.isRunning()) {
original.call();
}
}
}
@WrapMethod(
method = "serverTick"
)
private static void SP$onServerTick(Level level, BlockPos pos, BlockState state, WirelessTransceiverBlockEntity be, Operation<Void> original) {
if (level instanceof ServerLevel serverLevel) {
MinecraftServer server = serverLevel.getServer();
if (server.isRunning()) {
original.call(level, pos, state, be);
}
}
}
}