MyTown2
[!INFO] Git Commit:
0c08811| Updated: 2026-10-28
城镇 / 领地保护 mod。MyTown 是 GTNH 社区的老牌城镇 mod,本条目是其 GTNH 维护分支
(仓库 README / mcmod.info 自称 This is the GTNH fork,原作者 Alpha,
维护者 Legobear154 / AfterWind)。
由于 1.7.10 原版没有方块可用,本 mod 不注册任何 Block / Item / Entity / TileEntity /
维度 / 生物群系——它的全部玩法落在命令、flag 权限与长方体领地上。
唯一的游戏内容注册是告示牌类型 MyTown:SellSign。
身份
| 属性 | 实测值 |
|---|---|
| modid | MyTown2(混合大小写;util/Constants.java:10) |
| modName | MyTown 2(Constants.java:11) |
| 版本 | GRADLETOKEN_VERSION —— 构建期占位符,源码无真实值(Constants.java:9) |
| mcmod.info | 7 字段全为 ${modId} / ${modName} / ${modVersion} / ${minecraftVersion} 占位符,不可用于确认 modid |
| Minecraft | 1.7.10(gradle.properties:24) |
| Java 文件 | 87(15 268 行) |
| 主类 | mytown.MyTown(@Mod 在 Java,非 Scala / Kotlin) |
| 命令 | 164(/mytown 别名 /t /town,+ /mytownadmin) |
| 配置 | 37 项(MyTown.cfg)+ 3 个 JSON(Flags / DefaultTownRanks / WildPerms) |
| Flag | 15 种(14 布尔 + MAXWARP 整数) |
| 数据表 | 22 张,32 条 DB 迁移 |
| 注册内容 | 1 个告示牌类型 MyTown:SellSign |
| 硬依赖 | MyEssentials-Core、MyPermissions(required-after) |
| 软依赖 | WorldEdit(after)、ForgeEssentials(before) |
依赖范围
| 依赖 | 收录状态 |
|---|---|
| MyEssentials-Core | 已收录,已完成 |
| MyPermissions | 已收录,已完成 |
| Thaumcraft | 已收录,已完成(运行时软依赖,见 TCWarpHandler) |
WorldEdit(worldedit-gtnh) |
已登记但尚未成文,前向引用 |
| ForgeEssentials | 不在收录范围(relation.md 无此行),仅作 before 顺序声明 |
Mod 入口
- Mod 入口 -
@Mod(modid = Constants.MODID, ...),四个生命周期阶段 - Constants - modid / 名称 / 依赖 / NBT key 的唯一权威来源
- EconomyProxy - 建城 / 圈地 / 传送的费用后端
- 工具类 -
Formatter、MyTownUtils、TownBlockKey - 异常类 - 7 个,仅
ConditionException/GetterException为 checked
命令
- Commands 基类 - 补全表与访问器
- CommandsEveryone - 38 条,
/mytown(别名/t/town) - CommandsAssistant - 28 条,助理层,2 个条件注册嵌套类
- CommandsAdmin - 81 条,
/mytownadmin - CommandsOutsider - 17 条,无城镇归属玩家
- RankPermissionManager - 城镇 Rank ↔ MyPermissions 权限桥
- ChatComponentTownList -
/town list分页输出,全 mod 无任何 GUI 类
配置
- Config - 37 项,含全部实测默认值
- FlagsConfig - 建城默认 flag,回写
FlagType.defaultValue - RanksConfig - 建城默认 Rank,整体替换
defaultRanks - WildPermsConfig - 荒野 flag,与 MyPermissions 无关
数据层
- MyTownDatasource - 数据源主体,默认 SQLite
- Schema - 22 张表 + 32 条迁移
- MyTownUniverse - 内存态城镇 / 居民索引
- DatasourceCrashCallable - 崩溃报告诊断
保护系统
- ProtectionManager - 判定总入口,6 个 Segment 容器
- ProtectionHandlers - 20 个 Forge 事件挂接
- ExtraEventsHandler - 爆炸事件
- ProtectionParser - 加载
protections/*.json - Protection - 单条保护规则
- Segment - 规则段与 8 个子类
- Segment 类型枚举 - BlockType 3 / ItemType 5 / EntityType 4 / Priority 7
- Caller 与 Getter - 反射 / ASM 取值两套实现
- Condition - 条件求值,4 类型分支 + AND/OR
- ThreadPlacementCheck - TileEntity 延迟创建轮询
数据模型
- Town - 核心模型,7 个
final子容器 - Nation - 国家层
- AdminTown -
getMaxBlocks()返回Integer.MAX_VALUE - Plot - 长方体领地,不是多方块
- TownBlock - 区块级单元,无
y - Resident - 居民,主键 UUID
- Rank - 3 个内置等级,含
-拒绝语义 - FlagType - 15 种 flag 定义
- Flag - flag 实例与容器
- BlockWhitelist - 方块级白名单(含
y),软删除 - Bank - 城镇账本,
amount初值 0 - Wild - 荒野单例
- SellSign - 唯一注册内容
事件与工具
- Ticker - 逐 tick 居民 + 每日收维护费
- VisualsHandler - 领地边框高亮
- SafemodeHandler - 安全模式踢人
- TCWarpHandler - Thaumcraft warp 反射桥
- Chunk 加载回调 - 强载票据恢复
- 交互工具 - 3 工具对照
- PlotSelectionTool - 圈地(289 行)
- PlotSellTool - 放出售告示牌
- WhitelisterTool - 加保护白名单
公开 API
关联
- MyTown2-Client - 客户端扩展 mod(独立的已收录分类)