43 lines
1.6 KiB
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);
|
|
}
|
|
}
|
|
}
|
|
}
|