🍑服插件集群介绍——国家体系(Towny)

Towny

m70jmzlz.png

什么是Towny(简介)

Towny的基础取决于世界如何被分割成块。
Minecraft 服务器被分成 16x16x384 的块部分。384 是从基岩地板到天空中的云层的高度,因此Towny忽略高度并专注于 x 和 z 平面。网格方块的默认大小为 16x16,类似于块大小。因此,声明一个城镇街区Towny将采取块大小来进行取样。在这里,通过游戏内按F3+G可换出关于MC区块显示的调试功能,以便分析你能够通过Towny获得哪个区块的许可。

Towny Wiki

该Wiki翻译并基于 Towny Wiki ,若有错误请及时指出改正

目前Wiki完成进度条

  • Wiki完善过程中将不定期重启服务器以测试插件

    层次结构

    游牧民族

    游牧民族是未加入任何城镇的玩家。他们没有固定领地,其权限节点可通过TownyPerms.yml配置。若在Townyperms.yml中开启权限,游牧民族可购买大使馆地块,并默认拥有权限节点towny.command.plot.claimtowny.townless。

    居民

    每个加入服务器的玩家均可成为城镇居民(默认在townyperms.yml的游牧民族部分授予towny.town.resident权限节点)。通过/resident命令可查看居民状态界面,显示金钱、所属城镇、拥有地块及好友。居民可加入现有城镇或创建自己的城镇。

    配置自动加入城镇

    在config.yml中设置 default_town_name: '城镇名',以使新玩家首次登录时自动加入指定城镇。

    权限与地块

  • 居民可购买镇长挂牌出售的地块。
  • 拥有地块的居民会在地块详情中看到默认权限设置。
  • 居民权限由TownyPerms.yml中towns.default部分配置。

    城镇

    城镇是由居民(至少1人)组成的群体,由一名市长管理。城镇拥有金库,可设置税收、扩展领地,并可通过/t new {城镇名}创建。

    核心功能

  • 地块扩展:城镇从“家园地块”(创建时市长所在位置)向外扩展,需相邻地块或使用/t claim outpost建立前哨。
  • 居民上限:在config.yml中通过global_town_settings.max_residents_per_town设置,默认无限制。
  • 出售城镇:自Towny 0.99.6.0起,使用/t forsale [$金额]挂牌出售,玩家用/t buytown [城镇名]购买,通过/t notforsale取消出售。
  • 查看城镇列表:使用/town list。

    元数据支持(Towny 0.95.1.0+):可为城镇存储元数据(详见图文指南)。

    市长

    市长负责城镇管理,权限由TownyPerms.yml配置。可执行以下操作:

  • 为居民分配头衔(如管理员或自定义等级),使用/town ranklist查看可用等级,/town rank {add|remove} {玩家名} {等级名}调整。
  • 设定城镇税收及税率。
  • 管理多个城镇(需管理员权限):
    创建NPC城镇:/ta town new {城镇名} npc
    设置NPC市长:/townyadmin set mayor {城镇名} npc
    添加居民至NPC城镇:/ta town {城镇名} add {玩家名}

    头衔设置(Towny 0.95.1.0+):

    /town set title {玩家名} 头衔内容
    /town set surname {玩家名} 后缀内容

    逃犯

    基础机制

    自 Towny 0.92.0.0 起,城镇(默认由市长或特定职位成员)可标记其他玩家为逃犯。逃犯可以是任何玩家(无论是否隶属于城镇或国家)。

    操作指令:

    /town outlaw [add/remove] [玩家名]
    权限节点:towny.command.town.outlaw

    生效规则

  • 成员驱逐:若被标记玩家属于本城镇,会被立即驱逐。
  • 开放城镇限制:设为「开放加入」的城镇(通过/town join自由加入)可利用逃犯名单阻止目标自由加入。
  • 公开城镇传送封锁:逃犯无法传送至公开城镇的出生点(若被目标城镇标记)。

    玩家提示

  • 进入警告:逃犯进入标记其身份的城镇时,会收到屏幕中央的警告提示。
  • 在线通知:玩家被设为逃犯时若在线,会在聊天栏收到通知。

    入狱机制

    逃犯在标记城镇内死亡时,可被监禁(需满足以下条件):

  • 启用 config.yml 中的 jail.is_jailing_attacking_outlaws: true。
  • 执行击杀的玩家需拥有权限节点 towny.outlaw.jailer(默认仅市长、助理、Sheriff)。
  • 城镇需拥有至少一个监狱地块(Jail Plot)。

    逃犯名单查询

  • 查本城镇:/town outlawlist
  • 查任意城镇:/town outlawlist {城镇名}
  • 查个人状态:/res outlawlist [玩家名](省略玩家名则查询自身)

    传送驱逐(Towny 0.96.4.0+)

    功能设定:
  • 禁止逃犯进入标记城镇(默认允许):将 allow_outlaws_to_enter_town: false 加入 config.yml。
  • 传送延迟:通过 outlaw_teleport_warmup 设置时间(0 秒为瞬移,单位:秒)。

    场景示例:

    outlaw_teleport_warmup: 5 时,逃犯进入后 5 秒强制传送离开。

    国家

    国家由多个城镇(或单个城镇)组成,首都城镇的市长即为国家领袖。国家可参与战争、结盟、征税,并拥有独立金库。

    核心机制

    同盟与限制:
  • 同盟需双向确认(默认关闭,通过war.disallow_one_way_alliance: true启用)。
  • 可设置最小居民数限制以创建或加入国家(详见config.yml的Global Town Settings)。

    国家传送点:
  • 使用/nation spawn传送(若国家设为“公开”,非敌对方可访问)。
  • 配置global_nation_settings.capital_spawn: true强制将传送点设于首都。

    邻近限制(Towny 0.100.1.0+):
  • 在config.yml的Global Nation Settings中设置城镇与首都或同盟城镇的最大距离限制。

    制裁城镇(Towny 0.100.1.0+):
  • 阻止目标城镇加入本国或使用国家传送:/nation sanctiontown [城镇名]

    区域控制(NationZone)

    启用条件:
  • 配置global_nation_settings.nationzone.enable: true。
  • 国家领土外围区域,仅本国成员可建造/破坏。

    操作指令:
  • 市长开关国家区域:/t toggle nationzone
  • 管理员调整大小:/ta town set nationzoneoverride #
  • 战争期间自动关闭:global_nation_settings.nationzone.war_disables: true

    扩展机制:
  • 国家人口增长可扩大区域范围(配置NationLevels)。
  • 首都额外加成:配置global_nation_settings.nationzone.capital_bonus开启。

    附属规则:
  • 无国家城镇的人口上限:global_town_settings.maximum_number_residents_without_nation(默认0无限制)。

    国家领导人

    国家领导人即首都城镇的市长,由国家成员城镇组成的最高管理者,其权限通过 TownyPerms.yml 配置。

    权限与等级管理

    居民等级分配:
  • 查看可用等级:/nation ranklist
  • 调整玩家等级:/nation rank {add|remove} {玩家名} {等级名}
    (支持自定义等级,例:银行家、邀请官等,由管理员在 townyperms.yml 预设。)

    特性:
  • 一个玩家可拥有多个等级,便于职责细分。
  • 默认包含「国家助理(Nation Assistant)」等级。

    头衔与后缀设置

    国家领导人可为境内所有城镇居民设置前缀(头衔)和后缀

    指令格式:

    /nation set title {玩家名} 头衔内容
    /nation set surname {玩家名} 后缀内容

    重置方法:

    留空指令末尾内容(例:/nation set title Steve 重置为无头衔)。

    操作示例
  • 设置头衔:
    /nation set title Alex [联邦骑士] → 显示为 [联邦骑士] Alex
  • 设置后缀:
    /nation set surname Bob (荣耀公民) → 显示为 Bob (荣耀公民)
  • 清空后缀:
    /nation set surname Bob → 恢复为 Bob

    配置市长与国家领导人头衔、城镇及国家名称

    Towny 允许自定义市长、国家领导人、城镇、首都及国家的命名格式,通过编辑 config.yml 中的以下两个模块实现:

    城镇等级系统(town_level)

    根据城镇人口数量动态调整城镇名称、市长前缀/后缀,并配置地块数、维护费用等属性。
    详细参数参考前文 town_level配置说明 。

    国家等级系统(nation_level)

    根据国家人口(或城镇数量)动态调整国家名称、领导人前缀/后缀、首都名称格式及国家加成效果。
    详细参数参考前文 nation_level配置说明 。

    注意事项:

  • 修改后需重启服务器或重载 Towny 配置(/ta reload)生效。
  • 预留空值(如 namePrefix: '')表示不使用前缀/后缀。
  • 关键词 {townname}, {nationname} 等将自动替换为实际名称。

    配置城镇等级(town_level)与国家等级(nation_level)

    城镇等级(town_level)配置

    在 config.yml 中通过以下结构定义城镇等级规则(按居民数分级):

    town_level:

    numResidents: 1
    namePrefix: ''
    namePostfix: ' (Settlement)'
    mayorPrefix: 'Hermit '
    mayorPostfix: ''
    townBlockBuyBonusLimit: 0
    townBlockLimit: 16
    upkeepModifier: 1.0
    townOutpostLimit: 0
    debtCapModifier: 1.0
    peacefulCostMultiplier: 1.0
    bankCapModifier: 1.0
    resourceProductionModifier: 1.0
    townBlockTypeLimits:

    • shop: 2
    • arena: 2

    参数解析:

    变量名称描述依赖配置项(需启用)
    numResidents触发此等级的最低居民数量。
    namePrefix/namePostfix城镇名称前/后缀(例:Townname (Settlement))。
    mayorPrefix/mayorPostfix市长名称前/后缀(例:Hermit MayorName)。
    townBlockBuyBonusLimit使用 /town buy bonus 可购买的额外地块数上限。town.max_purchased_blocks_uses_town_levels: true
    townBlockLimit城镇可拥有的总地块数(覆盖 config.yml 的 town_block_ratio)。town_block_ratio: '0'
    upkeepModifier维护费倍数(居民增时费用提高,若配置 town_plotbased_upkeep: true 则以地块数计算)。town_plotbased_upkeep_affected_by_town_level_modifier: true
    townOutpostLimit可创建的前哨站数量。limit_outposts_using_town_and_nation_levels: true
    debtCapModifier债务上限倍数(结合 debt_cap.override 计算实际值,如 1.0 x 1000 = 1000)。debt_cap_uses_town_levels: true
    peacefulCostMultiplier城镇维持中立的费用倍数(乘以 economy.price_town_neutrality)。
    resourceProductionModifier资源产出倍数(与插件 TownyResources 联动)。需安装 TownyResources 插件
    bankCapModifier银行存储上限倍数(乘以 economy.banks.town_bank_cap)。
    townBlockTypeLimits限制某类地块的最大数量(例:shop:2 表示商店地块最多2个)。

    配置示例:

  • 当城镇有 1个居民 时,名称自动添加后缀 (Settlement),市长前缀为 Hermit。
  • 当居民增至 2人 时,后缀变为 (Hamlet),市长前缀变为 Chief。

    配置国家等级(nation_level)

    在 config.yml 中通过以下结构定义国家等级规则(默认基于居民数量,可切换为城镇数量):

    nation_level:

    numResidents: 10
    capitalPrefix: ''
    capitalPostfix: ''
    namePrefix: 'Federation of '
    namePostfix: ' (Nation)'
    kingPrefix: 'Count '
    kingPostfix: ''
    townBlockLimitBonus: 10
    upkeepModifier: 1.0
    nationTownUpkeepModifier: 1.0
    nationZonesSize: 1
    nationBonusOutpostLimit: 2
    peacefulCostMultiplier: 1.0
    bankCapModifier: 1.0

    参数详解

    变量名称描述依赖配置项
    numResidents国家升级所需的最低指标:默认按居民数量,若 global_nation_settings.nation_level_is_determined_by_town_count_instead_of_resident_count: true 则按 成员城镇数量。
    capitalPrefix/capitalPostfix首都名称修饰(例:[首都] 城镇名)。
    namePrefix/namePostfix国家名称修饰(例:Federation of 国家名 (Nation))。
    kingPrefix/kingPostfix国家领袖(首都市长)名称修饰(例:Count 玩家名)。
    townBlockLimitBonus城镇加入国家时获得的额外地块上限(叠加至原城镇地块数)。
    upkeepModifier国家维护费倍数(基数随居民/城镇数增长;若启用地块维护费 town_plotbased_upkeep: true,则基于地块数计算)。需启用 town_plotbased_upkeep: true 且 town_plotbased_upkeep_affected_by_town_level_modifier: true
    nationTownUpkeepModifier加入国家后城镇维护费调整倍数(1.0=无变化;0.8=减少20%)。
    nationZonesSize国家区域(NationZone)的扩展宽度(单位:地块,默认1层围绕成员城镇)。需启用 global_nation_settings.nationzone.enable: true
    nationBonusOutpostLimit国家成员城镇的额外前哨站配额(叠加至城镇原有上限)。需启用 limit_outposts_using_town_and_nation_levels: true
    peacefulCostMultiplier国家维持中立的费用倍数(计算式:国家人口 × economy.price_nation_neutrality × 该值)。
    bankCapModifier城镇银行存储上限倍数(计算式:城镇人口 × economy.banks.town_bank_cap × 该值)。

    配置示例说明

    居民数达10时:
  • 国家名称变为 联邦 of 国家名 (Nation)
  • 领导人名称前缀为 Count
  • 成员城镇获得 10个 额外地块上限
  • 国家区域扩展为 1格宽
  • 城镇前哨站上限 +2

    居民数达20时:
  • 国家名称变为 领土 of 国家名 (Nation)
  • 领导人前缀为 Duke
  • 成员城镇额外地块 +20
  • 国家区域扩展为 2格宽
  • 前哨站上限 +3

    城镇成长机制

    创建城镇

    指令:/town new {城镇名}
    费用:需在 config.yml 的 price_new_town 设置创建费用(若设为 0 则免费)。

    核心规则:

    家园地块:创建时市长所在的地块自动设为城镇“家园地块”,该点即为默认传送点。
    调整传送点:
  • 移动至家园地块内其他位置:/t set spawn
  • 更换整个家园地块:/t set homeblock(需先扩展相邻地块)

    扩展地块:
  • 常规扩展:/town claim(仅限相邻地块)。
  • 建立前哨站:/t claim outpost(可在非相邻荒野直接扩展)。

    初始奖励地块(Towny 0.100.2.0+):

    配置 claiming.new_town_bonus_claims: 数量 赋予新建城镇一次性免费地块配额。

    加入城镇

    加入方式:

    邀请制:

    市长或助理执行 /town add {玩家名} 发送邀请。
    玩家输入 /accept 接受 或 /deny 拒绝。

    公开制:

    市长设置为开放:/town toggle open
    玩家自由加入:/town join {城镇名}

    操作辅助:

    查看开放城镇列表:/town list by open

    关键影响:

    每加入 1名居民,市长可扩展的地块上限按配置提升(由 town_block_ratio 或 town_level 规则控制)。

    土地拥有权的地块系统

    城镇地块(Town Blocks)

    Towny 为服务器管理员提供了一种“无干预”的方块保护方式。土地保护细分为称为“城镇地块”(townblocks)的小块区域,默认大小为 16x16xN(其中N为世界的最大高度)。这些地块像均匀网格上的单元格,相互之间无缝隙,大小一致。城镇的市长可申请并分配城镇地块给居民。

  • MetaData 存储(自 Towny 0.95.1.0 起): 可以在地块上存储附加元数据,相关设置请参见相关文档。

    城镇地块大小

    配置位置:config.yml
    默认大小:town_block_size: 16
  • 调整此值建议在首次安装 Towny 时进行,不建议在输入数据后修改,因为会导致位置偏移。
  • 较小的值允许更高精度,但增加设置工作量(不推荐设置低于4)。

    城镇地块索取

    居民索取:如果居民拥有相应权限,可以为城镇索取地块,默认权限仅限于市长和助手。使用 /town claim 或其他相关命令进行索取。为同时索取多个地块,市长需拥有权限节点。
  • 命令及结果:

    命令结果描述
    /town claim索取给定半径的正方形范围内的地块。
    /town claim #索取给定半径的正方形范围内的地块。
    /town claim rect #索取给定半径的正方形范围内的地块。
    /town claim rect auto自动索取以当前站立点为中心的正方形所有地块。
    /town claim circle #索取给定半径的圆形范围内的地块。
    /town claim circle auto自动索取以当前站立点为中心的圆形所有地块。
    /town claim auto自动索取以当前站立点为中心的正方形的所有地块。
    /town claim fill填充被边界围住的区域中所有可能的地块。
    /town列出可以索取的地块数量。
    拆解地块退款(自 0.95.0.0 起)

    可设置拆解地块的退款金额,建议不超过索取成本。

    新增功能(自 0.98.0.0 起)

    可以将退款金额设置为负数,以便对拆解土地收取费用。

    索取成本增长机制(自 0.95.0.0 起)

    可以设置索取成本递增,具体配置见 economy.new_expand.price_claim_townblock_increase。

    最大索取价格(自 0.96.3.0 起)

    在 config.yml 设置最大索取价格,确保不会超过设定的上限。

    特殊索取规则(自 0.99.0.0 起)

    可以强制要求城镇在特定形状的相邻地块内索取,根据 claiming.min_adjacent_blocks 进行配置。

    海洋和不必要生物群落(自 0.100.1.0 起)

    在配置中限制在海洋或不需要的生物群落中索取城镇地块。

    个人(玩家)索取

    当城镇地块被城镇索取后,市长可以通过命令将地块上架出售,居民可以使用 /plot claim 索取该地块,也可以通过 /plot unclaim 来撤销。

    让渡土地

    自 Towny 0.100.2.0 起,玩家可以自愿将土地让渡给其他城镇,使用命令 /town cede plot [townname]。接受方城镇必须满足能够索取该地块的条件。

    设置城镇可索取的地块数量

    配置位置:config.yml

  • 默认按居民数量分配地块,默认值为 8。
  • 可调整绝对最大数量设定:town.town_block_limit。
  • 无限地块:通过将 town_block_ratio 设置为 -1 使城镇获得无限地块(或针对单一城镇使用 /ta town {城镇名} toggle unlimitedclaims)。

    购买城镇地块

    城镇可以使用 /town buy bonus {数量} 购买额外地块。
    配置中可控制购买最大地块数:max_purchased_blocks。

  • 如果设置为 false,则使用 town.max_purchased_blocks 控制。
  • 如果设置为 true,则通过 town_level 中的设置进行控制,允许更多居民购买更多地块。

    新增成本设置(自 0.96.3.0 起)

    允许渐进式增加购买价格:price_purchased_bonus_townblock。

    超额索取

    自 Towny 0.99.1.0 起,引入“超额索取”功能,默认禁用,需要在 config.yml 中启用。

  • 超额索取指的是城镇的索取量超过其可索取的上限(如 120/100)。
  • 使用命令 /t takeoverclaim 逐个地块夺取,这要求城镇处于相邻位置并能支付特殊费用。

    重要提示:
  • 推荐在禁止使用前哨站的服务器上启用此功能,并使要求的相邻地块数量设为 2 以上。
  • 设有选项防止在城镇家园附近窃取土地。
  • 自 Towny 0.100.1.0 起,还可以限制国家领土仅被敌对国家超额索取。
  • 这个细致的系统允许玩家在游戏世界中以非常具有灵活性和战略性的方式管理和拥有土地,提供了多样化的玩法体验。

    地块组管理(Plot Groups)

    核心机制

    地块组(Plot Groups)是一组具有相同属性(权限、类型、所有者)的地块,可作为一个整体进行操作(买卖、权限批量设置)。

    操作命令

    命令功能描述版本要求
    /plot group add {组名}将当前地块加入指定组;若组不存在则自动创建。基础功能
    /plot group fs {金额}将整个地块组设定为统一价格出售。基础功能
    /plot group perm/reset批量重置地块组内的权限属性(如建造、破坏、开关权限等)。基础功能
    /plot group list查看所有已存在的地块组。基础功能
    /res toggle plotgroup进入持续添加模式:玩家移动至任何未被分组的地块时,该地块自动加入内存中设定的当前组。0.99.6.0+

    示例流程:

    • 创建组并添加地块:
      /plot group add Downtown
    • 开启持续添加模式:
      /res toggle plotgroup
    • 行走至待添加地块自动入组,结束时关闭模式:
      /res toggle plotgroup

      注意事项

      权限依赖:
    • 玩家需拥有 towny.command.plot.group 权限才能操作地块组。

      连续地块限制:
    • 地块组成员无需严格相邻,但非连续地块可能影响功能性(如合并销售的实际效果)。

      行政区划分(Districts)

      核心机制

      行政区(Districts)是逻辑上的区域标记,用于命名城镇内的某个片区(如“商业区”、“住宅区”),允许内在地块属性差异(不同权限、所有者)。

      操作指令

      命令功能描述要求/限制
      /town district add {区名}创建新行政区,包含相连的当前地块。地块必须连续且未被划分
      /town district remove {区名}删除指定行政区,地块恢复为普通地块状态。仅市长或助理可操作
      /townymap查看地图时,悬浮提示显示行政区名称。无特殊限制

      功能优势

      标识性:
    • 地图显示 (/towny map) 中标注行政区名称,提升区域辨识度(适用于建立「港口」、「工业区」等)。

      灵活性:
    • 各地块权限和类型可独立设置,适合复杂城镇布局需求。

      限制条件

      物理联系:
    • 行政区内所有地块必须互相连续,形如一个整体区域。

      名称唯一性:
    • 同一城镇内不可重复命名行政区。
    无标签
    打赏
    评论区
    头像
      头像
      jjgehuitic
        

      ?诗歌散文评语?

      头像
      zobzhyfady
        

      技术原理阐述透彻,配图辅助理解到位。

      头像
      eadbkfbake
        

      文章深入浅出,既有深度思考,又不乏广度覆盖,令人叹为观止。

    文章目录