• 周年纪念勋章活动已圆满结束,如有已购买但仍未申请的用户,可以通过对应勋章的下载链接申请~
Snap —— 在Velocity上运行BungeeCord/Waterfall插件 [全版本]

开源 前置/API 其他 Snap —— 在Velocity上运行BungeeCord/Waterfall插件 [全版本] #36

版权类型
转载
插件中文名称
Snap
插件英文名称
Snap
原帖地址
https://hangar.papermc.io/Phoenix616/Snap
支持的核心(代理端)
  1. Velocity
语言支持
English
适配版本(Java)
  1. 1.21
  2. 1.20
  3. 1.19
  4. 1.18
  5. 1.17
  6. 1.16
  7. 1.15
  8. 1.14
  9. 1.13
  10. 1.12
  11. 1.11
  12. 1.10
  13. 1.9
  14. 1.8
  15. 1.7
snap.png

这是一个适配器插件(Seriously Necessary Adapter Plugin),可以使基于BungeeCord或Waterfall API编写的插件在Velocity上加载并(某种程度上)运行。

请注意,该插件目前处于实验阶段,未经充分测试,不应在生产环境中运行!

如何使用?

  • 只需将Bungee插件添加到Snap插件文件夹内的plugins文件夹中即可。
hd3rHhsi.png
  • 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 功能不起作用。
  • 喜欢
反馈: Sherry529
作者
PuddingKC
下载
294
查看
744
首次发布
最后更新

评分

0.00 星 0 次评分

PuddingKC 的其他资源

最新更新

  1. 更新至 #36

    更新最后构建
后退
顶部 底部