Spooky season is here. Happy Halloween from Lattice!
Lattice
Docs/LatWitchsCauldron

LatWitchsCauldron

Throw ingredients into a cauldron and watch it brew a reward

No reviews yet

Overview

Module id
witchs-cauldron
Version
1.0.0
Platforms
paper
Price
$3.99
Authors
Atlantis Services

Install

  1. Install Lattice on a Paper or Folia server, if it is not there yet.
  2. Drop the LatWitchsCauldron jar into plugins/Lattice/modules/. It loads straight away.
  3. Put your license key in lattice.yml, then run /lat license refresh.
  4. Edit config/global/witchs-cauldron/ and apply it with /lat reload witchs-cauldron.

Commands

Command names and aliases are set in config.yml, so yours may differ. <required> [optional]

Command Description Permission
/cauldron
also /brew
Your cauldron recipe book witchscauldron.use
/cauldron book
Your cauldron recipe book witchscauldron.use
/cauldron place
Mark the cauldron you are looking at witchscauldron.admin
/cauldron remove
Unmark the cauldron you are looking at witchscauldron.admin
/cauldron list
List marked cauldrons witchscauldron.admin

Permissions

Permission Lets a player use
witchscauldron.use
/cauldron, /cauldron book
witchscauldron.admin
/cauldron place, /cauldron remove, /cauldron list

Placeholders

Filled in Lattice's own messages, and in any plugin that reads PlaceholderAPI when it is installed.

Placeholder Notes
%witchscauldron_brewed_today%
%witchscauldron_discovered%
%witchscauldron_recipes%

config.yml

Written to config/global/witchs-cauldron/config.yml on first start. Edit it, then /lat reload witchs-cauldron.

# Witch's cauldron: staff mark cauldrons with /cauldron place. Players throw ingredients in;
# when the pile matches a recipe the cauldron bubbles, then pops out a reward.

# Generated from WitchsCauldronSettings. Keys you delete return to their default;
# keys that are not in the schema are ignored and reported on load.

command:
  # Command for the recipe book, and for staff to mark cauldrons. Takes effect on restart.
  name: "cauldron"
  aliases:
    - "brew"
  permission: "witchscauldron.use"
  # Permission for /cauldron place, remove and list.
  admin-permission: "witchscauldron.admin"
# Timezone for start, end and the daily reset of brews, e.g. Europe/London.
timezone: "UTC"
# First day, as MM-DD, repeating every year. Leave start and end empty to run all year.
# An end before the start runs over the new year.
start: "10-01"
# Last day, inclusive, as MM-DD.
end: "11-01"
# Most ingredients a cauldron holds, 1 to 16. A full pot that matches no recipe fizzles.
# No recipe may have more ingredients than this.
max-ingredients: 6
# Ticks a matched recipe bubbles before the reward pops out, twenty to a second.
brew-ticks: 60
# Seconds without a new ingredient before a half-filled cauldron fizzles. The ingredients are lost.
idle-seconds: 30
# Brews each player can finish per day, across all recipes.
max-per-day: 20
# Ticks the result takes to fly from the cauldron to the brewer, twenty to a second.
fly-ticks: 16
# Size of the flying result, 0.1 to 4. Only for show.
fly-size: 0.6
# Seconds a thrown item is watched for falling into a cauldron before it is ignored.
item-seconds: 20
# Seconds before a player is told again that a cauldron refuses their items. 0 tells them every time.
notice-seconds: 3
# How far, in blocks, staff can be from the cauldron they mark or unmark, 1 to 10.
place-reach: 5
# Recipes, by id. The id is stored per player, so renaming one forgets who has found it.
# Ingredients are item names, repeated for more than one. Order never matters.
# result is the item that pops out (empty for none); the reward runs on top of it.
# firstTimeReward runs once, the first time a player brews the recipe.
# A recipe whose ingredients are a subset of another's would always win, so that is refused.
recipes:
  witchs-stew:
    # Shown to players in the recipe book and when it pops out.
    name: "Witch's Stew"
    # Item names, repeated for more than one, e.g. BONE twice. Order never matters.
    ingredients:
      - "RED_MUSHROOM"
      - "BROWN_MUSHROOM"
      - "SPIDER_EYE"
    # Item that flies to the brewer when it is done. Empty for none.
    result: "MUSHROOM_STEW"
    # How many of the result item, 1 to 64.
    result-amount: 2
    # Given every time this recipe is brewed.
    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>The cauldron coughs up a steaming stew."
      # Sound key, e.g. entity.player.levelup. Empty for none.
      sound: null
    # Given the first time a player brews this recipe, on top of the reward.
    first-time-reward:
      # Console commands. {player} is the player's name.
      commands:
        - "minecraft:xp add {player} 10 points"
      # Sent to the player as a success line in the server theme. Empty for none.
      message: "<accent>New recipe discovered!"
      # Sound key, e.g. entity.player.levelup. Empty for none.
      sound: "ui.toast.challenge_complete"
    # Seconds before the same player can brew this recipe again. 0 for none.
    cooldown-seconds: 0
  glowing-draught:
    # Shown to players in the recipe book and when it pops out.
    name: "Glowing Draught"
    # Item names, repeated for more than one, e.g. BONE twice. Order never matters.
    ingredients:
      - "GLOWSTONE_DUST"
      - "GLOW_BERRIES"
      - "SLIME_BALL"
    # Item that flies to the brewer when it is done. Empty for none.
    result: "GLOWSTONE"
    # How many of the result item, 1 to 64.
    result-amount: 2
    # Given every time this recipe is brewed.
    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>It glows. It really glows."
      # Sound key, e.g. entity.player.levelup. Empty for none.
      sound: null
    # Given the first time a player brews this recipe, on top of the reward.
    first-time-reward:
      # Console commands. {player} is the player's name.
      commands:
        - "minecraft:xp add {player} 10 points"
      # Sent to the player as a success line in the server theme. Empty for none.
      message: "<accent>New recipe discovered!"
      # Sound key, e.g. entity.player.levelup. Empty for none.
      sound: "ui.toast.challenge_complete"
    # Seconds before the same player can brew this recipe again. 0 for none.
    cooldown-seconds: 0
  bone-broth:
    # Shown to players in the recipe book and when it pops out.
    name: "Bone Broth"
    # Item names, repeated for more than one, e.g. BONE twice. Order never matters.
    ingredients:
      - "BONE"
      - "BONE"
      - "ROTTEN_FLESH"
    # Item that flies to the brewer when it is done. Empty for none.
    result: "COOKED_BEEF"
    # How many of the result item, 1 to 64.
    result-amount: 3
    # Given every time this recipe is brewed.
    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>Somehow, it smells delicious."
      # Sound key, e.g. entity.player.levelup. Empty for none.
      sound: null
    # Given the first time a player brews this recipe, on top of the reward.
    first-time-reward:
      # Console commands. {player} is the player's name.
      commands:
        - "minecraft:xp add {player} 10 points"
      # Sent to the player as a success line in the server theme. Empty for none.
      message: "<accent>New recipe discovered!"
      # Sound key, e.g. entity.player.levelup. Empty for none.
      sound: "ui.toast.challenge_complete"
    # Seconds before the same player can brew this recipe again. 0 for none.
    cooldown-seconds: 0
  pumpkin-potion:
    # Shown to players in the recipe book and when it pops out.
    name: "Pumpkin Potion"
    # Item names, repeated for more than one, e.g. BONE twice. Order never matters.
    ingredients:
      - "PUMPKIN"
      - "SUGAR"
      - "EGG"
    # Item that flies to the brewer when it is done. Empty for none.
    result: "PUMPKIN_PIE"
    # How many of the result item, 1 to 64.
    result-amount: 3
    # Given every time this recipe is brewed.
    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>A potion, if you squint. Mostly pie."
      # Sound key, e.g. entity.player.levelup. Empty for none.
      sound: null
    # Given the first time a player brews this recipe, on top of the reward.
    first-time-reward:
      # Console commands. {player} is the player's name.
      commands:
        - "minecraft:xp add {player} 10 points"
      # Sent to the player as a success line in the server theme. Empty for none.
      message: "<accent>New recipe discovered!"
      # Sound key, e.g. entity.player.levelup. Empty for none.
      sound: "ui.toast.challenge_complete"
    # Seconds before the same player can brew this recipe again. 0 for none.
    cooldown-seconds: 0
  dragons-breath:
    # Shown to players in the recipe book and when it pops out.
    name: "Dragon's Breath"
    # Item names, repeated for more than one, e.g. BONE twice. Order never matters.
    ingredients:
      - "FERMENTED_SPIDER_EYE"
      - "BLAZE_POWDER"
      - "GUNPOWDER"
      - "NETHER_WART"
    # Item that flies to the brewer when it is done. Empty for none.
    result: "EXPERIENCE_BOTTLE"
    # How many of the result item, 1 to 64.
    result-amount: 2
    # Given every time this recipe is brewed.
    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: "<accent>The cauldron roars!"
      # Sound key, e.g. entity.player.levelup. Empty for none.
      sound: "entity.ender_dragon.growl"
    # Given the first time a player brews this recipe, on top of the reward.
    first-time-reward:
      # Console commands. {player} is the player's name.
      commands:
        - "minecraft:xp add {player} 10 points"
      # Sent to the player as a success line in the server theme. Empty for none.
      message: "<accent>New recipe discovered!"
      # Sound key, e.g. entity.player.levelup. Empty for none.
      sound: "ui.toast.challenge_complete"
    # Seconds before the same player can brew this recipe again. 0 for none.
    cooldown-seconds: 600
sounds:
  # Sound keys, e.g. entity.witch.celebrate. Empty for none, here and below. Played when an ingredient drops in.
  plop: "entity.slime.squish_small"
  # Played when a recipe starts brewing, and again every second while it does.
  brewing: "block.brewing_stand.brew"
  # Played when the reward pops out.
  done: "entity.witch.celebrate"
  # Played when a brew fizzles.
  fizzle: "entity.generic.extinguish_fire"
  # Played when the result reaches the brewer.
  collect: "entity.item.pickup"
particles:
  # Particles for each moment. Kinds: NONE, BUBBLES, SMOKE, WITCH, ENCHANT, SOUL, FLAME, SPARKLE, CLOUD.
  # Played when an ingredient drops in.
  plop: BUBBLES
  # Played all the while a recipe brews.
  bubbling: BUBBLES
  # Played now and then while a recipe brews, over the bubbles.
  wisps: WITCH
  # Played when the reward pops out.
  done: SPARKLE
  # Played when a brew fizzles.
  fizzle: SMOKE

Messages

Every line players see, in config/global/witchs-cauldron/messages.yml. Uses MiniMessage formatting.

Show messages.yml (30 lines)
# Player-facing text for witchs-cauldron.
# Placeholders in {braces} are filled in by the module.
# A key you delete falls back to its built-in default.

already-marked: That cauldron is already marked.
book-found: <muted>-</muted> <accent>{recipe}</accent><muted>:</muted> <body>{ingredients}
book-header: '<body>Recipe book: <accent>{found}</accent><muted>/</muted><accent>{total}</accent>
  found, <accent>{today}</accent><muted>/</muted><accent>{limit}</accent> brews today'
book-unknown: <muted>- ???</muted> <body>{count} ingredients
brewed: <body>The cauldron pops out <accent>{recipe}</accent>!
brewing: <body>The cauldron begins to bubble...
busy: Your recipe book is still loading. Try again in a moment.
closed: The cauldrons are cold right now.
fizzle-cooldown: <emphasis>{recipe}</emphasis> needs to rest. Try again in {seconds}
  seconds.
fizzle-idle: The cauldron cools and fizzles. The ingredients are gone.
fizzle-limit: You have brewed enough for today. The ingredients are gone.
fizzle-no-match: The cauldron fizzles. That was not a recipe.
fizzle-storage: The cauldron fizzles. Your recipe book could not be reached.
limit-reached: You have brewed enough for today. Come back tomorrow!
list-empty: No cauldrons are marked. Look at one and use /cauldron place.
list-entry: <muted>-</muted> <accent>{where}</accent>
list-header: '<body>Marked cauldrons (<accent>{count}</accent>):'
no-target: Look at a cauldron, within {reach} blocks.
not-a-cauldron: That is not a cauldron.
not-marked: That cauldron is not marked.
occupied: Someone else is brewing here.
placed: <body>Marked the cauldron at <accent>{where}</accent>.
players-only: Only a player can do that.
removed: <body>Unmarked the cauldron at <accent>{where}</accent>.