一个允许玩家控制生物生成的Spigot插件。
### 功能
- 限制服务器上生物农场的规模。
- 减少生物农场内不必要的碰撞和移动。
- 根据农场规模或服务器性能,禁用农场中生物的感知或人工智能。
- 高度可配置 - 允许您根据需要定制插件。
- 影响小 - 插件的大部分处理使用异步方式进行。
### 安装
要安装插件,只需将下载的 jar 文件放入您的插件目录中。
请通过查看插件目录中的 `config.yml` 和 `profiles.yml` 来配置插件。 默认情况下,该插件将仅删除动物农场生物的随机移动能力并禁用它们的碰撞。
### 配置
此插件有很多可配置的项目
config.yml
```yaml
# FarmControl 的配置。
# 插件页面:https://www.spigotmc.org/resources/86923/
# GitHub: https://github.com/froobynooby/FarmControl
# 请不要更改此项!
version: 7
# 每多少个 tick 应该运行配置文件检查/操作周期?
cycle-period: 600
# 插件启动后,应该等待多长时间(以 tick 为单位)再开始执行检查任务?
# * 当您使用“响应式”模式时,这很有用,在这种模式下,在重启后的最初几分钟内忽略服务器性能是可取的。
start-up-delay: 0
# 这些设置可以按世界指定。
# * 注意:如果未指定世界或缺少设置,将使用默认节下列出的设置。
world-settings:
default:
# 应该运行哪些 profile (如 profiles.yml 中所定义)?
profiles:
# 这些profile 会持续运行。
proactive:
- soft-nerf-animal-farms
# - soft-limit-animal-farms
# - soft-limit-villager-breeders
# - trim-animal-farms
# - trim-sparse-animal-farms
# 这些profile 只有在服务器性能不佳时才运行,并且随着性能的提高而逐渐撤销 (如 reactive-mode-settings 中所定义)。
# * 注意:通常最好确保服务器的性能不会首先下降,而不是尝试减轻它。 虽然有一些合理的用例可以使用此模式,例如允许玩家保持更大的农场,但当性能开始下降时会削弱它们。
reactive:
# - hard-nerf-animal-farms
# - freeze-animal-farms
# 这些设置关系到触发配置文件检查/操作周期的响应式模式。
reactive-mode-settings:
# 服务器的 MSPT 超过多少时应触发响应式模式?
trigger-mspt-threshold: 45.0
# 服务器的 MSPT 低于多少时应取消触发响应式模式,并撤销操作?
untrigger-mspt-threshold: 35.0
# 这些设置关系到插件在响应式模式被取消触发后应该如何处理撤销对生物的操作。
untrigger-settings:
# 在撤销操作之前,响应式模式被取消触发需要经过多少个周期?
minimum-cycles-before-undo: 10
# 每个周期最多可以撤销多少个生物的操作?
maximum-undos-per-cycle: 40
# 实体对 maximum-undos-per-cycle 限制的贡献程度是多少?
# * 例如,如果 maximum-undos-per-cycle 为 40,并且村民的 entity-undo-weight 为 5,那么最多可以撤销 8 个村民的操作(因为 5 * 8 = 40)。
# * 如果未指定实体类型,将使用默认值。
entity-undo-weight:
default: 1
villager: 5
# 这些设置关系到何时不应对生物执行操作。
exclusion-settings:
# 是否不应对驯服的生物执行操作?
tamed: true
# 是否不应对命名实体执行操作?
named: true
# 是否不应对处于恋爱模式(繁殖动物)的生物执行操作?
love-mode: true
# 是否不应对被拴起来的生物执行操作?
leashed: true
# 是否不应对巡逻队长执行操作?
patrol-leader: false
# 是否不应对年龄小于此值(以 tick 为单位)的生物执行操作?
younger-than: 0
# 是否不应对哪些类型的生物执行操作?
type:
# - villager
# 对哪些 metadata 不应执行操作?
# * 一些插件会向生成或使用的生物添加 metadata。 此设置允许您排除这些生物,从而使此插件无法对它们执行操作。
metadata:
- Elitemob # 来自插件 EliteMobs 的精锐生物。
- Elitemobs_NPC # 来自插件 EliteMobs 的 NPC。
- Supermob # 来自插件 EliteMobs 的超级生物。
- infernalMetadata # 来自插件 InfernalMobs 的地狱生物。
- NPC # 来自插件 Citizens 的 NPC。
- shopkeeper # 来自插件 Shopkeepers 的店主。
# 这些设置关系到操作的属性。
action-settings:
# 这些设置关系到何时应撤销操作,并且可以按操作指定。
# * 注意:如果未指定操作或缺少选项,将使用默认设置。
undo-on:
default:
# 当生物互动时,是否应撤销此操作?
interact: false
# 当生物受到伤害时,是否应撤销此操作?
damage: false
# 当其他实体(例如僵尸攻击村民)针对生物时,是否应撤销此操作?
target: false
# 当玩家诱惑生物时,是否应撤销此操作(例如,奶牛被玩家手中的小麦诱惑)?
tempt: false
remove-ai:
interact: true
damage: true
target: true
remove-awareness:
interact: true
damage: true
target: true
disable-collisions:
tempt: true
disable-breeding:
# 您必须与动物互动才能繁殖它,因此永远不要在互动时撤销此操作。
interact: false
# 喂养动物所需的食物会诱惑动物,因此永远不要在诱惑时撤销此操作。
tempt: false
# 这些设置关系到我们确定服务器的 MSPT 的方式。
mspt-tracker-settings:
# 应该收集多长时间(以 tick 为单位)的持续时间来计算 MSPT?
# * 将此设置得太高会使 MSPT 的反应速度变得非常慢。
# * 将此设置得太低会使 MSPT 变得不稳定。
collection-period: 1200
```
profiles.yml
```yaml
# 请访问 https://github.com/froobynooby/FarmControl/wiki/Profiles 以获取有关创建profile的帮助。
profiles:
# 删除动物农场中生物的随机运动并禁用碰撞
soft-nerf-animal-farms:
group:
types:
- "category:animal"
count: 15
distance: 5
actions:
- remove-random-movement
- disable-collisions
# 删除动物农场中生物的感知
hard-nerf-animal-farms:
group:
types:
- "category:animal"
count: 15
distance: 5
actions:
- remove-awareness
- disable-collisions
# 删除动物农场中生物的人工智能
freeze-animal-farms:
group:
types:
- "category:animal"
count: 15
distance: 5
actions:
- remove-ai
- disable-collisions
# 禁用包含 20 或更多同类型动物的农场的繁殖
soft-limit-animal-farms:
group:
types:
- "category:animal"
count: 20
distance: 5
pure: true
actions:
- disable-breeding
# 禁用村民农场中 20 个或更多村民的繁殖
soft-limit-villager-breeders:
group:
types:
- "villager"
count: 20
distance: 10
actions:
- disable-breeding
# 在近距离内最多 20 只同类型的动物
trim-animal-farms:
group:
types:
- "category:animal"
count: 21
distance: 5
pure: true
actions:
- kill
# 稀疏放置(彼此相隔 160 个块)的情况下,最多 50 只同类型的动物
trim-sparse-animal-farms:
group:
types:
- "category:animal"
count: 51
distance: 160
pure: true
actions:
- kill
# 每个区块最多 10 个村民
trim-villager-chunks:
group:
types:
- "villager"
count: 11
distance: same-chunk
actions:
- kill
```
有关创建profile的帮助,请访问 [wiki](https://github.com/froobynooby/FarmControl/wiki/Profiles)。
### 命令
要运行命令 `/farmcontrol <子命令>`,用户需要 `farmcontrol.command.<子命令>` 权限。
- `/farmcontrol reload` - 重新加载插件的配置。
- `/farmcontrol status <世界>` - 显示给定世界的状态。
- `/farmcontrol history` - 显示插件在最近的过去执行的操作历史记录。
- `/farmcontrol notify` - 切换插件的通知。
### 指标
此插件使用 bStats 收集一些(非识别身份)关于运行此插件的服务器的数据。 您可以通过编辑插件目录中的 bStats 文件夹中的 `config.yml` 来选择退出。