基岩版模组汉化教程(addon汉化)
本帖最后由 礼帽绵羊jeb 于 2023-12-9 17:17 编辑遇上心爱的模组不会汉化?
保证包教包会不妨试试阅读一下本篇教程static/image/hrline/5.gif1490116938以下内容可跳过.
模组的组成部分.
模组一般分为资源包和行为包,都是以.mcpack为后辍名的文件,当然也有合并在一起的以.mcaddon为后辍的文件
只有单个资源包为一个整体的则叫材质或光影,只有单个行为包为一个整体的 也可以算作是一个模组(但是它们基本上只涉及到名称、简介和设置选项的修改)
如何区分资源包和行为包.
一般在文件名上带有BP或bp的是行为包,带有RP或rp的则是资源包(或者带有一个字母——B或R)也有用DAT(行为包)和RES(资源包)来区分的
如果实在看不出来的话可以查看包里面的manifest.json文件(它不仅可以区分资源包和行为包,还决定了模组是否能导入以及它的名称和简介)
只需要在里面找到"modules":[里面的"type": "填写的是date那么它就是行为包resources则是资源包"]static/image/hrline/4.gif
——「准备开始」——在汉化开始前我们需要一个可以编辑文件的软件:NP管理器、ES文件浏览器、MT管理器等(本教程演示使用的是MT管理器)
让我们开始吧! 基础
附:语言文件、物品行为文件、名称简介
|语言文件(以.lang为后辍名的文件)上汉化.
语言文件可以在资源包中的texts文件夹中找到(有的在行为包中也可以找到,但里面只有这个包的名称和简介),并且拥有指定名称
不同的名称对应着不同的语言(本教程中只需要知道zh_CN(简体中文)zh_TW(繁体中文)en_US(英文)这三种就行了)并且在游戏中会根据所设置的语言来选择对应的语言文件
如果没有对应的语言文件,则使用的是默认的英文(也就意味着你可以不再添加一个新的语言文件而是直接在默认的语言文件上修改)
打开语言文件,在里面的每一行代码的格式都是以tile.(方块)、item.(物品)、entity.(生物)、item.spawn_egg.entity.(生物蛋)为开头,中间是其对应的id,再以.name=为结尾并后接名称,所以我们只需要修改=后面的名称就行了---
|物品的行为文件上汉化.
如果在语言文件上汉化之后,游戏中的某个物品还是原来的名称,那就要到对应的行为文件上汉化了
在行为包里找到item文件夹并找到以那个物品名称(或近似于)为命名的文件
打开,并找到"minecraft:display_name": {在"value": "里面就是这个物品名称了''}---
|名称及简介.
行为包和资源包中各有一个manifest.json文件,在文件中找到"header":{在"name":"里面就是这个模组的名称",在"description":"里面的就是这个模组的简介"}
有时候呢可能会看见在"name":"里面写的是pack.name"在"description":"里面写的是pack.description"那就意味着就要到这个资源包或行为包的text文件夹里的语言文件中去修改,里面的pack.name=后面就是名称pack.description=后面就是简介---
(但事实上你可以在manifest.json文件中直接修改pack.name和pack.description然而作者这么做是只是为了能够让模组适应更多语言)
常见
附:设置选项、boss血条、交互键、方块内ui、命令
认识一下方块实体:
方块实体就是让一个方块内绑定一个实体(你也可以理解为一个看不见的生物)因此来做到方块做不到的功能,比如:乘坐、触发交互、变成一个容器等
|设置选项.
有些模组或材质包可以根据自己的喜好在激活之后进行设置,一般会有两个或者多个选项
这时候我们就可以打开manifest.json文件,找到"subpacks":[以及括号后面所包含的内容{在每个小括号里面都有一个"name":"在这里面的就是这个选项的名称了"}]---
|boss血条.
在行为包里的entity(或者entities)文件夹里找到以boss名称(或近似于)为命名的文件
再找到"minecraft:boss": {在里面的"name": {里就是这个boss血条的名称了}}---
|交互键.
触发交互键有两种形式:方块触发和生物触发
方块触发:
在行为包里的block文件夹里找到其可以触发以交互键方块名称(或近似于)为命名的文件(前面提到过方块需要绑定一个实体才能做到触发交互的功能,所以我们要找到这个实体的id),在"events": {里的"run_command": {"command": [包含的一串命令里找到实体id"summon 实体id ~~~ 一些不用管的代码"]}}
根据这个id在行为包里的entity(或者entities)文件夹找到对应的文件
里面有一个或多个"minecraft:interact": {在其括号内包含的一个或者多个"interact_text": {里面就是这个交互键的名称了}}...
生物触发:
其实就是方块触发的后半段,可以根据那个生物的名称(或近似于)在行为包里的entity(或者entities)文件夹找到对应文件...
有的作者会在"interact_text": {里面引用原版的交互键名称的代码}
原版交互键名称代码如下(也可以把代码放进lang文件里面修改名称)
[*]action.interact.creeper=点燃
[*]action.interact.edit=编辑
[*]action.interact.exit=下船
[*]action.interact.feed=喂养
[*]action.interact.fishing=钓鱼
[*]action.interact.milk=挤奶
[*]action.interact.mooshear=修剪
[*]action.interact.moostew=挤哞菇
[*]action.interact.repair=修复
[*]action.interact.ride.boat=上船
[*]action.interact.ride.minecart=乘坐
[*]action.interact.ride.horse=乘坐
[*]action.interact.ride.strider=乘坐
[*]action.interact.shear=修剪
[*]action.interact.sit=坐
[*]action.interact.stand=站
[*]action.interact.talk=交谈
[*]action.interact.tame=驯化
[*]action.interact.dye=染色
[*]action.interact.cure=治疗
[*]action.interact.opencontainer=打开
[*]action.interact.createMap=创建地图
[*]action.interact.takepicture=拍照
[*]action.interact.saddle=上鞍
[*]action.interact.mount=骑乘
[*]action.interact.boost=提升
[*]action.interact.write=书写
[*]action.interact.leash=拴住
[*]action.interact.unleash=解开
[*]action.interact.name=名称
[*]action.interact.attachchest=连接箱子
[*]action.interact.equiphorsearmor=装备马铠
[*]action.interact.equipcarpet=装备地毯
[*]action.interact.trade=交易
[*]action.interact.armorstand.pose=摆姿势
[*]action.interact.armorstand.equip=装备
[*]action.interact.read=阅读
[*]action.interact.wakevillager=叫醒村民
[*]action.interact.barter=交换
[*]action.interact.use=使用物品
[*]action.interact.exit.raft=离开竹筏
[*]action.interact.allay=给悦灵物品---
|方块内ui.
工作台ui
在行为包里的block文件夹里找到以那个方块名称(或近似于)为命名的文件
在里面找到"minecraft:crafting_table": {在"custom_description": "里面就是这个ui的名称了"}
容器ui
容器的ui是以绑定那个方块的实体的名称为命名的,所以还是在行为包里的block文件夹里找到以那个方块名称(或近似于)为命名的文件
找到"events": {在"run_command": {"command": [里包含的一串命令里找到实体名称"summon 实体id ~~~ 一些不用管的代码 实体名称"]}}
如果作者没有写实体名称,那么这个容器ui就会显示 未知---
|命令.
相关文件夹出现位置item、block、entity(或entities)
其文件内的"events": {其括号里会包含"run_command": {"command": ["在这里面的一串代码就是命令了","并且每一串命令都会被隔开"]}}
functions
文件夹中以.mcfunction为后辍的文件中里面的每一行代码就是一串命令
animation_controllers
其文件内的"on_entry": ["在这里面的一串代码就是命令了","并且每一串代码都会被隔开"]
这里涉及到以下几种命令(可能会被execute命令所包含):
title和titleraw:标题
标题:title "目标选择器" title 文本
titleraw "目标选择器" title json文本*
副标题:title "目标选择器" subtitle 文本
titleraw "目标选择器" subtitle json文本*
活动栏:title "目标选择器" actionbar 文本
titleraw "目标选择器" actionbar json文本*
tell(或w、msg)和tellraw:私密消息
tell "目标选择器" 文本(文本前可接"目标选择器")
tellraw "目标选择器" json文本*
say:公开消息
say 文本(文本前可接"目标选择器")
scoreboard:记分板
scoreboard objectives add 记分板id dummy 文本
一般后面还会接一些在哪些地方显示的命令
玩家列表:scoreboard objectives setdisplay list
侧边栏:scoreboard objectives setdisplay sidebar
名称下方:scoreboard objectives setdisplay belowname
连锁命令
实例:execute @e ~ ~ ~ detect ~ ~ ~1 log 7 fill ~ ~ ~1 ~ ~ ~1 air 0 destroy
很多国外有连锁方块功能的模组需要在游戏中把语言设置成英语(English)才会生效
因为这个功能需要识别掉落物的名称(即name="oak log")
所以只需要把name="里面的名称修改成中文的就行了"(注:一定是要是游戏内的名称)---
"目标选择器":诸如@p、@a、@s之类的代码,不用管
*:json文本格式详见Wiki:https://zh.minecraft.wiki
这里再推荐一个翻译网站:https://www.deepl.comstatic/image/hrline/4.gif关于文本调用有很多作者会在行为包的文件里写文本的地方写上一串代码*然后在语言文件里写上这串代码并加上=其后面就是游戏中所显示的名称
*:这种代码可以是任何形式的,不管你写的是什么只要复制在语言文件里并加上=就可以直接修改其名称(当语言文件上汉化物品的名称无效时也可以使用这种方法,也适用于汉化游戏中显示的一些不知名代码)其他内容
格式化代码引用wiki:
格式化代码,又称颜色代码,能使在游戏中加入含颜色和格式信息§0 黑
§1 深蓝
§2 深绿
§3 湖蓝
§4 深红
§5 深紫
§6 金
§7 灰
§8 深灰
§9 蓝
§a 绿
§b 天蓝
§c 红
§d 浅紫
§e 黄
§f 白
§g 硬币金
§h 石英白
§i 铁银
§j 下界合金黑
§k 随机字符
§l 粗体
§m 红石红
§n 铜棕
§o 斜体
§p 金锭黄
§q 祖母绿
§r 重置文字样式
§s 钻石青
§t 青金石蓝
§u 水晶紫
\n 换行*
如果在格式代码后使用颜色代码,则格式代码的作用范围只能持续到颜色代码之前*换行代码只能在物品的行为文件(也就是item文件夹里面的)上使用,在语言文件上没有任何作用
UNICODE加密代码有一些作者不希望自己的模组被其他人修改,所以他们对模组中的代码进行了加密
这里分享一个在线解密的网站:https://c.runoob.com/front-end/3602/
static/image/hrline/line8.png如有遗漏或疑问欢迎在帖子下方回复
此教程对你有帮助的话记得在帖子下方点个赞哦!
应为
加油! 克里昂一世 发表于 2022-7-30 22:18
应为
加油!
代码总是忘记[贴吧_泪][贴吧_泪][贴吧_泪] 支持[贴吧_吐舌] 收藏了,非常感谢[贴吧_玫瑰] 礼帽绵羊jeb 发表于 2022-7-30 22:47
代码总是忘记
建议用电脑版的可视化编辑 春枫亦倾城 发表于 2022-7-31 08:09
建议用电脑版的可视化编辑
费眼睛[哔哩_笑哭][哔哩_笑哭][哔哩_笑哭] 赞的!不像别的净发一些改lang文件的教程。 你把文件后缀改为.mcpack,然后导入看吧,食物里面有两个是一串英文 xffffffffffffff