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?)。

这些是注释里的待办说明,不是已实现的功能。

相关条目