Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 327079|回复: 2227

[教程] 【1.13-1.15】原版模组入门教程

    [复制链接]
ruhuasiyu 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
18349
钻石
性别
保密
注册时间
2014-10-16
查看详细资料
发表于 2018-2-26 13:16:49 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
本帖最后由 ruhuasiyu 于 2020-3-23 11:10 编辑


原版模组入门教程

  本文适用 Minecraft Java 版 1.13 及更高版本,部分内容仅适用于部分版本。系统环境为 Windows10,其它环境下有较小的差异。本文参考和吸取了大量其他玩家的意见、建议、教程等。有任何错误和疑问请联系我,谢谢!
  原版模组一般指在不修改 Minecraft 游戏本体的前提下,通过命令方块、一键命令、数据包、资源包等方式对游戏的可玩性做出修改。而自 Minecraft Java 版 1.13 起的数据包概念问世之后,原版模组的制作已变得十分便捷。因此我将为大家做一个简单的入门,以期抛砖引玉。
  编写进度:§1-§9.4 (2019/12/05)

§1 预备知识
  部分段落常为部分读者所熟知,若如此可直接跳至自己所需段落。对于首次接触者,请耐心阅读。
§1.1 新人指引
  本文并非命令的入门教程,不会对命令部分做过多的详解。若你对命令尚不了解,可先依次通过如下链接学习并了解:
  可先熟悉各项命令后,再学习记分板和nbt相关命令。实体和方块nbt亦可通过在游戏中使用 data get entity/block 命令来获取,以避免记忆大量的nbt。
  若你已对1.12或以下的命令较为熟悉,可直接查看1.13页面1.14页面1.15页面了解命令改动之处。
§1.2 工具准备
§1.2.1 文本编辑器
  我们所涉及的所有文本文件,包括函数文件(.mcfunction)、JSON文件(.json, .mcmeta),均需使用 UTF-8 编码格式。以下列出的文本编辑器默认均为 UTF-8 编码,可以在编辑页面的右下角状态栏看到。
  • VS Code 下载安装后,可以安装如下插件:
    • Chinese (Simplified) Language Pack for Visual Studio Code 支持中文语言
    • datapack helper plus (JSON) 支持JSON语法补全和纠错
    • datapack helper plus (MCF) 支持函数语法补全和纠错
    • language-mcfunction 支持函数语法高亮
  • 记事本 为 Windows 系统自带。Windows10 的记事本已经默认是 UTF-8 编码了。点击查看->状态栏可以在右下角状态栏看到,因此可以正常使用。旧版本 Windows 的记事本仍然不是,请勿使用。
  • Notepad++ 可从 mcfunction 的语言样式和自动补全帖中下载相关文件并导入,另外请将 Notepad++ 中设置->首选项->其它->自动检测字符编码选项关闭。
  右下角也可以看到 LFCRLF,分别表示两种换行符,二者均可正常使用,建议使用 LF
  注意不要误选了 UTF-8 with BOM 格式。
§1.2.2 压缩工具
  数据包和资源包均可以为文件夹或 zip 压缩文件格式。游戏本体和模组本体的 jar 文件也需要压缩工具来打开。
  • Windows 资源管理器 Windows10 系统自带 zip 格式的压缩和解压缩。zip 格式可以直接打开,压缩则用选择->右键->发送到->压缩文件夹
  • 7-zip 免费软件。
  • winrar 付费软件。
  jar 文件可以通过重命名为 zip 文件直接用 Windows 资源管理器打开。显然,这不如右键->7-zip->打开压缩包方便。
§1.2.3 NBT编辑器
  推荐使用 nbtexplorer 来打开 dat 和其它 nbt 格式文件。
§1.2.4 绘图工具
  推荐使用 Photoshop 或其它绘图工具,而非 Windows 自带的画图,来绘制材质。
§1.3 文件结构
  本节中我们将对各个主要的文件夹结构和文件做简单的介绍。为便于查看文件后缀,请将文件->文件夹选项->查看->隐藏已知文件类型的扩展名选项去掉勾选。其中可以使用文本编辑器打开的文件可通过新建文本文件并修改后缀来创建。
§1.3.1 游戏文件结构
  打开 .minecraft 所在的文件夹,这通常位于你的启动器目录下。如果启动器中设置为各版本独立,则类似的文件结构位于 versions/版本号下。
文件
文件位置
说明
资源文件索引
assets/indexes/[版本号].jsonminecraft/lang/zh_cn.json的 hash 值可知中文语言文件位置,找到后使用文本编辑器打开。其它资源文件也可以类似寻找并用相应软件打开。
资源文件
assets/objects/[hash开头]/[hash]
备份文件
backups/[日期-世界名称].zip使用压缩工具打开,为存档的备份文件。
崩溃报告
crash-reports/[日期].txt使用文本编辑器打开,如果是由于资源包或数据包引起的崩溃,可以在该文件中看到原因。
日志
logs/[日期].log.gz历史日志,使用压缩工具打开,然后使用文本编辑器打开。
logs/latest.log使用文本编辑器打开,当前日志,可随时查看加载资源包和数据包时的错误信息,包括错误的文件名称、位置、错误的行列数等。
资源包
resourcepacks/[资源包名]zip格式的使用压缩工具打开,具体结构见 §3 资源包
resourcepacks/[资源包名].zip
存档文件
saves/[世界名称]具体结构见 §1.3.2 存档文件结构
游戏截图
screenshots/[日期].png使用图片查看工具打开。
服务器资源包
server-resource-packs/[服务器]使用压缩工具打开,具体结构见 §3 资源包
存储的物品栏
hotbar.nbt使用 NBT 编辑器打开,游戏内使用C+[数字]存储、X+[数字]取出的创造模式的物品快捷栏。
游戏设置
options.txt使用文本编辑器打开,可直接设置游戏内快捷键、音量、视距等选项。
服务器
servers.dat使用 NBT 编辑器打开,包含服务器信息。
玩家缓存
usercache.json使用文本编辑器打开,为服务器玩家登录名和 UUID 对应。
玩家名缓存
usernamecache.json使用文本编辑器打开,为单机玩家登录名和 UUID 对应。
游戏本体
versions/[版本号]/[版本号].jar使用 NBT 编辑器打开,包含了对应版本的资源和数据文件,assets 结构见 §3 资源包data 结构见 §2 数据包


图1.1 游戏本体文件结构

§1.3.2 存档文件结构
  位于.minecraft/saves/[世界名称]
文件
文件位置
说明
进度
advancements/[玩家 UUID].json使用文本编辑器打开,记录了玩家已完成的进度和进度判据的完成时间。
存储区
data/command_storage_[命名空间].json使用 NBT 编辑器打开,记录了玩家和函数存储在存储区 (storage) 的 NBT。
地图数
data/idcounts.json使用文本编辑器打开,记录了当前已使用的地图数量,游戏内新使用的空地图会由此开始计数。
地图
map_[数字].txt使用 NBT 编辑器打开,记录了地图 filled_map{data:[数字]} 的信息。
记分板
scoreboard.txt使用 NBT 编辑器打开,记录了记分板、记分板的值、组。
袭击
raids.txt使用 NBT 编辑器打开,记录了袭击的信息。
DIM-1/data/raids_nether.txt
DIM1/data/raids_end.txt
数据包
datapacks/[数据包名]zip格式的使用压缩工具打开,具体结构见 §2 数据包
datapacks/[数据包名].zip
主世界区块
region/r.[数值].[数值].mca使用 NBT 编辑器打开,每32×32个区块存储为一个文件。建议使用 MCEdit 等工具来编辑。
下界区块
DIM-1/r.[数值].[数值].mca
末地区块
DIM1/r.[数值].[数值].mca
统计
stats/[玩家UUID].json使用文本编辑器打开,记录了玩家的统计信息。
属性
playerdata/[玩家UUID].dat使用 NBT 编辑器打开,记录了玩家的位置、复活点、飞行速度等。
世界信息
level.dat使用 NBT 编辑器打开,记录了种子、生成类型、难度、出生点、世界边界、游戏规则等内容。
结构
generated/[命名空间]/structures/[文件].nbt使用 NBT 编辑器打开,记录了游戏内使用结构方块保存的结构,将其移动至数据包内方可使用。

§1.4 JSON文件
  数据包的进度、战利品表、标签、断言、配方,资源包的语言文件、模型等文件均为JSON格式文件。.mcmeta 文件也是JSON文件,因此格式也是相同的。编写时,使用空格或制表符(Tab)缩进,以便于查看括号匹配和层次。wiki 上有关页面使用了 NBT 的数据类型标注,但其实并不适用于JSON格式。
  JSON文件包括一对根括号{},包含类似 "abc":"def" (键:值)的对。相同的键后者会覆盖前者。键为需引号圈住的字符串,值的数据类型为
数据类型
示例
说明
布尔型
  • "is_on_fire": false
  • "is_baby": true
值为truefalse
数值
  • "count": 2
  • "chance": 0.025
2和2.0没有效果上的差异。
字符串
  • "item": "minecraft:shears"
  • "condition": "minecraft:match_tool"
  • "layer0": "cpp:crop/bauhinia_seeds"
  • "description": "§6更多的合成 1.10\n§6by ruhuasiyu"
使用双引号圈住,可以使用颜色代码如§6、换行符\n。
列表
  • "chances": [0.05, 0.0625, 0.083333336, 0.1]
  • "items": [
        {"item": "minecraft:zombie_head"},
        {"item": "minecraft:skeleton_skull"},
        {"item": minecraft:wither_skeleton_skull"},
        {"item": "minecraft:creeper_head"}
    ]
  • "requirements":[
        ["wing_of_sky", "heart_of_crystal", "nova_of_fire"]
    ]

使用中括号圈住。
JSON对象
  • "count": { "min": 1, "max": 2 }
  • "modifiers": [
        {
            "name": "legs_armor",
            "attribute": "generic.armor",
            "operation": "addition",
            "amount": 4,
            "slot": "legs"
        }
    ]

使用大括号圈住。整个JSON文件内容本身就是一个JSON对象。


评分

参与人数 79人气 +119 金粒 +789 贡献 +9 收起 理由
0-zero-0 + 10 MCBBS有你更精彩~
minecraft6677 + 1 MCBBS有你更精彩~
maomao_gl + 1 膜拜大佬!
Y制杖杖 + 1 MCBBS有你更精彩~
袋里的鲨 + 2 Ssssssssssssssssssss
wangshengzhidu + 1 MCBBS有你更精彩~
969756790 + 2 + 30 神乎其技!6的飞起!
wutong10086 + 2 MCBBS有你更精彩~
18000569211 + 1 + 10 神乎其技!6的飞起!
水帖能手鸽 + 2 MCBBS有你更精彩~
Determancer + 1 神乎其技,不服不行!
song2006 + 1 + 10 神乎其技,不服不行!
MC深坑不回头 + 1 + 5 神乎其技,不服不行!
模仿... + 1 MCBBS有你更精彩~
bai11234 + 1 + 5 神乎其技,不服不行!
SPGoding + 3 + 25 + 2 MCBBS有你更精彩~
KalphaGo + 1 + 1 + 1 奥利给
lijiabo + 1 + 6 MCBBS有你更精彩~
(=°ω°)丿 + 2 + 30 MCBBS有你更精彩~
刘力玮1573 + 1 神乎其技,不服不行!

查看全部评分

916497256 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
138
钻石
性别
保密
注册时间
2017-4-29
查看详细资料
发表于 4 小时前 | 显示全部楼层
非常感谢,在学数据包
回复

使用道具 举报

loli816 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
73
钻石
性别
保密
注册时间
2016-3-31
查看详细资料
发表于 昨天 18:34 | 显示全部楼层
谢谢分享
回复

使用道具 举报

tianziyue 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
42
钻石
性别
保密
注册时间
2020-3-27
查看详细资料
头像被屏蔽
发表于 昨天 11:55 | 显示全部楼层
好好好好好好
回复

使用道具 举报

fireanmeng 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
22
钻石
性别
保密
注册时间
2019-5-2
查看详细资料
发表于 昨天 11:44 | 显示全部楼层
mr_black_cat 发表于 2020-3-4 22:18
如果能够将帖子变成一个视频就更好了,因为这个对于萌新来说也是很困难的,刚刚玩MC的萌新,看到一串代码可 ...

对于你说的可视化编程……迟早会有工具实现这一点的好吧(之前一堆厂商出了啥mcmod编辑器,后面因为网易的代理下架了(话说也没什么用)),另外,数据包还算好写,不信去试试写web3件套试试(滑稽)
回复

使用道具 举报

SPGoding 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
18105
钻石
性别
保密
注册时间
2018-1-18
查看详细资料
发表于 前天 00:23 | 显示全部楼层
邪恶草 发表于 2020-3-29 20:18
你好!
§7.4 切石机配方的例子
貌似写错了

都错了
应该是
  1. {
  2.     ...
  3.     "result": "minecraft:oak_slab",
  4.     "count": 2
  5. }
复制代码
回复

使用道具 举报

邪恶草 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
2038
钻石
性别
保密
注册时间
2014-2-6
查看详细资料
发表于 3 天前 | 显示全部楼层
本帖最后由 邪恶草 于 2020-3-29 20:21 编辑

你好!
§7.4 切石机配方的例子
  1. {
  2.     "type": "minecraft:stonecutting",
  3.     "ingredient": {
  4.         "item": "minecraft:oak_planks"
  5.     },
  6.     "result": {
  7.         "item": "minecraft:oak_slab",
  8.         "count": 2
  9.     }
  10. }
复制代码

貌似写错了

正确写法应该是
  1. {
  2.     "type": "minecraft:stonecutting",
  3.    
  4.     "ingredient":
  5.         {
  6.             "item": "minecraft:oak_planks"
  7.         },
  8.      "item": "minecraft:oak_slab",
  9.      "count": 2
  10. }
复制代码
回复

使用道具 举报

QAQ的小透明 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
35
钻石
性别
保密
注册时间
2014-7-10
查看详细资料
发表于 4 天前 | 显示全部楼层
MCBBS有你更精彩~

评分

参与人数 1人气 -1 金粒 -10 收起 理由
SPGoding -1 -10 请仔细阅读版规,不要灌水!

查看全部评分

回复

使用道具 举报

万神天圣 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
42
钻石
性别
保密
注册时间
2020-2-15
查看详细资料
头像被屏蔽
发表于 4 天前 | 显示全部楼层
Wiki啊......
回复

使用道具 举报

NBTmc 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
87
钻石
性别
保密
注册时间
2020-2-23
查看详细资料
发表于 6 天前 | 显示全部楼层
大佬的世界我不懂

评分

参与人数 1人气 -1 金粒 -10 收起 理由
SPGoding -1 -10 请仔细阅读版规,不要灌水!

查看全部评分

回复

使用道具 举报

~小老鼠~ 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
106
钻石
性别
保密
注册时间
2020-3-21
查看详细资料
发表于 7 天前 | 显示全部楼层
666666666666

评分

参与人数 1人气 -1 金粒 -10 收起 理由
SPGoding -1 -10 请仔细阅读版规,不要灌水!

查看全部评分

回复

使用道具 举报

ruhuasiyu 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
18349
钻石
性别
保密
注册时间
2014-10-16
查看详细资料
 楼主| 发表于 2020-3-23 12:20:54 | 显示全部楼层
xiao_c_ 发表于 2020-3-23 10:03
感谢楼主提供的教程。但进度写不出来啊...
会不会是 Json 没有写对啊...

查看latest.log有没有加载数据包,以及文件是否有报错
回复

使用道具 举报

ruhuasiyu 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
18349
钻石
性别
保密
注册时间
2014-10-16
查看详细资料
 楼主| 发表于 2020-3-23 12:20:13 | 显示全部楼层
SolidBlock 发表于 2020-3-23 12:17
暂不确定是否由于非1:1,因为我的资源包中还有其他的非1:1材质如期正常显示。查了日志,发现加载资源包时 ...

mipmap不用管,那是用于加快渲染的。
回复

使用道具 举报

SolidBlock 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
648
钻石
性别
保密
注册时间
2016-2-20
查看详细资料
发表于 2020-3-23 12:17:44 | 显示全部楼层
ruhuasiyu 发表于 2020-3-22 21:12
我没有研究过非1:1材质情形下何时会变紫黑的问题,如果想要避免最好就是都用1:1材质,多余部分用透明代替 ...

暂不确定是否由于非1:1,因为我的资源包中还有其他的非1:1材质如期正常显示。查了日志,发现加载资源包时,有如下内容:
  1. [12:08:51] [Server-Worker-1/WARN]: Texture [i]<材质路径>[/i] with size 128x8 limits mip level from 4 to 3
  2. [12:08:51] [Server-Worker-1/WARN]: minecraft:textures/atlas/blocks.png: dropping miplevel from 4 to 3, because of minimum power of two: 8
复制代码

如果关闭Mipmap就不会输出以上内容。此外,如果将某个材质删除,使其真的不存在,则还会有如下内容:
  1. [12:08:51] [Server-Worker-2/ERROR]: Using missing texture, unable to load [i]<不存在的材质路径>[/i] : java.io.FileNotFoundException: [i]<不存在的材质路径>[/i]
复制代码

但是我说的那个异常材质完全是存在的,而且没有输出像上面那样的错误。也就是说,游戏读到了那个材质,但还是显示为黑紫方格。
回复

使用道具 举报

xiao_c_ 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
162
钻石
性别
保密
注册时间
2017-4-21
查看详细资料
头像被屏蔽
发表于 2020-3-23 10:03:42 | 显示全部楼层
感谢楼主提供的教程。但进度写不出来啊...
会不会是 Json 没有写对啊...
回复

使用道具 举报

ruhuasiyu 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
18349
钻石
性别
保密
注册时间
2014-10-16
查看详细资料
 楼主| 发表于 2020-3-22 21:14:43 | 显示全部楼层
1987151505 发表于 2020-3-11 16:32
第七章合成和烧炼里面的切石机那个例子,直接加了count没放在result里面,好像不行吧,还有请问营火也可以添 ...

哦那里写错的,应该写成"result":{"item":"minecraft:xxx","count":2}

营火可以添加配方,一样的 "type":"minecraft:campfire_cooking"
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 京公网安备 11010502037624号 | 手机版

GMT+8, 2020-4-1 05:43 , Processed in 0.093226 second(s), Total 28, Slave 25 queries, Release: Build.2020.03.31.1849, Gzip On, MemCached On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

© 2010-2020 我的世界中文论坛 版权所有 本站原创图文内容版权属于原创作者,未经许可不得转载

快速回复 返回顶部 返回列表