OFFERINGS
Premium Daily Kit Lottery
Weighted tiers · physical crates · forge smelting · curse rolls · full in-game admin
Minecraft 26.2 · Paper / Spigot · Java 25 · Version 1.4.3
At a glanceMinecraft 26.2 · Paper / Spigot · Java 25 · Version 1.4.3
- Daily weighted draws through polished chest menus — 6 rarity tiers from Common to Mythic
- Full physical crate pipeline: unidentified → forge smelt → key unlock → reel open
- Optional penalty rolls with tiered curse kits — sting without grief (health floors at one heart)
- 1,095-day attendance milestone catalog · 13 lifetime achievements
- Unlimited kits, loot tables, and custom items — bundled production catalog included
- Every admin task doable in-game; YAML saves live on every change
- Optional PlaceholderAPI · LuckPerms gates · YAML or SQLite player storage
Offerings turns your server's daily reward into a structured loot experience. Players claim weighted kit draws from a central hub. Each draw picks a rarity tier, then a kit or loot table at that tier, then delivers the payout through console commands and custom items.
Unlike chat-only stipend plugins, Offerings adds ceremony: unidentified physical crates, Identification Forge smelting, tier-key unlocking for Rare and above, reel-style opening animations, streak milestones spanning three years, lifetime achievements, and a player directory — all through chest GUIs.
Unlike chat-only stipend plugins, Offerings adds ceremony: unidentified physical crates, Identification Forge smelting, tier-key unlocking for Rare and above, reel-style opening animations, streak milestones spanning three years, lifetime achievements, and a player directory — all through chest GUIs.
Requirements
- Server: Paper or Spigot
- Minecraft: 26.2
- Java: 25
Soft dependencies (optional)
- PlaceholderAPI —
%offerings_*%expansion for scoreboards, chat, kit lore. Plugin loads and runs safely without it. - LuckPerms — recommended for tier, kit, and table permission gates.
Terminology
| You might say… | Plugin term | What it is |
|---|---|---|
| A prize package | Kit | Atomic payout — commands, custom items, icon, lore |
| A group of prizes | Loot table | Weighted sub-pool of kit IDs |
| Rarity band | Tier | common → uncommon → rare → epic → legendary → mythic |
| Global rarity odds | Tier weights | How often each tier is chosen on step 1 |
| Chance inside a tier | Weight | Relative odds for kits/tables at that tier |
| One spin | Roll | One tier → pool → payout cycle |
| Daily action | Claim | Player's draw when cooldown is clear |
| Item blueprint | Custom item | Reusable enchanted item def kits reference |
| Attendance bonus | Milestone | Streak-day one-time command rewards |
| Lifetime trophy | Achievement | Auto-unlock from anonymous stats |
Install
- Download
offerings-plugin-1.1.0.jar - Place in your server
plugins/folder - Remove any older
offerings-plugin-*.jarversions - Start or restart the server
- Bundled
loot/catalog,milestones/, andachievements.ymlextract on first run
First launch checklist
- Grant players
offerings.use(default: true) - Open
/offerings adminas an operator - Review Content Health — fix any errors before going live
- Tune Tier Rarity weights if defaults don't match your economy
- Set Claim Cadence (rolls per claim, cooldown, streak grace)
- Configure Crate Policy (identification on/off, key locking, smelt timing)
- Optionally enable Roll Modes penalties for risk/reward servers
- Place an Identification Forge for players (craft recipe in
/offerings guide) or/offerings giveforge
Five-minute setup path
- Simple survival: leave bundled catalog, set cooldown to 24h in Claim Cadence, done
- VIP legendary band: Tier Permission Gates → set Legendary view/roll nodes → assign in LuckPerms
- High-risk daily: Roll Modes → enable penalties, set penalty roll count
- Instant rewards: Crate Policy → disable identification required
- Custom prizes only: add kits to
loot/kits/custom.ymlwithcustom_prefix
What to edit where — quick reference
| Goal | Where |
|---|---|
| Draws per claim | Admin » Claim Cadence |
| Cooldown / streak grace | Admin » Claim Cadence |
| Global rarity | Admin » Tier Rarity |
| Smelt speed | Admin » Crate Policy » Smelt Timing |
| Enable curses | Admin » Roll Modes |
| Add a prize | Admin » Reward Kits » New Kit |
| Group prizes | Admin » Loot Tables |
| VIP-only tier | Tier Permission Gates + LuckPerms |
| Economy on win | Kit / milestone / achievement commands |
| Hand-edited YAML on disk | /offerings reload |
Opening the hub
/offerings— primary command (aliases:/offer,/rewards,/offering)/stipend— alternate hub command (aliases:/pay,/salary)- Configurable aliases:
/daily,/gamble,/slots,/gamba(server-defined) - Requires
offerings.use
Claiming your daily draw
- Open the hub when your cooldown is clear (spyglass header shows Ready to claim or time remaining)
- Click Claim Draw (center chest) when eligible
- Each claim runs rolls-per-claim reward rolls (default 3) plus optional penalty rolls if enabled
- You receive unidentified physical crates by default — contents are hidden until you work through the crate pipeline
- Streak, milestones, and achievements update automatically
Hub buttons
| Button | What it does |
|---|---|
| Claim Draw | Roll when cooldown clear and you have rollable tiers |
| Reward Catalog | Browse kits and loot tables you can view |
| Streak Milestones | Attendance reward progress board |
| Achievements | Lifetime stat trophies and progress |
| Crafting Guide | Visual recipes: forge, keys, unlock, crate flow |
| Player Directory | Browse other players' streaks and trophies |
| Open All Crates | Auto-open every ready crate in your inventory |
| Spyglass header | Your personalized tier odds, streak, cooldown, stats |
Reward catalog & previews
/offerings catalog(aliases:preview,pools,browse)- Browse by tier — only content you pass view permission checks for appears
- Drill into kit detail and loot table previews with entry weights
- Gated tiers and kits are hidden, not shown as locked — ungated content stays visible alongside gated content
Crate pipeline — step by step
| Step | Item / state | What to do |
|---|---|---|
| ① Unidentified | Echo shard (reward) or soul sand (penalty) | Earned from draws; lore scrambled; cannot open |
| ② Identify | Smelt in Identification Forge | Fuel + cook time reveals tier and kit identity |
| ③ Unlock | Identified crate (Rare+ when locking on) | Shapeless craft: crate key + crate |
| ④ Open | Unlocked or no-key crate | Right-click reel, shift+right-click stack, or hub Open All |
Identification Forge
- Craft via shaped recipe — see Crafting Guide in hub or
/offerings guide - Place the forge block → right-click to open smoker UI
/offerings identifyopens the nearest forge within 6 blocks- Cook time scales by tier (Common ~10s default → Mythic ~30 min default with curve enabled)
- Tier is determined when smelting starts — each crate cooks at the correct speed for its roll
Crafting guide screens
Access via hub Crafting Guide or/offerings guide:- Crafting Guide Hub — index of all recipes
- Identification Forge — shaped craft for portable forge item
- Crate Keys — per-tier key recipes (Rare, Epic, Legendary, Mythic)
- Unlock Crates — shapeless key + identified crate crafts
- Crate Flow — four-step pipeline walkthrough with links to recipes
Opening crates
- Right-click identified/unlocked crate in hand → reel scramble menu → payout delivers
- Shift + right-click → skip reel animation for that stack
- Hub » Open All Crates → processes every openable crate one reel at a time
- Payout = kit commands + custom items from
loot/items/
Milestones
/offerings milestones(aliases:streak,streaks)- 1,095 days of attendance rewards in bundled
milestones/days-*.ymlshards - Fires once when your streak reaches each keyed day
- Rewards = console commands (
%player%) + optional chat message
Achievements
/offerings achievements(alias:stats)- 13 defaults — unlock automatically when stats cross thresholds; no manual claim
- Types: total claims, total kits, best streak, unique kits, tier rolls
- Optional
commandson unlock;hidden: truefor secret trophies
Bundled achievements:
- First Offering — first daily claim
- Steady Hand — 3-day best streak
- Week of Faith — 7-day best streak
- Month of Devotion — 30-day best streak
- A Handful — 10 kits received
- Full Satchel — 50 kits
- Treasury — 200 kits
- Varied Taste — 5 unique kits
- Collector — 15 unique kits
- Rare Glimmer — first Rare tier roll
- Gilded Fortune — first Epic roll
- Legend Touched — first Legendary roll
- Mythic Whisper — first Mythic roll (hidden)
Player directory
- Hub button or
/offerings players(aliases:lookup,directory) - Requires
offerings.lookup(default: true) - Paginated player heads — online or all known players
- Read-only profile: streak, milestones claimed, achievements earned
Menu navigation (every chest GUI)
| Slot | Control | Icon |
|---|---|---|
| 49 | Close | Barrier |
| 45 | Previous page | Soul torch |
| 53 | Next page | Redstone torch |
| 49 (nested menus) | Back | Oak door |
Three-level lottery
- Tier roll — weighted pick from
tier-weights(only tiers you can roll with pool content) - Pool roll — every enabled kit + loot table at that tier competes on its own weight
- Payout — if a table wins, roll inside
entries; if kit hasloot-table:ref, delegate to sub-pool; then deliver commands + items
Default tier weights (10,000-point pool)
| Tier | Weight | Approx. share |
|---|---|---|
| Common | 9100 | 91.0% |
| Uncommon | 720 | 7.2% |
| Rare | 150 | 1.5% |
| Epic | 25 | 0.25% |
| Legendary | 4 | 0.04% (~1 in 2,500 per roll) |
| Mythic | 1 | 0.01% |
Loot table — two roles
- Pool entry — table has its own tier + weight; competes with kits on the daily roll
- Payout delegate — kit
loot-table:ref rolls that table when the kit wins for the final payout
Personalized hub odds
The hub spyglass renormalizes tier weights to your rollable pool — gated tiers excluded, remaining weights scaled to 100%. Players always see honest odds for what they can actually win.Streaks & cooldowns
- cooldown-hours — time between claims (default 1 hour in bundled config; tune for your server)
- streak-grace-hours — how long a missed period before streak resets (default 48 hours)
- rolls-per-claim — reward rolls per claim (default 3)
Roll modes
- Reward rolls — main daily kit draws (
roll-modes.rewards.enabled) - Penalty rolls — separate curse draws per claim (
roll-modes.penalties.enabled, default off) - penalty rolls-per-claim — how many curse rolls when enabled (default 1)
- Configure in Admin » Roll Modes or
/offerings rollmodes
Penalty kit features
outcome-type: penalty— toggle in kit editor- Debuff categories: Mobility, Combat, Survival, Visual, Resource, Curse
- Potion effects — slowness, mining fatigue, weakness, nausea, blindness, darkness, glowing, poison, wither, levitation, hunger, bad omen (preset templates in editor)
- Damage hearts — direct heart damage (floored at one heart remaining)
- Hunger drain — food level reduction
- Commands — economy drain, item taxes, etc.
Penalty loot tables
pool-type: penaltyon loot tables- Bundled
loot/tables/penalties.ymland per-tier*-curses.ymlkits - Kit catalog admin filter: Rewards vs Penalties toggle
Safety rule: Penalties never kill. A dedicated safety listener enforces a minimum of one heart remaining. Configure risk without grief.
Open with
Kit editor — every control:
Table editor:
Live persist: Every admin GUI change updates memory and writes YAML immediately. Online players see new weights, gates, and content without restart.
/offerings admin (offerings.admin). Admin hub header shows live counts: kits, tables, penalty kits, custom items, PlaceholderAPI status, content health, chat reminder interval.Reward Kits
Catalog: paginated kit list, search via chat, filter Rewards / Penalties, create new kit (chat id), fault indicators on broken entries.Kit editor — every control:
| Control | Action |
|---|---|
| Cycle Tier | Left/right click to change tier |
| Outcome toggle | Switch reward ↔ penalty |
| Debuff Category | Cycle mobility → combat → survival → visual → resource → curse |
| Add Debuff Effect | Cycle preset potion templates |
| Damage Hearts | Adjust direct heart damage |
| Hunger Drain | Adjust food level drain |
| Adjust Weight | Left +1, right +10, shift-click subtract |
| Enabled toggle | Include/exclude from rolls |
| Edit Name | Chat input |
| Add Lore Line | Chat input |
| Add Command | Console command; %player% supported |
| Loot Table Ref | Chat: table id or clear |
| Link Custom Item | Cycle loot/items/ defs |
| Create Item (Chat) | Paste /give line (256 char max) |
| View / Roll Permission | Chat: LuckPerms node or clear |
| Delete Kit | Chat confirmation |
Loot Tables
Catalog: paginated tables, search, create new (chat id).Table editor:
- Cycle tier, adjust weight, enabled toggle
- Toggle reward / penalty pool type
- Edit name (chat), add weighted entries (chat:
kit_id weight) - View / roll permission (chat)
- Delete with chat confirmation
Custom Items
- Browse all
loot/items/definitions - Create by id (chat) or held-item /give import (chat paste, 256 char limit)
- Delete with confirmation
- Items support material, amount, name, lore, enchants,
give-command
Tier Rarity
- Live edit
tier-weightsfor all six tiers - Increment/decrement controls with shift-click for larger steps
- Live percentage odds display
Tier Permission Gates
- Per tier: set view and roll LuckPerms nodes via chat (
clearto remove) - Persists to
config.yml→tier-permissions
Claim Cadence
- Rolls per claim — reward roll count
- Cooldown hours — time between draws
- Streak grace hours — missed-day forgiveness window
Roll Modes
- Toggle reward rolls on/off
- Toggle penalty rolls on/off
- Adjust penalty rolls per claim with increment/decrement/reset
Crate Policy
- Identification required — toggle unidentified vs identified crates on claim
- Locking enabled — global key-lock switch
- Per-tier locking — toggle key requirement per tier (default: Rare+ locked, Common/Uncommon open)
- Smelt Timing — opens Identification Smelt Timing sub-menu
Identification Smelt Timing
- Automatic curve — geometric scale from lowest tier base to highest tier anchor
- Base cook ms — lowest tier duration (default 10,000 ms / 10 seconds)
- Top-tier cook ms — highest tier anchor (default 1,800,000 ms / 30 minutes)
- Per-tier manual — when curve off, edit each tier individually
- Snapshot from curve — populate manual overrides when disabling curve
- Reset curve — restore default base and anchor values
- New tiers added to the enum pick up curve or manual values automatically
Give Items
- Player head lookup → grant menu per player
- Give Identification Forge item
- Give tier crate keys (Rare / Epic / Legendary / Mythic)
- Give unidentified reward or penalty crates (quantity control)
Player Cooldowns
- Player head lookup → view cooldown status
- Reset one player's draw cooldown
- Server-wide reset (
/offerings resetallequivalent)
Hub Aliases
- View active and configured hub-opening commands
- Add alias via chat (registers as a live command)
- Remove aliases
- Default bundled aliases include
gamba,slots,gamble,daily
Chat Reminder
- Toggle recurring broadcast for players whose draw is ready
- Set interval (minutes)
- Customize message, player clickable link, admin link (all via chat prompts)
Content Health
Scans all kits, tables, and items for:- Invalid or unknown materials
- Broken cross-references (missing kit ids in table entries, missing item refs)
- PlaceholderAPI tokens when PAPI is off or missing
- Command dependency issues
Reload & Save
/offerings reload from admin hub — re-reads all YAML from disk and restarts the chat reminder timer. Use after hand-editing files; not needed for in-game GUI edits (those save live).Chat prompt system
Text that doesn't fit buttons uses in-chat input with cancel support:- Kit: search, create id, name, lore, commands, loot-table ref, delete confirm, view/roll perms
- Table: create id, name, add entry, delete confirm, view/roll perms
- Item: create id, held import, /give parse, delete confirm
- Tier: view/roll perm nodes
- Broadcast: message, interval, player link, admin link
- Hub alias: add new command label
Live persist: Every admin GUI change updates memory and writes YAML immediately. Online players see new weights, gates, and content without restart.
Player commands
| Command | Aliases | Permission | Action |
|---|---|---|---|
/offerings | /offer, /rewards, /offering | offerings.use | Daily hub |
/stipend | /pay, /salary | offerings.use | Daily hub |
/offerings catalog | preview, pools, browse | offerings.use | Reward catalog |
/offerings milestones | streak, streaks | offerings.use | Milestone board |
/offerings achievements | stats | offerings.use | Achievement board |
/offerings players | lookup, directory | offerings.lookup | Player directory |
/offerings identify | forge, identification | offerings.use | Open nearest forge (6 blocks) |
/offerings guide | recipes, crafting | offerings.use | Crafting guide hub |
Admin commands
| Command | Permission | Action |
|---|---|---|
/offerings admin | offerings.admin | Management hub |
/offerings rollmodes | offerings.admin | Roll modes menu |
/offerings givekey <player> <tier> [amount] | offerings.admin | Grant crate keys (rare–mythic) |
/offerings giveforge [player] | offerings.admin | Grant forge item |
/offerings identify <player> | offerings.admin | Instant-identify target inventory |
/offerings reset <player> | offerings.admin | Clear one player's cooldown |
/offerings resetall | offerings.admin | Clear everyone's cooldown |
/offerings reload | offerings.admin | Reload YAML from disk |
Permission nodes
| Node | Default | Grants |
|---|---|---|
offerings.use | true | Hub, claim, catalog, achievements, identify, guide |
offerings.lookup | true | Player directory |
offerings.admin | op | Admin hub, reload, reset, give tools |
offerings.bypass | op | See and roll all gated content |
offerings.* | op | All of the above |
LuckPerms examples
Code:
lp group default permission set offerings.use true
lp group default permission set offerings.lookup true
lp group admin permission set offerings.admin true
lp group admin permission set offerings.bypass true
VIP legendary band:
Code:
lp group vip permission set offerings.legendary.view true
lp group vip permission set offerings.legendary.roll true
Per-kit gate (kit editor or YAML):
Code:
view-permission: offerings.mythic.preview
roll-permission: offerings.mythic.roll
File map
Code:
plugins/Offerings/
├── config.yml
├── achievements.yml
├── milestones/days-*.yml
├── loot/kits/ (classic, *-supplies, *-gear, *-curses, keys, custom.yml)
├── loot/items/ (per-tier enchanted blueprints)
├── loot/tables/ (per-tier, curated.yml, penalties.yml)
├── players.yml (yaml backend)
└── data.db (sqlite backend)
Legacy monolithic
rewards.yml, items.yml, loot-tables.yml still supported.config.yml sections
| Section | Controls |
|---|---|
tier-weights | Global tier roll odds |
rolls-per-claim | Reward rolls per daily claim |
cooldown-hours | Time between claims |
streak-grace-hours | Streak survival after missed period |
hub-command-aliases | Extra commands → hub GUI |
roll-modes | Reward/penalty toggles and penalty count |
crate-policy | Identification, smelt timing, per-tier locking |
tier-permissions | Per-tier view/roll nodes |
storage | yaml or sqlite, async save |
integrations | PlaceholderAPI toggle |
broadcast-reminder | Recurring ready-to-claim broadcast |
messages | Chat strings |
Kit YAML example
Code:
kits:
my_kit_id:
tier: uncommon
weight: 10
enabled: true
icon: CHEST
name: "&aDisplay Name"
lore:
- "&7Tooltip line"
commands:
- "give %player% minecraft:diamond 1"
- "eco give %player% 50"
items:
- example_fortune_pick
loot-table: mixed_supplies
view-permission: ""
roll-permission: ""
outcome-type: reward
debuff-category: mobility
effects:
- type: slowness
duration: 30
amplifier: 0
Loot table YAML example
Code:
tables:
mixed_supplies:
tier: uncommon
weight: 8
name: "Mixed Supply Crate"
icon: CHEST
enabled: true
pool-type: reward
entries:
fieldhand_rations: 12
kindling_bundle: 10
view-permission: ""
roll-permission: ""
Custom item YAML example
Code:
items:
example_fortune_pick:
material: IRON_PICKAXE
amount: 1
name: "&5Fortune Miner's Pick"
enchants:
fortune: 3
give-command: "give %player% minecraft:iron_pickaxe 1 fortune:3"
Server-specific kits
Addloot/kits/custom.yml with ids prefixed custom_ — never overwritten on plugin upgrade.Config recipes
- Flat pool: put kits in
loot/kits/with tiers + weights; minimal tables - Mystery crate: create table with kit entries; give table tier + weight in daily pool
- VIP legendary: tier gates + LuckPerms; legendary kits at
tier: legendary - Secret kit: per-kit view/roll permission in editor
- Kit delegates payout: kit
loot-table:ref rolls sub-pool on win - Economy hook:
eco give %player%in kit/milestone/achievement commands
Enable:
Expansion identifier:
config.yml → integrations.placeholderapi-enabled: trueExpansion identifier:
offerings| Placeholder | Returns |
|---|---|
%offerings_streak% | Current attendance streak |
%offerings_attendance_streak% | Alias for current streak |
%offerings_best_streak% | Highest streak reached |
%offerings_total_claims% | Lifetime daily claims |
%offerings_total_kits% | Lifetime kits received |
%offerings_total_penalties% | Lifetime penalty kits received |
%offerings_unique_kits% | Distinct kits ever received |
%offerings_milestones_claimed% | Milestones claimed count |
%offerings_milestones_total% | Milestones defined count |
%offerings_pending_rewards% | Queued unidentified reward crates |
%offerings_pending_penalties% | Queued unidentified penalty crates |
%offerings_rolls_<tier>% | Lifetime rolls per tier (common, rare, …) |
%offerings_achievements_earned% | Achievements unlocked |
%offerings_achievements_total% | Achievements defined |
%offerings_can_claim% | true / false |
%offerings_cooldown_formatted% | Time left or "ready" |
%offerings_cooldown_seconds% | Seconds until next claim |
%offerings_last_claim_epoch_ms% | Last claim unix ms |
%offerings_first_claim_epoch_ms% | First claim unix ms |
%offerings_last_claim_date% | ISO instant or "never" |
%offerings_rolls_per_claim% | Configured reward rolls |
%offerings_kits_total% | Kit count in repository |
%offerings_tables_total% | Loot table count |
%offerings_items_total% | Custom item def count |
Q: Do players need to reload after admin changes?
A: No. In-game admin edits apply immediately and save to YAML. Use
Q: Can I skip the forge and give rewards instantly?
A: Yes. Admin » Crate Policy → disable Identification Required. Crates are identified on claim (key locking still applies if enabled).
Q: Can Common and Uncommon crates be opened without keys?
A: Yes — by default only Rare+ require keys when locking is enabled. Per-tier toggles in Crate Policy.
Q: Will penalty rolls kill my players?
A: No. Health floors at one heart. Potion debuffs, hunger drain, and heart damage are capped by a safety listener.
Q: Can I disable reward rolls and only run penalties?
A: Yes — Roll Modes lets you toggle reward and penalty rolls independently.
Q: How do VIP tiers work?
A: Set tier view/roll permission nodes in Tier Permission Gates, then assign those LuckPerms nodes to VIP groups. Players without roll permission won't see those tiers in their odds or win them.
Q: Can VIPs preview Legendary without rolling it?
A: Yes — grant
Q: What's the difference between view and roll permission?
A: View = catalog/preview visibility. Roll = daily draw eligibility. Gates stack across tier → kit/table.
Q: Does PlaceholderAPI be required?
A: No. Fully optional. External
Q: YAML or SQLite for player data?
A: Default YAML (
Q: Will my custom kits be overwritten on update?
A: Put them in
Q: Why does Content Health show errors?
A: Usually invalid materials, broken kit refs in table entries, missing item refs, or PlaceholderAPI tokens with PAPI disabled. Faulty kits are excluded from rolls until fixed.
Q: Why can't a player claim?
A: Check: cooldown active, no rollable tiers (all gated or empty pools), reward rolls disabled, or
Q: Why do two unidentified crates smelt at different speeds?
A: Smelt duration scales by rolled tier. Tier is resolved at smelt start — higher tiers take longer (curve or manual per-tier times).
Q: Can I add my own hub command?
A: Yes — Admin » Hub Aliases, or
Q: How do nested loot tables work?
A: Two patterns: (1) table competes in daily pool and rolls inside entries, or (2) kit has
Q: What Minecraft version is supported?
A: 26.2 on Paper or Spigot with Java 25.
A: No. In-game admin edits apply immediately and save to YAML. Use
/offerings reload only after hand-editing files on disk.Q: Can I skip the forge and give rewards instantly?
A: Yes. Admin » Crate Policy → disable Identification Required. Crates are identified on claim (key locking still applies if enabled).
Q: Can Common and Uncommon crates be opened without keys?
A: Yes — by default only Rare+ require keys when locking is enabled. Per-tier toggles in Crate Policy.
Q: Will penalty rolls kill my players?
A: No. Health floors at one heart. Potion debuffs, hunger drain, and heart damage are capped by a safety listener.
Q: Can I disable reward rolls and only run penalties?
A: Yes — Roll Modes lets you toggle reward and penalty rolls independently.
Q: How do VIP tiers work?
A: Set tier view/roll permission nodes in Tier Permission Gates, then assign those LuckPerms nodes to VIP groups. Players without roll permission won't see those tiers in their odds or win them.
Q: Can VIPs preview Legendary without rolling it?
A: Yes — grant
view without roll on the tier or specific kits.Q: What's the difference between view and roll permission?
A: View = catalog/preview visibility. Roll = daily draw eligibility. Gates stack across tier → kit/table.
Q: Does PlaceholderAPI be required?
A: No. Fully optional. External
%tokens% in lore/commands are skipped safely when PAPI is absent.Q: YAML or SQLite for player data?
A: Default YAML (
players.yml). Set storage.type: sqlite for data.db; auto-imports existing YAML on first run.Q: Will my custom kits be overwritten on update?
A: Put them in
loot/kits/custom.yml with custom_ id prefix — that file is never overwritten.Q: Why does Content Health show errors?
A: Usually invalid materials, broken kit refs in table entries, missing item refs, or PlaceholderAPI tokens with PAPI disabled. Faulty kits are excluded from rolls until fixed.
Q: Why can't a player claim?
A: Check: cooldown active, no rollable tiers (all gated or empty pools), reward rolls disabled, or
offerings.use missing.Q: Why do two unidentified crates smelt at different speeds?
A: Smelt duration scales by rolled tier. Tier is resolved at smelt start — higher tiers take longer (curve or manual per-tier times).
Q: Can I add my own hub command?
A: Yes — Admin » Hub Aliases, or
hub-command-aliases in config.yml.Q: How do nested loot tables work?
A: Two patterns: (1) table competes in daily pool and rolls inside entries, or (2) kit has
loot-table: ref and delegates its payout to that table.Q: What Minecraft version is supported?
A: 26.2 on Paper or Spigot with Java 25.
| Symptom | Likely cause | Fix |
|---|---|---|
| Hub shows "No Eligible Rewards" | All tiers gated or empty pools | Check tier gates, kit enabled flags, Content Health |
| Player can't see gated kits | Missing view permission | Grant view node or offerings.bypass |
| Kit never wins on draws | Missing roll permission or zero weight | Check roll perm, weight, enabled, health errors |
| Crate won't open | Still unidentified or key-locked | Smelt in forge, craft key unlock for Rare+ |
| Forge won't smelt crate | Wrong item or identification off | Use unidentified crate; check crate policy |
| Admin edit not showing | Edited disk without reload | /offerings reload or use admin GUI instead |
| Placeholder shows raw token | PAPI off or wrong identifier | Enable integration; use %offerings_*% |
| Economy command fails | Plugin missing or wrong syntax | Test command in console; check Content Health |
| Duplicate plugin behavior | Two JAR versions loaded | Remove old offerings-plugin-*.jar |
Daily draws worth showing up for
Configured in minutes. Tuned for months. Earned, not handed out.
Offerings v1.4.3 · Paper/Spigot · Minecraft 26.2 · Java 25
Offerings v1.4.3 · Paper/Spigot · Minecraft 26.2 · Java 25
