跳转至

如何接入自己的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应该会提示您需要实现idnameisOutdatedcreateFrpcProcesscreateProxygetFrpcVersion这些方法以保证您的Frpc实现的正常运行。实际上您可以在Frpc接口中找到更多可以实现的方法,您可以实现更多方法以提供更多功能。

Frpc接口的实现可以参考笔者部署在GitHub Pages上的Javadoc(为避免编码问题使用了英文)或OpenLink本体实现的OpenFrpFrpcImplSakuraFrpFrpcImpl两个类。

实现这些基础方法后,由于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百科页面的评论区里找到。