Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Enhancement]添加成就事件的支持 #36

Open
USTC-XeF2 opened this issue Feb 20, 2025 · 7 comments
Open

[Enhancement]添加成就事件的支持 #36

USTC-XeF2 opened this issue Feb 20, 2025 · 7 comments
Assignees
Labels
enhancement New feature or request

Comments

@USTC-XeF2
Copy link

功能建议

在玩家获得成就时触发事件

额外信息(可选)

No response

@USTC-XeF2 USTC-XeF2 added the enhancement New feature or request label Feb 20, 2025
@17TheWord
Copy link
Owner

成就事件暂未规划,可以在此对成就事件展开讨论,目前结构如下

基本事件类型

{
    "player": {},
    "message": "张三抵达下界",
    "message_id": "",
    "event_name": "BaseAdvancementEvent",
    "post_type": "message",
    "sub_type": "advancement",
    "timestamp": 1724652585,
    "server_type": "spigot",
    "server_version": "1.20.1",
    "server_name": "Server"
}

Spigot 端类型

{
    "player": {},
    "message": "张三抵达下界", // 具体成就信息
    "message_id": "",
    "event_name": "PlayerAdvancementDoneEvent", // Spigot 端事件名
    "post_type": "message",
    "sub_type": "advancement", // 事件子类型
    "timestamp": 1724652585,
    "server_type": "spigot",
    "server_version": "1.20.1",
    "server_name": "Server"
}

@17TheWord
Copy link
Owner

也可以归类为Notice消息,继承BaseNoticeEvent,与join、quit同级,给出新的字段来存储关于成就的信息。成就感觉不适合作为消息事件,更像是通知事件。

@USTC-XeF2
Copy link
Author

USTC-XeF2 commented Feb 21, 2025

确实(),事件返回时应该全面一些,这样也方便消息处理之类的。就比如进入下界,最好能返回:

  • 所属标签:story
  • 所属标签名:Minecraft
  • 字段名:enter_the_nether
  • 英文日志名:We Need to Go Deeper

上面这些就都放到类似advancement_detail的字段里再解析。就是不知道实现难度如何,可能模组端修改过成就类型,如果这样那就算了()

在nonebot的日志界面打印的信息也就可以改成后端拼接的方式

再说句题外话(),死亡消息感觉加上信息文本和死亡类型字段两类返回值是不是也行,感觉这些是更基础更适合程序处理的类型

@17TheWord
Copy link
Owner

17TheWord commented Feb 21, 2025

Fabric结构暂定如下

{
    "player": {},
    "event_name": "PlayerAdvancementTrackerMixin",
    "post_type": "notice",
    "sub_type": "advancement",
    "timestamp": 1724652585,
    "server_type": "fabric",
    "server_version": "1.20.1",
    "server_name": "Server",
    "advancement": {
        "parent": {},
        "display": {},
        "rewards": [],
        "id": "minecraft:story/cow_shear",
        "critera": {},
        "requirements": [],
        "children": [],
        "text": "Cow Shear",
        "sendsTelemetryEvent": false
    }
}

@17TheWord
Copy link
Owner

确实(),事件返回时应该全面一些,这样也方便消息处理之类的。就比如进入下界,最好能返回:

  • 所属标签:story
  • 所属标签名:Minecraft
  • 字段名:enter_the_nether
  • 英文日志名:We Need to Go Deeper

上面这些就都放到类似advancement_detail的字段里再解析。就是不知道实现难度如何,可能模组端修改过成就类型,如果这样那就算了()

在nonebot的日志界面打印的信息也就可以改成后端拼接的方式

再说句题外话(),死亡消息感觉加上信息文本和死亡类型字段两类返回值是不是也行,感觉这些是更基础更适合程序处理的类型

死亡类型是指什么?例如其他玩家击杀?怪物击杀?摔落?

@17TheWord
Copy link
Owner

Spigot结构暂定如下

{
    "player": {},
    "event_name": "PlayerAdvancementDoneEvent",
    "post_type": "notice",
    "sub_type": "advancement",
    "timestamp": 1724652585,
    "server_type": "spigot",
    "server_version": "1.20.1",
    "server_name": "Server",
    "advancement": {
        "criteria": ["string", "string"], // 获取此进度的所有标准. (即达成该进度所需的条件).
        "advancement_display": {
            "description": "string",
            "icon": {}, // ItemStack Object 或  ItemStack ID "icon": "string"
            "title":"string",
            "type": "AdvancementDisplayType.CHALLENGE | AdvancementDisplayType.GOAL | AdvancementDisplayType.TASK"
        }
    }
}

@USTC-XeF2
Copy link
Author

确实(),事件返回时应该全面一些,这样也方便消息处理之类的。就比如进入下界,最好能返回:

  • 所属标签:story
  • 所属标签名:Minecraft
  • 字段名:enter_the_nether
  • 英文日志名:We Need to Go Deeper

上面这些就都放到类似advancement_detail的字段里再解析。就是不知道实现难度如何,可能模组端修改过成就类型,如果这样那就算了()
在nonebot的日志界面打印的信息也就可以改成后端拼接的方式
再说句题外话(),死亡消息感觉加上信息文本和死亡类型字段两类返回值是不是也行,感觉这些是更基础更适合程序处理的类型

死亡类型是指什么?例如其他玩家击杀?怪物击杀?摔落?

造成死亡的伤害类型,比如fall,magic之类的,或者死亡类型的键名()就是wiki里写的那些

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants