- 版权类型
- 原创
- 插件中文名称
- 红烧抽卡
- 插件英文名称
- HSGacha
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- Folia
- Purpur
- Leaves
- 语言支持
- 中文(简体)
- 前置组件
- CraftEngine 26.5+
ItemsAdder 3/4
ProtocolLib(可选)
- 适配版本(Java)
- 最新版本
- 26.x
- 1.21
- 1.20
沉浸式抽卡插件
二游抽卡体验 · 软硬保底 · 限定 UP 大保底 · 十连翻牌演出 · 游戏内卡池编辑 · 多数据库存储
Paper / Folia 1.20+
CraftEngine 26.5+ / ItemsAdder
ProtocolLib(可选)
CraftEngine 26.5+ / ItemsAdder
ProtocolLib(可选)
为什么使用 HSGacha?
HSGacha 提供完整的二游式翻牌演出,有更好的视觉效果,单抽居中展示、十连逐张或错峰揭示,稀有奖励会以对应品质卡面呈现,玩家可点击未揭示卡牌快进动画。演出结束后,GUI 直接提供“继续十连”“返回抽奖菜单”等操作,实现了可追踪的保底规则、限定奖励与沉浸式结果展示,并且理论上支持所有的自定义货币/变量插件!功能一览
物品库支持
- CraftEngine
- ItemsAdder
- SX-Item
- MythicMobs
- NeigeItems
- MMOItems
- 玩家背包物品导入
货币与存储
- 支持 Vault、PlayerPoints 与命令型货币(理论支持任何货币)
- 支持 PlaceholderAPI 条件与奖励动作
- 支持 YML 本地存储、SQLite 与 MySQL
- 自动记录抽取历史、保底状态与待领取奖励
使用与分发协议
- 插件仅限购买者在授权范围内使用
- 禁止分发、泄露、转售插件本体及附赠美术资源
- 对外分发或加入公开服务端整合包前,须取得作者书面许可
- 违反协议时,作者有权停止更新与售后服务
/hsgacha draw <卡池ID> single 执行单抽
/hsgacha draw <卡池ID> ten 执行十连
/hsgacha preview <卡池ID> 查看卡池奖励预览
/hsgacha history 查看个人抽取历史
/hsgacha pending 领取待发放奖励
/hsgacha editor [卡池ID] 打开游戏内卡池编辑器
/hsgacha reload 重载并校验配置
/hsgacha draw <卡池ID> ten 执行十连
/hsgacha preview <卡池ID> 查看卡池奖励预览
/hsgacha history 查看个人抽取历史
/hsgacha pending 领取待发放奖励
/hsgacha editor [卡池ID] 打开游戏内卡池编辑器
/hsgacha reload 重载并校验配置
plugins/HSGacha/
├─ config.yml
├─ currencies.yml
├─ rarities.yml
├─ rewards.yml
├─ messages.yml
│
├─ pools/
│ ├─ example.yml
│ └─ 其他卡池.yml
│
├─ gui/
│ ├─ reveal.yml
│ ├─ preview.yml
│ └─ history.yml
│
├─ data/
│ └─ 玩家 UUID.yml
│
└─ data.db
├─ config.yml
├─ currencies.yml
├─ rarities.yml
├─ rewards.yml
├─ messages.yml
│
├─ pools/
│ ├─ example.yml
│ └─ 其他卡池.yml
│
├─ gui/
│ ├─ reveal.yml
│ ├─ preview.yml
│ └─ history.yml
│
├─ data/
│ └─ 玩家 UUID.yml
│
└─ data.db
YAML:
# 卡池 ID 指令、GUI 动作和记录均使用这个值
id: "example"
# 保底记录使用的共享分组 ID
# 多个卡池填写相同值时共用保底次数和限定保证 填写不同值时各自独立
pity-group: "example"
# GUI、消息和公告中显示的卡池名称
name: "<gradient:#6fb7c8:#f0d99a><bold>示例祈愿</bold></gradient>"
# reveal.yml 中 [return] 动作返回的菜单 ID
menu: "gacha-limited"
# 抽取时使用的货币 ID 对应 currencies.yml 中的键
currency: "free"
# 可用抽取档位 键代表一次请求抽取几次
# 可以按需要增加 2、3、4、5 等任意档位 支持范围为 1 到 10
draws:
"1":
# 该档位一次抽取的总价
cost: 0
"10":
cost: 0
# 批次最低品质保证 可以配置多条 也可以整个省略
guarantees:
# minimum-rarity 包含该品质以及 rarities.yml 中 order 更高的品质
- minimum-rarity: "blue"
# 本次抽取至少出现多少个符合最低品质的奖励
amount: 1
# 各品质的基础权重 不要求合计为 100 插件会按总和自动换算概率
# 条件或 once-per-player 排除某品质的所有奖励后 该品质也会从本次计算中排除
weights:
gray: 70
blue: 25
purple: 5
# 软保底和硬保底设置 整个节点可以省略
pity:
# 保底针对的品质
rarity: "purple"
# 从第几抽开始提高目标品质概率
soft-start: 30
# 达到第几抽时强制出现目标品质
hard: 40
# 软保底开始后每抽增加的百分比
increase: 10
# 限定奖励规则示例 整个节点保持注释时表示不启用限定机制
# featured:
# # 限定机制针对的品质
# rarity: "purple"
# # 命中目标品质时抽中限定奖励的百分比
# chance: 50
# # 未命中限定奖励后 下一次目标品质是否必定命中限定奖励
# guarantee-after-loss: true
# 定时开放规则示例 整个节点保持注释时表示常驻开放
# schedule:
# # 时间格式为 yyyy-MM-dd HH:mm:ss
# start: "2026-08-01 00:00:00"
# end: "2026-08-31 23:59:59"
# 奖励键是稳定的奖励 ID 会用于记录、条件排除和动作变量
# 每个奖励必须配置 rarity、weight 并且只能选择 item、currency、actions 中的一种内容
# 某个奖励配置错误时只跳过该奖励 只有卡池结构错误或没有任何有效奖励时才停用整个卡池
rewards:
coal:
# 奖励所属品质 对应 rarities.yml 中的键
rarity: "gray"
# 同品质奖励之间的相对权重 同样不要求合计为 100
weight: 50
# item 使用 来源:物品ID 格式并直接发放物品
item: "minecraft:coal"
# 实际发放的物品数量
amount: 8
# 结果界面、记录和消息中显示的名称 支持 MiniMessage
name: "<gray>煤炭 ×8</gray>"
iron-ingot:
rarity: "gray"
weight: 50
item: "minecraft:iron_ingot"
amount: 4
name: "<white>铁锭 ×4</white>"
emerald:
rarity: "blue"
weight: 60
item: "minecraft:emerald"
amount: 2
name: "<aqua>绿宝石 ×2</aqua>"
diamond:
rarity: "blue"
weight: 40
item: "minecraft:diamond"
amount: 1
name: "<aqua>钻石</aqua>"
netherite-ingot:
rarity: "purple"
weight: 70
item: "minecraft:netherite_ingot"
amount: 1
name: "<light_purple>下界合金锭</light_purple>"
enchanted-golden-apple:
rarity: "purple"
weight: 30
item: "minecraft:enchanted_golden_apple"
amount: 1
name: "<light_purple>附魔金苹果</light_purple>"
# 物品来源格式参考
# 原版物品 minecraft:diamond
# 手持物品导入后 imported:custom-sword
# CraftEngine 物品 craftengine:namespace:item_id
# ItemsAdder 物品 itemsadder:namespace:item_id
# SXItem 物品 sxitem:item_id
# MythicMobs 物品 mythicmobs:item_id
# NeigeItems 物品 neigeitems:item_id
# MMOItems 物品 mmoitems:TYPE:ITEM_ID
# BcIntensify 保护卡 bcintensify:protection/type_id
# BcIntensify 强化材料 bcintensify:coke/type_id
# 外部物品库奖励示例
# external-item-example:
# rarity: "purple"
# weight: 10
# item: "itemsadder:namespace:item_id"
# amount: 1
# name: "<light_purple>外部物品示例</light_purple>"
# 货币奖励示例 currency 引用 currencies.yml 中的货币 ID
# currency-example:
# rarity: "blue"
# weight: 10
# currency: "points"
# amount: 100
# # 非物品奖励必须配置 icon 用于卡牌和预览界面展示
# icon: "minecraft:emerald"
# name: "<aqua>点券 ×100</aqua>"
# lore:
# - "<gray>抽中后直接增加到玩家账户"
# 动作奖励示例 actions 会按从上到下的顺序执行
# action-example:
# rarity: "purple"
# weight: 10
# icon: "minecraft:command_block"
# # model 可为展示物品设置 minecraft:item_model 组件
# model: "minecraft:diamond"
# name: "<light_purple>指令奖励</light_purple>"
# actions:
# # [console] 以控制台身份执行指令
# - "[console] give {player} diamond 1"
# # [player] 以玩家身份执行指令
# - "[player] spawn"
# # [op] 临时以管理员身份执行玩家指令
# - "[op] example admin reward {player}"
# # [message] 向抽中玩家发送消息
# - "[message] <green>你获得了 {reward_name}"
# # [broadcast] 向全服发送消息
# - "[broadcast] <gold>{player} 抽中了 {reward_name}"
# # [sound] 使用 音效ID 音量 音调
# - "[sound] ui.toast.challenge_complete 1.0 1.0"
# # [delay] 延迟指定 tick 后继续执行后面的动作
# - "[delay] 20"
# - "[message] <gray>奖励流水号 {transaction_id}"
# 奖励动作支持以下内置变量
# {player} 玩家名称
# {uuid} 玩家 UUID
# {pool_id} 卡池 ID
# {transaction_id} 本次抽取流水号
# {draw_amount} 本次抽取数量
# {draw_cost} 本次抽取消耗
# {currency} 本次抽取使用的货币 ID
# {result_index} 当前奖励在本次结果中的序号 从 1 开始
# {reward_id} 当前奖励 ID
# {reward_name} 当前奖励显示名称
# {rarity_id} 当前品质 ID
# {rarity} 当前品质显示名称
# 条件奖励示例 condition 未配置时恒为 true
# 支持 perm、!perm、PlaceholderAPI、四则运算、比较、!、&&、|| 和括号
# false && 后面的表达式不会执行 true || 后面的表达式不会执行
# condition-example:
# rarity: "purple"
# weight: 10
# item: "minecraft:diamond"
# amount: 1
# # 没有该权限并且等级达到 50 时进入本次候选池
# condition: "!perm example.reward.claimed && %player_level% >= 50"
# name: "<light_purple>条件奖励</light_purple>"
# condition 常用写法参考
# condition: "perm vip.sapphire"
# condition: "!perm example.reward.claimed"
# condition: "%player_level% >= 50"
# condition: "perm vip.sapphire || (%player_level% >= 100 && %playerpoints_points% >= 250)"
# 一次性奖励示例 玩家抽中过一次后永久从该玩家的候选池排除
# once-reward-example:
# rarity: "purple"
# weight: 10
# once-per-player: true
# item: "minecraft:nether_star"
# amount: 1
# name: "<light_purple>一次性奖励</light_purple>"
YAML:
# 每个键都是一个货币 ID 卡池通过 currency 引用这里的配置
currencies:
free:
# free 不读取余额也不扣款 适合免费池和功能测试
type: "free"
# GUI 和消息中显示的货币名称
name: "<green>免费</green>"
# 是否允许小数金额
decimal: false
# Vault 经济货币示例
# vault:
# # 需要安装 Vault 和一个提供经济服务的插件
# type: "vault"
# name: "<gold>金币</gold>"
# # true 允许配置 1.5 等小数价格
# decimal: true
# PlayerPoints 点券示例
# points:
# # 需要安装 PlayerPoints
# type: "playerpoints"
# name: "<light_purple>点券</light_purple>"
# # PlayerPoints 使用整数点数
# decimal: false
# 通过 PlaceholderAPI 和控制台指令接入其他货币插件的示例
# crystal:
# type: "command"
# name: "<aqua>水晶</aqua>"
# decimal: false
# # 返回玩家当前余额的 PlaceholderAPI 变量 结果必须能解析为数字
# balance: "%coinsengine_balance_crystal%"
# # 扣款时依次执行的控制台指令
# take:
# - "coins take {player} crystal {amount}"
# # 抽取失败需要退款时依次执行的控制台指令
# give:
# - "coins give {player} crystal {amount}"
# # 指令支持 {player} 玩家名称 {uuid} 玩家 UUID {amount} 本次金额
# # 插件会在执行指令后重新读取余额 确认货币插件确实完成扣款或退款
# verify:
# # 每次重新读取余额之间等待的 tick
# delay: 2
# # 最多读取余额的次数
# attempts: 5
作者与联系
QQ:2521192830爱发电:https://afdian.com/a/welosecraft