问题排除
这个页面列出了几种常见问题和解决办法。
- 管理员可解决的问题
- Towny 锁定在安全模式
- 聊天栏有多个前缀叠加
- 玩家可解决的问题
- 居民可在其他城镇建筑/破坏
管理员可解决的问题
Towny 锁定在安全模式
启动服务器之后你可能会遇到无法移动并被强制传送回出生点的情况。这一般是 Towny 进入了安全模式。这个模式会在 Towny 的数据(文件或数据库)遭到损坏时启用,应当予以修复。为了防止数据进一步改动,常见会强制锁定玩家的位置。
修复数据有两种方法。
方法一
相对简单的恢复方式就是插件自带的备份功能。每次服务器启动与城镇日过后均会自动创建一份。不过它只会在你以文件数据库的形式保存数据时有效。
- 关闭服务器;
- 打开
plugins\towny文件夹; - 找到
data文件夹,修改其名称,如果问题解决,你可以随后删除这个文件夹; - 打开
backup文件夹; - 选择最新或较新的归档,并用压缩软件打开它;
- 将里面的
data文件夹解压到plugins\towny中; - 启动服务器,并检查日志关于 Towny 的部分。如果插件仍然触发了安全模式,选择时间更早的备份并重做第三步。
方法二
需要你有一定的操作经验。只建议在极端情况(如备份数据过老或不存在)时手动编辑 Towny 的数据。
- 关闭服务器;
- 打开
plugins\towny文件夹; - 将
data文件夹复制到其他安全的地方,修改其名称备用; - 在
config.yml中设置debug_mode: true; - 再次开启服务器,在服务器的日志中找到有关 Towny 的部分内容。
注意:下方的教程只适用于低于 0.96.3.0 的版本。
大于此版本的 Towny 对城镇与国家、居民与城镇间的关系进行了调整,使其分离存储。这样插件就可以更精确地保护损坏的数据。如果你正在使用旧版的 Towny,如下教程可以帮助你解决安全模式问题。
数据出错可能有四种类型。通常情况下是某个文件在其他文件中未找到。例如:城镇名称.txt 中存在一个 residents.txt 中没有的成员,或者 世界名称.txt 列出了一个不存在于 城镇.txt 中的城镇。
世界:世界列表在 worlds.txt 中显示,且分别有 世界名称.txt 文件。Towny 在其中找到了无效的世界名称,但列表中的所有城镇都在 towns.txt 中,此时它不会载入数据。如果列表中出现了额外城镇,那么你就需要视情况决定接下来做的事:
如果
towns.txt没有这个城镇,但对应城镇的 txt 文件却存在于towny\data\towns,将这个城镇的名称添加进towns.txt文件即可。
如果
towns.txt没有这个城镇,且towny\data\towns也没有对应的文件,将这个城镇从世界名称.txt文件中删除即可。
国家:国家数据文件损坏通常是无效城镇引起的。打开 towny\data\nations 文件夹下的 国家名称.txt 文件,查看里面是否列出了不存在的城镇,确保所有城镇的名字都出现在 towny\data 文件夹中。如果出现了额外城镇,那么你就需要视情况决定接下来做的事:
如果
towns.txt没有这个城镇,但对应城镇的 txt 文件却存在于towny\data\towns,将这个城镇的名称添加进towns.txt文件即可。
如果
towns.txt没有这个城镇,且towny\data\towns也没有对应的文件,将这个城镇从世界名称.txt文件中删除即可。
城镇:城镇数据文件损坏通常是无效居民引起的。打开 towny\data\towns 文件夹下的 城镇名称.txt 文件,查看里面是否列出了不存在的玩家,确保所有玩家的名字都出现在 towny\data 文件夹中。如果出现了额外玩家,那么你就需要视情况决定接下来做的事:
如果
residents.txt没有这个玩家,但对应玩家的 txt 文件却存在于towny\data\residents,将这个玩家的名称添加进城镇名称.txt文件即可。
如果
towns.txt没有这个玩家,且towny\data\residents也没有对应的文件,将这个玩家从城镇名称.txt文件中删除即可。
居民:无效居民通常是 residents.txt 中的玩家没有在 towny\data\residents 文件夹下对应的 居民名称.txt 导致的,大部分情况下,只需删除 residents.txt 中的名称即可。
手动编辑数据之后,查看启动后控制台的 Towny 部分消息,确认数据是否成功修复。插件可能会列出新发现的损坏数据。此时只需按上述步骤重做即可。
聊天栏有多个前缀叠加
如果你发现你的聊天栏出现了这种情况:
[拥有者]拥有者[拥有者] 玩家名称,带有两个额外的前缀,那么你需要修改 chatconfig.yml。
出现问题的聊天变量可能是这三个。
- {group},即权限插件的权限组名称
- {permprefix},即权限插件的前缀部分
- {modplayername},会包含其他修改聊天的插件前缀
你可以这样做:
- 在
\towny\settings\chatconfig.yml
- 找到
channel_formats:和global:部分; - 将 {modplayername} 改成 {playername};
- 删掉 {groups}。
- 在游戏内输入
/townychat reload。问题应该就可以解决。
照做之后就可以让 townychat 只使用 {permprefix} 聊天标签,排除了权限插件显示的颜色与聊天前缀。
玩家可以解决的问题
居民可在其他城镇建筑/破坏
如果城镇拥有者发现他的居民可以在其他城镇中破坏建造,但是他只需要将这些行为限制在他们的地皮中,那么可以这样做:
- 输入命令
/town set perm off - 输入命令
/town set perm reset
第一个命令会禁用城镇内所有居民/盟友/访客的权限。第二个命令会将新改变的默认权限设置为所有城镇地皮。这两条命令均不会影响城镇拥有者的地皮。
SnowCutieOwO