Skip to content

SnGifts v2.0.0

Choose a tag to compare

@ValentinTarnovsky ValentinTarnovsky released this 12 Aug 01:18
· 5 commits to main since this release

Daily playtime gifts for Paper servers. Players accrue playtime, tiers unlock as they hit their
thresholds, and each tier pays a set of rewards drawn fresh every gift day.

Requires SnLib 1.27.0 or newer

This is not optional and it is not a soft warning. The required API level is compiled into this
jar, so SnGifts 2.0.0 refuses to enable on any server whose SnLib.jar is older than 1.27.0
and says so in the console. Update SnLib first.

What it does

  • Playtime tiers. Any number of gift tiers, each with its own time-needed-minutes. Order
    is by threshold ascending, so inserting a tier never renumbers the ones players already know.
  • A configurable menu. Placement lives entirely in guis/gifts.yml as a layout mask plus
    named regions - move, add or remove cells without touching a slot number.
  • Reward pools. rewards.yml holds the pool; each gift day draws from it and persists the
    draw, so every player who claims a tier that day gets the same reward set. Supports console
    commands with {player} and vault:<amount> for economy payouts.
  • A daily reset on your own schedule and timezone, with a server-wide announcement.
  • Per-address claim limits to blunt alt farming, with a bypass permission for staff.
  • Unclaimed reminders and unlock notifications, both on their own intervals.
  • SQLite or MySQL, all I/O off the main thread.
  • PlaceholderAPI and Vault are both optional and detected at runtime.

Commands

Command Permission
/gifts (alias /regalos, renameable in config.yml) sngifts.use
/gifts reset <player> sngifts.admin.reset
/gifts resetall sngifts.admin.resetall
/gifts resetgifts sngifts.admin.resetgifts
/gifts bypass sngifts.admin.bypass
/gifts reload, /gifts debug sngifts.admin.reload, sngifts.admin.debug

sngifts.use gates the whole command tree, including the admin subcommands. If you restrict it,
grant it to staff as well.

Configuration

Every player-facing string lives in lang/messages_en.yml and every value in config.yml. Both
are managed: new keys are merged in on update while your edits and comments are preserved, so
you never have to diff a config by hand. There is no config-version key to maintain.

Notes

  • claim.ip-limit-per-gift ships at 1. On a network behind a proxy without IP forwarding, or
    for households and CGNAT, set it to 0 to disable the limit - config.yml documents the
    trade-off inline.
  • The jar is obfuscated and licence-gated. It checks its licence once at startup and does not
    phone home afterwards.