Gene_Settlement

Gene_Settlement 插件文档

Gene_Settlement 插件文档

概述

Gene_Settlement 是一个地牢结算系统插件,用于处理地牢副本的战利品分配和展示。主要功能包括:

  • 地牢结算物品池抽取
  • 战利品展示界面
  • 玩家间战利品查看

发包文档

打开界面收包

界面收包(服务端 → 客户端)

界面名称: Gene_Settlement_View

包处理器: GeneSettlement_TeamData

收包数据结构 (teammateData):

teammateData 是一个 Map<String, String> 类型的数据结构,包含所有队友的索引化信息。

数据格式说明:

  1. 队友名称数据

    • 键格式: GeneSettlement_PlayerName_${index}
    • 值类型: String
    • 值内容: 队友的玩家名称
    • 说明: index 从 0 开始递增,对应队友列表中的顺序
  2. 队友UUID数据

    • 键格式: GeneSettlement_PlayerUuid_${index}
    • 值类型: String
    • 值内容: 队友的UUID字符串形式
    • 说明: index 从 0 开始递增,与队友名称使用相同的索引

完整数据示例:

// teammateData 数据结构示例
val teammateData = mapOf(
    "GeneSettlement_PlayerName_0" to "玩家A",
    "GeneSettlement_PlayerUuid_0" to "12345678-1234-1234-1234-123456789abc",
    "GeneSettlement_PlayerName_1" to "玩家B",
    "GeneSettlement_PlayerUuid_1" to "87654321-4321-4321-4321-cba987654321",
    // ... 更多队友数据
)

使用说明:

  • 每个队友在数据中占用两个键值对(名称和UUID)
  • 索引 index 从 0 开始连续递增
  • 名称和UUID使用相同的索引对应同一个玩家
  • 如果没有队友,teammateData 为空 Map

界面收包处理器

客户端收包处理器(客户端 → 服务端)

收包ID: Gene_Settlement

处理器说明:

所有客户端发往服务端的交互都通过 Gene_Settlement 收包ID进行处理,参数格式统一为4个参数。


1. give_loot - 获取未翻牌槽位数据

功能描述: 从指定地牢和难度中抽取指定数量的战利品,并在客户端显示未翻开的牌槽。

参数说明:

  • data[0]: "give_loot" (操作类型)
  • data[1]: dungeonKey (String) - 地牢标识符
  • data[2]: difficulty (String) - 难度等级
  • data[3]: count (Int, 可选) - 抽取数量,默认值为3

返回数据:

  • 槽位ID格式: GeneSettlement_UnDrawn_Slot_{index}
  • index: 从0开始,根据 count 参数决定槽位数量
  • 每个槽位包含抽取到的物品数据

示例:

// 抽取3个物品(默认count)
// 返回: GeneSettlement_UnDrawn_Slot_0, GeneSettlement_UnDrawn_Slot_1, GeneSettlement_UnDrawn_Slot_2

// 抽取5个物品
// 返回: GeneSettlement_UnDrawn_Slot_0 到 GeneSettlement_UnDrawn_Slot_4

2. show_other_loot - 显示其他玩家战利品

功能描述: 根据目标玩家UUID和自定义索引,显示其他玩家的已翻牌战利品数据。

参数说明:

  • data[0]: "show_other_loot" (操作类型)
  • data[1]: targetUuid (String) - 目标玩家的UUID字符串
  • data[2]: targetIndex (Int) - 自定义显示索引(用于区分不同玩家)

返回数据:

  • 槽位ID格式: GeneSettlement_OtherPlayer_{targetIndex}_Slot_{i}
  • targetIndex: 调用方自定义的索引
  • i: 目标玩家的第几个牌槽(从0开始)

示例:

// 显示玩家A(uuid=xxx)的战利品,索引为1
// 返回: GeneSettlement_OtherPlayer_1_Slot_0, GeneSettlement_OtherPlayer_1_Slot_1, ...

3. request_view_loot - 请求查看玩家战利品

功能描述: 当玩家翻开第一个牌后,向所有队友发送翻牌通知,让他们知道当前翻牌进度。

参数说明:

  • data[0]: "request_view_loot" (操作类型)
  • data[1]: targetUuidStr (String) - 目标玩家的UUID字符串
  • data[2]: lootNumber (String) - 战利品编号

发送数据包:

  • 界面名称: Gene_Settlement_View
  • 包处理器: GeneSettlement_LootData

数据内容:

val lootData = mapOf(
    "GeneSettlement_LootData_PlayerName" to player.name,
    "GeneSettlement_LootData_PlayerUuid" to player.uniqueId.toString(),
    "GeneSettlement_LootData_LootNumber" to lootNumber
)

4. quit_dungeon - 退出副本

功能描述: 玩家退出当前副本。

参数说明:

  • data[0]: "quit_dungeon" (操作类型)
  • data[1]: targetUuidStr (String) - 目标玩家的UUID字符串

调用说明: 调用DPlus系统执行退出副本逻辑,只需要传入目标玩家UUID即可。


数据结构

Settlement 配置结构

# 地牢配置示例
DungeonKey: "jzysc"  # 地牢唯一标识符

pools:
  easy:  # 难度等级
    - id: "item_id_1"      # 物品ID
      amount: 1            # 物品数量
      weight: 10           # 权重(影响抽取概率)
    - id: "item_id_2"
      amount: 2
      weight: 5
  normal:
    - id: "item_id_3"
      amount: 1
      weight: 8

PoolItem 数据类

  • id: 物品配置ID
  • item: ItemStack对象
  • amount: 物品数量
  • weight: 抽取权重

插件工作日志

提交时间提交内容
2025-12-27 13:38:52 +0800修正quit_dungeon填写参数导致无法退出副本问题
2025-12-26 22:56:56 +0800更新加载数据信息以及补充数据包
2025-12-25 11:01:08 +0800更新发包界面结构
2025-12-25 10:45:55 +0800新增quit_dungeon退出副本
2025-12-23 20:19:02 +0800[feat]修改仓库gradle地址
2025-12-23 20:16:45 +0800[feat]初始化提交
2025-12-20 21:58:03 +0800Initial commit

插件工作日志