【原创插件示例需求】邮箱系统 #1

Closed
opened 2024-06-12 20:07:23 +08:00 by MiniDay · 0 comments
Owner

插件简介

插件名称:HamsterMail(不写则由作者自己决定)
服务器版本:1.20.6
服务端软件:paper

该插件主要用于服务器为玩家发放补偿物品或通知信息

依赖前置

邮件

邮件需要有以下属性:

  • 邮件ID
  • 文本标题
  • 文本内容
  • 发送时间
  • 过期时间(-1为永不过期)
  • 物品内容(可以为空)

玩家可以对邮件进行【已读】、【领取】、【删除】操作。

  • 【已读】:若邮件无物品内容,则进行【已读】操作会将邮件设置为已读状态。否则什么都不做。
  • 【领取】:若邮件有物品内容,则进行【领取】操作会将邮件内的物品领取到玩家物品栏,并设置为已读状态。
  • 【删除】:
    • 当邮件有内容物品时,若邮件已被标记为已读,则删除该邮件。否则什么都不做,并提醒玩家该邮件。
    • 当邮件没有内容物品时,无需检查邮件的已读状态,直接删除邮件。

邮箱

玩家可以通过一个指令打开自己的邮箱,邮箱内可以显示自己收到的所有邮件(如果单页展示不完则可以翻页),并提供【一键领取】、【一键清空】的功能。
对于邮箱内的每一份邮件,需要显示发件时间、过期时间、物品内容(仅物品名称)

过期邮件不会显示在邮箱中

  • 【一键领取&已读】:领取全部邮件的物品并设置为已读状态
  • 【一键清空】:删除所有状态为已读的邮件

发送邮件

仅服务器管理员可以发送邮件

管理员通过命令(命令名称无特殊要求,与【邮件】名称相关即可),打开一个 UI。
UI中有以下按钮:

  • 【设置文本标题】:关闭UI,并要求输入邮件标题。输入完毕确认后将重新打开UI
  • 【设置文本内容】:关闭UI,并要求输入邮件内容。输入完毕确认后将重新打开UI
  • 【设置物品内容】:关闭UI,打开一个新的箱子UI,放入需要邮件内需要设置的物品内容。
  • 【设置接收对象】:
    • shift+点击:设置邮件发送给 个人/所有人
    • 左键点击:
      • 当前状态为发送给 个人 时:关闭UI,并要求输入发送的玩家名称。输入完毕确认后将重新打开UI
      • 当前状态为发送给 所有人 时:什么都不做,并提醒当前邮件是发送给全服的类型。
  • 【设置过期时间】:关闭UI,并要求输入邮件多久过期,输入完毕确认后将重新打开UI。(单位:秒,-1代表永不过期)

接收对象为【所有人】类型的邮件不允许设置为永不过期

删除邮件

管理员可以立即删除已经发出的邮件

邮箱查看

管理员可以查看其他玩家的邮箱,并可以对其他玩家邮箱里的邮件进行删除操作

API

需要暴露一个 API 给其他插件,大致格式如下:

MailAPI.sendAllMail(String title, String content, List<ItemStack> items, long expireTime){}
MailAPI.sendMail(String title, String content, List<ItemStack> items, UUID receiver,long expireTime){}

其他功能

  • 玩家登录游戏时,插件需要检测玩家是否有未收取的邮件,如果有,则需要发送通知提醒玩家。
  • 收到邮件时,若玩家在线,则会立即通知玩家【收到一封邮件】

报价

预估报价:450¥

若不清楚项目复杂度而无法给出报价,可按最终编译成品文件的大小来算:

  • 小于30kb:1kb=10¥
  • 30kb~50kb:1kb=12¥
  • 50kb~100kb:1kb=14¥
  • 100kb以上:1kb=15¥
# 插件简介 插件名称:HamsterMail(不写则由作者自己决定) 服务器版本:1.20.6 服务端软件:paper > 该插件主要用于服务器为玩家发放补偿物品或通知信息 # 依赖前置 - PlaceholderAPI:https://www.spigotmc.org/resources/placeholderapi.6245/ - HamsterCore:https://jenkins.airgame.net/job/opensource/job/hamster-core/ - HamsterEngine:https://jenkins.airgame.net/job/opensource/job/hamster-engine/ # 邮件 邮件需要有以下属性: - 邮件ID - 文本标题 - 文本内容 - 发送时间 - 过期时间(-1为永不过期) - 物品内容(可以为空) 玩家可以对邮件进行【已读】、【领取】、【删除】操作。 - 【已读】:若邮件无物品内容,则进行【已读】操作会将邮件设置为已读状态。否则什么都不做。 - 【领取】:若邮件有物品内容,则进行【领取】操作会将邮件内的物品领取到玩家物品栏,并设置为已读状态。 - 【删除】: - 当邮件有内容物品时,若邮件已被标记为已读,则删除该邮件。否则什么都不做,并提醒玩家该邮件。 - 当邮件没有内容物品时,无需检查邮件的已读状态,直接删除邮件。 # 邮箱 玩家可以通过一个指令打开自己的邮箱,邮箱内可以显示自己收到的所有邮件(如果单页展示不完则可以翻页),并提供【一键领取】、【一键清空】的功能。 对于邮箱内的每一份邮件,需要显示发件时间、过期时间、物品内容(仅物品名称) > 过期邮件不会显示在邮箱中 - 【一键领取&已读】:领取全部邮件的物品并设置为已读状态 - 【一键清空】:删除所有状态为已读的邮件 # 发送邮件 > 仅服务器管理员可以发送邮件 管理员通过命令(命令名称无特殊要求,与【邮件】名称相关即可),打开一个 UI。 UI中有以下按钮: - 【设置文本标题】:关闭UI,并要求输入邮件标题。输入完毕确认后将重新打开UI - 【设置文本内容】:关闭UI,并要求输入邮件内容。输入完毕确认后将重新打开UI - 【设置物品内容】:关闭UI,打开一个新的箱子UI,放入需要邮件内需要设置的物品内容。 - 【设置接收对象】: - shift+点击:设置邮件发送给 个人/所有人 - 左键点击: - 当前状态为发送给 个人 时:关闭UI,并要求输入发送的玩家名称。输入完毕确认后将重新打开UI - 当前状态为发送给 所有人 时:什么都不做,并提醒当前邮件是发送给全服的类型。 - 【设置过期时间】:关闭UI,并要求输入邮件多久过期,输入完毕确认后将重新打开UI。(单位:秒,-1代表永不过期) > 接收对象为【所有人】类型的邮件不允许设置为永不过期 # 删除邮件 管理员可以立即删除已经发出的邮件 # 邮箱查看 管理员可以查看其他玩家的邮箱,并可以对其他玩家邮箱里的邮件进行删除操作 # API 需要暴露一个 API 给其他插件,大致格式如下: ```java MailAPI.sendAllMail(String title, String content, List<ItemStack> items, long expireTime){} MailAPI.sendMail(String title, String content, List<ItemStack> items, UUID receiver,long expireTime){} ``` # 其他功能 - 玩家登录游戏时,插件需要检测玩家是否有未收取的邮件,如果有,则需要发送通知提醒玩家。 - 收到邮件时,若玩家在线,则会立即通知玩家【收到一封邮件】 # 报价 预估报价:450¥ > 若不清楚项目复杂度而无法给出报价,可按最终编译成品文件的大小来算: > > - 小于30kb:1kb=10¥ > - 30kb~50kb:1kb=12¥ > - 50kb~100kb:1kb=14¥ > - 100kb以上:1kb=15¥
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: outsource/example-outsourcing-project#1
No description provided.