- 版权类型
- 原创
- 语言支持
- 多语言
- 前置组件
- arc_core/umoney
arc_inventory_manager
- 适配版本(基岩)
- 最新版本
[MD]
# 弧光按钮商店插件 (ARC Button Shop Plugin)
[](https://app.codacy.com/gh/DEVILENMO/EndstoneMC-ARC-Button-Shop-Plugin/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
[](https://github.com/DEVILENMO/EndstoneMC-ARC-Button-Shop-Plugin)
[](https://github.com/EndstoneMC/endstone)
[](https://www.python.org/)
一个复古的 Minecraft 服务器按钮商店系统,基于 EndStone 框架开发。玩家可以使用按钮创建个人商店,实现便捷的物品交易和服务器经济互动。
## 🎯 功能特性
### 🛒 核心功能
- **按钮商店**: 使用按钮创建个人商店,直观易用
- **物品交易**: 支持所有游戏物品的买卖交易
- **以物易物**: 用物品 B 按设定比例兑换物品 A,不经过金钱与税收
- **智能UI面板**: 现代化图形界面,支持商店创建、管理、浏览
- **价格自定义**: 灵活设置物品单价,自主经营
- **库存管理**: 实时库存显示和补充功能
- **交易记录**: 完整的交易历史记录和统计
- **商店保护**: 自动保护商店按钮,防止恶意破坏
### 🔄 以物易物商店
- **双物品选配**: 先从背包选择给出物 A(创建时扣除上架),再选择收取物 B(仅作兑换模板,创建时不扣)
- **自定义比例**: 设置每份交易「给出 x 个 A ↔ 收取 y 个 B」,并支持自定义显示名
- **按份兑换**: 玩家输入兑换份数,一次交出 `份数×y` 个 B,获得 `份数×x` 个 A
- **店主经营**: 可随时补充给出物 A 库存;玩家交出的 B 进入「已收取物品」,店主可一键领取
- **系统无限易物**: OP 可将以物易物店「转换为无限商店」,变为系统无限发放 A、不囤积收取物的官方易物点
- **安全回滚**: 背包空间不足时退还已扣的代价物,避免丢物;不依赖经济插件即可交易
### 👑 OP 系统商店(官方/无限商店)
- **无限出售(系统商店)**: OP 创建商店时可选择「无限出售」——不消耗背包物品,库存无限,玩家购买时系统发放物品(收入不归个人,代表官方)
- **无限收购(系统商店)**: OP 可选择「无限收购」——不预扣预算,收购预算无限,玩家出售物品时系统支付金钱(代表官方回收)
- **无个人创建者**: 系统商店店主固定为系统本身,不绑定创建 OP 的个人信息,也不会出现在「我的商店」中
- **管理全部商店**: OP 在主面板可使用「管理全部商店(OP)」查看并管理服务器内所有玩家的商店
- **转换为无限商店**: OP 在任意商店的管理面板中可将该商店「转换为无限商店(系统商店)」,一键变为无限库存/预算的官方商店
- **系统商店标识**: 无限商店在列表和详情中显示「无限」库存/预算及 §e[系统] 标识
### 📈 官方定价与动态价格波动
- **官方定价商店**: OP 可创建「官方定价出售/收购/二合一」商店,物品与基准价来自 `official_prices.yml`,无需从背包选物
- **分类浏览与显示名**: 按价目表分区选择物品,支持 `display_name` 中文显示,并可优先从背包已有物品筛选
- **需求驱动调价**: 根据累计交易额自动调整价格——玩家购买越多出售价越高,系统收购越多回收价越低
- **出售-回收联动**: 出售价上涨时,回收价可按配置比例同步上涨,避免套利空间失控
- **每日随机波动**: 每天随机选取若干物品,在配置范围内产生 ±% 的日波动,增加市场变化感
- **价格自动回归**: 价格偏离基准后按小时缓慢回归,长期保持经济稳定
- **商店级折扣**: 官方定价商店支持设置折扣/加价百分比,在动态价格基础上叠加
- **安全防护**: 当回收价高于或等于出售价时自动禁用回收,防止刷钱漏洞
### ⚡ 性能优化
- **区块化存储**: 智能区块索引,快速查找附近商店
- **缓存机制**: 高效的数据缓存,减少数据库查询
- **异步处理**: 非阻塞操作,确保服务器流畅运行
- **内存优化**: 智能内存管理,适合大型服务器
### 💰 经济与背包集成
- **经济系统集成**: 支持 ARC Core 或 UMoney(任意其一,自动识别)
- **弧光背包管理器**: 优先使用独立插件 `arc_inventory`;未安装时回退本包内嵌 `InventoryManager`
- **自动交易**: 安全的资金转账和物品交换
- **防作弊**: 严格的交易验证和错误处理
- **多货币支持**: 支持服务器自定义货币系统
> 自动检测顺序:优先使用 `arc_core`,如果未安装则尝试 `umoney`;两者均不存在时,仅禁用金钱相关功能。
### 🌐 多语言支持
- **中英双语**: 完整的多语言界面支持
- **本地化**: 所有文本可自定义和本地化
- **可扩展**: 易于添加新语言包
## 📦 安装说明
1. **下载插件**: 将插件文件放置到服务器的 `plugins` 目录
2. **安装依赖**:
- 经济:ARC Core 或 UMoney(任意其一;优先 `arc_core`)
- 背包:**建议安装** [弧光背包管理器](https://github.com/ARC-Minecraft/EndstoneMC-ARC-Inventory-Manager)(`arc_inventory`);未安装时回退本包内嵌 `InventoryManager`
3. **重启服务器**: 重启服务器或使用插件管理器重新加载
4. **自动初始化**: 插件将自动创建必要的数据库和配置文件
5. **开始使用**: 玩家可以使用 `/shop` 命令开始创建商店
## 🎮 使用指南
### 📋 指令详解
| 指令 | 权限要求 | 语法 | 功能描述 |
|------|----------|------|----------|
| `/shop` | 所有玩家 | `/shop` | 打开商店主面板,管理和浏览商店 |
| `/shopmanage` | OP | `/shopmanage <list\|clear\|reload\|prices\|pricereload\|pricereset\|delns>` | 管理员商店与定价管理指令 |
### 🏪 创建商店流程
1. **打开界面**: 使用 `/shop` 命令打开商店主面板
2. **选择类型**: 点击「创建商店」,选择「出售商店」「收购商店」或「以物易物商店」;**OP 额外可选**「无限出售(系统商店)」「无限收购(系统商店)」或「官方定价」出售/收购/二合一
3. **选择物品**: 玩家店从背包选择物品;以物易物需先后选择给出物 A 与收取物 B;官方定价店按分类或背包筛选选择价目表物品(不消耗物品或预算)
4. **设置价格/比例**: 玩家买卖店输入单价;普通收购商店还需输入预算;以物易物设置兑换比例 x:y;官方定价店可设置折扣/加价百分比
5. **放置按钮**: 在想要创建商店的位置放置一个按钮
6. **右键激活**: 右键点击按钮完成商店创建(出售/以物易物会从背包扣除给出物 A)
### 💳 购买 / 兑换流程
1. **发现商店**: 右键/点击互动其他玩家创建的商店按钮
2. **查看详情**: 浏览商品信息、价格或兑换比例、库存等
3. **输入数量**: 买卖店选择购买数量;以物易物输入兑换份数(受库存与背包持有量限制)
4. **确认交易**: 买卖店处理资金与物品;以物易物扣除代价物 B 并发放给出物 A(不收税)
### 🔧 商店管理
#### 我的商店功能
- **库存管理**: 查看库存;出售店与以物易物店可随时「补充库存」(补充给出物 A),未售罄也可补货,数量由玩家自由填写(受背包持有量限制)
- **收取物品**: 收购店与以物易物店可将玩家交来的物品领取回背包
- **售罄可继续管理**: 库存售罄后商店仍可打开管理面板进行补货,不会因售罄而从列表/按钮交互中消失
- **价格调整**: 修改商品单价(计划中功能)
- **交易记录**: 查看销售历史和收入统计
- **商店删除**: 删除商店并取回剩余库存;以物易物店同时返还已收取的代价物
- **系统商店**: 无限商店显示「无限」库存/预算,无需补充库存或收取物品;店主显示为系统,不绑定个人
#### OP 管理功能
- **管理全部商店**: OP 在主面板点击「管理全部商店(OP)」可列出服务器内所有活跃商店,点击任意商店进行管理
- **转换为无限商店**: 在商店管理面板中,OP 可将该商店「转换为无限商店(系统商店)」——买卖店变为无限库存/预算;以物易物店变为系统无限发放 A 的官方易物点
- **官方定价管理**: 使用 `/shopmanage prices` 查看基准价与波动状态;`/shopmanage pricereload` 重载定价文件;`/shopmanage pricereset` 重置所有动态调整
- **按命名空间批量删除**: `/shop` 主面板(OP)或 `/shopmanage delns` 列出所有模组命名空间及商店数量;点击确认后删除该命名空间下全部商店(不含 `minecraft` 与无命名空间物品)。也可直接 `/shopmanage delns <命名空间>` 进入确认。模组卸载后清理残留商店很方便
- **删除他人商店**: OP 从「管理全部商店」删除他人商店时,剩余库存/预算及收集物品会返还给**店主**(店主在线则发放物品)
#### 商店保护机制
- **自动保护**: 商店按钮自动受到保护,防止恶意破坏
- **店主权限**: 只有店主可以破坏自己的商店按钮
- **智能返还**: 店主破坏按钮时自动返还剩余库存/预算
- **友好提示**: 非店主尝试破坏时显示友好提示信息
#### 附近商店浏览
- **智能搜索**: 基于区块快速查找附近商店
- **距离显示**: 显示商店与玩家的距离
- **商品预览**: 快速了解商店出售的商品
## 🔧 技术架构
### 区块化存储优化
插件采用智能区块索引系统,大幅提升性能:
#### 区块索引
- **16x16 区块划分**: 将世界按 Minecraft 标准区块大小划分
- **快速定位**: 玩家交互时先查区块索引,再精确查询位置
- **内存优化**: 避免遍历所有商店数据,性能提升数十倍
### 🏗️ 数据库设计
#### 核心表结构
**button_shops** - 商店信息表
- `shop_uuid` - 商店唯一标识
- `owner_xuid` - 店主XUID(主要标识符,永不变更)
- `owner_name` - 店主名称(用于显示)
- `shop_type` - 商店类型:`sell` 出售 / `buy` 收购 / `barter` 以物易物 / `both` 出售+回收(官方定价)
- `is_infinite` - 是否为系统无限商店;系统店 `owner_xuid`/`owner_name` 为 `SYSTEM`
- `x/y/z/dimension` - 商店位置和维度
- `chunk_x/chunk_z` - 区块坐标(索引优化)
- `item_type/item_data` - 商品信息(含附魔、Lore 等)
- `quantity/stock` - 商品数量和库存(无限商店为特殊值表示无限)
- `unit_price` - 单价
- `is_infinite` - 是否无限商店(系统/官方商店,0=否 1=是)
- `create_time` - 创建时间
**chunk_index** - 区块索引表
- `chunk_x/chunk_z/dimension` - 区块坐标
- `shop_count` - 该区块商店数量
**shop_transactions** - 交易记录表
- `shop_id` - 关联商店ID
- `buyer_xuid` - 买家XUID(主要标识符)
- `buyer_name` - 买家名称(用于显示)
- `quantity/total_price` - 交易数量和金额
- `transaction_time` - 交易时间
> 💡 **XUID说明**:插件使用玩家的XUID作为主要标识符,这确保了即使玩家更改游戏名称,其商店和交易记录仍然保持关联。玩家名称仅用于界面显示。
### 📡 API 接口文档
插件提供完整的 API 接口供其他插件调用:
#### 商店查询接口
##### `api_get_shop_at_position(x: int, y: int, z: int, dimension: str) -> dict | None`
获取指定位置的商店信息
```python
shop_plugin = server.plugin_manager.get_plugin("arc_button_shop")
shop = shop_plugin.api_get_shop_at_position(100, 64, -50, "overworld")
if shop:
print(f"店主: {shop['owner_name']}")
print(f"商品: {shop['item_type']}")
print(f"库存: {shop['stock']}")
```
##### `api_get_player_shops(player_xuid: str) -> list`
获取玩家的所有商店(基于XUID)
```python
player_xuid = "12345678901234567890" # 玩家的XUID
player_shops = shop_plugin.api_get_player_shops(player_xuid)
print(f"玩家拥有 {len(player_shops)} 个商店")
for shop in player_shops:
print(f"位置: ({shop['x']}, {shop['y']}, {shop['z']})")
print(f"店主: {shop['owner_name']}")
```
##### `api_get_nearby_shops(x: int, z: int, dimension: str, radius: int = 1) -> list`
获取指定位置附近的商店(基于区块)
```python
nearby = shop_plugin.api_get_nearby_shops(100, -50, "overworld", radius=2)
print(f"附近有 {len(nearby)} 个商店")
```
#### 交易接口
##### `api_purchase_from_shop(shop_id: int, buyer_xuid: str, quantity: int) -> tuple[bool, str]`
从商店购买商品(基于XUID)
```python
buyer_xuid = "98765432109876543210" # 买家的XUID
success, message = shop_plugin.api_purchase_from_shop(
shop_id=123,
buyer_xuid=buyer_xuid,
quantity=5
)
if success:
print("购买成功")
else:
print(f"购买失败: {message}")
```
##### `api_get_all_active_shops() -> list`
获取所有活跃的商店
```python
all_shops = shop_plugin.api_get_all_active_shops()
print(f"服务器共有 {len(all_shops)} 个活跃商店")
```
### API 使用示例
```python
# 完整的商店系统集成示例
class EconomyPlugin(Plugin):
def on_enable(self):
# 获取商店插件实例
self.shop = self.server.plugin_manager.get_plugin("arc_button_shop")
def get_market_stats(self):
"""获取市场统计信息"""
all_shops = self.shop.api_get_all_active_shops()
stats = {
'total_shops': len(all_shops),
'total_items': sum(shop['stock'] for shop in all_shops),
'average_price': sum(shop['unit_price'] for shop in all_shops) / len(all_shops) if all_shops else 0,
'top_sellers': self._get_top_sellers(all_shops)
}
return stats
def create_automated_shop(self, location, item_data, price):
"""自动创建商店(管理员功能)"""
# 这里可以集成自动商店创建逻辑
pass
```
## 📊 数据存储
插件使用 SQLite 数据库进行数据持久化存储:
**数据库文件位置**: `plugins/ARCButtonShop/button_shop.db`
### 存储优势
- **轻量级**: SQLite 无需独立服务器,内嵌式存储
- **高性能**: 针对商店查询进行索引优化
- **数据安全**: 支持事务,确保交易数据一致性
- **易维护**: 单文件数据库,便于备份和迁移
## ⚙️ 配置系统
### 🌐 语言文件配置
语言文件位于项目根目录:
- `CN.txt` - 中文语言包
- `EN.txt` - 英文语言包
### 自定义文本
您可以编辑语言文件来自定义所有游戏内提示信息:
```ini
# CN.txt 示例 - 商店系统文本
SHOP_MAIN_PANEL_TITLE=§6按钮商店系统
SHOP_CREATE_BUTTON=§a创建商店
SHOP_PURCHASE_SUCCESS=§a购买成功!获得 {0} 个 {1},花费 {2}
SHOP_SALE_NOTIFICATION=§a你的商店有新交易!§f{0} 购买了 {1} 个 {2},收入 {3}
# ... 更多配置项
```
### 配置参数
插件配置文件位于 `plugins/ARCButtonShop/`:
#### `core_setting.yml` — 全局设置(`key=value` 格式)
除交易税、商店数量限制外,动态定价相关配置也由此文件管理:
```ini
# 交易税
trade_tax_enabled=true
trade_tax_rate=0.05
max_shops_per_player=50
# 动态定价总开关
dynamic_pricing_enabled=true
# 需求驱动调价
dynamic_pricing_sell_amount_per_percent=10000 # 每累计出售交易额达此金额,出售价涨 1%
dynamic_pricing_buy_amount_per_percent=10000 # 每累计收购交易额达此金额,回收价降 1%
dynamic_pricing_max_sell_increase=0.50 # 出售价最大涨幅(50%)
dynamic_pricing_max_buy_decrease=0.30 # 回收价最大降幅(30%)
dynamic_pricing_sell_buy_link_ratio=0.5 # 出售涨价时回收价联动比例(0=关闭,1=完全同步)
dynamic_pricing_recovery_rate_per_hour=0.0002 # 每小时向基准价回归速率(约两天恢复 1%)
# 每日随机波动
daily_fluctuation_enabled=true
daily_fluctuation_item_count=3 # 每日随机波动的物品种类数
daily_fluctuation_min_percent=-15 # 波动下限(%)
daily_fluctuation_max_percent=15 # 波动上限(%)
daily_fluctuation_reset_hour=0 # 每日重置时间(24 小时制,0=午夜)
```
#### `official_prices.yml` — 官方基准定价
定义各物品的基准出售价与回收价(仅价格数据,不含动态定价开关):
```yaml
prices:
minecraft:diamond:
sell: 1000 # 玩家购买单价(基准)
buy: 500 # 玩家出售给商店单价(基准)
minecraft:iron_ingot:
sell: 50
buy: 25
```
最终成交价 = 基准价 × (1 + 需求调整 + 日波动) × (1 + 商店折扣%)。
```python
# 插件内置参数
CHUNK_SIZE = 16 # 区块大小(标准 Minecraft 区块)
```
### 🎒 背包操作集成
插件基于 [EndStone Inventory API](https://endstone.dev/latest/reference/python/inventory/) 实现了完整的背包操作:
#### 支持的操作
- **📦 物品检测**:自动扫描玩家背包中的所有物品
- **➖ 物品移除**:安全地从背包中移除指定数量的物品
- **➕ 物品添加**:智能地将物品添加到背包空位
- **🔍 库存验证**:交易前验证物品和资金充足性
#### 背包API特性
```python
# 基于EndStone标准API
inventory = player.inventory
item_stack = inventory.get_item(slot_index)
inventory.add_item(item_stack)
inventory.set_item(slot_index, item_stack)
# 支持ItemStack属性
item_stack.type # 物品类型
item_stack.amount # 物品数量
item_stack.data # 物品数据值
item_stack.item_meta # 物品元数据
```
#### 安全机制
- **事务性操作**:确保物品和金钱的原子性转移
- **错误恢复**:操作失败时自动回滚所有变更
- **背包检查**:防止背包满时的物品丢失
## 🛡️ 系统要求
- **EndStone**: 0.10 或更高版本
- **Python**: 3.13 或更高版本
- **经济插件**: ARC Core 或 UMoney(二选一,自动识别)
- **操作系统**: Windows, Linux, macOS
- **内存**: 建议至少 1GB 可用内存
- **存储**: 约 5MB 磁盘空间(不含数据库增长)
## 🎮 使用场景
### 🏪 玩家经济服务器
- 建立完整的玩家交易生态系统
- 支持大型商业区建设
- 实现去中心化的商品流通
### 🏛️ 城镇建设服务器
- 每个城镇可建立特色商店集群
- 支持区域性商业发展
- 促进玩家间合作与竞争
### 🎲 生存/冒险服务器
- 资源交易和装备买卖
- 稀有物品拍卖系统
- 探险收获变现渠道
### 🎪 小游戏服务器
- 游戏奖励兑换商店
- 临时活动商品销售
- 积分消费和奖品发放
## 📝 更新日志
### v0.4.0 (当前版本)
#### 以物易物
- 🔄 **以物易物商店**:新建商店类型,玩家用物品 B 按比例兑换物品 A,全程不经金钱与交易税
- ⚖️ **自定义兑换比例**:创建时先后选择给出物 A、收取物 B,并设置每份交易的 x:y 数量
- 📦 **库存与收取**:创建时上架 A;可随时补货 A;玩家交出的 B 记入已收取物品,店主可领取
- ♾️ **系统无限易物**:OP 可将以物易物店转换为系统无限商店,无限发放 A
- 🛡️ **交易安全**:背包满时退还已扣代价物;删除商店时返还剩余 A 与已收取的 B
#### 体验与文案
- 🔙 **选物面板返回**:创建流程中返回键回到上一步类型/选物面板,而不是直接回主面板
- 🌐 **中英文语言包**:补充以物易物相关界面文案
### v0.3.3
- 🎒 **弧光背包管理器**:优先使用独立插件 `arc_inventory` 操作背包;未安装时仍回退内嵌实现
### v0.3.2
#### 管理功能
- 🗑️ **按命名空间批量删除**:OP 可通过 `/shop` 主面板或 `/shopmanage delns` 列出模组命名空间并一键删除该命名空间下全部商店(排除 `minecraft` 与无命名空间物品);支持 `/shopmanage delns <命名空间>` 直达确认
### v0.3.1
#### 系统商店与玩家补货
- 🏷️ **系统商店不记创建者**:无限/官方系统店店主固定为 `SYSTEM`,界面显示「系统(官方商店)」,不再绑定创建 OP,也不会出现在「我的商店」
- 📦 **随时补货**:玩家出售店管理面板始终提供「补充库存」,未售罄也可补货
- ✍️ **自由数量**:补货数量由玩家自行填写任意正整数(受背包持有量限制)
- 🔄 **售罄仍可管理**:售罄后不再将商店停用隐藏,店主可继续打开按钮/管理面板补货;旧库售罄停用店启动时自动恢复
#### 官方定价体验增强
- 🔀 **二合一官方店**:支持同一按钮同时出售与回收(`both`)
- 📂 **分类选物**:按 `official_prices.yml` 分区浏览,支持 `display_name` 与背包物品优先筛选
- 🧾 **价目与文案**:扩充官方价目表与中英文语言文件
### v0.3.0
#### 官方定价与动态价格波动
- 📈 **官方定价商店**:OP 可创建官方定价出售/收购商店,基准价由 `official_prices.yml` 统一管理
- 📊 **需求驱动调价**:根据累计交易额自动涨跌价,支持涨幅/降幅上限与出售-回收联动
- 🎲 **每日随机波动**:每天随机选取物品产生 ±% 波动,可配置种类数、范围与重置时间
- ⏳ **价格自动回归**:每小时向基准价缓慢回归,防止价格长期偏离
- ⚙️ **配置分离**:动态定价开关与参数迁移至 `core_setting.yml`,`official_prices.yml` 仅保留基准价
- 🛡️ **回收保护**:回收价高于出售价时自动禁用回收,防止套利
- 🔧 **管理命令**:新增 `/shopmanage prices`、`pricereload`、`pricereset` 子命令
### v0.2.2
#### 最近修复更新
- 🩹 **购买与背包满时的经济漏洞修复**:出售商店购买改为**先尝试发放物品,再按实际成功发放的数量**扣款、计税、扣库存并记账。修复此前在背包空间不足、物品只能部分进包时,错误触发全额退款路径,导致**少扣或不扣买家钱**的问题;若实际发放少于输入数量,会提示本次仅成功购买的数量。
- 🧮 **发放数量 API**:`InventoryManager` 新增 `give_item_count`,返回实际发放数量;`give_item` 据此判断是否足额发放,便于上层按真实到账量结算。
### v0.2.1
#### 最近修复更新
- 🩹 **NBT兼容修复**:增加对更新后 NBT 结构的支持,确保物品数据读取与识别更加稳定
- 🔄 **数据兼容性优化**:针对新版 NBT 变化优化了商店物品信息处理流程,降低因数据格式变动导致的异常风险
### v0.2.0
#### 基础功能
- ✨ 全新的按钮商店系统
- 🎨 现代化UI面板界面
- 🌍 完整多语言支持(中英双语)
- ⚡ 区块化存储优化,大幅提升性能
- 💰 经济系统集成:支持 ARC Core 或 UMoney(二选一)
- 🔌 完整的API接口供其他插件调用
- 📊 SQLite数据库高效存储
- 🛒 支持商店管理、库存补充、交易记录
- 🔍 智能附近商店搜索功能
- 🆔 **XUID支持**:使用玩家XUID确保数据永久关联
- 🎒 **标准背包API**:基于EndStone官方inventory API
- 🔒 **事务安全**:完整的交易回滚和错误恢复机制
- 🛡️ **商店保护**:自动保护商店按钮,防止恶意破坏
#### OP 与系统商店(新增)
- 👑 **无限出售(系统商店)**:OP 创建商店时可选择「无限出售」——不消耗背包物品、库存无限,玩家购买时由系统发放物品(代表官方)
- 👑 **无限收购(系统商店)**:OP 可选择「无限收购」——不预扣预算、预算无限,玩家出售物品时由系统支付金钱(代表官方回收)
- 📋 **管理全部商店**:OP 主面板新增「管理全部商店(OP)」入口,可查看并管理服务器内所有商店;删除他人商店时返还给店主
- 🔄 **转换为无限商店**:OP 在任意商店管理面板可将该商店「转换为无限商店(系统商店)」
- 🏷️ **系统商店标识**:无限商店在列表中显示「无限」库存/预算及 §e[系统] 标识;数据库新增 `is_infinite` 字段并支持旧库自动迁移
## 🤝 贡献指南
我们热烈欢迎社区贡献!
### 🐛 报告问题
- 使用 GitHub Issues 报告 bug
- 提供详细的错误信息和复现步骤
- 包含 EndStone 版本和插件版本信息
- 附上相关的日志文件
### 💡 功能建议
- 在 Issues 中提出新功能建议
- 详细描述功能需求和使用场景
- 考虑功能的可行性和实用性
- 参与社区讨论和投票
### 👨💻 代码贡献
- Fork 项目并创建功能分支
- 遵循 PEP 8 Python 代码风格
- 添加必要的单元测试
- 更新相关文档
- 提交清晰的 Pull Request
### 🌍 本地化支持
- 翻译语言文件到其他语言
- 改进现有翻译质量
- 适配不同地区的使用习惯
## 📄 许可证
本项目采用 [MIT 许可证](LICENSE),您可以:
- ✅ 自由使用和修改源代码
- ✅ 用于商业和非商业目的
- ✅ 分发修改后的版本
- ⚠️ 需要保留原始许可证声明
## 📞 技术支持
获取帮助的多种方式:
- 📧 **邮箱支持**: DEVILENMO@gmail.com
- 🐛 **问题反馈**: [GitHub Issues](https://github.com/DEVILENMO/EndstoneMC-ARC-Button-Shop-Plugin/issues)
- 💬 **社区讨论**: 参与项目讨论区
- 📚 **文档中心**: 查阅完整文档和教程
### 常见问题快速解答
1. **Q**: 插件需要哪些依赖?
**A**: 需要安装经济插件中的任意一个:ARC Core 或 UMoney(插件会自动检测并优先使用 ARC Core)。
2. **Q**: 如何备份商店数据?
**A**: 复制 `plugins/ARCButtonShop/button_shop.db` 文件
3. **Q**: 商店数量有限制吗?
**A**: 目前无限制,后续版本将添加配置选项
---
**🛒 弧光按钮商店插件** - 打造您的 Minecraft 服务器专属经济生态!
*Built with ❤️ for the Minecraft community by DEVILENMO*
[/MD]