From d6eb433f6585cd87902df014ec5a1872ed44f984 Mon Sep 17 00:00:00 2001 From: Ap_Tx <3045929398@qq.com> Date: Sat, 3 Oct 2026 13:18:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20/hat=20/sit=20?= =?UTF-8?q?=E5=91=BD=E4=BB=A4=E7=BA=A2=E5=AD=97=20+=20trialSpawnerCD=20?= =?UTF-8?q?=E5=86=B7=E5=8D=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - /hat /sit:规则判断从 requires 移到 executes,命令总是显示(避免客户端读不到服务端规则值导致红字) & - MixinTrialSpawnerState:覆盖 tickAndGetNext 里全部 3 处 getTargetCooldownLength 调用(去掉 ordinal 限制) --- .../zly2006/carpetslsaddition/command/HatCommand.java | 9 ++++++--- .../zly2006/carpetslsaddition/command/SitCommand.java | 9 ++++++--- .../mixin/block/MixinTrialSpawnerState.java | 6 ++++-- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/command/HatCommand.java b/src/main/java/com/github/zly2006/carpetslsaddition/command/HatCommand.java index 9eb0d03..13ee671 100644 --- a/src/main/java/com/github/zly2006/carpetslsaddition/command/HatCommand.java +++ b/src/main/java/com/github/zly2006/carpetslsaddition/command/HatCommand.java @@ -11,11 +11,14 @@ import net.minecraft.world.item.ItemStack; public class HatCommand { public static void register(CommandDispatcher dispatcher) { dispatcher.register(Commands.literal("hat") - .requires(CommandSourceStack::isPlayer) - .requires((commandSource) -> SLSCarpetSettings.canUseHatCommand) .executes(context -> { + if (!SLSCarpetSettings.canUseHatCommand) { + return 0; + } ServerPlayer player = context.getSource().getPlayer(); - assert player != null; + if (player == null) { + return 0; + } ItemStack stack = player.getMainHandItem(); ItemStack head = player.getItemBySlot(EquipmentSlot.HEAD); player.setItemSlot(EquipmentSlot.HEAD, stack); diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/command/SitCommand.java b/src/main/java/com/github/zly2006/carpetslsaddition/command/SitCommand.java index 513576a..5406532 100644 --- a/src/main/java/com/github/zly2006/carpetslsaddition/command/SitCommand.java +++ b/src/main/java/com/github/zly2006/carpetslsaddition/command/SitCommand.java @@ -12,11 +12,14 @@ import net.minecraft.world.entity.decoration.ArmorStand; public class SitCommand { public static void register(CommandDispatcher dispatcher) { dispatcher.register(Commands.literal("sit") - .requires(CommandSourceStack::isPlayer) - .requires((commandSource) -> SLSCarpetSettings.canUseSitCommand) .executes(context -> { + if (!SLSCarpetSettings.canUseSitCommand) { + return 0; + } ServerPlayer player = context.getSource().getPlayer(); - assert player != null; + if (player == null) { + return 0; + } if (player.getVehicle() != null || !player.onGround()) { // 防止错误的坐下行为 return 1; diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/block/MixinTrialSpawnerState.java b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/block/MixinTrialSpawnerState.java index 45561ab..c6f5129 100644 --- a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/block/MixinTrialSpawnerState.java +++ b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/block/MixinTrialSpawnerState.java @@ -10,15 +10,17 @@ import org.spongepowered.asm.mixin.injection.At; @Mixin(TrialSpawnerState.class) public class MixinTrialSpawnerState { + // trialSpawnerCD:覆盖试炼刷怪笼的冷却长度。 + // 新版 TrialSpawnerState.tickAndGetNext 里调用 TrialSpawner.getTargetCooldownLength() 三次, + // 不指定 ordinal 以覆盖全部调用。 @WrapOperation( method = "tickAndGetNext", at = @At( value = "INVOKE", - ordinal = 0, target = "Lnet/minecraft/world/level/block/entity/trialspawner/TrialSpawner;getTargetCooldownLength()I" ) ) - private int tick(TrialSpawner instance, Operation original) { + private int tick(TrialSpawner instance, Operation original) { if (SLSCarpetSettings.trialSpawnerCD < 0) { return original.call(instance); } else {