添加与女仆交互的工具
约 820 字大约 3 分钟
2025-11-05
在女仆模组中,许多原版物品都可以与女仆进行互动。例如,你可以手持金苹果、药水等,在潜行状态下右键点击女仆来使用这些物品。当你手持这些物品对准女仆时,还会在屏幕上显示各种提示文本。
一、通过事件系统与女仆交互
女仆模组提供了丰富的与女仆相关的事件,这些事件的定义可以在 这里 找到。
我们以一个简单的功能为例:当玩家用苹果右键女仆时,女仆会消耗掉苹果,并获得 60 秒的抗性提升药水效果。
这里可以使用 InteractMaidEvent 事件来实现:
// 注意:这个类不要使用 @Mod.SubscribeEvent 注解,否则在女仆模组未安装时也会加载该类,导致崩溃
public class AppleInteractMaidEvent {
// 处理女仆与苹果交互的事件
@SubscribeEvent
public void onAppleInteract(InteractMaidEvent event) {
Player player = event.getPlayer();
Level world = event.getWorld();
EntityMaid maid = event.getMaid();
// 获取主手物品
ItemStack stack = event.getStack();
// 不需要判断女仆归属,模组已自动处理
if (stack.is(Items.APPLE)) {
// 播放吃东西的音效
world.playSound(null, maid.getX(), maid.getY(), maid.getZ(),
maid.getEatingSound(stack), SoundSource.NEUTRAL, 1,
1 + (world.random.nextFloat() - world.random.nextFloat()) * 0.4F);
// 添加抗性提升效果,持续60秒,等级1
maid.addEffect(new MobEffectInstance(MobEffects.DAMAGE_RESISTANCE, 20 * 60, 1));
// 消耗苹果
stack.shrink(1);
// 取消后续操作,避免打开女仆GUI
event.setCanceled(true);
}
}
}完成事件类后,不要用 @Mod.SubscribeEvent 注解注册。因为该事件由女仆模组提供,使用注解会导致无论模组是否加载都注册事件。如果玩家未安装女仆模组,可能会导致崩溃。
最推荐的注册方式是在上一章节的 LittleMaidCompat 类中。为其创建一个无参构造方法**(必须为无参,否则会报错!)**,并在构造方法内手动注册事件。这样只有在女仆模组加载后,事件才会被注册和触发。
@LittleMaidExtension
public class LittleMaidCompat implements ILittleMaid {
// 默认构造函数,女仆模组会在适当时机调用。可在此注册女仆专属事件
public LittleMaidCompat() {
MinecraftForge.EVENT_BUS.register(new AppleInteractMaidEvent());
}
}完成这些后,启动游戏,手持苹果对准已驯服的女仆,就可以测试是否触发效果了!
二、添加文本提示
我们希望玩家在手持苹果对准女仆时,屏幕上能弹出提示文本:你可以用苹果右击女仆为其附加 60 秒的抗性提升。该如何实现呢?
在 ILittleMaid 接口中,你会注意到有一个 addMaidTips 方法。没错,这就是为女仆添加物品交互提示文本的方法。请注意,该方法仅在客户端调用,所以重写时不要忘记加上 @OnlyIn(Dist.CLIENT)!
@LittleMaidExtension
public class LittleMaidCompat implements ILittleMaid {
public LittleMaidCompat() {
MinecraftForge.EVENT_BUS.register(new AppleInteractMaidEvent());
}
@Override
@OnlyIn(Dist.CLIENT)
public void addMaidTips(MaidTipsOverlay maidTipsOverlay) {
// 第一个参数是语言文件的 key,第二个参数是物品
maidTipsOverlay.addTips("overlay.example.apple.tips", Items.APPLE);
}
}接下来需要在语言文件 en_us.json 中添加对应的语言内容:
{
"overlay.example.apple.tips": "You can right-click with an apple to add a 60-second damage resistance effect"
}完成上述步骤后,手持苹果对准女仆,就会弹出对应的提示文本了!

