本帖最后由 RaycusMX 于 2018-10-10 22:23 编辑

(转载请注明出处,谢谢~)


前言
NPC MOD 1.7.2-2 其实就是1.7.2版的更新。这个版的更新大大增强了NPC MOD的功能,比以往都要强,
比如现在玩家可以自由调节NPC的身材比例,改变NPC的身体结构(如增加尾巴、鼻子或者头发、胡须之类),
还新增了大量有用的方块,比如各种家具、木桶、灯等等,增加了新工具如结界、NPC骑乘工具等,
有了它我已经扔掉MrCrayfishs家具MOD了。

吐槽
可以不看~

教程
要向1.7.2-2版的NPC MOD添加自定义音乐或声音,请进行以下步骤:

一、格式转换
MC所使用的音乐格式为ogg,所以你要把需要添加的音乐转换成合适的ogg格式。
MC不是支持所有ogg格式,具体是怎样的要求我不太清楚……
推荐这个在线格式转换的网站:http://audio.online-convert.com/convert-to-ogg,Online OGG converter,
支持的音乐类型比较全,转出来亲测MC可用,而且文件比很多软件转出来的要小。
首先选择需要转成ogg格式的音乐文件:

输出参数可以不用改,
然后点击下面的[Convert file]按钮,等待上传完毕,完成后会打开一个网页,
这个网页加载速度可能会慢,不用着急,猜测是服务器正在转换格式,
转换完毕后会弹出下载对话框,下载后获得ogg音乐文件。

二、添加文件
打开MC的.minecraft\customnpcs\assets\customnpcs\sounds文件夹,
然后你可以直接把ogg音乐放在那里,也可以新建一个文件夹,然后再放入ogg音乐,

这里假设,新建一个文件夹叫custom,然后可以放入abc.ogg文件。

三、编辑sounds.json
这个是添加音乐关键操作,比较容易出错,要仔细。
在.minecraft\customnpcs\assets\customnpcs文件夹中有一个sounds.json文件,只有在sounds.json里添加有关代码后,NPC MOD才会加载我们的自定义音乐,因此十分重要。
推荐使用Notepad++打开编辑。


现在是单首音乐的添加方法。
打开后先清除里面的内容,然后添加以下代码:

{
  "custom.abc": {
    "category":"music",
    "sounds": [
      {
        "name": "custom/abc",
        "stream": true
      }
    ]
  }
}
"music" 是音效使用的通道,在MC的 [选项] → [音乐和声音] 里可以分别调节每个通道的音量。可以选择的通道有 music、neutral、player、record、weather、block、hostile、ambient ,分别对应 音乐、友好生物、玩家、唱片机/音符盒、天气、方块、敌对生物、环境 ,你可以根据你的音效类型选择合适合理的通道。
"custom.abc" 是该歌曲在MC里显示的名称,可以按喜好来设定,只要你认得出来就行。但是不能用特殊符号(亲测可以使用字母、数字和下划线,不能用“-”中划线),否则MC将不加载你添加的音乐。推荐的设定方式为"[文件夹名].[声音文件名]",在这里就是"custom.abc"。
"custom/abc" 指的是从.minecraft\customnpcs\assets\customnpcs\sounds文件夹起始的ogg文件路径,实际上完整路径应为.minecraft\customnpcs\assets\customnpcs\sounds\custom\abc.ogg,而这里只输入custom/abc,没有后缀,而且斜线是反的。另外,这里的文件名的格式要求**那么严格,有汉字、空格之类的都无所谓,比如你添加个"custom/筷子兄弟 - 小苹果"是没有问题的。
"stream": true 其实以上格式是我从YouTube上MC资源包添加教程中照搬来的,根据解释,"stream": true这个代码适合背景音乐等比较长的声音文件,而一些只有几秒甚至不到1秒的声音素材文件不需要设为true。(注意:长的声音必须设stream为true,否则开始播放时会卡,如果文件很大或者电脑性能较低,会卡很久甚至会卡爆)
因此,如果要添加的音效只是声音素材,而不是较长音乐,那么代码可以这么写:

{
  "custom.abc": {
    "category": "music",
    "sounds": [
      "custom/abc"
    ]
  }
}

现在讲随机音乐的添加方法。
比如我在custom文件夹里有abc1.oggabc2.oggabc3.ogg3个声音,我希望custom.abc被激活时随机播放其中一首(类似于MC里的挖矿声、脚步声、僵尸受伤的叫声,都是随机变化的,每次不一定一样),那么代码应是这样的:

  "custom.abc": {
    "category": "music","sounds": [
      {
        "name": "custom/abc1",
        "stream": true
      },
      {
        "name": "custom/abc2",
        "stream": true
      },
      {
        "name":"custom/abc3",
        "stream": true
      }
    ]
  }
值得注意的是每个对象之间需要用逗号隔开,因此括起"name"和"stream"的每个大括号{}相互之间都有逗号,而"name"一行和"stream"一行本身相互也是不同对象,所以在"name": "custom/abc1"与"name": "custom/abc2"之后都有逗号。另外,最后一个对象之后无需逗号,因此最后一个{}之后没有逗号 ,而"stream": true作为{}中的最后一个对象,后面也没有逗号。json的格式要求比较严格,多个少个逗号空格,都成功不了。
如果所添加的是短暂音效而不是较长音乐,那么可以不用把stream设为true,可以这样写:

{
  "custom.abc": {
    "category": "music",
    "sounds": [
      "custom/abc1",
      "custom/abc2",
      "custom/abc3"
    ]
  }
}

现在讲多首音乐的添加方法。
比如我在.minecraft\customnpcs\assets\customnpcs\sounds里有custom1和custom2两个文件夹,其中custom1文件夹里有abc.ogg和def.ogg两首音乐,而custom2文件夹里有ghi.ogg和jkl.ogg两首音乐,那么应该这么写代码:
(注:以下是短暂音效的写法,较长音乐的代码写法可以参考上面提到过的写法)

{
  "custom1.abc": {
    "category": "music",
    "sounds": [
      "custom1/abc"
    ]
  },
  "custom1.def": {
    "category": "music",
    "sounds": [
      "custom1/def"
    ]
  },
  "custom2.ghi": {
    "category": "music",
    "sounds": [
      "custom2/ghi"
    ]
  },
  "custom2.jkl": {
    "category": "music",
    "sounds": [
      "custom2/jkl"
    ]
  }
}
单独拿出来讲是为了强调格式。注意下被加了着重色的大括号,相同颜色的大括号表示对象的开始和结束,比如从“{”到“}”,从“{”到“}”,一一对应。
首先,所有要添加的音乐代码,都必须放在橙色大括号{}之中,不能放到外面;然后,由于每首音乐的代码相互之间都是不同的对象,前面也说了对象之间要用逗号隔开,因此绿色大括号{}的结尾处是有一个“,”的;最后,由于紫色大括号{}已经是最后一个对象了,因此它的结尾不需要再加逗号,前面也提到过。
以上都是很容易出错的地方,如果你添加失败,请反复检查有没有此类格式错误。(其实这些都是我犯过的 - -)
实际上,你可以发现,单首音乐、随机音乐和多首音乐的方法是可以结合起来的。

下面是值得关注的格式相关问题
勿随意使用汉字或特殊符号等,以免失败。(当然也有地方是可以使用的)
对象之间都应用逗号隔开,不论是{}构成的对象,还是[]构成的对象,又或是""构成的对象。而同级的最后一个对象之后就不需要加逗号了。
每个形如“双引号+冒号”的语句之后都应有一个空格,如"category": "music",在"category":"music"之间是有空格的,又如"custom1.abc": {,在"custom1.abc":{之间也是有空格的。
如果使用Notepad++来编辑,可能会遇上这种情况:格式上再也挑不出错误了,却还是不成功。那么可以点击Notepad++的“格式”标签,看看是不是Notepad++因为你输入了汉字等字符,而自动帮你把sounds.json文件转成了UTF-8格式。如果是的话就点击“以ANSI格式编码”,把文件转回ANSI格式来。因为经测试UTF-8格式的sounds.json,NPC MOD不认(仅在Windows系统下是如此,不知道其他系统怎么样)。
如果不知道自己的json代码是否有格式错误,可以把代码复制到在线校验json的网站(http://www.bejson.com/),单击校验,如果边框变绿色,说明代码格式完全正确;如果是红色的,你就要依据它给出的提示信息去修改错误。

最终效果
进入Minecraft 1.7.2,用NPC魔杖打开NPC设置的对话框,然后点击高级设置 → 职业 → 吟游诗人 → 编辑,

然后点击选择音效 → customnpcs,就可以看到我们添加的自定义音乐了,

选择其中一首,点击播放来试听,如果能听到音乐就说明能用了。选择完毕后点击确定。

文件下载
因为mcbbs现在好像不能复制代码,所以提供下载。下载地址在帖子的最后。
以下压缩包包含4个文件:
sounds短音效单曲.json
sounds短音效多曲.json
sounds随机短音效.json
sounds随机长音乐.json
sounds长音乐单曲.json
其实都是sounds.json的样本文件,下载后请改名为sounds.json再使用!
复杂和简单的区别,其实就是有没有"stream": true之类的内容而已,其实不论长或短都是可以用的。
单曲和多曲也没多大区别,特意做个多曲版只是为了提醒各位,注意多首音乐的代码格式罢了。
随机版则是为了说明了随机音效的代码格式。

sounds.json.rar (1.05 KB, 下载次数: 1422)

呼~终于写完了……感谢阅读,觉得好的给加个分吧~