GiNYAi
本帖最后由 GiNYAi 于 2021-3-13 01:16 编辑
DailyBonus

签到与在线时长奖励


命令与权限

/dailybonus[command]dailybonus.command.root.base根命令
/dailybonus help [command]dailybonus.command.help.base显示命令帮助.
/dailybonus bonus [player] <set>dailybonus.command.bonus.base领取某个奖励.
dailybonus.command.bonus.other令其他人领取某个奖励.
/dailybonus open [player] <set>dailybonus.command.open.base打开奖励界面.
dailybonus.command.open.other令其他人打开奖励界面.
/dailybonus reloaddailybonus.command.reload.base重载配置文件.
/dailybonus sign [player] <sign>dailybonus.command.sign.baseDebug 命令 直接签到一次.
/dailybonus list_parms [player]dailybonus.command.list_parms.baseDebug 命令 显示可用的占位符.


配置文件

DailyBonusGeneral.conf

常规配置文件

奖励设定范例

配置文件中的id会自动加上根据文件名生成的前缀

month.conf (13.89 KB, 下载次数: 69)
以月为周期的循环签到

online.conf (5.49 KB, 下载次数: 50)
每天在线时长奖励

lunarnewyear2021.conf (5.67 KB, 下载次数: 46)
以2021年春节为例的临时签到活动


源代码



附件



更新日志


本插件所用所有代码均为原创,不存在借用/抄袭等行为




来自群组: Power of Spongie
2021.12 数据,可能有更多内容DailyBonus

签到与在线时长奖励


命令与权限

/dailybonus[command]
dailybonus.command.root.base
根命令
/dailybonus help [command]
dailybonus.command.help.base
显示命令帮助.
/dailybonus bonus [player] &lt;set&gt;
dailybonus.command.bonus.base
领取某个奖励.
dailybonus.command.bonus.other
令其他人领取某个奖励.
/dailybonus open [player] &lt;set&gt;
dailybonus.command.open.base
打开奖励界面.
dailybonus.command.open.other
令其他人打开奖励界面.
/dailybonus reload
dailybonus.command.reload.base
重载配置文件.
/dailybonus sign [player] &lt;sign&gt;
dailybonus.command.sign.base
Debug 命令 直接签到一次.
/dailybonus list_parms [player]
dailybonus.command.list_parms.base
Debug 命令 显示可用的占位符.



配置文件

DailyBonusGeneral.conf

常规配置文件


```
DailyBonusGeneral {
    # 读取语音文件所用地区
    Locale=zh-CN
    # 扫描的配置文件文件夹
    SettingsDir=[
  &quot;%data_dir%/settings&quot;
    ]
    # 每天的分界时间点
    StartOfDay=&quot;04:00&quot;
    # 每周的分界日
    StartOfWeek=MONDAY
    # Settings for data storage
    # 存储信息
    Storage {
  # For Mysql &amp; MariaDB, Default: localhost
  Address=localhost
  # For Mysql &amp; MariaDB.
  Database=minecraft
  # For H2 &amp; SQLite Database, Placeholders: %data_dir% %mc_dir%, Default: %data_dir%/database.db
  File=&quot;%data_dir%/database&quot;
  # Usable when you want to set the url directly, Default: &quot;&quot;
  JdbcUrl=&quot;&quot;
  Password=&quot;&quot;
  # For Mysql &amp; MariaDB, Default: 3306
  Port=3306
  # For resolving table name conflict, Default: DailyBonus_
  TablePrefix=&quot;DailyBonus_&quot;
  # Support: MySql, MariaDB, H2, SQLite, Default: H2
  Type=H2
  User=&quot;&quot;
    }
}
```
奖励设定范例

配置文件中的id会自动加上根据文件名生成的前缀



以月为周期的循环签到



```DailyBonus: {
SignGroup: [
    # 一个签到组
    {
   Id=month
   Display=Display
   # 每月一个循环
   Cycle=month
   # 在数据库中使用 `basic` 作为键, 默认值为组的id
   DataId=basic
    }
]
# 签到奖励
BonusSet: [
    {
   # id, id 中包含 `_` 目前会导致变量解析时出错
   Id=&quot;day&quot;,
   # 显示给玩家的名字
   Display=&quot;&amp;aDay&quot;,
   # 暂时还没想好有啥用
   ExtraInfo=&quot;&quot;,
   # 每天一个周期
   Cycle=&quot;day&quot;,
   # 没有前置条件, 也就是可以直接完成
   Requirements=[]
   # 基于的奖励是在 month 组 签到一次
   Entries=[{
  Type=sign
  SignGroup=month
   }]
   # 自动完成(目前只在玩家登录的时候有一次检查), 这样就完成了一个简单的每月登录次数
   AutoComplete=true
    }
    {
   # 第一天的奖励, id
   Id=&quot;day-of-month-1&quot;,
   Display=&quot;Day1&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   # 需要month组的计数之少1次
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=1
   }]
   # 奖励的命令,会以控制台身份执行
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day1&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-2&quot;,
   Display=&quot;Day2&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=2
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day2&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-3&quot;,
   Display=&quot;Day3&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=3
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day3&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-4&quot;,
   Display=&quot;Day4&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=4
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day4&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-5&quot;,
   Display=&quot;Day5&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=5
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day5&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-6&quot;,
   Display=&quot;Day6&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=6
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day6&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-7&quot;,
   Display=&quot;Day7&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=7
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day7&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-8&quot;,
   Display=&quot;Day8&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=8
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day8&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-9&quot;,
   Display=&quot;Day9&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=9
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day9&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-10&quot;,
   Display=&quot;Day10&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=10
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day10&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-11&quot;,
   Display=&quot;Day11&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=11
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day11&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-12&quot;,
   Display=&quot;Day12&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=12
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day13&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-13&quot;,
   Display=&quot;Day13&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=13
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day13&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-14&quot;,
   Display=&quot;Day14&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=14
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day14&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-15&quot;,
   Display=&quot;Day15&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=15
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day15&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-16&quot;,
   Display=&quot;Day16&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=16
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day16&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-17&quot;,
   Display=&quot;Day17&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=17
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day17&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-18&quot;,
   Display=&quot;Day18&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=18
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day18&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-19&quot;,
   Display=&quot;Day19&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=19
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day19&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-20&quot;,
   Display=&quot;Day20&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=20
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day20&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-21&quot;,
   Display=&quot;Day21&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=21
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day21&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-22&quot;,
   Display=&quot;Day22&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=22
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day22&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-23&quot;,
   Display=&quot;Day23&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=23
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day23&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-24&quot;,
   Display=&quot;Day24&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=24
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day24&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-25&quot;,
   Display=&quot;Day25&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=25
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day25&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-26&quot;,
   Display=&quot;Day26&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=26
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day26&quot;
  ]
   }]
    }
    {
   Id=&quot;day-of-month-27&quot;,
   Display=&quot;Day27&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;month&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=month
  Count=27
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% day27&quot;
  ]
   }]
    }
]
# 箱子界面
ChestView: {
    month: {
   # 箱子的大小, 需要为9的整数倍
   Size: 45
   # 可以使用 § 的样式代码
   Title: &quot;每月签到&quot;
   Elements: {
  # line 1
  0: ${Items.GlassPaneWhite}
  1: ${Items.GlassPaneWhite}
  2: ${Items.GlassPaneWhite}
  3: ${Items.GlassPaneWhite}
  4: ${Items.GlassPaneWhite}
  5: ${Items.GlassPaneWhite}
  6: ${Items.GlassPaneWhite}
  7: ${Items.GlassPaneWhite}
  8: ${Items.GlassPaneWhite}
  # line 5
  36: ${Items.GlassPaneWhite}
  37: ${Items.GlassPaneWhite}
  38: ${Items.GlassPaneWhite}
  39: ${Items.GlassPaneWhite}
  40: ${Items.GlassPaneWhite}
  41: ${Items.GlassPaneWhite}
  42: ${Items.GlassPaneWhite}
  43: ${Items.GlassPaneWhite}
  44: ${Items.GlassPaneWhite}
  # line 2
  9: ${Items.GlassPaneBlack}
  10: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-1&quot;}
  11: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-2&quot;}
  12: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-3&quot;}
  13: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-4&quot;}
  14: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-5&quot;}
  15: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-6&quot;}
  16: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-7&quot;}
  17: ${Items.GlassPaneBlack}
  # line 3
  18: ${Items.GlassPaneBlack}
  19: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-8&quot;}
  20: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-9&quot;}
  21: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-10&quot;}
  22: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-11&quot;}
  23: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-12&quot;}
  24: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-13&quot;}
  25: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-14&quot;}
  26: ${Items.GlassPaneBlack}
  # line 4
  18: ${Items.GlassPaneBlack}
  19: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-15&quot;}
  20: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-16&quot;}
  21: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-17&quot;}
  22: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-18&quot;}
  23: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-19&quot;}
  24: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-20&quot;}
  25: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-21&quot;}
  26: ${Items.GlassPaneBlack}
  # line 5
  27: ${Items.GlassPaneBlack}
  28: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-21&quot;}
  29: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-22&quot;}
  30: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-23&quot;}
  31: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-24&quot;}
  32: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-25&quot;}
  33: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-26&quot;}
  34: ${Items.BasicBonus}{BonusSet:&quot;day-of-month-27&quot;}
  35: ${Items.GlassPaneBlack}
   }
    }
}
}
# 用于给显示的物品引用
Items: {
GlassPaneWhite: {
    # 类型 fixed 固定的装饰内容
    Type: &quot;Fixed&quot;
    # 物品 至少需要设定 `ItemType` `UnsafeDamage` `Count`
    Item: {
   ItemType: &quot;minecraft:stained_glass_pane&quot;
   UnsafeDamage: 0
   Count: 1
   # NBT tag
   UnsafeData: {
  display: {
    #设置物品显示名
    Name: &quot;&quot;
  }
   }
    }
}
GlassPaneBlack: {
    Type: &quot;Fixed&quot;
    Item: {
   ItemType: &quot;minecraft:stained_glass_pane&quot;
   UnsafeDamage: 15
   Count: 1
   UnsafeData: {
  display: {
    Name: &quot;&quot;
  }
   }
    }
}
BasicBonus: {
    # 类型bonus 这个格子代表一个bonus
    Type: &quot;Bonus&quot;
    # 所对应的 bonus set
    BonusSet: null
    # 已经领取
    ItemReceived: {
   ItemType: &quot;minecraft:air&quot;
   Count: 1
   UnsafeDamage: 0
    }
    # 可以领取
    ItemUsable: {
   ItemType: &quot;minecraft:grass&quot;
   Count: 1
   UnsafeDamage: 0
   UnsafeData: {
  display: {
    Name: &quot;%player_name%&quot;
    Lore: [&quot;Lore&quot;]
  }
   }
    }
    # 不可领取
    ItemUnusable: {
   ItemType: &quot;minecraft:stone&quot;
   # 解析变量并设置为 int
   Count: &quot;{i:%player_signgroup_month.month_count%}&quot;
   UnsafeDamage: 0
   UnsafeData: {
  display: {
    Name: &quot;%bonus_display%&quot;
    Lore: [&quot;%signgroup_month.month_count%&quot;]
  }
   }
    }
}
}
```

每天在线时长奖励



```
DailyBonus: {
SignGroup: []
# 签到奖励
BonusSet: [
    {
   # id, id 中包含 `_` 目前会导致变量解析时出错
   Id=&quot;day0&quot;,
   # 显示给玩家的名字
   Display=&quot;&amp;a5分钟在线奖励&quot;,
   # 暂时还没想好有啥用
   ExtraInfo=&quot;&quot;,
   # 每天一个周期
   Cycle=&quot;day&quot;,
   # 要求本日在线超过5分钟
   Requirements=[{
  Type=&quot;onlinetimetoday&quot;
  OnlineTime=&quot;5m&quot;
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% %player_onlinetimetoday%&quot;
  ]
   }]
    }
    {
   # id, id 中包含 `_` 目前会导致变量解析时出错
   Id=&quot;day1&quot;,
   # 显示给玩家的名字
   Display=&quot;&amp;a10分钟在线奖励&quot;,
   # 暂时还没想好有啥用
   ExtraInfo=&quot;&quot;,
   # 每天一个周期
   Cycle=&quot;day&quot;,
   # 要求本日在线超过5分钟
   Requirements=[{
  Type=&quot;onlinetimetoday&quot;
  OnlineTime=&quot;10m&quot;
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% %player_onlinetimetoday%&quot;
  ]
   }]
    }
    {
   Id=&quot;day2&quot;,
   Display=&quot;&amp;a15分钟在线奖励&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;day&quot;,
   Requirements=[{
  Type=&quot;onlinetimetoday&quot;
  OnlineTime=&quot;15m&quot;
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% %player_onlinetimetoday%&quot;
  ]
   }]
    }
    {
   Id=&quot;day3&quot;,
   Display=&quot;&amp;a20分钟在线奖励&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;day&quot;,
   Requirements=[{
  Type=&quot;onlinetimetoday&quot;
  OnlineTime=&quot;20m&quot;
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% %player_onlinetimetoday%&quot;
  ]
   }]
    }
    {
   Id=&quot;day4&quot;,
   Display=&quot;&amp;a25分钟在线奖励&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;day&quot;,
   Requirements=[{
  Type=&quot;onlinetimetoday&quot;
  OnlineTime=&quot;25m&quot;
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% %player_onlinetimetoday%&quot;
  ]
   }]
    }
    {
   Id=&quot;day5&quot;,
   Display=&quot;&amp;a30分钟在线奖励&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;day&quot;,
   Requirements=[{
  Type=&quot;onlinetimetoday&quot;
  OnlineTime=&quot;30m&quot;
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% %player_onlinetimetoday%&quot;
  ]
   }]
    }
    {
   Id=&quot;day6&quot;,
   Display=&quot;&amp;a60分钟在线奖励&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;day&quot;,
   Requirements=[{
  Type=&quot;onlinetimetoday&quot;
  OnlineTime=&quot;60m&quot;
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% %player_onlinetimetoday%&quot;
  ]
   }]
    }
]
# 箱子界面
ChestView: {
    view: {
   # 箱子的大小, 需要为9的整数倍
   Size: 27
   # 可以使用 § 的样式代码
   Title: &quot;§c每日时长奖励&quot;
   Elements: {
  # line 1
  0: ${Items.GlassPaneWhite}
  1: ${Items.GlassPaneWhite}
  2: ${Items.GlassPaneWhite}
  3: ${Items.GlassPaneWhite}
  4: ${Items.GlassPaneWhite}
  5: ${Items.GlassPaneWhite}
  6: ${Items.GlassPaneWhite}
  7: ${Items.GlassPaneWhite}
  8: ${Items.GlassPaneWhite}
  # line 3
  18: ${Items.GlassPaneWhite}
  19: ${Items.GlassPaneWhite}
  20: ${Items.GlassPaneWhite}
  21: ${Items.GlassPaneWhite}
  22: ${Items.GlassPaneWhite}
  23: ${Items.GlassPaneWhite}
  24: ${Items.GlassPaneWhite}
  25: ${Items.GlassPaneWhite}
  26: ${Items.GlassPaneWhite}
  # line 2
  9: ${Items.GlassPaneBlack}
  10: ${Items.BasicBonus}{BonusSet:&quot;day0&quot;}
  11: ${Items.BasicBonus}{BonusSet:&quot;day1&quot;}
  12: ${Items.BasicBonus}{BonusSet:&quot;day2&quot;}
  13: ${Items.BasicBonus}{BonusSet:&quot;day3&quot;}
  14: ${Items.BasicBonus}{BonusSet:&quot;day4&quot;}
  15: ${Items.BasicBonus}{BonusSet:&quot;day5&quot;}
  16: ${Items.BasicBonus}{BonusSet:&quot;day6&quot;}
  17: ${Items.GlassPaneBlack}
   }
    }
}
}
# 用于给显示的物品引用
Items: {
GlassPaneWhite: {
    # 类型 fixed 固定的装饰内容
    Type: &quot;Fixed&quot;
    # 物品 至少需要设定 `ItemType` `UnsafeDamage` `Count`
    Item: {
   ItemType: &quot;minecraft:stained_glass_pane&quot;
   UnsafeDamage: 0
   Count: 1
   # NBT tag
   UnsafeData: {
  display: {
    #设置物品显示名
    Name: &quot;&quot;
  }
   }
    }
}
GlassPaneBlack: {
    Type: &quot;Fixed&quot;
    Item: {
   ItemType: &quot;minecraft:stained_glass_pane&quot;
   UnsafeDamage: 15
   Count: 1
   UnsafeData: {
  display: {
    Name: &quot;&quot;
  }
   }
    }
}
BasicBonus: {
    # 类型bonus 这个格子代表一个bonus
    Type: &quot;Bonus&quot;
    # 所对应的 bonus set
    BonusSet: null
    # 已经领取
    ItemReceived: {
   ItemType: &quot;minecraft:air&quot;
   Count: 1
   UnsafeDamage: 0
    }
    # 可以领取
    ItemUsable: {
   ItemType: &quot;minecraft:grass&quot;
   Count: 1
   UnsafeDamage: 0
   UnsafeData: {
  display: {
    Name: &quot;%player_name%&quot;
    Lore: [&quot;Lore&quot;]
  }
   }
    }
    # 不可领取
    ItemUnusable: {
   ItemType: &quot;minecraft:stone&quot;
   Count: 1
   UnsafeDamage: 0
   UnsafeData: {
  display: {
    Name: &quot;%bonus_display%&quot;
    Lore: [&quot;&quot;]
  }
   }
    }
}
}
```

以2021年春节为例的临时签到活动


```
DailyBonus: {
SignGroup: [
    {
   Id=newyear
   Display=Display
   # 单次
   Cycle=once
   # 在数据库中使用 `basic` 作为键, 也就是直接使用每月签到中自动签到的数据
   DataId=basic
   # 开始时间
   Start=&quot;2021-02-11T04:00&quot;
   # 结束时间
   End=&quot;2021-03-27T04:00&quot;
    }]
# 签到奖励
BonusSet: [
    {
   # id, id 中包含 `_` 目前会导致变量解析时出错
   Id=&quot;day1&quot;,
   # 显示给玩家的名字
   Display=&quot;&amp;a春节签到奖励Day1&quot;,
   # 暂时还没想好有啥用
   ExtraInfo=&quot;&quot;,
   # 不循环
   Cycle=&quot;once&quot;,
   # 签到一次
   Requirements=[{
  Type=signcount
  SignGroup=newyear
  Count=1
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% %player_onlinetimetoday%&quot;
  ]
   }]
    }
    {
   Id=&quot;day2&quot;,
   Display=&quot;&amp;a春节签到奖励Day2&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;once&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=newyear
  Count=2
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% %player_onlinetimetoday%&quot;
  ]
   }]
    }
    {
   Id=&quot;day3&quot;,
   Display=&quot;&amp;a春节签到奖励Day3&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;once&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=newyear
  Count=3
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% %player_onlinetimetoday%&quot;
  ]
   }]
    }
    {
   Id=&quot;day4&quot;,
   Display=&quot;&amp;a春节签到奖励Day4&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;once&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=newyear
  Count=4
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% %player_onlinetimetoday%&quot;
  ]
   }]
    }
    {
   Id=&quot;day5&quot;,
   Display=&quot;&amp;a春节签到奖励Day5&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;once&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=newyear
  Count=5
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% %player_onlinetimetoday%&quot;
  ]
   }]
    }
    {
   Id=&quot;day6&quot;,
   Display=&quot;&amp;a春节签到奖励Day6&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;once&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=newyear
  Count=6
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% %player_onlinetimetoday%&quot;
  ]
   }]
    }
    {
   Id=&quot;day7&quot;,
   Display=&quot;&amp;a春节签到奖励Day7&quot;,
   ExtraInfo=&quot;&quot;,
   Cycle=&quot;once&quot;,
   Requirements=[{
  Type=signcount
  SignGroup=newyear
  Count=7
   }]
   Entries=[{
  Type=command
  Commands=[
    &quot;say %player% %player_onlinetimetoday%&quot;
  ]
   }]
    }
]
# 箱子界面
ChestView: {
    view: {
   # 箱子的大小, 需要为9的整数倍
   Size: 27
   # 可以使用 § 的样式代码
   Title: &quot;§a2021农历新年签到&quot;
   Elements: {
  # line 1
  0: ${Items.GlassPaneWhite}
  1: ${Items.GlassPaneWhite}
  2: ${Items.GlassPaneWhite}
  3: ${Items.GlassPaneWhite}
  4: ${Items.GlassPaneWhite}
  5: ${Items.GlassPaneWhite}
  6: ${Items.GlassPaneWhite}
  7: ${Items.GlassPaneWhite}
  8: ${Items.GlassPaneWhite}
  # line 3
  18: ${Items.GlassPaneWhite}
  19: ${Items.GlassPaneWhite}
  20: ${Items.GlassPaneWhite}
  21: ${Items.GlassPaneWhite}
  22: ${Items.GlassPaneWhite}
  23: ${Items.GlassPaneWhite}
  24: ${Items.GlassPaneWhite}
  25: ${Items.GlassPaneWhite}
  26: ${Items.GlassPaneWhite}
  # line 2
  9: ${Items.GlassPaneBlack}
  10: ${Items.BasicBonus}{BonusSet:&quot;day1&quot;}
  11: ${Items.BasicBonus}{BonusSet:&quot;day2&quot;}
  12: ${Items.BasicBonus}{BonusSet:&quot;day3&quot;}
  13: ${Items.BasicBonus}{BonusSet:&quot;day4&quot;}
  14: ${Items.BasicBonus}{BonusSet:&quot;day5&quot;}
  15: ${Items.BasicBonus}{BonusSet:&quot;day6&quot;}
  16: ${Items.BasicBonus}{BonusSet:&quot;day7&quot;}
  17: ${Items.GlassPaneBlack}
   }
    }
}
}
# 用于给显示的物品引用
Items: {
GlassPaneWhite: {
    # 类型 fixed 固定的装饰内容
    Type: &quot;Fixed&quot;
    # 物品 至少需要设定 `ItemType` `UnsafeDamage` `Count`
    Item: {
   ItemType: &quot;minecraft:stained_glass_pane&quot;
   UnsafeDamage: 0
   Count: 1
   # NBT tag
   UnsafeData: {
  display: {
    #设置物品显示名
    Name: &quot;&quot;
  }
   }
    }
}
GlassPaneBlack: {
    Type: &quot;Fixed&quot;
    Item: {
   ItemType: &quot;minecraft:stained_glass_pane&quot;
   UnsafeDamage: 15
   Count: 1
   UnsafeData: {
  display: {
    Name: &quot;&quot;
  }
   }
    }
}
BasicBonus: {
    # 类型bonus 这个格子代表一个bonus
    Type: &quot;Bonus&quot;
    # 所对应的 bonus set
    BonusSet: null
    # 已经领取
    ItemReceived: {
   ItemType: &quot;minecraft:air&quot;
   Count: 1
   UnsafeDamage: 0
    }
    # 可以领取
    ItemUsable: {
   ItemType: &quot;minecraft:grass&quot;
   Count: 1
   UnsafeDamage: 0
   UnsafeData: {
  display: {
    Name: &quot;%bonus_display%&quot;
    Lore: [&quot;Lore&quot;]
  }
   }
    }
    # 不可领取
    ItemUnusable: {
   ItemType: &quot;minecraft:stone&quot;
   Count: 1
   UnsafeDamage: 0
   UnsafeData: {
  display: {
    Name: &quot;%player_name%&quot;
    Lore: [&quot;&quot;]
  }
   }
    }
}
}
```


源代码




附件





更新日志

0.1.0   2021-02-15    第一版快照
0.1.1   2021-02-21    修复重载可能丢失未保存的玩家数据的问题, 修复配置文件Text加载问题
0.1.2   2021-03-05    调整箱子界面物品使用的占位符
本插件所用所有代码均为原创,不存在借用/抄袭等行为



胡闹0519
支持一下。

王骚年
66666666666666

蟹蒙老鸽
MCBBS有你更精彩~!

KururuCZ
请问是否支持mysql

Satou
好用的插件
支持一下

蔡某人SA
你好,1.12.2 catserver用不了,生成不了配置文件,插件看起来还是不错的,加油

GiNYAi
蔡某人SA 发表于 2021-3-10 22:10
你好,1.12.2 catserver用不了,生成不了配置文件,插件看起来还是不错的,加油 ...
适用服务端:         |Sponge|


                              


蔡某人SA

好吧没看见

Naive4901
咱就支持下1.16.5呗

白露烧酒
        MCBBS有你更精彩~

aswsa
感谢楼主分享

琉乐艺
很实用的一个插件!感谢作者与团队我拿走了

nemo.
这个插件啥时候更新1.16版呀 好东西

第一页 上一页 下一页 最后一页