StreakRewards

StreakRewards | Daily Streaked Rewards | NEW: Multiple Menus! | NPC support | 1.8-1.17 2.0.2

The ultimate daily rewards plugin based on claim streaks! Fancy looking GUIs with unlimited options.

Spigot Link:
https://www.spigotmc.org/resources/68195/
Tested Versions:
1.8, 1.9, 1.10, 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17
Donation Link:
https://www.gcnt.net/donate
Author:
gaagjescraft
Terms of service:
https://www.gcnt.net/terms-of-service
[​IMG]
StreakRewards is the best daily rewards plugin you could get on SpigotMC.
Every day, players can claim their daily rewards. Every day that the player claims the daily reward, without missing one day, their claim-streak will be increased. When the player forgets to claim their rewards one day, their streak will be reset and they will start from day one.
By default, the month-cycle is 30 days long. This is configurable in the config as well as all messages and options. This plugin is 100% configurable.
When the last day of the month has been reached, their streak will continue, but the day will be once again 1.

We created some fancy menu layouts for you to use for free. These are listed below. All menu items are configurable in the rewards.yml file.

[​IMG]

  • Fully GUI based
  • NEW: Create multiple menus!
  • 9 Menu shapes
  • Create your own menu shape
  • Open command
  • Manage the streaks via a command
  • MySQL and SQLite storage support
  • Custom Reward Actions
  • Menu Items are configurable
  • Menu Item Slots are configurable
  • Default menu items to minimize the file size
  • Countdown placeholders for the menu lores
  • Empty slot items
  • Menu size configurable
  • Minimum online time to claim rewards
  • Join reminders for claimable rewards
  • NextReward item for when their next reward is on cooldown.
  • Ability to change menu items when the target day is claimable, not-yet-claimable, next-reward, or already-claimed.
  • NextReward item updated every second to display the right remaining time for the next reward.
  • Boost Player Streaks
  • Claim Date Types
  • Base the next day on the player's previous reward claim date.
  • Base the next day on the server host's time.
  • Citizens integration for custom NPCs that open the menu when you click on them.
  • PlaceholderAPI placeholders
  • MVdWPlaceholderAPI placeholders
  • LeaderHeads leaderboards
  • Additions+ Integration
  • Information stored per UUID; changing nickname won't affect the streak nor the last claim date
  • Easy to set up
  • Fast (Discord) Support
  • 1.8 - 1.17 support
  • More coming soon...
About "Minimum online time to claim rewards":
v1.4.3 adds this feature. If you enable it in the config, it will require players to be online at least x minutes (configurable in config) before they can claim their daily reward if available.



[​IMG]
PlaceholderAPI:
Type: Soft Dependency
Description: Adds custom placeholders to PAPI. Allows placeholders to be used in the rewards.

MVdWPlaceholderAPI:
Type: Soft Dependency
Description: Adds custom placeholders to MVdWPAPI. Allows placeholders to be used in the rewards.

AdditionsPlus:
Type: Soft Dependency
Description: This overrides the actions of this plugin. You can then use their actions described on their Spigot page.

LeaderHeads:
Type: Soft Dependency
Description: Adds custom leaderboards to the plugin.

[​IMG]

[command]:
Description: This performs a command as the player
Example: '[command]say I claimed a reward'

[console]:
Description: This performs a command as the console
Example: '[console]give %player% stick 1'

[message]:
Description: This sends a message to the player
Example: '[message]&b&lYou claimed a reward!'

For more actions, download the AdditionsPlus plugin. If you've installed that plugin, the reward actions of this plugin will be overridden by that plugin's actions. These actions are in both plugins. AdditionsPlus contains 38+ actions.
Do not use Additions (free version) to handle this. That will give errors.

[​IMG]
streakrewards.menu.[name]: Use this permission to give a player access to a specific menu. The default permission is "streakrewards.menu.default".

Commands with the permission: streakrewards.player
/daily
opens the claim menu.
/daily [menu] opens a specific claim menu.
/daily help gives a list of commands the player has access to.
/daily getstreak [menu] gives current streak of the player's target menu (No argument = default menu).
/daily getday [menu] gives current day of the player's target menu (No argument = default menu, day is 1-30).
/daily claim [menu] opens a claim menu for the target menu (No argument = default menu).

Commands with the permission: streakrewards.admin
/daily reload
reloads the plugin.
/daily createmenu <menu> create a new menu.
/daily deletemenu <menu> delete a menu and all its player data (irrevirsible!).
/daily unlock <player> [menu] unlock a player's next reward for a target menu (No 2nd argument = default menu).
/daily createnpc [menu] create a menu-opening NPC for a menu using Citizens (No argument = default menu).
/daily reset <player> [menu] resets the streak a player for a target menu (No 2nd argument = default menu).
/daily setstreak <player> <streak> [menu] sets the streak of a player for a target menu (No 3nd argument = default menu).
/daily boost <player> <boost> [menu] boosts a player by adding x days to their streak for a target menu (No 3rd argument = default menu).
/daily getday [player] [menu] get a day of a target player for a target menu.
/daily getstreak [player] [menu] get the streak of a targte player for a target menu.

You can also use /streakrewards, /rewards and /sr instead of /daily.

All NPCs should be fully managed by Citizens. If you remove it using Citizens, it will also be removed from our configuration.

[​IMG]
In each spoiler below is a different menu shape. You can set the shape by setting the property menu_shape in the config to the name of the spoiler (TREE, REVERSED_TREE, CIRCLE, CROWN, VICTORY, TORNADO, CHEST or SNAKE).

[​IMG]
[​IMG]
[​IMG]
[​IMG]
[​IMG]
[​IMG]
[​IMG]
[​IMG]
The custom shape allows you to set the slots of your items in the menu manually. It's pretty easy to do it.
You will need to set the shape in the config to CUSTOM.
Then go to your rewards.yml file and add the slot variable to each day. That will look something like:
Code (Text):

day-1:
  slot: 0
day-2:
  slot: 1
day-30:
  slot: 29
 
Note that the slot values are starting from 0. This is Bukkit's inventory system.

[​IMG]
Default config.yml file
updater:
  enable: true
  include_snapshots: true

storage:
  # Type could either be SQLite or MySQL
  # SQLite is used as default storage system instead of YAML files.
  # SQLite does not require any additional setup steps.
  type: SQLite
  mysql:
    host: localhost
    port: 3306
    database: streakrewards
    username: myuser
    password: mypass

menu_deleted: '&cYou successfully deleted the rewards menu ''%menu%'' with all its player data. This is irreversible!'
menu_created: '&aYou successfully created a new rewards menu called ''%menu%''!'
menu_already_exists: '&cThere already is a menu with that name.'
day_unlocked: '&aYou unlocked %player%''s next day for the %menu% menu.'
menu_not_found: '&cThat menu could not be found.'
already_claimed: '&cYou have already claimed this reward'
come_back_tomorrow: '&cCome back tomorrow to claim this reward'
cant_claim_yet: '&cYou can''t claim this reward yet'
streak: '&aYour current streak for the %menu% rewards is: &b%streak%'
streak_other: '&b%player%&a''s %menu% current streak is: &b%streak%'
day: '&aYour current day is: &b%day%'
day_other: '&b%player%&a''s %menu% current day is: &b%day%'
invalid_player: '&cThat player is not online'
reload: '&aSuccessfully reloaded the plugin'
must_specify_integer: '&cYou must specify a valid integer'
set_streak: '&aYou set &b%player%&a''s &b%menu% &astreak to &b%streak%'
boost: '&aYou boosted the menu &b%menu% &afor &b%player% &awith &b%boost% &aextra days'
reset: '&aYou reset &b%player%&a''s streak for the &b%menu%&a menu.'
npc_created: '&aYou successfully created a StreakRewards NPC. Use Citizens to customize and remove it.'
must_be_longer_online: '&cYou must be at least %min_time% minutes online in order to claim this reward.'
online_timer_reset_msg_enable: true
online_timer_reset_msg: '&aYour online timer has reset'
claimed_all: '&aYou quick-claimed a total of &b%claimed% &arewards!'

status_placeholder_claimable: '&a&lYou can claim your next reward!'
status_placeholder_cannotclaim: '&cNext reward in %hours%h %minutes%m %seconds%s'
no_permission: '&cYou are not allowed to claim daily rewards.'

enable_streak_reset_msg: true
streak_reset: '&cYou weren''t able to claim all daily rewards in a row, so your streak will be reset.'

enable_join_reminder: true
# wait this amount of seconds before reminding player that they have something to open
join_message_delay: 3
join_reminder:
  - ' &7&m-------------------------------'
  - ' &a&lYou can claim new rewards!'
  - ' &7You have &b%claimable% &7rewards pending.'
  - ''
  - ' &dUse /daily to claim them.'
  - ' &7&m-------------------------------'
The days property is for setting a custom amount of days. But make sure to only change this when having the shape to CUSTOM as all pre-made shapes are made for 30 days. You can still use a pre-made shape when having a different number set than 30, but shapes may not be fully displayed. If you set it to 30+ and you use a shape, it will most likely give errors.

[​IMG]
Each day in the menu can have its own item. Each day has an unclaimed, claimed, and canClaim item that is all configurable.
To edit the items and rewards go to the rewards.yml file inside the plugin folder.

Version 1.4.3 adds default items. So if you are using the latest version, you don't need to specify the unclaimed, claimed and canClaim items for each day individually. Just customize the default items.
If you have default items and daily-customized ones, the items in the day configuration will be set as the slot item. It will override the default item.

Version 1.4.3 also adds empty slot items. This pretty much means that, if you add the 'empty' item to the 'default_items' section in the rewards.yml file, it will fill up all empty slots on the menu.
So if you don't want the empty slots to be filled, just remove it from the config.

Add this to your configuration:
Code (Text):

default_items:
  claimed: # this item will be displayed in the menu as all days that were already claimed.
    material: STAINED_GLASS_PANE
    data: 5
    amount: -1 # set amount to -1 to make it fit the day amount
    displayName: '&bDay &a&l%day%'
    lore:
      - '&aYou claimed this day'
    glow: false
  canClaim: # this item will be displayed in the menu when as the next reward if it's claimable.
    material: STAINED_GLASS_PANE
    data: 1
    amount: -1 # set amount to -1 to make it fit the day amount
    displayName: '&bDay &a&l%day%'
    lore:
      - '&6Click to claim the rewards'
    glow: true
  unclaimed: # this item will be displayed in the menu when the day is not yet claimable.
    material: STAINED_GLASS_PANE
    data: 14
    amount: -1 # set amount to -1 to make it fit the day amount
    displayName: '&bDay &a&l%day%'
    lore:
      - '&cYou cannot claim this day yet'
    glow: false
  empty: # this item will be displayed in all empty slots of the menu. If you don't want the menu to be filled, just remove this.
    material: STAINED_GLASS_PANE
    data: 7
    amount: 1
    displayName: ' '
    lore: []
    glow: false
  nextReward: # this item will be displayed as the next reward in the menu if they have to wait for it
    material: STAINED_GLASS_PANE
    data: 1
    amount: -1
    displayName: '&bDay &a&l%day%'
    lore:
      - ''
      - '&cCome back tomorrow to claim this reward!'
      - '&6Claim this reward in %remaining_hours% hours, %remaining_minutes% minutes
      and %remaining_seconds% seconds'
 
Code (Text):

default_items:
  claimed: # this item will be displayed in the menu as all days that were already claimed.
    material: LIME_STAINED_GLASS_PANE
    amount: -1 # set amount to -1 to make it fit the day amount
    displayName: '&bDay &a&l%day%'
    lore:
      - '&aYou claimed this day'
    glow: false
  canClaim: # this item will be displayed in the menu when as the next reward if it's claimable.
    material: LIME_STAINED_GLASS_PANE
    amount: -1 # set amount to -1 to make it fit the day amount
    displayName: '&bDay &a&l%day%'
    lore:
      - '&6Click to claim the rewards'
    glow: true
  unclaimed: # this item will be displayed in the menu when the day is not yet claimable.
    material: RED_STAINED_GLASS_PANE
    amount: -1 # set amount to -1 to make it fit the day amount
    displayName: '&bDay &a&l%day%'
    lore:
      - '&cYou cannot claim this day yet'
    glow: false
  empty: # this item will be displayed in all empty slots of the menu. If you don't want the menu to be filled, just remove this.
    material: GRAY_STAINED_GLASS_PANE
    amount: 1
    displayName: ' '
    lore: []
    glow: false
  nextReward: # this item will be displayed as the next reward in the menu if they have to wait for it
    material: ORANGE_STAINED_GLASS_PANE
    amount: -1
    displayName: '&bDay &a&l%day%'
    lore:
      - ''
      - '&cCome back tomorrow to claim this reward!'
      - '&6Claim this reward in %remaining_hours% hours, %remaining_minutes% minutes
      and %remaining_seconds% seconds'
 

The unclaimed items are displayed when the target day is not yet claimed and not possible to be claimed yet.
The claimed items are displayed when the target day has already been claimed.
The canClaim item is displayed if the current day can be claimed.
The nextReward item is displayed as the next reward when it's not yet claimable but will be soon.

Edit the day's item by adding the day to the config. The format for this is day-<dayNumber>. So an example would be:
Code (Text):
day-5: # item of day 5
...
Now add the item options to a subsection called menu inside the day-5 section.
Code (Text):
day-5:
  menu:
    claimedItemName: '&a&lDay 5'
    claimedItemMaterial: WOOL
    claimedItemData: 5 # will be ignored on >1.13
    claimedItemAmount: 1 # if you remove this from the config, the amount will automatically be the day count, so now 5.
    claimedItemGlow: true # set to true if you want the item to glow (hidden enchantment)
    claimedItemLore:
    - ''
    - '&7You already claimed this reward'
 
    unclaimedItemName: '&c&lDay 5'
    unclaimedItemMaterial: WOOL
    unclaimedItemData: 14 # will be ignored on >1.13
    unclaimedItemAmount: 1 # if you remove this from the config, the amount will automatically be the day count, so now 5.
    unclaimedItemGlow: false # set to true if you want the item to glow (hidden enchantment)
    unclaimedItemLore:
    - ''
    - '&7You cannot claim this reward yet'

    canClaimItemName: '&c&lDay 5'
    canClaimItemMaterial: WOOL
    canClaimItemData: 10 # will be ignored on >1.13
    canClaimAmount: 1 # if you remove this from the config, the amount will automatically be the day count, so now 5.
    canClaimItemGlow: false # set to true if you want the item to glow (hidden enchantment)
    canClaimItemLore:
    - ''
    - '&aClick here to claim this reward'
 

Then when you set all (un)claimed and claimable item options, you can set the rewards for that day. You can do this by adding the property actions to the section of that day (in this case day-5).
The actions are described somewhere on this page. If you have AdditionsPlus installed, you can use their actions as well.
(Make sure all hyphens are under the word 'actions')
Code (Text):
day-5:
  actions:
  - '[console]give %player% stick 5'
  - '[message]&a&lYou successfully claimed the 5th streak reward and received 5 sticks!'
  - '[player]say I received 5 sticks :)'
When you have your shape set to CUSTOM, you will need to add the slot variable to the configuration as well. This will be the slot on the menu where the item will be placed. Note that slots are starting from 0.
Code (Text):
day-5:
  slot: 4
Click the spoiler below to see it all together.
The configuration below doesn't contain the slot option. Make sure to add it if you have your shape set to CUSTOM.
Code (Text):

default_items:
  claimed: # this item will be displayed in the menu as all days that were already claimed.
    material: STAINED_GLASS_PANE
    data: 5
    amount: -1 # set amount to -1 to make it fit the day amount
    displayName: '&bDay &a&l%day%'
    lore:
      - '&aYou claimed this day'
    glow: false
  canClaim: # this item will be displayed in the menu when as the next reward if it's claimable.
    material: STAINED_GLASS_PANE
    data: 1
    amount: -1 # set amount to -1 to make it fit the day amount
    displayName: '&bDay &a&l%day%'
    lore:
      - '&6Click to claim the rewards'
    glow: true
  unclaimed: # this item will be displayed in the menu when the day is not yet claimable.
    material: STAINED_GLASS_PANE
    data: 14
    amount: -1 # set amount to -1 to make it fit the day amount
    displayName: '&bDay &a&l%day%'
    lore:
      - '&cYou cannot claim this day yet'
    glow: false
  empty: # this item will be displayed in all empty slots of the menu. If you don't want the menu to be filled, just remove this.
    material: STAINED_GLASS_PANE
    data: 7
    amount: 1
    displayName: ' '
    lore: []
    glow: false
  nextReward: # this item will be displayed as the next reward in the menu if they have to wait for it
    material: STAINED_GLASS_PANE
    data: 1
    amount: -1
    displayName: '&bDay &a&l%day%'
    lore:
      - ''
      - '&cCome back tomorrow to claim this reward!'
      - '&6Claim this reward in %remaining_hours% hours, %remaining_minutes% minutes
      and %remaining_seconds% seconds'

day-5:
  actions:
  - '[console]give %player% stick 5'
  - '[message]&a&lYou successfully claimed the 5th streak reward and received 5 sticks!'
  - '[player]say I received 5 sticks :)'
 
Code (Text):

default_items:
  claimed: # this item will be displayed in the menu as all days that were already claimed.
    material: LIME_STAINED_GLASS_PANE
    amount: -1 # set amount to -1 to make it fit the day amount
    displayName: '&bDay &a&l%day%'
    lore:
      - '&aYou claimed this day'
    glow: false
  canClaim: # this item will be displayed in the menu when as the next reward if it's claimable.
    material: LIME_STAINED_GLASS_PANE
    amount: -1 # set amount to -1 to make it fit the day amount
    displayName: '&bDay &a&l%day%'
    lore:
      - '&6Click to claim the rewards'
    glow: true
  unclaimed: # this item will be displayed in the menu when the day is not yet claimable.
    material: RED_STAINED_GLASS_PANE
    amount: -1 # set amount to -1 to make it fit the day amount
    displayName: '&bDay &a&l%day%'
    lore:
      - '&cYou cannot claim this day yet'
    glow: false
  empty: # this item will be displayed in all empty slots of the menu. If you don't want the menu to be filled, just remove this.
    material: GRAY_STAINED_GLASS_PANE
    amount: 1
    displayName: ' '
    lore: []
    glow: false
  nextReward: # this item will be displayed as the next reward in the menu if they have to wait for it
    material: ORANGE_STAINED_GLASS_PANE
    amount: -1
    displayName: '&bDay &a&l%day%'
    lore:
      - ''
      - '&cCome back tomorrow to claim this reward!'
      - '&6Claim this reward in %remaining_hours% hours, %remaining_minutes% minutes
      and %remaining_seconds% seconds'
day-5:
  actions:
  - '[console]give %player% stick 5'
  - '[message]&a&lYou successfully claimed the 5th streak reward and received 5 sticks!'
  - '[player]say I received 5 sticks :)'
 
Code (Text):

  menu:
    claimedItemName: '&a&lDay 5'
    claimedItemMaterial: WOOL
    claimedItemData: 5 # will be ignored on >1.13
    claimedItemAmount: 1 # if you remove this from the config, the amount will automatically be the day count, so now 5.
    claimedItemGlow: true # set to true if you want the item to glow (hidden enchantment)
    claimedItemLore:
    - ''
    - '&7You already claimed this reward'

    unclaimedItemName: '&c&lDay 5'
    unclaimedItemMaterial: WOOL
    unclaimedItemData: 14 # will be ignored on >1.13
    unclaimedItemAmount: 1 # if you remove this from the config, the amount will automatically be the day count, so now 5.
    unclaimedItemGlow: false # set to true if you want the item to glow (hidden enchantment)
    unclaimedItemLore:
    - ''
    - '&7You cannot claim this reward yet'
canClaimItemName: '&c&lDay 5'
canClaimItemMaterial: WOOL
canClaimItemData: 10 # will be ignored on >1.13
canClaimAmount: 1 # if you remove this from the config, the amount will automatically be the day count, so now 5.
canClaimItemGlow: false # set to true if you want the item to glow (hidden enchantment)
canClaimItemLore:
- ''
- '&aClick here to claim this reward'
[/code]

[​IMG]
[​IMG]
[​IMG]
[​IMG]
[​IMG]
[​IMG]
[​IMG]

Placeholders (PlaceholderAPI and MVdWPlaceholderAPI)
For PlaceholderAPI, put the strong (bold) marked parts between %. And for MVdWPlaceholderAPI, put them between { }.
%identifier% and {identifier}.


streakrewards_streak returns the streak of a player
streakrewards_day returns the day of a player
streakrewards_remaining returns the remaining time until the next reward can be claimed. This is in the format '10d 10m 10s'
streakrewards_remaining_hours returns the remaining time in hours until the next reward.
streakrewards_remaining_minutes returns the remaining amount in minutes until the next reward.
streakrewards_remaining_seconds returns the remaining time in seconds until the next reward.
streakrewards_status switches between the left time until the next reward, and a message telling you that you can claim your reward. This is configurable in the config.

Leaderheads
sr-day returns the day's leaderboard (0-30)
sr-streak returns the streak's leaderboard

[​IMG]

  • Menu items not stopping with counting, so per day items and rewards.
  • Multiple menus (e.g. normal, vip, mvp etc.)
  • Advent-mode (based on actual dates)
  • More...
Having some ideas that are perfect for this plugin? Drop it in the Discussion section or join our Discord by clicking the image below.
Do the same if you have any issues with the plugin.
Do not drop a bad review with an issue that you haven't reported before. We are mostly fixing all reported issues within 24 hours (beta versions via Discord, if bought. Official releases on spigot will be released at least 24 hours later than the snapshot.


[​IMG]
[​IMG]
Terms And Conditions
All our premium resources have the same terms and conditions. By buying this resource, you will agree with them. So read them carefully.
Click the link below to view the terms and conditions.
https://gaagjescraft.net/terms-of-service