MyTownSchema
基本信息
| 属性 | 值 |
|---|---|
| 类名 | mytown.new_datasource.MyTownSchema |
| 文件 | src/main/java/mytown/new_datasource/MyTownSchema.java |
| 继承 | myessentials.datasource.api.Schema |
| DB 迁移数 | 32 条 DBUpdate |
| 启用版本 | Minecraft 1.7.10 |
功能
数据库结构定义与向前迁移脚本集合。继承 MyEssentials-Core 的 Schema,
在 initializeUpdates(BridgeSQL bridge) 中把一条条 DBUpdate 塞进 updates 列表。
每条 DBUpdate 有三个参数:版本标识、描述、建表 / 改表 SQL。
所有表名都经 bridge.prefix 加前缀,因此可与其它 mod 共库。
迁移版本标识(按源码出现顺序)
| 版本标识 | 描述 |
|---|---|
07.25.2014.1 |
Add Updates Table |
07.25.2014.2 |
Add Residents Table |
10.05.2014 |
Add Worlds |
07.25.2014.3 |
Add Towns Table |
07.25.2014.4 |
Add Ranks Table |
| … | 其余 27 条 |
⚠️ 迁移标识不是单调递增的日期序:10.05.2014 排在 07.25.2014.x 之后,
但其后又是 07.25.2014.3。迁移顺序以 updates 列表的添加顺序为准,
不能按版本标识字符串排序。
表清单(22 张,实测)
BlockOwners、BlockWhitelists、Blocks、FriendRequests、Friends、Nations、
PlotBanks、PlotFlags、Plots、RankPermissions、Ranks、Residents、
ResidentsToPlots、ResidentsToTowns、SelectedTown、TownBanks、TownFlags、
TownInvites、Towns、TownsToNations、Updates、Worlds
关键表结构
Towns:主键name VARCHAR(32);含isAdminTown、spawnDim、spawnX/Y/Z、cameraYaw、cameraPitch;外键spawnDim → Worlds(dim) ON DELETE CASCADE。Residents:主键uuid CHAR(36),另含name VARCHAR(240)、joined、lastOnline(均BIGINT)。Ranks:复合主键(name, townName),含isDefault,外键townName → Towns。Worlds:主键dim INT。
实现要点
⚠️ Towns.name 与 Ranks.townName 的长度上限是 VARCHAR(32),
源码在该行留有 // TODO Allow larger town names? 注释 —— 城镇名超过 32 字符会被数据库拒绝。
Ranks.name 同理上限 VARCHAR(50)(附 // TODO Allow larger rank names?)。
这些是注释里的待办说明,不是已实现的功能。
相关条目
- MyTownDatasource - 数据源主体
- MyEssentials-Core -
Schema/BridgeSQL/DBUpdate来源(已收录) - CommandsAdmin -
/mytownadmin db直接操作这些表