Modules
OverviewLatCalendarLatAnglerLatCandyDropsLatFrostbiteLatGhostHuntLatUnwrapPteroAlertsPteroCrashguardPteroGroupsLatSantasSleighLatTrickOrTreatLatWitchsCauldronLatWrappedLatCalendar
Fully customizable Advent Calendar to spice up the holidays
Overview
- Module id
- advent-calendar
- Version
- 1.0.0
- Platforms
- Price
- $4.99
- Authors
- Atlantis Services
Install
- Install Lattice on a Paper or Folia server, if it is not there yet.
- Drop the LatCalendar jar into
plugins/Lattice/modules/. It loads straight away. - Put your license key in
lattice.yml, then run/lat license refresh. - Edit
config/global/advent-calendar/and apply it with/lat reload advent-calendar.
Commands
Command names and aliases are set in config.yml, so yours may differ. <required> [optional]
| Command | Description | Permission |
|---|---|---|
/advent
also /calendar
|
Open the advent calendar | advent.use |
/advent date [door|date|clear] |
advent.admin |
|
/advent progress <player> |
advent.admin |
|
/advent reset <player> [day] |
advent.admin |
|
/advent resetall [confirm] |
advent.admin |
|
/advent give <player> <day> |
advent.admin |
Permissions
| Permission | Lets a player use |
|---|---|
advent.use |
/advent |
advent.admin |
/advent date, /advent progress, /advent reset, /advent resetall, /advent give |
Placeholders
Filled in Lattice's own messages, and in any plugin that reads PlaceholderAPI when it is installed.
| Placeholder | Notes |
|---|---|
%advent_day% |
|
%advent_opened% |
config.yml
Written to config/global/advent-calendar/config.yml on first start. Edit it, then /lat reload advent-calendar.
# An advent calendar: one door a day, opened from /advent. # Generated from AdventSettings. Keys you delete return to their default; # keys that are not in the schema are ignored and reported on load. # Timezone that decides when a day starts, e.g. Europe/London. timezone: "UTC" # Day door 1 opens, as MM-DD. Door N opens N - 1 days later. Repeats every year. start: "12-01" # Number of doors, 1 to 54. The menu layout needs at least this many D slots. doors: 24 # Let players open doors they missed, until the last door's day ends. catch-up: false # Given for any door with no entry in rewards. default-reward: # Console commands. {player} is the player's name. commands: [] # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent>!" # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+1 <gold>Advent Gift" # Rewards by door number, e.g. "24". Replaces defaultReward for that door. rewards: 1: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:cookie 16" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+16 Cookies</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+16 <gold>Cookies" 2: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:snow_block 16" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+16 Snow Blocks</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+16 <gold>Snow Blocks" 3: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:iron_ingot 8" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+8 Iron Ingots</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+8 <gold>Iron Ingots" 4: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:sweet_berries 32" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+32 Sweet Berries</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+32 <gold>Sweet Berries" 5: # Console commands. {player} is the player's name. commands: - "experience add {player} 5 levels" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+5 Levels</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+5 <gold>Levels" 6: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:gold_ingot 8" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+8 Gold Ingots</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.firework_rocket.twinkle" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+8 <gold>Gold Ingots" 7: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:cake 1" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+1 Cake</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+1 <gold>Cake" 8: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:lantern 8" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+8 Lanterns</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+8 <gold>Lanterns" 9: # Console commands. {player} is the player's name. commands: - "effect give {player} minecraft:speed 600 1" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>10 min Speed II</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>10 min <gold>Speed II" 10: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:emerald 8" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+8 Emeralds</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+8 <gold>Emeralds" 11: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:golden_apple 2" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+2 Golden Apples</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+2 <gold>Golden Apples" 12: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:diamond 2" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+2 Diamonds</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.firework_rocket.twinkle" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+2 <gold>Diamonds" 13: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:spruce_sapling 8" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+8 Spruce Saplings</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+8 <gold>Spruce Saplings" 14: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:firework_rocket 16" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+16 Firework Rockets</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+16 <gold>Firework Rockets" 15: # Console commands. {player} is the player's name. commands: - "experience add {player} 10 levels" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+10 Levels</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+10 <gold>Levels" 16: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:lapis_lazuli 32" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+32 Lapis Lazuli</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+32 <gold>Lapis Lazuli" 17: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:name_tag 2" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+2 Name Tags</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+2 <gold>Name Tags" 18: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:diamond 4" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+4 Diamonds</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.firework_rocket.twinkle" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+4 <gold>Diamonds" 19: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:experience_bottle 16" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+16 Bottles o' Enchanting</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+16 <gold>Bottles o' Enchanting" 20: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:ender_pearl 8" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+8 Ender Pearls</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+8 <gold>Ender Pearls" 21: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:shulker_shell 2" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+2 Shulker Shells</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+2 <gold>Shulker Shells" 22: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:enchanted_golden_apple 1" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+1 Enchanted Golden Apple</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+1 <gold>Enchanted Golden Apple" 23: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:diamond_block 1" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>You opened door <accent>{day}</accent> and got <accent>+1 Diamond Block</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "entity.player.levelup" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+1 <gold>Diamond Block" 24: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:netherite_ingot 1" - "give {player} minecraft:totem_of_undying 1" - "tellraw @a [{\"text\":\"★ \",\"color\":\"gold\"},{\"text\":\"{player}\",\"color\":\"yellow\"},{\"text\":\" opened the final door of the Advent Calendar!\",\"color\":\"green\"}]" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>Merry Christmas! You opened the final door and got <accent>+1 Netherite Ingot</accent> and <accent>+1 Totem of Undying</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: "ui.toast.challenge_complete" # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<aqua>+1 <gold>Netherite Ingot" - "<aqua>+1 <gold>Totem of Undying" # Players with this permission also get the premium reward for a door. premium-permission: "advent.premium" # Premium rewards by door number. A door with no entry has no premium reward. premium: 6: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:diamond 2" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>Premium bonus: <accent>+2 Diamonds</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: null # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<light_purple>✦ Premium: <aqua>+2 <gold>Diamonds" 12: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:enchanted_golden_apple 1" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>Premium bonus: <accent>+1 Enchanted Golden Apple</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: null # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<light_purple>✦ Premium: <aqua>+1 <gold>Enchanted Golden Apple" 18: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:experience_bottle 16" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>Premium bonus: <accent>+16 Bottles o' Enchanting</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: null # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<light_purple>✦ Premium: <aqua>+16 <gold>Bottles o' Enchanting" 24: # Console commands. {player} is the player's name. commands: - "give {player} minecraft:diamond_block 2" # Sent to the player as a success line in the server theme. Empty for none. message: "<body>Premium bonus: <accent>+2 Diamond Blocks</accent>." # Sound key, e.g. entity.player.levelup. Empty for none. sound: null # What the reward is, in lines. Shown in the menu where a door's lore has {reward}. description: - "<light_purple>✦ Premium: <aqua>+2 <gold>Diamond Blocks" # Language for month names in {date}, as a language tag such as en, de or fr. locale: "en" command: # Command that opens the calendar. Takes effect on restart. name: "advent" aliases: - "calendar" permission: "advent.use" # Permission for the admin and testing subcommands: date, progress, reset, resetall, give. admin-permission: "advent.admin" # How the calendar menu looks. menu: # Menu title. {year} is the year the calendar began. title: "<gradient:#ff4d4d:#ffd700:#4dff88><bold>Advent Calendar</bold></gradient> <dark_gray>{year}" # One line per row, nine characters each, one to six rows. # D is a door, filled in order: door 1 is the first D reading left to right, top to bottom. # X is a close button (none by default). A space is an empty slot. Any other character is looked up in decorations. layout: - "rgrgrgrgr" - "gDDDDDDDg" - "rDDDDDDDr" - "gDDDDDDDg" - "rgrDDDrgr" - "grgrgrgrg" # Icons for the other layout characters, keyed by the character. decorations: r: # Item material, e.g. RED_SHULKER_BOX or PLAYER_HEAD. material: "RED_STAINED_GLASS_PANE" # Head texture when material is PLAYER_HEAD: the base64 value from a head database site. texture: null name: " " lore: [] # Enchantment glint. glowing: false g: # Item material, e.g. RED_SHULKER_BOX or PLAYER_HEAD. material: "LIME_STAINED_GLASS_PANE" # Head texture when material is PLAYER_HEAD: the base64 value from a head database site. texture: null name: " " lore: [] # Enchantment glint. glowing: false close: # Item material, e.g. RED_SHULKER_BOX or PLAYER_HEAD. material: "BARRIER" # Head texture when material is PLAYER_HEAD: the base64 value from a head database site. texture: null name: "<red><bold>Close" lore: - "<gray>See you tomorrow!" # Enchantment glint. glowing: false # Show each door as a stack of its day number, so the calendar reads at a glance. day-as-amount: true # Door looks by state. Each state is a list: door N uses look (N - 1) mod size, so two looks alternate. # In name and lore: {day} is the door number, {date} the day it opens. # A lore line that is exactly {reward} or {premium} becomes that door's reward description. doors: locked: - # Item material, e.g. RED_SHULKER_BOX or PLAYER_HEAD. material: "PLAYER_HEAD" # Head texture when material is PLAYER_HEAD: the base64 value from a head database site. texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjFiYzlkNDJiMDA0MWU4Zjk1Y2I5YjI2NjI4ZmRhZjUwY2QwZTM2ZjdiYjlkNmIzYTRkMmFmMzk0OWRhOTdkNiJ9fX0=" name: "<gradient:#ff6b6b:#c0392b><bold>{date}" lore: - "<dark_gray>Advent Reward" - "" - "<gray>A surprise is waiting..." - "" - "<red>✘ Unlocks on <white>{date}" # Enchantment glint. glowing: false open: - # Item material, e.g. RED_SHULKER_BOX or PLAYER_HEAD. material: "PLAYER_HEAD" # Head texture when material is PLAYER_HEAD: the base64 value from a head database site. texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmIxZWM3ZGM3NTMwNjFjYTE3NDQyNGVhNDVjZjk0OTBiMzljZDVkY2NhNDc3ZDEzOGE2MDNlNmJlNzU1ZWM3MiJ9fX0=" name: "<gradient:#7cfc9a:#1ec963><bold>{date}" lore: - "<dark_gray>Advent Reward" - "" - "{reward}" - "{premium}" - "" - "<yellow>Click to claim!" # Enchantment glint. glowing: true claimed: - # Item material, e.g. RED_SHULKER_BOX or PLAYER_HEAD. material: "PLAYER_HEAD" # Head texture when material is PLAYER_HEAD: the base64 value from a head database site. texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2FhMDNmODE3MzQxY2FhNTZmYmZjNmQzZjI4MTFhZGI5ODliNjExNzgxMTYyYzEyYWY0YzU4YWYxOGM1M2M3MiJ9fX0=" name: "<gray>{date}" lore: - "<dark_gray>Advent Reward" - "" - "{reward}" - "{premium}" - "" - "<green>✔ Claimed" # Enchantment glint. glowing: false missed: - # Item material, e.g. RED_SHULKER_BOX or PLAYER_HEAD. material: "PLAYER_HEAD" # Head texture when material is PLAYER_HEAD: the base64 value from a head database site. texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDY1Y2FhNmFhZWQzNGQyYzQyODUyNWJkZTY2ZWJlZjUyYTdmZmM5ODg3YjUyMzZkMTE5OTY4MDMxNDcxNTU5MyJ9fX0=" name: "<dark_gray><st>{date}</st>" lore: - "<dark_gray>Advent Reward" - "" - "{reward}" - "{premium}" - "" - "<red>✘ Missed" # Enchantment glint. glowing: false # Looks for single doors by number, e.g. "24", over the shared ones. door-overrides: {} sounds: # Played when the menu opens. Empty for none. open: "block.chest.open" # Played when a click is refused: a locked, missed or claimed door. Empty for none. denied: "entity.villager.no"
Messages
Every line players see, in config/global/advent-calendar/messages.yml. Uses MiniMessage formatting.
Show messages.yml (37 lines)
# Player-facing text for advent-calendar. # Placeholders in {braces} are filled in by the module. # A key you delete falls back to its built-in default. already: You already opened that door. bad-date: '''{date}'' is not a date. Use yyyy-MM-dd or MM-DD, or clear.' bad-day: '''{day}'' is not a door. Doors are 1 to {doors}.' busy: Your calendar is still loading. Try again in a moment. closed: The calendar opens in <accent>{days}</accent> day(s). date: '{month} {day}{suffix}' date-cleared: <body>Test date cleared. Today is <accent>{date}</accent>. date-closed: The calendar is closed on that date. It runs <accent>{first}</accent> to <accent>{last}</accent>. Try a door number, e.g. date 5. date-open: <body>Door <accent>{door}</accent> is open on that date. date-set: <body>This server now treats today as <accent>{date}</accent> for the calendar, until restart or date clear. date-show: '<body>Today for the calendar: <accent>{date}</accent>, door <accent>{door}</accent>{test}' date-test: ' <danger>(test date)' given: <body>Gave door <accent>{day}</accent>'s reward to <accent>{player}</accent>. Nothing was recorded. locked: Door <accent>{day}</accent> opens on <accent>{date}</accent>. missed: You missed door <accent>{day}</accent>. no-door: none not-online: <emphasis>{player}</emphasis> must be online on this server. not-open: That door cannot be opened right now. players-only: Only a player can open the calendar. progress: '<body>Doors opened by <accent>{player}</accent> in {year}: <accent>{doors}</accent>' reset-all: <body>Reset <accent>{count}</accent> claim(s) for {year}. reset-all-confirm: This wipes every player's doors for {year}. Add confirm to do it. reset-player: <body>Reset {what} for <accent>{player}</accent> in {year}. reset-what-all: every door reset-what-day: door {day} suffix-1: st suffix-2: nd suffix-3: rd suffix-other: th unknown-player: No player called <emphasis>{player}</emphasis> has played here.
