管理器
任何虚拟实体都需要借助管理器才可以被创建,管理器就是管理虚拟实体的一个容器。截止到目前版本,我们已经预设了多种类型的管理器:
- 公共类型
- 公共持久化管理器
- 公共临时管理器
- 公共孤立管理器
- 私有类型
私有持久化管理器- 私有临时管理器
- 私有孤立管理器
通常使用指令创建的实体,都会被存入 公共持久化管理器 中。
公共与私有的区别在于公共管理器中的单位 所有玩家 可见,而私有管理器中的单位只有其 拥有者 可见。了解公共与私有管理器的区别之后,再根据储存类型可分为:
- 持久化管理器
- 可以创建持久化的单位,这些单位会被存入数据库中,当服务器重启时,这些单位会被重新加载。
- 临时管理器(孤立管理器)
- 可以创建临时的单位,这些单位不会被存入数据库中,服务器关闭时销毁。
- 如果是私有类型,则在拥有者离线时销毁。
特殊的孤立管理器
从孤立管理器中创建的单位,不会储存在管理器中。也就是说,这些单位不会被任何管理器所管理,无法通过管理器来获取这些单位。
例如我们在创建一些短暂显示的单位时,例如:伤害显示、投掷物等。这些单位不需要被管理,也不需要被追溯。因此,我们可以使用孤立管理器来创建这些单位,以节省额外的性能开销。
在使用孤立管理器时,一旦丢失了对单位的引用,那么将无法再次获取到这个单位。因此,我们需要在创建孤立单位时,将其引用保存下来,以便后续使用。
私有持久化管理器
私有持久化管理器是借助 MongoDB
实现的,插件会将所有私有持久化管理器中的单位存入数据库中。当玩家重新登录时,这些单位会被再次加载。
但是,我们 不建议 使用私有持久化管理器,因为插件会将单位的 所有数据 存入数据库中,这会占用大量的数据库空间。因此在 2.X
版本中,我们将私有持久化管理器作为来自 1.X
的保留功能,不再出现在默认的配置文件中。
但是你仍可以通过在配置文件 手动添加 节点来启用这个保留功能。
# 私有持久化单位管理器储存方式,自 2.x 版本起不再建议使用
# 若要在新的环境中启用,请手动创建该节点
Database:
# 可用:LOCAL, MONGODB, DISABLE
# 设置为 DISABLE 时将禁用私有持久化单位管理器
method: DISABLE
# MONGODB 数据库连接地址
url:
client: 'mongodb://localhost:3307'
database: test
collection: adyeshach
私有持久化管理器的运行逻辑均来自 1.X
版本,并未进行重构。任何漏洞不再修复。
对于未启用私有持久化管理器的服务器,访问私有持久化管理器将会被 拒绝。
公共持久化管理器
公共持久化管理器中的单位会被储存在插件目录中,如下所示。
Adyeshach
└── npc ············································· 虚拟实体储存目录
└── b702aa0b-741f-4996-8b60-9f65f93c69d4.json ··· 虚拟实体储存文件
这些文件是只读的,只有在关闭服务器时才可以进行修改。
这些文件是插件自动生成的,修改后可能会导致插件无法正常运行。
你可以将这些文件复制到其他服务器的相同目录中,以便在其他服务器中使用这些单位。