Frequently Asked Questions - Polar-Pumpkin/Shopkeepers-Chinese-Wiki GitHub Wiki
目录
- 为什么我不能从我的商店买东西?
- 它不显示交易结果!
- 商店不接受我放进去的头颅物品!
- 我无法把交易结果物品从GUI上拿下来!
- 颜色设置似乎在配置文件中无效! 它们变成了怪异的颜色!]
- 我不能在Shopkeeper的名字中使用颜色代码!
- 你将会添加对于货币插件的支持吗(和Vault的联动)?
- 我该如何在一些类似WorldGuard插件阻止我时创建Shopkeepers商店?
- 我可以对一个Shopkeeper设置超过8个交易项吗?
- 你可以改为只是重新平衡, 或者能让管理员能够配置常规村民的交易项吗?
- 我服务器的timing报告显示, Shopkeepers正在占用我服务器的大量处理时间!
- 噢! 明智的Nisovin啊, 我该如何做才能创建一个成功的经济系统?
- 我是一个插件开发者: 我该如何确认一个实体是否是Shopkeeper实体?
- 我能看看源码吗?
- 我想问一个问题/我遇到一个问题!
为什么我不能从我的商店买东西?
你不能从自己的商店里面买东西. 此限制有助于出现错误时减少重复错误. 此项措施并不能完全防止出现bug, 但是可以使它们变得不那么明显.
这里有一个配置选项控制这个行为: prevent-trading-with-own-shop
它不显示交易结果!
你提供的物品可能和交易所要求的物品不匹配. Minecraft要求玩家提供的物品和交易要求物品包含有相同的内部数据.
并不是所有内部数据对于玩家来说都是可见的: 你可能需要使用其他插件来比较物品的内部数据 (举个例子. 可以试试PowerNBT插件).
通常当你的服务器上创建同一种类的物品会出现有轻微不同的变体时, 就会造成此问题. 一些插件可能会对其创建的物品添加一些内部数据, 为了追踪其来源, 主人, 或者物品的一些其他信息.
如果你启用了Debug模式, 就可以在交易失败时在控制台看到关于此次交易失败的详细信息.
商店不接受我放进去的头颅物品!
在Shopkeepers的旧版本当中, 由于Spigot的一个bug, 可能不支持包含有自定义材质的头颅物品, 那样可能会导致Shopkeepers保存那样的物品时使数据文件出错. 如果你想尝试能否在你的服务器上保存这种物品(责任自负!), 有一个配置选项控制这个行为: skip-custom-head-saving
关于头颅物品你可能遇到的另一个问题: 头颅物品可能会从Mojang的服务器中更新自己的纹理材质然后更新物品的内部数据. 如果这导致你手中的头颅物品数据和Shopkeepers商店记录的物品数据不匹配, 那么Shopkeepers就会拒绝交易.
我无法把交易结果物品从GUI上拿下来!
如果交易GUI显示了交易结果物品, 但是你却拿不下来, 这可能是由:
-
Shopkeepers可能不支持这种点击方式. 试试使用普通的左键点击把它拿下来.
-
服务器和客户端之间"看到"的可能存在差异: 请确认你使用的Minecraft客户端版本和服务端版本匹配并且你没有使用奇怪的mod.
除此之外: 一些插件可能修改客户端和服务端之间传出/传入的数据(举个例子. 跨版本兼容型插件, 或试图隐藏玩家视角的一些其他可见的物品数据的插件, 等等..). 试试你能不能在一个其他啥插件都没装的服务器上重现这个bug, 然后试着找出是哪个插件导致了这个问题.
打开Debug模式可能会在交易失败时在控制台记录更多信息.
颜色设置似乎在配置文件中无效! 它们变成了怪异的颜色!
试试把配置文件中的编码配置选项改成"UTF-8". 然后确保你的配置文件的确是UTF-8编码的. 你可以使用各种工具, 举个例子, 使用NotepadPlusPlus来查看一个文件的编码类型.
我不能在Shopkeeper的名字中使用颜色代码!
每次重新命名Shopkeepers时, 首先会验证新名称. 插件使用你可以在配置文件中找到并修改的正则表达式来验证Shopkeepers的新名字. 此正则表达式指定可以使用哪些字符作为名称以及名称必须至少/至多多少字符. 默认情况下, 此正则表达式可能不包含颜色代码 &. 因此, 为了允许在Shopkeepers名字中使用各种颜色, 你必须先将该字符添加到配置文件中的正则表达式中.
你将会添加对于货币插件的支持吗(和Vault的联动)?
对不起, 不会. 交易接口实际上仅适用于物品交易. 举个例子, 在你放入交易要求的物品之前, 交易结果物品甚至都不会出现. 作为替代品, 你可以使用另一个插件来创建某种可以将虚拟货币转换成实体货币(绿宝石)的银行. 通过这种方式, 玩家可以把虚拟货币存款/取款成绿宝石来买买买. 你可能会对Gringotts或者GoldIsMoney这两个插件感兴趣.
我该如何在一些类似WorldGuard插件阻止我时创建Shopkeepers商店?
你可以先试试启用配置文件中的 bypass-spawn-blocking 配置选项后是否解决问题. 如果这没有作用, 你就需要在对方插件中寻找如何禁用此生成限制的方法了. WorldGuard就有一个配置选项来指定其会阻止哪种生物的生成. 这是mobs的子配置选项, 叫做 block-creature-spawn. 如果此选项为空, 你需要在这里添加所有你想阻止生成的生物类型, 确保没有写Villager. 另一个可行方案就是设置WorldGuard的 block-plugin-spawning 配置选项(同样是mobs的子选项)为 false, 但这可能会产生其他副作用.
我可以对一个Shopkeeper设置超过8个交易项吗?
我感觉一个Shopkeeper设置8个交易项都有点多了, 如果你需要出售更多商品, 最好设置很多个Shopkeeper. 然而, 如果你坚持要这么做, 当然可以设置更多个交易项, 只是需要更多的时间.
对于玩家商店, 它实际上相当容易. 交易物品将会使用箱子内的前八种. 所以, 只需要先设置这些物品的价格, 接着重新排列箱子内的物品, 然后你就可以设置其他物品的价格了.
对于系统商店, 唯一的方法就是修改保存下来的save.yml文件然后手动添加交易项. 请注意我不赞成也不会帮助你这么做. 如果你尝试这样做然后弄乱了你保存的文件, 你需要自己修复. 在我看来, 你怎么样都不应该这么做. 拥有多个具有各种商品分类的Shopkeepers商店明明是一种更加有好的方式(可能需要在附近立一些牌子).
你可以改为只是重新平衡, 或者能让管理员能够配置常规村民的交易项吗?
这里已经有一款插件来提供村民贸易二次平衡以及定制贸易功能了, 你可以在这里找到它: https://dev.bukkit.org/projects/rebalance-villagers
我服务器的timing报告显示, Shopkeepers正在占用我服务器的大量处理时间!
在给你提供提升性能的建议并解释Shopkeepers运行时间之前, 有几个方面你需要知道:
- 看看低速任务实际运行的频率(PerTick和Count). 如果这些任务很少运行, 那么它对性能的影响其实不足为之担心. 举个例子: 一些任务可能只在插件启动(或者你重载插件)时运行. 运行一些很繁忙的任务可能是你的服务器正在自动保存数据(通常它本身就很慢).
- 如果此任务的确运行的很频繁, 那么它可能是以下东西之一:
- 'LivingEntityAI' 负责处理实体的重力和看向附近玩家的行为. Shopkeeper实体默认情况下禁用了它的Minecraft原生AI, 这保证了Shopkeeper实体的行为数保持在绝对最小. 在早期版本中插件禁用了绝大部分实体AI然后让Minecraft负责处理其余的事情. 然而, 即使这样, Minecraft仍然在后台执行了Shopkeeper实体不需要的AI行为任务(例如, 村民会定期搜索附近的村庄, 这甚至导致额外的区块加载). 你可以使用 use-legacy-mob-behavior 配置选项切换为使用旧的AI处理模式, 然后比较此更改之前和之后服务器的整体性能变化. 在任何一种情况下, Shopkeeper实体的性能影响应该低于自然产生的Minecraft实体的性能影响. 但是使用Shopkeepers插件来处理Shopkeeper实体的一些行为的话, 你应该能够观察到这对于服务器整体性能的好处 (因为Minecraft花在更新实体和其他后台任务上的时间减少了).
- 'WorldListener' 会对区块加载产生应答同时生成与之对应的Shopkeepers. 如果你的某区块内包含有很多Shopkeepers, 那自然需要更多的时间来加载. 如果这确实影响了你的服务器, 那么你很可能在很小的范围内有过多的Shopkeepers. 试试减少受影响区域内的Shopkeepers数量. 比起为所有的玩家商店规划一小片密集的市场区域, 考虑一下在世界各地设置几个市场并限制玩家可以在那里创建的商店数量, 或让你的玩家在世界各地更自由地创建商店. 然而, 请注意让你的玩家扩散到世界各地同时也会增加需要加载的区块数量. 因此, 这涉及平衡服务器的整体平均性能与某些密集区域潜在的峰值性能问题. 你可以通过配置文件和权限节点来限制玩家可以创建的上商店数量. 那么玩家就会被迫删除暂时不需要的商店. 同时还有一个配置选项是删除许久未登录玩家的商店(虽然这带来了启动插件所需的时间变长的副作用).
- 牌子商店会阻止方块的物理更新. 方块的物理更新在Minecraft中执行的挺频繁的. Shopkeepers插件会对此产生应答以防止牌子商店被摧毁. 如果这在你的服务器上造成了性能问题, 请考虑减少方块物理更新的次数(例如检测并禁止高频红石), 或直接在配置文件中禁用牌子商店.
- 保存Shopkeepers数据. 默认情况下插件会在每次玩家编辑Shopkeeper结束后保存数据. 如果你有很多玩家经常和Shopkeeper交互, 那么改成定期保存数据反而性能会更好. 配置文件中有一项可以禁用(编辑完就)立即保存数据(的行为)(save-instantly).
关于提升性能的建议: 减少数量. 这里有一篇不错的博文说明了原理.
- 尝试减少加载的区块数量和区块的加载频率. 如果你有很多玩家经常在世界中高速穿行, 并且还是用高视距, 你自然会得到很多需要处理的区块加载/卸载任务. 始终注意一下由Minecraft特性或插件造成的, 没有玩家却需要额外加载的区块, 或者可能阻止区块卸载的行为. 实际加载的区块数量越多, 定期世界保存需要保存的数据也越多. 或许可以考虑一下将服务器的市场区规划到离出生点远一点的地方, 这样每当玩家加入服务器时, 就不需要额外加载Shopkeepers.
- 尝试减少实体的数量. 在Minecraft中每加载一个实体就会造成一定的性能开销. 尽管每个Shopkeeper实体都尽可能禁用了不需要的AI, 但同样也会产生一定的影响.
噢! 明智的Nisovin啊, 我该如何做才能创建一个成功的经济系统?
Nisovin实际上对此有点想法. 你可以在 创建一个经济系统 | Creating an Economy 页面阅读他的建议.
我是一个插件开发者: 我该如何确认一个实体是否是Shopkeeper实体?
每个Shopkeeper实体都应该标有 'shopkeeper' 的元数据标签, 所以你可以检查它来确认是否是Shopkeeper实体.
我能看看源码吗?
当然可以, 就在这里.
我想问一个问题/我遇到一个问题!
提交一个Issues是获取帮助或报告插件问题的最佳方式.
在提交Issues之前:
在报告问题前:
- 尝试在以下服务器环境来重现你遇到的问题:
- 使用最新版的Spigot和Shopkeepers.
- 没有其他插件.
- 没有任何服务端/客户端mod.
在报告问题时:
- 提供你正在使用的Minecraft, Spigot和Shopkeepers版本.
- 提供问题的详细说明, 并提供有助于重现问题的尽可能多的信息.
- 如果可以, 带上一个在没有其他插件的Spigot服务器中关于如何重现问题的分布说明.