Forge 1.20.1 Java自定义吉他右键无音效及动画问题求助
问题排查与解决方案
1. 音效配置文件键名拼写错误
你的音效配置中,键名写成了"guitar_stummed",但注册的SoundEvent名称是guitar_strummed(少了一个字母r),这会导致游戏无法匹配到对应的音效定义。
修正后的音效配置文件:
{ "guitar_strummed": { "subtitles": "sounds.learningmod.guitar_strummed", "sounds": [ "learningmod:guitar_strummed", "learningmod:guitar_strummedb" ] } }
2. use方法返回值与交互反馈缺失
当前use方法返回super.use(...),游戏会继续走默认物品交互逻辑,不会标记当前交互已完成,同时也没有添加使用动画。需要返回明确的成功结果并添加动作反馈:
修正后的use方法代码:
@Override public InteractionResultHolder<ItemStack> use(Level pLevel, Player pPlayer, InteractionHand pUsedHand) { // 播放音效 pLevel.playSound(null, pPlayer.getX(), pPlayer.getY(), pPlayer.getZ(), ModSounds.GUITAR_STRUMMED.get(), SoundSource.PLAYERS, 1f, 1.f); // 添加玩家手持物品的使用动画 pPlayer.swing(pUsedHand, true); // 返回成功结果,标记交互已处理完成 return InteractionResultHolder.success(pPlayer.getItemInHand(pUsedHand)); }
3. 额外验证项
- 确认音效文件路径正确:将
guitar_strummed.ogg和guitar_strummedb.ogg放在resources/assets/learningmod/sounds/目录下 - 检查ModSounds类是否已注册到模组事件总线,比如在主模组类的初始化方法中调用
ModSounds.register(FMLJavaModLoadingContext.get().getModEventBus()); - 确保吉他物品类正确继承
Item,并通过DeferredRegister完成注册
内容的提问来源于stack exchange,提问作者Just Another Commenter
相关产品推荐
相关产品推荐

