如何接入自己的Frp服务?
首先,请保证您是一个有经验的Minecraft Modder及Java开发者,拥有自我解决可能出现的代码问题的能力,然后再根据此教程接入您的Frp服务。
创建一个Mod项目
这里不再赘述,请自行创建。(需要注意的是,这个Mod项目必须是客户端的)
配置依赖
您首先需要在您的mod项目的build.gradle
中添加modrinth仓库:
repositories {
maven {
url "https://api.modrinth.com/maven"
content {
includeGroup "maven.modrinth"
}
}
}
然后添加OpenLink Frpc API的依赖,添加方法取决于您使用的Gradle Plugin、Mod加载器及Minecraft版本:
Loom(Architectury Loom、Fabric Loom、Quilt Loom):
若您正在Quilt及NeoForge的Minecraft1.21以上的项目中配置依赖,请在版本号及加载器后面加上-1.21plus
dependencies {
modImplementation "maven.modrinth:openlink_frpc_api:1.0.0-[fabric/forge/neoforge/quilt](-1.21plus)"
// 上方[]中的内容需要根据您的加载器类型选择。
// 若您的项目在Quilt或NeoForge的Minecraft1.21以上的版本中需加上上方()中的内容。
}
ForgeGradle:
dependencies {
implementation fg.deobf("maven.modrinth:openlink_frpc_api:1.0.0-forge")
}
NeoGradle:
若您正在Minecraft1.21以上的项目中配置依赖,请在版本号及加载器后面加上-1.21plus
dependencies {
implementation "maven.modrinth:openlink_frpc_api:1.0.0-neoforge(-1.21plus)"
// 若您的项目在Minecraft1.21以上的版本中需加上上方()中的内容。
}
实现Frpc
接口
配置完依赖后,您需要实现OpenLink Frpc API提供的Frpc
接口。
请先创建一个类(建议以 Frp服务名称+FrpcImpl
的格式命名,当然你不按这个格式命名也不会有问题,只不过OpenLink自己是这么命名的),并导入fun.moystudio.openlink.frpc.Frpc
接口,在类的声明后面加上implements Frpc
以声明该类实现了Frpc
接口。
此后,若您使用主流的一些JavaIDE,IDE应该会提示您需要实现id
、name
、isOutdated
、createFrpcProcess
、createProxy
、getFrpcVersion
这些方法以保证您的Frpc
实现的正常运行。实际上您可以在Frpc接口中找到更多可以实现的方法,您可以实现更多方法以提供更多功能。
Frpc
接口的实现可以参考笔者部署在GitHub Pages上的Javadoc(为避免编码问题使用了英文)或OpenLink本体实现的OpenFrpFrpcImpl
及SakuraFrpFrpcImpl
两个类。
实现这些基础方法后,由于OpenLink基于Java的SPI(Service Provider Interface)机制加载Frpc
接口的实现,您需要在您项目的资源目录中的META-INF/services
目录里创建一个名为fun.moystudio.openlink.frpc.Frpc
的文件,并在里面写入您的Frpc
实现类的全限定名。若有多个实现,每一行对应一个实现类的全限定名。
这里给出一个示例实现类与示例fun.moystudio.openlink.frpc.Frpc
文件:
ExampleFrpcImpl.java
:
package fun.moystudio.openlink.frpcimpl;
import fun.moystudio.openlink.frpc.Frpc;
import org.jetbrains.annotations.Nullable;
import java.nio.file.Path;
public class ExampleFrpcImpl implements Frpc {
@Override
public String id() {
return "example";
}
@Override
public String name() {
return "Example Frp";
}
@Override
public boolean isOutdated(@Nullable Path path) {
return false;
}
@Override
public Process createFrpcProcess(Path path, int i, @Nullable String s) throws Exception {
return null;
}
@Override
public String createProxy(int i, @Nullable String s) throws Exception {
return "just an example";
}
@Override
public String getFrpcVersion(Path path) {
return "just an example";
}
}
fun.moystudio.openlink.frpc.Frpc
:
fun.moystudio.openlink.frpcimpl.ExampleFrpcImpl
大功告成
若您已经仔细的按照此教程操作,您应该已经将您的Frp服务接入了OpenLink,您只需要构建并发布您的模组并享受游戏内使用Frp服务的便利。
如何解决接入Frp服务过程中遇到的问题
请先仔细阅读该文档并照做,若仍无法解决问题,请尝试在主流搜索引擎搜索相关问题的解决方法,它们大多是通用的。若真的需要他人帮助,请到我们的交流群与开发者交流,交流群可以在我们的MC百科页面的评论区里找到。