- 版权类型
- 转载
- 插件中文名称
- Snap
- 插件英文名称
- Snap
- 支持的核心(代理端)
- Velocity
- 语言支持
- English
- 适配版本(Java)
- 1.21
- 1.20
- 1.19
- 1.18
- 1.17
- 1.16
- 1.15
- 1.14
- 1.13
- 1.12
- 1.11
- 1.10
- 1.9
- 1.8
- 1.7
这是一个适配器插件(Seriously Necessary Adapter Plugin),可以使基于BungeeCord或Waterfall API编写的插件在Velocity上加载并(某种程度上)运行。
请注意,该插件目前处于实验阶段,未经充分测试,不应在生产环境中运行!
如何使用?
- 只需将Bungee插件添加到Snap插件文件夹内的plugins文件夹中即可。
- Snap会使用其自己的BungeeCord插件管理器实例从该文件夹加载插件,并将BungeeCord的方法、类以及事件调用转换为相应的Velocity方法、类和事件调用,反之亦然。
为什么开发这个?
- 最初,我想记录Bungee事件、方法和类的Velocity等效项。这演变成编写源代码转换器的想法,最终让我决定尝试制作一个可以直接加载Bungee插件的插件。
- 由于代理没有太多逻辑,这似乎奏效了,尽管由于许多类需要即时转换,它比直接运行原生Velocity插件效率低很多。
- 从技术上讲,可以通过直接修改Velocity或BungeeCord源代码以扩展相应的其他类来使其变得更加高效,但实际上这会大大增加让这个插件运行所需的工作量,而这正是我目前想要避免的。
哪些是兼容的?
- 大部分功能(希望如此)。毕竟这是目标?请务必报告任何问题!
哪些是有问题的?
- 有些功能无法轻易重现(例如,Velocity中没有组处理功能,请使用权限插件),当然,与Bungee内部或数据包相关的任何内容都无法工作。在这种情况下,最好编写一个Velocity插件。
- 那些不支持的功能将抛出UnsupportedOperationException。请在问题追踪器上报告这些问题以及导致它们的插件!
- 如果你确定插件其他方面可以正常工作,那么你可以通过在snap.conf中将throw-unsupported-exception设置为false来让它返回默认值。
不兼容的功能
- 使用Bungee内置的权限系统来设置和获取组/权限。请不要这样做!请在Velocity上使用LuckPerms。(hasPermission检查功能是有效的)
- 重新连接服务器功能。这是Bungee中的内置功能,但更适合作为插件功能。相关方法将返回null或不进行设置,而不是报错。
- 计分板。Velocity没有相应的API,我也不打算创建基于数据包的实现。也许将来可以通过某些插件进行集成,或者Velocity添加支持。如果你需要一个全局的Tab列表,可以看看 Velocitab。
- 一些 ProxyConfig 设置在Velocity中不存在或未在API中暴露,因此它们会返回一些合理的默认值,以反映代理的状态。
- 在插件启用后注册命令。目前除了直接修改PluginManager类外,我没有好的方法来实现这一点,我希望避免这种情况。
- Velocity插件和Bungee插件无法通过各自的PluginManager API和依赖项相互访问。不过它们的类应该是可访问的。
- 一些连接处理和相关事件可能不会完全像在Bungee上一样工作。它们尽可能接近,但如果你需要处理这些问题,最好还是创建一个独立的Velocity插件。
- 一些事件部分工作或根本不起作用。
- 不工作的事件:TabCompleteEvent、ProxyDefineCommandEvent、ProxyExceptionEvent。
- 部分工作的事件:ServerDisconnectEvent(仅在踢出时触发),ClientConnectEvent(使用Velocity的LoginEvent和PostOrder.FIRST),ConnectionInitEvent(使用Velocity的LoginEvent和PostOrder.EARLY)。
- Unsafe 功能不起作用。