加载票系统中的类型
本章将建立对加载票这一概念的基本认识。
1 加载票 Ticket
一个加载票包含了
net.minecraft.server.world.ChunkTicket
type加载票类型,记录加载的原因。level加载等级,决定区块的运算。tickCreated创建时间,用于判断加载票是否过期。
2 加载票类型 TicketType
在 Minecraft 一共有 8 种加载票类型
net.minecraft.server.world.ChunkTicketType
加载等级对应着加载距离,算法是:
加载等级 = 33 - 加载距离
net.minecraft.server.world.ChunkTicketManager#addTicket
需要注意的是,加载距离并不由 ChunkTicketType指定,比如 post_teleport 在 /tp 指令使用时加载距离为 1,而其他情况下为 0。
3 加载等级 Level
加载等级被限制在 [22-45],至于为什么上限是这个数:
在 1.20.1 中 ChunkStatus.getMaxDistanceFromFull() 会返回 12,具体请看 1.6 小结。
4 加载等级类型 LevelType
在加载等级决定了这个区块能运算什么, 一共有四中类型
net.minecraft.server.world.ChunkLevelType
加载等级与加载等级类型的关系:
net.minecraft.server.world.ChunkLevels#getType
加载等级类型决定了区块运算。
- 运算实体 (强加载)
ENTITY_TICKING:当加载等级小于等于 31 时为运算实体,会计算全部的游戏流程,包括实体等等。 - 基础运算 (弱加载)
BLOCK_TICKING: 当加载等级小于等于 32 时为基础运算,不会运算实体,其他正常运算,如红石原件。 - 加载边界
FULL:当加载等级为 33 时为加载边界,几乎不会有游戏流程运算,但是会记录实体,也就是说在加载边界的里的实体会被记录上刷怪上线。 - 不可访问
INACCESSIBLE:当加载等级在大于 33 时为不可访问,这些区块并没有真正地加载,只是进行了部分的部分的世界生成。
5 区块实例 ChunkHolder
不在本文的讨论范围,但会简略的介绍 ChunkHolder 的作用。
ChunkHolder是区块管理系统底层中区块的容器,存储了区块本身、区块加载等级、区块生成状态和区块的允许用途。大约可以看成区块在游戏内部的实例。
6 区块状态 ChunkStatus
不在本文的讨论范围,但会简略的介绍 ChunkStatus。
ChunkStatus对应了区块生成阶段,1.20.1 中有:
加载等级对应的区块状态:
- 34-:
full; - 35:
initialize_light; - 36:
carvers; - 37:
biomes; - 38~45:
structure_starts。


