From 5768a60ba8363409612155fdefdb6784283f5bf0 Mon Sep 17 00:00:00 2001 From: Helvetica Volubi Date: Sat, 25 Oct 2025 03:22:14 +0800 Subject: [PATCH] fix: rewrite request block data method --- .../java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lophine-server/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java b/lophine-server/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java index 32e582f..df5468f 100644 --- a/lophine-server/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java +++ b/lophine-server/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java @@ -17,6 +17,7 @@ package org.leavesmc.leaves.protocol.jade; +import ca.spottedleaf.moonrise.common.util.TickThread; import com.mojang.logging.LogUtils; import fun.bm.lophine.config.modules.function.protocol.JadeProtocolConfig; import net.minecraft.core.BlockPos; @@ -26,6 +27,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.Mth; import net.minecraft.world.entity.AgeableMob; @@ -196,6 +198,7 @@ public class JadeProtocol implements LeavesProtocol { @ProtocolHandler.PayloadReceiver(payload = RequestBlockPayload.class) public static void requestBlockData(ServerPlayer player, RequestBlockPayload payload) { + ServerLevel level = player.level(); player.getBukkitEntity().taskScheduler.schedule((LivingEntity nmsEntity) -> { BlockAccessor accessor = payload.data().unpack(player); if (accessor == null) { @@ -204,7 +207,7 @@ public class JadeProtocol implements LeavesProtocol { BlockPos pos = accessor.getPosition(); Block block = accessor.getBlock(); - BlockEntity blockEntity = accessor.getBlockEntity(); + BlockEntity blockEntity = TickThread.isTickThreadFor(level, pos) ? accessor.getBlockEntity() : null; double maxDistance = Mth.square(player.blockInteractionRange() + 21); if (pos.distSqr(player.blockPosition()) > maxDistance || !accessor.getLevel().isLoaded(pos)) { return;