Skip to content

CubeX-MC/Contract

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contract

玩家对玩家合同平台。当前版本提供 SERVICE 委托、WAGER 对赌和 PARTNERSHIP 合作三类合同,重点先保证 Vault 托管资金、接单/接受邀请、提交、确认、裁决、取消退款和管理员仲裁流程正确。

依赖

  • Vault
  • 任意 Vault 经济插件,例如 CMI Economy

运行时不依赖 CMI、QuickShop、Lands、RuleGems 或数据库驱动。GUI 铁砧输入使用的 AnvilGUI 已 shade 并重定位打包进插件 jar,无需单独安装。

构建

mvn package

生成文件:

target/contract-0.1.0.jar

玩家命令

/contract help
/contract
/contract gui
/contract service <奖金> <小时> <标题>|<描述>
/contract service <奖金> <小时> --mediator <中间人> <标题>|<描述>
/contract wager <对方> <押注> <小时> <仲裁者> <标题>|<描述>
/contract partner <对方> <我押注> <对方押注> <小时> <标题>|<描述>
/contract partner <对方> <我押注> <对方押注> <小时> --mediator <中间人> <标题>|<描述>
/contract list [页码]
/contract my
/contract info <id>
/contract accept <id>
/contract submit <id>
/contract approve <id>
/contract resolve <id> <a|b>
/contract mediate <id> <accept|pay|refund|owner|contractor>
/contract cancel <id>
/contract dispute <id> <原因>

命令别名:

/ct

GUI 工作台

/contract(或 /contract gui)打开合同工作台,全程图形界面,普通玩家无需记命令:

  • 合同工作台:首页显示行动收件箱待办数量,入口包含创建合同、行动收件箱、合同大厅、我的合同、帮助和管理员工作台。
  • 行动收件箱:集中显示需要你接受邀请、提交完成、确认付款、确认合作、接受中间人职责或裁决争议的合同。
  • 创建合同向导:先选类型(委托/对赌/合作),再用铁砧逐项填写标题、描述、对方玩家、金额、押注、中间人/仲裁者和期限,界面实时显示条款预览与扣款明细。
  • 铁砧签署确认:创建、接受邀请、接单、确认付款、中间人/仲裁裁决、取消合同、管理员强制付款/退款/关闭等资金动作,都会先进入确认页展示资金后果,再打开铁砧要求输入玩家名或“同意”完成签署。关闭铁砧或签名不符即视为取消,不会产生任何资金动作。
  • 管理员工作台contract.admin.view 可见,按争议/中断结算、进行中、全部分栏检索合同,强制付款/退款/关闭同样需要签署确认。

命令保留为高级/脚本入口,资金逻辑与 GUI 完全共用同一 ContractService 路径。

权限

contract.use
contract.create
contract.accept
contract.submit
contract.approve
contract.cancel
contract.dispute
contract.mediate
contract.admin
contract.admin.reload
contract.admin.settle
contract.admin.view

管理命令

/contract all [页码]
/contract admin reload
/contract admin pay <id>
/contract admin refund <id>
/contract admin close <id>

admin close 只关闭合同并写入事件日志,不移动任何资金。需要资金处理时先使用 admin payadmin refund,或由管理员在线下核对后再 close。

合同类型与状态

  • SERVICE:传统委托。创建者托管奖金,其他玩家接单,接单者提交完成,创建者 approve 后付款。
  • WAGER:对赌。甲方创建时托管押注,乙方 accept 时托管同额押注,指定仲裁者用 /contract resolve <id> <a|b> 裁决胜方。
  • PARTNERSHIP:合作。甲方创建时托管自己的押注,乙方 accept 时托管自己的押注,双方都 /contract approve <id> 后按规则结算。

SERVICE 和 PARTNERSHIP 可选 --mediator <中间人>。中间人不是收款方,也不会经手资金;他必须先 /contract mediate <id> accept 接受职责,之后可在合同已生效且未结束时裁决:

  • pay / contractor:认定完成或接单方胜,按成功规则付款。
  • refund / owner:认定失效或创建方胜,按失败/退款规则处理。
  • PARTNERSHIP 还可用 a / b 裁定甲方或乙方胜。

WAGER 使用创建时必填的仲裁者和 /contract resolve <id> <a|b>,保持原流程。

主要状态:

  • OPEN:公开 SERVICE,等待接单。
  • PENDING_ACCEPT:WAGER/PARTNERSHIP 邀请已发出,等待指定对方接受。
  • IN_PROGRESS:已接单或邀请已接受。
  • SUBMITTED:SERVICE 已提交完成,等待创建者确认。
  • COMPLETEDCANCELLEDEXPIREDDISPUTED:终态或管理员待处理状态。

GUI 合同大厅支持按全部/SERVICE/WAGER/PARTNERSHIP 筛选;“我的合同”会显示与玩家相关的待接受邀请、进行中、争议和历史合同;行动收件箱会进一步筛出需要当前玩家处理的合同。所有资金动作都需要经过确认页和铁砧签署。/contract admin reload 会关闭旧 GUI 会话并清理创建草稿,避免玩家在重载后继续操作旧数据。

资金规则

创建合同时立刻扣除:

  • 合同奖金
  • 创建费

SERVICE 奖金进入插件托管记录。创建费直接作为经济回收。

WAGER 创建时扣除甲方押注;乙方接受时扣除乙方押注。裁决后胜方获得双方押注扣除完成佣金后的金额,佣金作为经济回收。待接受超时或甲方取消时只退还甲方已托管押注,不会给未接受的乙方付款。

PARTNERSHIP 创建时扣除甲方押注;乙方接受时扣除乙方押注。双方确认成功时各自取回自己的押注扣除完成佣金后的金额;取消、超时或管理员退款按当前状态退回已托管押注。

雇主确认后:

  • 接单者获得 奖金 - 完成佣金
  • 完成佣金作为经济回收

公开合同取消或过期:

  • 奖金退回雇主
  • 创建费不退

进行中合同由接单者取消或到期:

  • 奖金退回雇主

进行中或待确认合同由雇主取消:

  • 进入争议状态,等待管理员处理

结算付款会先写入 pending settlement/payout 记录,再执行 Vault deposit。重启恢复不会自动重放 deposit;如果发现未完成的 payout 或 settlement,合同会进入争议状态并写入事件日志,等待管理员核对,避免重复付款。

配置

主要配置在 config.yml

language: zh_CN

economy:
  min-reward: 100.0
  max-reward: 100000.0
  creation-fee: 20.0
  completion-commission-percent: 5.0

limits:
  max-open-contracts: 3
  max-active-accepted-contracts: 3
  max-title-length: 80
  max-description-length: 500
  min-deadline-hours: 1
  max-deadline-hours: 168

expiry:
  cleanup-interval-minutes: 10
  submitted-auto-approve-hours: 72

storage:
  flush-interval-seconds: 30

display:
  page-size: 8
  currency-prefix: "$"

语言文件位于 lang/zh_CN.ymllang/en_US.yml,可通过 language 选择。

存储

合同数据保存到:

plugins/Contract/contract.yml
plugins/Contract/pending-transactions.yml
plugins/Contract/events.log

当前版本使用 Bukkit YAML 存储,避免引入 SQLite/MySQL 驱动。后续如果合同数量明显变多,再考虑数据库层。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages