跳到主要内容

开发者手册

开发者手册

添加完模组后,什么都不会发生。

本模组默认支持维格云和Github issue两种反馈方式,都需要提前配置,但并不难。

维格云的默认语言是中文,理所当然比较适合中国地区,特点是可以导出为Excel表格,方便在反馈条目多的时候筛选和批量处理。

Github Issues就比较通用了,唯独对中国地区不太友好,反正大家都很熟悉,就不多介绍了。

不过多说一句,推送到Github Issues的时候,标题暂时是固定的格式,评分+玩家名+正文截取30个字符,也是为了方便用户去仓库看看问题有没有得到回复。

当然,私有仓库就可以不管了。

你可以选择使用其中的一种或者全都使用,一起使用的话需要用到KJS事件,放心,也不难。

维格云

首先你需要注册一个维格云账号。

链接:https://vika.cn/workbench

接着,你需要创建自己的意见收集表,并将表头设置成和我一样的形式。

img

索引和日期是可以设置自动填充的,不过非必要,可以不设置。

接着点击右上角的API,在弹出的半窗口中勾选“显示API Token”,然后根据指引创建自己的token。

确认勾选该选项,并转到“Get 获取”。

img

需要用到的是curl后的链接和Bearer后的token。

Github Issues

先创建一个Access Token。

https://github.com/settings/personal-access-tokens/new

Expiration可以设置一个永不过期。

Token name和Description之类的都随便填,选中你要的那个仓库,切记,选中你要的那个仓库。

img

选上Issues,然后Generate token。

需要用到的是Access Token和仓库名。

Gitee Issues

但其实不太推荐。

先创建一个私人令牌:

https://gitee.com/profile/personal_access_tokens/new

img

只勾选Issues就行,然后提交。

并不能像Github那样指定一个某一个仓库,说不准会收到垃圾短信。

全局配置

打开游戏目录/config/GeneralFeedback文件夹,创建一个example.json文件。

对于维格云:

{
"id": "default",
"title": "意见反馈界面的标题,如XXX整合包",
"placeholder": "这里是占位符!",
"token": "填Bearer后的token",
"url": "填curl后的链接"
}

对于Github Issues:

{
"id": "default",
"title": "意见反馈界面的标题,如XXX整合包",
"placeholder": "这里是占位符!",
"token": "你刚生成的token",
"url": "https://api.github.com/repos/Mafuyu404/GeneralFeedback/issues"
}

Gitee就把url换成https://gitee.com/api/v5/repos/Mafuyu404/GeneralFeedback/issues

url根据你实际用户名和仓库名变化一下。

id为default时,这个配置就会成为全局配置,默认情况下,玩家可以通过生存模式物品栏中、暂停菜单中和死亡菜单中的按钮来进入意见反馈界面。

title和placeholder都支持翻译键,用的是Component.translatable。

填好后使用/reload重载即可。

通常流程到此就结束了,如果你有进一步的需求,请往后看。

局部配置

当然,你可以一码归一码,创建多个意见收集表,收集不同方面的意见。

也可能只是嫌弃我那几个按钮,认为有更好的时机弹出意见反馈界面。

又或者,你其实是个模组作者,只是需要收集关于你模组的意见反馈,那么建议采用JarJar的形式。

如果你不会,就在build.gradle里的dependencies部分加一段:

jarJar("curse.maven:generalfeedback-xxxxxx:xxxxxxx"){
jarJar.ranged(it, '[0.0.0,100.0.0)')
}

接着,你只需要创建多个json配置并在合适的时机调用他们就好。

GF$FeedbackUtils.openFeedbackScreenOf(id);

id就是json配置中的id字段,调用这个方法就能快速打开对应的意见反馈界面。

提交事件

// client_scripts
FeedbackEvents.onSubmit(event => {
let form = event.getForm();
form.feedback = Client.player.mainHandItem.id + form.feedback;
event.setForm(form);
});

这个事件用于在数据即将发送前修改内容发送内容,在例子中,原文的开头加上了玩家主手物品id。

你可以通过KJS加上任何你想要的信息,如整合包版本或玩家游玩进度。

如果你不想用维格云,有其它能用的网站或者自己搭了一个,可以像这样写:

// client_scripts
FeedbackEvents.onSubmit(event => {
let HttpUtils = Java.loadClass("com.sighs.generalfeedback.utils.HttpUtils");
HttpUtils.fetch();
event.setCanceled(true);
});

这个HttpUtils比较敏感,所以没写KJS兼容,需要自己加载。

你有这个需求,我就当你知道如何调用api了,跟着ProbeJS的补全写fetch方法就行了。

自定义推送

其实也没什么好说的。

GF$FeedbackUtils.post(entry, form); // 会自动判断是维格云还是Github Issues
GF$FeedbackUtils.addVikaRecord(entry, form);
GF$FeedbackUtils.createGitHubIssue(entry, form);

在你想要的时机使用这些方法就好。