PaperShelled icon indicating copy to clipboard operation
PaperShelled copied to clipboard

[Question] Does it work on hybrid forge servers?

Open HowardZHY opened this issue 2 years ago • 3 comments

HowardZHY avatar Jun 23 '22 06:06 HowardZHY

仅支持大于等于1.17的mc版本,这个版本好像也没啥forge混合端吧。 另外大部分forge混合端都修改了nms的结构,可能大概率会出问题。

ShirasawaSama avatar Jun 23 '22 06:06 ShirasawaSama

例如1.18.2的mohist,螺端之类的 (如果这个能在混合端使用,那forge+bukkit+fabric还有多远)

在 2022-06-23 14:57:42,"Shirasawa" @.***> 写道:

仅支持大于等于1.17的mc版本,这个版本好像也没啥forge混合端吧。 另外大部分forge混合端都修改了nms的结构,可能大概率会出问题。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

HowardZHY avatar Jun 23 '22 16:06 HowardZHY

理论上可用 前提是提供了混淆表 但是实际上问题可能比较多

ShirasawaSama avatar Jun 24 '22 09:06 ShirasawaSama

例如1.18.2的mohist,螺端之类的 (如果这个能在混合端使用,那forge+bukkit+fabric还有多远) 在 2022-06-23 14:57:42,"Shirasawa" @.> 写道: 仅支持大于等于1.17的mc版本,这个版本好像也没啥forge混合端吧。 另外大部分forge混合端都修改了nms的结构,可能大概率会出问题。 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.>

这是一个很理想的假设。我们在使用Mixin的时候,Mixin都是在输入的字节码上操作的。Fabric API采用Mixin对mc的部分地方修改,输入Mixin的类文件基本是干净的mc代码,没有其他更改;在Forge上,则是采用了将支持直接植入mc代码重编译的方式;Bukkit一支的老祖CraftBukkit同理。

障碍主要在于输入类文件的不一致。混合端很大可能对mc代码进行了修改重编译,因此特定mixin的定位可能错误,导致应用失败。这是一个可能还算常见的问题,但同时也是十分难以避免的问题。PaperShelled定位在Paper上,Paper隶属于CraftBukkit的一支,对mc的代码进行了大量的修改,因此在PaperShelled上运行的插件,所用的mixin都是依据反编译的Paper服务端来写,迁移到Fabric上可能并不兼容,迁移到Forge上更可能不兼容,更不用说混合端。根据对应的情况更改实现是解决这类问题比较好的办法。

除非在将来有什么可以在运行时自动调整Mixin切入位点的实现,否则实现跨端通用是一个难以解决的问题。

迫于学业问题,回复较晚,在此致以歉意。

InitAuther97 avatar Aug 28 '23 14:08 InitAuther97