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 {