From a32a784f8715022acd4f575ade8801b413e460e1 Mon Sep 17 00:00:00 2001 From: Ap_Tx <3045929398@qq.com> Date: Sun, 4 Oct 2026 20:27:50 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E5=8A=A0=E8=B0=83=E8=AF=95=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E5=AE=9A=E4=BD=8DinstantFall/=E8=90=BD=E6=B2=99?= =?UTF-8?q?=E6=9B=BF=E6=8D=A2=E6=9C=AA=E7=94=9F=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mixin/legacy/FallingBlockEntityMixin.java | 13 ++++++------- .../mixin/legacy/FallingBlockMixin.java | 2 ++ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/legacy/FallingBlockEntityMixin.java b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/legacy/FallingBlockEntityMixin.java index 81b9c6c..e9b2433 100644 --- a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/legacy/FallingBlockEntityMixin.java +++ b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/legacy/FallingBlockEntityMixin.java @@ -1,6 +1,7 @@ package com.github.zly2006.carpetslsaddition.mixin.legacy; import com.github.zly2006.carpetslsaddition.SLSCarpetSettings; +import com.github.zly2006.carpetslsaddition.ServerMain; import com.github.zly2006.carpetslsaddition.util.LegacyBlockChangeRecorder; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.state.BlockState; @@ -11,13 +12,8 @@ import org.spongepowered.asm.mixin.injection.ModifyVariable; /** * [旧版] 落沙替换的核心注入点——重建 1.12 的"替换窗口"(记录+回放版)。 * - *
1.12:{@code BlockFalling} 创建实体时【重读世界】,异步线程在"检查→读取"间改块即可替换。 - * 26.1.2 单线程下该窗口物理不存在(tick 内同步 fall,无让出)。 - * - *
本 mixin 改用 {@link LegacyBlockChangeRecorder}: - * 当 {@code legacyFallingBlockReplace} 开启时,若该位置在最近 {@code WINDOW_TICKS} 内被改动过, - * 就用记录的新方块作为下落实体的内容。这样玩家搭建的装置(改变世界方块)会决定下落实体的内容, - * 与 1.12 的"装置驱动"玩法一致。 + *
当 {@code legacyFallingBlockReplace} 开启时,若该位置在最近 {@code WINDOW_TICKS} 内被改动过,
+ * 就用记录的新方块作为下落实体的内容。这样玩家搭建的装置(改变世界方块)会决定下落实体的内容。
*/
@Mixin(net.minecraft.world.entity.item.FallingBlockEntity.class)
public class FallingBlockEntityMixin {
@@ -32,10 +28,13 @@ public class FallingBlockEntityMixin {
if (!SLSCarpetSettings.legacyExploitMode || !SLSCarpetSettings.legacyFallingBlockReplace) {
return original;
}
+ ServerMain.LOGGER.info("[SLSA-DEBUG] fall() pos={} original={}", pos, original.getBlock());
BlockState recent = LegacyBlockChangeRecorder.getRecentChange(pos);
if (recent != null && !recent.isAir()) {
+ ServerMain.LOGGER.info("[SLSA-DEBUG] >>> REPLACE at {}: {} -> {}", pos, original.getBlock(), recent.getBlock());
return recent;
}
+ ServerMain.LOGGER.info("[SLSA-DEBUG] no recent change at {}, recent={}", pos, recent);
return original;
}
}
\ No newline at end of file
diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/legacy/FallingBlockMixin.java b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/legacy/FallingBlockMixin.java
index 1bd88be..5a74839 100644
--- a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/legacy/FallingBlockMixin.java
+++ b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/legacy/FallingBlockMixin.java
@@ -34,6 +34,7 @@ public abstract class FallingBlockMixin {
@Inject(method = "getDelayAfterPlace", at = @At("HEAD"), cancellable = true)
private void legacyDelayAfterPlace(CallbackInfoReturnable