Towny — 在Minecraft中创建城镇和国家的插件
Towny是一个Minecraft服务器插件,它在服务器上构建“居民 → 城镇 → 国家”的层级结构,并采用网格系统保护土地免受破坏。
Towny是一个Minecraft服务器插件,它在服务器上构建“居民 → 城镇 → 国家”的层级结构,并采用网格系统保护土地免受破坏。
Towny — 在Minecraft中创建城镇和国家的插件
测试并编写文章的Minecraft版本:26.1.2
支持的版本范围:1.19.x - 26.1.2
经济功能需要额外安装Vault和任何经济插件(可选)
Towny是一个Minecraft服务器插件,它在服务器上构建了“居民 → 城镇 → 国家”的层级结构,并采用网格原则保护土地免受破坏(Griefing)。在原版游戏中,没有管理员权限是无法保护领土的:任何人都可以破坏别人的建筑。Towny在无需管理员手动干预的情况下添加了此功能——玩家自己建立城镇,私有化地块,并决定谁可以访问它们。它是此类插件中最古老的插件之一,目前仍在积极开发中。
基于网格的领土保护
世界被划分为16×16方块的正方形——即所谓的城镇区块(townblock)。其大小与区块(chunk)一致,且与高度无关:保护范围覆盖从基岩(bedrock)到天空的整个方块柱。当城镇使用/town claim命令私有化一个城镇区块时,该地块就开始服从城镇或地块所有者的权限。
城镇区块的数量是有限的。默认情况下,一个城镇可以占用的正方形数量等于其居民人数乘以8。也就是说,一个由五名玩家组成的定居点最多可获得40个地块。城镇之间的空间仍然是拥有自己互动规则的荒野。

玩家使用/town new命令建立城镇,起始城镇区块周围会泛起一圈粒子波
地块权限
对于每个地块,所有者分别设置四种类型的操作:建造、破坏、与机械(拉杆、按钮、门)互动以及使用物品。每种类型针对四个组进行设置:城镇居民、国家成员、盟友和外人。例如,可以允许盟友开门,但禁止他们破坏方块。地块所有者还可以添加特定的朋友,即使镇上的其他人没有权限,这些朋友也能获得访问权限。

包含四个组和操作类型的地块权限界面,显示在聊天中
居民、城镇和国家
每个城镇由一名市长领导,每个国家由一名国王领导。两人都任命助手与他们一起管理定居点。市长向居民分配等级(例如助手或警长),每个等级在城镇内都享有自己的一套权利。多个城镇联合成一个国家,在服务器上形成大型团队。国家之间宣布彼此为盟友或敌人,从而加深了玩家之间的划分。

显示一个国家几个城镇的服务器地图,聊天中 /towny map 命令的输出
经济
如果服务器上安装了Vault和经济插件,Towny将开启金钱机制。建立城镇、私有化地块和创建国家都需要收费。市长为居民设定每日税收,收取的资金进入城镇银行,只有他才能提取。作为国家一部分的城镇每天向国家上交贡金。
一个独立的机制是维护费(upkeep):仅仅为了城镇和国家的存在而进行的每日支付。如果一个城镇无法支付这笔费用,它就会被解散。维护费人为地从流通中收回了资金,遏制了服务器上的通货膨胀。
战争
管理员手动开启战争模式。在此期间,大多数命令被冻结,国家内城镇的方块保护不再生效。每个城镇区块都有耐久度池:当敌人站在上面时,耐久度下降,降到零时,城镇就会失去该地块。目标是占领城镇的家园区块(居民生成的地方)。战争模式本身是通过单独的官方Towny附加组件连接的——它们不在基础插件中。
配置(文件)
完整的Towny config.yml包含2700多行。下面仅列出最常配置的关键参数。数据存储格式在单独的 database.yml 文件中定义。
参数 | 作用 |
| 开启所有经济功能(需要Vault) |
| 建立城镇的费用 |
| 创建国家的费用 |
| 私有化一个城镇区块的价格 |
| 地块限制乘数:居民人数 × 8 |
| 城镇每日维护费 |
| 国家每日维护费 |
| 每日收取税款和维护费 |
| 玩家死亡时损失多少 |
| 存储格式: |
结论
Towny为玩家提供了一个结构化的土地保护系统,其中包含城镇和国家的层级结构,以及建立在其上的经济系统。该插件适用于重视社区建设的生存和角色扮演服务器,而不太适合纯粹的迷你游戏或无政府状态项目。
安装
一次典型安装大约 5 分钟。流程相同,只是 Loader 和对应构建不同。
- 1Stop your Minecraft server.
- 2Drop the plugin .jar into the server /plugins folder.
- 3Start the server once so the plugin generates its config files.
- 4Edit /plugins/<name>/config.yml as needed, then run /reload confirm or restart.











