命令与数据 — 指南
关于命令、数据包、建筑和服务器性能的实用指南,也讲解数据包、资源包和整合包无法加载时如何找出原因,以及常见物品的合成方法。每篇文章都配有可直接完成任务的工具,读完就能在浏览器里动手操作,无需安装任何软件。
后期特效与战利品池:同一个箱子的两半
战利品池的权重决定掉落什么,/posteffect 命令决定它给人什么感觉。两者都是数字,写数据包之前就能核对,26.3 版本一共有 1,447 张战利品表,数量庞大,光靠手算权重很难做到全部面面俱到。
同样的红色文本在 Java 和 Bedrock 上却会出错
一个颜色代码在某个插件里显示完美,换到下一个插件却变成了字面上的 & 符号。问题出在格式,而不是插件:§ 代码、& 代码、BungeeCord 十六进制、MiniMessage 和 JSON 组件互不通用,基岩版的处理也不同。
自定义玩家的头:存储的是经过base64编码的JSON包裹的URL,而非图片
玩家的头物品的配置文件组件中包含 {textures:{SKIN:{url:…}}} 的base64编码。这就是为什么玩家的头的外观在制作时就已固定,以及为什么数据库可以包含数万个条目,本站数据库按分类分批加载,而不是一次全部加载。
Minecraft 用户名是 1–16 个字符,且只由三种东西组成;而 UUID 有两种写法
字母、数字、下划线。没有连字符,没有点,没有空格。而 UUID 带不带连字符都能被接受——这就是为什么同一次查询,一次失败,一次却成功,UUID 由 32 个十六进制字符组成,按 8-4-4-4-12 分组,大小写都能识别。
只有一个条件的谓词没有包装层,这是实打实的结构变化
一个条件时对象本身就是谓词。两个或更多条件会被包进 all_of 或 any_of。另外还有八种条件类型,以及为什么取反是一种包装而不是一个标志位,构建器涉及的条件类型一共有八种,取反是包进一层包装,而不是一个开关标志。
.nbt 结构文件存储的是调色板索引,而不是方块名称——这正是它如此小巧的原因
三个键就能承载一整座建筑:size、palette 和 blocks。每个方块都是一个指向调色板的整数,因此一个 32³ 的石头体积只需要一个字符串和 32,768 条小记录——每条包含一个位置和一个索引,从不包含名称。
进度树全解析:126 个进度,而“故事”标签页连一个挑战都没有
冒险标签页独占 126 个中的 47 个,末地只有 9 个。70 个是死胡同,最长的链条深达 8 层,而“故事”是唯一一个没有任何挑战框架的标签页,冒险标签页里的挑战类进度一共有 11 个,是所有标签页里最多的。
伤害类型:哪19种无视盔甲,以及为什么盾牌反而是更弱的防线
26.3 共有 51 种伤害类型。19 种无视盔甲,30 种无视盾牌,而两者的重叠关系并非人们以为的那样——每一种能穿透盔甲的类型同样也能穿透盾牌,有 11 种伤害类型能穿透盾牌却穿不透盔甲,比如摔落的铁砧、岩浆和落雷这些环境伤害。
附魔冲突:43 个附魔中只有 21 个与其他附魔冲突,而其中六个占了大部分
26.3 版本共有 43 个附魔。22 个完全不与其他附魔冲突,III 级是最常见的上限,而消失诅咒适用的物品类型比其他任何附魔都多,冲突关系集中在两个系列和五组配对上,大多数附魔其实完全不与别的附魔冲突。
负坐标在两处破坏区块运算,而非一处
截断除法会把方块 −1 归入区块 0 而非 −1,而普通的 % 会给出 −1 的区块内偏移而非 15。两者都错了,而且在出生点以西之前都看起来没问题,区域坐标和区块坐标是同一套换算再往上一层,一个区域相当于 512×512 个方块。