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

LatAngler

Legendary fish, a fishing journal, lucky hook events and messages in bottles.

No reviews yet

Overview

Module id
angler
Version
1.0.0
Platforms
foliapaper
Price
$4.99
Authors
Atlantis Services

Install

  1. Install Lattice on a Paper or Folia server, if it is not there yet.
  2. Drop the LatAngler 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/angler/ and apply it with /lat reload angler.

Commands

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

Command Description Permission
/angler
Legendary fish trophies and Angler admin -
/angler trophies
Biggest legendary catches -
/angler event
Lucky hook events angler.admin
/angler event start <event> [minutes]
angler.admin
/angler event stop
angler.admin
/angler event list
angler.admin
/angler legendary
Legendary fish angler.admin
/angler legendary spawn [player]
angler.admin
/angler legendary clear
angler.admin
/angler journal
Player journals angler.admin
/angler journal reset <player>
angler.admin
/angler bottle
Messages in bottles angler.admin
/angler bottle give <player> [tier] [amount]
angler.admin
/fisherman
also /messageinabottle, /bottles
Hand messages in bottles to the Fisherman -
/journal
also /fishjournal
Open your fishing journal -

Permissions

Permission Lets a player use
angler.admin
/angler event, /angler event start, /angler event stop, /angler event list, /angler legendary, /angler legendary spawn, /angler legendary clear, /angler journal, /angler journal reset, /angler bottle, /angler bottle give

Placeholders

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

Placeholder Notes
%angler_journal%
%angler_journal_total%
%angler_journal_percent%
%angler_trophies%
%angler_event%
%angler_event_left%

config.yml

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

# Angler: four additions to vanilla fishing, each switched on or off below.
# Legendary fish surface near players, a journal collects catches, lucky hook events
# make fishing better for a while, and messages in bottles are handed in for rewards.

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

# Timezone for event clock times and trophy dates, e.g. Europe/London.
timezone: "UTC"
legendary:
  # Legendary fish surface in the water near a random player now and then.
  enabled: true
  # Shortest wait between two legendary fish, in minutes.
  min-minutes: 20
  # Longest wait between two legendary fish, in minutes. The wait is random between the two.
  max-minutes: 40
  # How long the bubbles stay before the fish escapes, in seconds.
  lifetime-seconds: 180
  # How far from the chosen player to look for open water, in blocks (2 to 16).
  search-radius: 8
  # A hook this close to the bubbles, in blocks, can catch the fish.
  hotspot-radius: 3.0
  # Chance, 0 to 1, that a catch from the bubbles is the legendary fish rather than a normal one.
  hook-chance: 0.5
  # Players this close to the bubbles, in blocks, are told the fish has surfaced, escaped or been caught.
  notice-radius: 48
  # Worlds the fish may surface in. Empty allows every world.
  worlds: []
  # The fish. One is picked at random each time, by weight.
  fish:
    - # Stored with each catch. Do not change it once fish have been caught.
      id: "old-gnarl"
      # Display name, plain text. Colours come from messages.yml.
      name: "Old Gnarl"
      # One line about the fish, shown on the trophy. Empty for none.
      description: "A cod older than the server."
      # Item the trophy is, e.g. COD or TROPICAL_FISH.
      material: "COD"
      # How often this fish is picked compared with the others.
      weight: 3
      # Lightest the fish can be, in kg.
      min-kg: 18.0
      # Heaviest the fish can be, in kg. Heavy fish are rarer than light ones.
      max-kg: 55.0
      # Given to the catcher.
      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: null
        # Sound key, e.g. entity.player.levelup. Empty for none.
        sound: "ui.toast.challenge_complete"
        # What the reward is, in lines. Shown in menus that describe the reward.
        description: []
    - # Stored with each catch. Do not change it once fish have been caught.
      id: "silver-ghost"
      # Display name, plain text. Colours come from messages.yml.
      name: "The Silver Ghost"
      # One line about the fish, shown on the trophy. Empty for none.
      description: "Seen by many, landed by few."
      # Item the trophy is, e.g. COD or TROPICAL_FISH.
      material: "SALMON"
      # How often this fish is picked compared with the others.
      weight: 2
      # Lightest the fish can be, in kg.
      min-kg: 12.0
      # Heaviest the fish can be, in kg. Heavy fish are rarer than light ones.
      max-kg: 38.0
      # Given to the catcher.
      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: null
        # Sound key, e.g. entity.player.levelup. Empty for none.
        sound: "ui.toast.challenge_complete"
        # What the reward is, in lines. Shown in menus that describe the reward.
        description: []
    - # Stored with each catch. Do not change it once fish have been caught.
      id: "reef-king"
      # Display name, plain text. Colours come from messages.yml.
      name: "Reef King"
      # One line about the fish, shown on the trophy. Empty for none.
      description: "Every colour of the reef at once."
      # Item the trophy is, e.g. COD or TROPICAL_FISH.
      material: "TROPICAL_FISH"
      # How often this fish is picked compared with the others.
      weight: 1
      # Lightest the fish can be, in kg.
      min-kg: 4.0
      # Heaviest the fish can be, in kg. Heavy fish are rarer than light ones.
      max-kg: 16.0
      # Given to the catcher.
      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: null
        # Sound key, e.g. entity.player.levelup. Empty for none.
        sound: "ui.toast.challenge_complete"
        # What the reward is, in lines. Shown in menus that describe the reward.
        description: []
journal:
  # A collection book of catches, opened with the journal command.
  enabled: true
  # Given once, when a player has every entry on every page.
  complete-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>Your fishing journal is complete. You are a true angler!"
    # Sound key, e.g. entity.player.levelup. Empty for none.
    sound: "ui.toast.challenge_complete"
    # What the reward is, in lines. Shown in menus that describe the reward.
    description: []
  # Item shown for an entry the player has not caught yet.
  locked-icon: "GRAY_DYE"
  # Pages of entries. A catch unlocks every entry it matches on every page.
  # An entry matches when the caught item is in catches and every condition set on it holds:
  # biomes (any part of the biome name, e.g. ocean, river, swamp, frozen), time (day or night)
  # and weather (clear, rain or thunder). Leave a condition out to match anything.
  # Entry ids are stored per player: do not rename them once players have them.
  pages:
    - id: "cod"
      # Page name, plain text.
      name: "Cod"
      # Item shown for the page and for its caught entries.
      icon: "COD"
      # Given once, when a player has every entry on this page.
      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 completed the <accent>Cod</accent> page!"
        # Sound key, e.g. entity.player.levelup. Empty for none.
        sound: "entity.player.levelup"
        # What the reward is, in lines. Shown in menus that describe the reward.
        description: []
      entries:
        - id: "cod"
          # Entry name, plain text.
          name: "Cod"
          # Shown while the entry is still locked.
          hint: "Catch one anywhere."
          # Items that count, e.g. COD.
          catches:
            - "COD"
          biomes: []
          time: null
          weather: null
        - id: "cod-ocean"
          # Entry name, plain text.
          name: "Ocean Cod"
          # Shown while the entry is still locked.
          hint: "Catch one in an ocean."
          # Items that count, e.g. COD.
          catches:
            - "COD"
          biomes:
            - "ocean"
          time: null
          weather: null
        - id: "cod-river"
          # Entry name, plain text.
          name: "River Cod"
          # Shown while the entry is still locked.
          hint: "Catch one in a river."
          # Items that count, e.g. COD.
          catches:
            - "COD"
          biomes:
            - "river"
          time: null
          weather: null
        - id: "cod-frozen"
          # Entry name, plain text.
          name: "Frozen Cod"
          # Shown while the entry is still locked.
          hint: "Catch one somewhere frozen or snowy."
          # Items that count, e.g. COD.
          catches:
            - "COD"
          biomes:
            - "frozen"
            - "snowy"
            - "ice"
          time: null
          weather: null
        - id: "cod-night"
          # Entry name, plain text.
          name: "Midnight Cod"
          # Shown while the entry is still locked.
          hint: "Catch one at night."
          # Items that count, e.g. COD.
          catches:
            - "COD"
          biomes: []
          time: "night"
          weather: null
        - id: "cod-rain"
          # Entry name, plain text.
          name: "Rainy Cod"
          # Shown while the entry is still locked.
          hint: "Catch one in the rain."
          # Items that count, e.g. COD.
          catches:
            - "COD"
          biomes: []
          time: null
          weather: "rain"
        - id: "cod-storm"
          # Entry name, plain text.
          name: "Storm Cod"
          # Shown while the entry is still locked.
          hint: "Catch one in a thunderstorm."
          # Items that count, e.g. COD.
          catches:
            - "COD"
          biomes: []
          time: null
          weather: "thunder"
    - id: "salmon"
      # Page name, plain text.
      name: "Salmon"
      # Item shown for the page and for its caught entries.
      icon: "SALMON"
      # Given once, when a player has every entry on this page.
      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 completed the <accent>Salmon</accent> page!"
        # Sound key, e.g. entity.player.levelup. Empty for none.
        sound: "entity.player.levelup"
        # What the reward is, in lines. Shown in menus that describe the reward.
        description: []
      entries:
        - id: "salmon"
          # Entry name, plain text.
          name: "Salmon"
          # Shown while the entry is still locked.
          hint: "Catch one anywhere."
          # Items that count, e.g. COD.
          catches:
            - "SALMON"
          biomes: []
          time: null
          weather: null
        - id: "salmon-ocean"
          # Entry name, plain text.
          name: "Ocean Salmon"
          # Shown while the entry is still locked.
          hint: "Catch one in an ocean."
          # Items that count, e.g. COD.
          catches:
            - "SALMON"
          biomes:
            - "ocean"
          time: null
          weather: null
        - id: "salmon-river"
          # Entry name, plain text.
          name: "River Salmon"
          # Shown while the entry is still locked.
          hint: "Catch one in a river."
          # Items that count, e.g. COD.
          catches:
            - "SALMON"
          biomes:
            - "river"
          time: null
          weather: null
        - id: "salmon-frozen"
          # Entry name, plain text.
          name: "Frozen Salmon"
          # Shown while the entry is still locked.
          hint: "Catch one somewhere frozen or snowy."
          # Items that count, e.g. COD.
          catches:
            - "SALMON"
          biomes:
            - "frozen"
            - "snowy"
            - "ice"
          time: null
          weather: null
        - id: "salmon-night"
          # Entry name, plain text.
          name: "Midnight Salmon"
          # Shown while the entry is still locked.
          hint: "Catch one at night."
          # Items that count, e.g. COD.
          catches:
            - "SALMON"
          biomes: []
          time: "night"
          weather: null
        - id: "salmon-rain"
          # Entry name, plain text.
          name: "Rainy Salmon"
          # Shown while the entry is still locked.
          hint: "Catch one in the rain."
          # Items that count, e.g. COD.
          catches:
            - "SALMON"
          biomes: []
          time: null
          weather: "rain"
        - id: "salmon-storm"
          # Entry name, plain text.
          name: "Storm Salmon"
          # Shown while the entry is still locked.
          hint: "Catch one in a thunderstorm."
          # Items that count, e.g. COD.
          catches:
            - "SALMON"
          biomes: []
          time: null
          weather: "thunder"
    - id: "tropical"
      # Page name, plain text.
      name: "Tropical Fish"
      # Item shown for the page and for its caught entries.
      icon: "TROPICAL_FISH"
      # Given once, when a player has every entry on this page.
      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 completed the <accent>Tropical Fish</accent> page!"
        # Sound key, e.g. entity.player.levelup. Empty for none.
        sound: "entity.player.levelup"
        # What the reward is, in lines. Shown in menus that describe the reward.
        description: []
      entries:
        - id: "tropical"
          # Entry name, plain text.
          name: "Tropical Fish"
          # Shown while the entry is still locked.
          hint: "Catch one anywhere."
          # Items that count, e.g. COD.
          catches:
            - "TROPICAL_FISH"
          biomes: []
          time: null
          weather: null
        - id: "tropical-ocean"
          # Entry name, plain text.
          name: "Ocean Tropical Fish"
          # Shown while the entry is still locked.
          hint: "Catch one in an ocean."
          # Items that count, e.g. COD.
          catches:
            - "TROPICAL_FISH"
          biomes:
            - "ocean"
          time: null
          weather: null
        - id: "tropical-river"
          # Entry name, plain text.
          name: "River Tropical Fish"
          # Shown while the entry is still locked.
          hint: "Catch one in a river."
          # Items that count, e.g. COD.
          catches:
            - "TROPICAL_FISH"
          biomes:
            - "river"
          time: null
          weather: null
        - id: "tropical-frozen"
          # Entry name, plain text.
          name: "Frozen Tropical Fish"
          # Shown while the entry is still locked.
          hint: "Catch one somewhere frozen or snowy."
          # Items that count, e.g. COD.
          catches:
            - "TROPICAL_FISH"
          biomes:
            - "frozen"
            - "snowy"
            - "ice"
          time: null
          weather: null
        - id: "tropical-night"
          # Entry name, plain text.
          name: "Midnight Tropical Fish"
          # Shown while the entry is still locked.
          hint: "Catch one at night."
          # Items that count, e.g. COD.
          catches:
            - "TROPICAL_FISH"
          biomes: []
          time: "night"
          weather: null
        - id: "tropical-rain"
          # Entry name, plain text.
          name: "Rainy Tropical Fish"
          # Shown while the entry is still locked.
          hint: "Catch one in the rain."
          # Items that count, e.g. COD.
          catches:
            - "TROPICAL_FISH"
          biomes: []
          time: null
          weather: "rain"
        - id: "tropical-storm"
          # Entry name, plain text.
          name: "Storm Tropical Fish"
          # Shown while the entry is still locked.
          hint: "Catch one in a thunderstorm."
          # Items that count, e.g. COD.
          catches:
            - "TROPICAL_FISH"
          biomes: []
          time: null
          weather: "thunder"
    - id: "pufferfish"
      # Page name, plain text.
      name: "Pufferfish"
      # Item shown for the page and for its caught entries.
      icon: "PUFFERFISH"
      # Given once, when a player has every entry on this page.
      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 completed the <accent>Pufferfish</accent> page!"
        # Sound key, e.g. entity.player.levelup. Empty for none.
        sound: "entity.player.levelup"
        # What the reward is, in lines. Shown in menus that describe the reward.
        description: []
      entries:
        - id: "pufferfish"
          # Entry name, plain text.
          name: "Pufferfish"
          # Shown while the entry is still locked.
          hint: "Catch one anywhere."
          # Items that count, e.g. COD.
          catches:
            - "PUFFERFISH"
          biomes: []
          time: null
          weather: null
        - id: "pufferfish-ocean"
          # Entry name, plain text.
          name: "Ocean Pufferfish"
          # Shown while the entry is still locked.
          hint: "Catch one in an ocean."
          # Items that count, e.g. COD.
          catches:
            - "PUFFERFISH"
          biomes:
            - "ocean"
          time: null
          weather: null
        - id: "pufferfish-river"
          # Entry name, plain text.
          name: "River Pufferfish"
          # Shown while the entry is still locked.
          hint: "Catch one in a river."
          # Items that count, e.g. COD.
          catches:
            - "PUFFERFISH"
          biomes:
            - "river"
          time: null
          weather: null
        - id: "pufferfish-frozen"
          # Entry name, plain text.
          name: "Frozen Pufferfish"
          # Shown while the entry is still locked.
          hint: "Catch one somewhere frozen or snowy."
          # Items that count, e.g. COD.
          catches:
            - "PUFFERFISH"
          biomes:
            - "frozen"
            - "snowy"
            - "ice"
          time: null
          weather: null
        - id: "pufferfish-night"
          # Entry name, plain text.
          name: "Midnight Pufferfish"
          # Shown while the entry is still locked.
          hint: "Catch one at night."
          # Items that count, e.g. COD.
          catches:
            - "PUFFERFISH"
          biomes: []
          time: "night"
          weather: null
        - id: "pufferfish-rain"
          # Entry name, plain text.
          name: "Rainy Pufferfish"
          # Shown while the entry is still locked.
          hint: "Catch one in the rain."
          # Items that count, e.g. COD.
          catches:
            - "PUFFERFISH"
          biomes: []
          time: null
          weather: "rain"
        - id: "pufferfish-storm"
          # Entry name, plain text.
          name: "Storm Pufferfish"
          # Shown while the entry is still locked.
          hint: "Catch one in a thunderstorm."
          # Items that count, e.g. COD.
          catches:
            - "PUFFERFISH"
          biomes: []
          time: null
          weather: "thunder"
    - id: "treasure"
      # Page name, plain text.
      name: "Treasure"
      # Item shown for the page and for its caught entries.
      icon: "NAUTILUS_SHELL"
      # Given once, when a player has every entry on this page.
      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 completed the <accent>Treasure</accent> page!"
        # Sound key, e.g. entity.player.levelup. Empty for none.
        sound: "entity.player.levelup"
        # What the reward is, in lines. Shown in menus that describe the reward.
        description: []
      entries:
        - id: "treasure-book"
          # Entry name, plain text.
          name: "Enchanted Book"
          # Shown while the entry is still locked.
          hint: "Rare treasure from the deep."
          # Items that count, e.g. COD.
          catches:
            - "ENCHANTED_BOOK"
          biomes: []
          time: null
          weather: null
        - id: "treasure-nautilus"
          # Entry name, plain text.
          name: "Nautilus Shell"
          # Shown while the entry is still locked.
          hint: "A shell from far away."
          # Items that count, e.g. COD.
          catches:
            - "NAUTILUS_SHELL"
          biomes: []
          time: null
          weather: null
        - id: "treasure-name-tag"
          # Entry name, plain text.
          name: "Name Tag"
          # Shown while the entry is still locked.
          hint: "Someone lost a name."
          # Items that count, e.g. COD.
          catches:
            - "NAME_TAG"
          biomes: []
          time: null
          weather: null
        - id: "treasure-saddle"
          # Entry name, plain text.
          name: "Saddle"
          # Shown while the entry is still locked.
          hint: "How did that get in there?"
          # Items that count, e.g. COD.
          catches:
            - "SADDLE"
          biomes: []
          time: null
          weather: null
        - id: "treasure-bow"
          # Entry name, plain text.
          name: "Bow"
          # Shown while the entry is still locked.
          hint: "A weapon, waterlogged."
          # Items that count, e.g. COD.
          catches:
            - "BOW"
          biomes: []
          time: null
          weather: null
        - id: "treasure-rod"
          # Entry name, plain text.
          name: "Fishing Rod"
          # Shown while the entry is still locked.
          hint: "Someone else's rod."
          # Items that count, e.g. COD.
          catches:
            - "FISHING_ROD"
          biomes: []
          time: null
          weather: null
    - id: "junk"
      # Page name, plain text.
      name: "Junk"
      # Item shown for the page and for its caught entries.
      icon: "LILY_PAD"
      # Given once, when a player has every entry on this page.
      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 completed the <accent>Junk</accent> page. One angler's junk..."
        # Sound key, e.g. entity.player.levelup. Empty for none.
        sound: "entity.player.levelup"
        # What the reward is, in lines. Shown in menus that describe the reward.
        description: []
      entries:
        - id: "junk-lily-pad"
          # Entry name, plain text.
          name: "Lily Pad"
          # Shown while the entry is still locked.
          hint: "It floats."
          # Items that count, e.g. COD.
          catches:
            - "LILY_PAD"
          biomes: []
          time: null
          weather: null
        - id: "junk-boots"
          # Entry name, plain text.
          name: "Old Boots"
          # Shown while the entry is still locked.
          hint: "Somebody walked home barefoot."
          # Items that count, e.g. COD.
          catches:
            - "LEATHER_BOOTS"
          biomes: []
          time: null
          weather: null
        - id: "junk-bowl"
          # Entry name, plain text.
          name: "Bowl"
          # Shown while the entry is still locked.
          hint: "An empty bowl."
          # Items that count, e.g. COD.
          catches:
            - "BOWL"
          biomes: []
          time: null
          weather: null
        - id: "junk-bone"
          # Entry name, plain text.
          name: "Bone"
          # Shown while the entry is still locked.
          hint: "Best not to ask."
          # Items that count, e.g. COD.
          catches:
            - "BONE"
          biomes: []
          time: null
          weather: null
        - id: "junk-ink"
          # Entry name, plain text.
          name: "Ink Sac"
          # Shown while the entry is still locked.
          hint: "A squid left this behind."
          # Items that count, e.g. COD.
          catches:
            - "INK_SAC"
          biomes: []
          time: null
          weather: null
        - id: "junk-hook"
          # Entry name, plain text.
          name: "Tripwire Hook"
          # Shown while the entry is still locked.
          hint: "A hook that is not yours."
          # Items that count, e.g. COD.
          catches:
            - "TRIPWIRE_HOOK"
          biomes: []
          time: null
          weather: null
events:
  # Lucky hook events: fishing is better for everyone while one runs.
  enabled: true
  # Start a random event from scheduled every this many minutes. 0 turns it off.
  every-minutes: 120
  # Also start one at these clock times, as HH:mm in the timezone. Empty for none.
  times: []
  # Events the schedule picks from. Commands can start any event.
  scheduled:
    - "golden-hour"
    - "feeding-frenzy"
  # Show a boss bar with the event and time left to every player.
  boss-bar: true
  # Events by id. Start one by hand with /angler event start <id> [minutes].
  list:
    golden-hour:
      # Display name, plain text.
      name: "Golden Hour"
      # How long it runs when the schedule starts it, in minutes.
      minutes: 10
      # Boss bar colour: PINK, BLUE, RED, GREEN, YELLOW, PURPLE or WHITE.
      color: "YELLOW"
      # Colours of the event's name, as #rrggbb. Two or more make a gradient that slides
      # along the name on the boss bar; repeat the first colour at the end for a smooth loop.
      colors:
        - "#FFB300"
        - "#FFF1A8"
        - "#FF8F00"
        - "#FFB300"
      # Bite wait time is multiplied by this, above 0 and at most 1. 0.5 means fish bite twice as fast.
      bite-speed: 1.0
      # Chance, 0 to 1, that a catch comes up twice.
      double-catch-chance: 0.35
      # Fishing XP is multiplied by this.
      xp-multiplier: 2.0
      # Extra rewards, each rolled on every catch while the event runs.
      bonus: []
    feeding-frenzy:
      # Display name, plain text.
      name: "Feeding Frenzy"
      # How long it runs when the schedule starts it, in minutes.
      minutes: 10
      # Boss bar colour: PINK, BLUE, RED, GREEN, YELLOW, PURPLE or WHITE.
      color: "BLUE"
      # Colours of the event's name, as #rrggbb. Two or more make a gradient that slides
      # along the name on the boss bar; repeat the first colour at the end for a smooth loop.
      colors:
        - "#00B4D8"
        - "#9BF6FF"
        - "#00B4D8"
      # Bite wait time is multiplied by this, above 0 and at most 1. 0.5 means fish bite twice as fast.
      bite-speed: 0.4
      # Chance, 0 to 1, that a catch comes up twice.
      double-catch-chance: 0.0
      # Fishing XP is multiplied by this.
      xp-multiplier: 1.0
      # Extra rewards, each rolled on every catch while the event runs.
      bonus: []
    treasure-tide:
      # Display name, plain text.
      name: "Treasure Tide"
      # How long it runs when the schedule starts it, in minutes.
      minutes: 15
      # Boss bar colour: PINK, BLUE, RED, GREEN, YELLOW, PURPLE or WHITE.
      color: "PURPLE"
      # Colours of the event's name, as #rrggbb. Two or more make a gradient that slides
      # along the name on the boss bar; repeat the first colour at the end for a smooth loop.
      colors:
        - "#9D4EDD"
        - "#F1C0FF"
        - "#9D4EDD"
      # Bite wait time is multiplied by this, above 0 and at most 1. 0.5 means fish bite twice as fast.
      bite-speed: 0.75
      # Chance, 0 to 1, that a catch comes up twice.
      double-catch-chance: 0.0
      # Fishing XP is multiplied by this.
      xp-multiplier: 1.0
      # Extra rewards, each rolled on every catch while the event runs.
      bonus:
        - # Chance, 0 to 1, per catch.
          chance: 0.05
          reward:
            # Console commands. {player} is the player's name.
            commands:
              - "give {player} diamond 1"
            # Sent to the player as a success line in the server theme. Empty for none.
            message: "<body>The tide brought you a <accent>diamond</accent>!"
            # Sound key, e.g. entity.player.levelup. Empty for none.
            sound: "entity.experience_orb.pickup"
            # What the reward is, in lines. Shown in menus that describe the reward.
            description: []
bottles:
  # Catches can be a message in a bottle, handed in to the Fisherman for a reward.
  enabled: true
  # Chance, 0 to 1, that a catch is a bottle instead.
  chance: 0.03
  # Item the bottle is. Right-clicking it reads the message and never fills it with water.
  material: "GLASS_BOTTLE"
  # Tiers by id, each with its own chance weight, messages and reward per bottle.
  tiers:
    common:
      # Tier name shown on the bottle and in the Fisherman, plain text.
      name: "Common"
      # How often this tier is picked compared with the others.
      weight: 70
      # Notes a bottle of this tier can hold, plain text. One is picked at random.
      messages:
        - "If you are reading this, the fish are biting near the old pier."
        - "Day 12 on the raft. Still no land. The cod are friendly at least."
        - "Whoever finds this: I owe you one cookie. Collect any time."
        - "The sea is big and I am small. Tell my sheep I love them."
        - "Note to self: boats do not go uphill."
      # Given for each bottle handed in. {count} is how many of this tier were handed in at once.
      # The reward's description is what the Fisherman shows this tier pays.
      reward:
        # Console commands. {player} is the player's name.
        commands:
          - "give {player} cod 4"
        # Sent to the player as a success line in the server theme. Empty for none.
        message: "<body>The Fisherman paid you for a common bottle."
        # Sound key, e.g. entity.player.levelup. Empty for none.
        sound: "entity.villager.yes"
        # What the reward is, in lines. Shown in menus that describe the reward.
        description:
          - "4 Cod"
    rare:
      # Tier name shown on the bottle and in the Fisherman, plain text.
      name: "Rare"
      # How often this tier is picked compared with the others.
      weight: 25
      # Notes a bottle of this tier can hold, plain text. One is picked at random.
      messages:
        - "A map, smudged. X marks... somewhere wet."
        - "The Silver Ghost took my best rod. Avenge me."
        - "Three bubbles, then silence. Old Gnarl is real."
      # Given for each bottle handed in. {count} is how many of this tier were handed in at once.
      # The reward's description is what the Fisherman shows this tier pays.
      reward:
        # Console commands. {player} is the player's name.
        commands:
          - "give {player} emerald 2"
        # Sent to the player as a success line in the server theme. Empty for none.
        message: "<body>The Fisherman paid you well for a rare bottle."
        # Sound key, e.g. entity.player.levelup. Empty for none.
        sound: "entity.villager.yes"
        # What the reward is, in lines. Shown in menus that describe the reward.
        description:
          - "2 Emeralds"
    legendary:
      # Tier name shown on the bottle and in the Fisherman, plain text.
      name: "Legendary"
      # How often this tier is picked compared with the others.
      weight: 5
      # Notes a bottle of this tier can hold, plain text. One is picked at random.
      messages:
        - "To the bravest angler: the sea remembers every cast."
        - "This bottle has crossed every ocean. Now it is yours."
      # Given for each bottle handed in. {count} is how many of this tier were handed in at once.
      # The reward's description is what the Fisherman shows this tier pays.
      reward:
        # Console commands. {player} is the player's name.
        commands:
          - "give {player} diamond 1"
        # Sent to the player as a success line in the server theme. Empty for none.
        message: "<body>The Fisherman gasps. A legendary bottle!"
        # Sound key, e.g. entity.player.levelup. Empty for none.
        sound: "ui.toast.challenge_complete"
        # What the reward is, in lines. Shown in menus that describe the reward.
        description:
          - "1 Diamond"
# Items the menus are built from. Menu text is in messages.yml.
menu:
  # Frame around every menu.
  border: "GRAY_STAINED_GLASS_PANE"
  # Previous and next page.
  arrow: "ARROW"
  # Back to the previous menu.
  back: "SPECTRAL_ARROW"
  close: "BARRIER"
  # The summary at the top of the journal.
  summary: "BOOK"
  # The Fisherman's sign at the top of his menu.
  fisherman: "FISHING_ROD"
  # The Fisherman's hand in button.
  hand-in: "HOPPER"
  # Shown on the trophy board before the first catch.
  empty: "LIGHT_GRAY_STAINED_GLASS_PANE"
  sounds:
    # When a menu opens. Empty for none.
    open: "item.book.page_turn"
    # Buttons: close, back and hand in. Empty for none.
    click: "ui.button.click"
    # Opening a journal page, or turning to the next or previous one. Empty for none.
    page: "item.book.page_turn"
commands:
  # Opens the journal. Takes effect on restart.
  journal: "journal"
  journal-aliases:
    - "fishjournal"
  # Opens the Fisherman, where bottles are handed in. Takes effect on restart.
  fisherman: "fisherman"
  fisherman-aliases:
    - "messageinabottle"
    - "bottles"
  # Trophy board and admin commands. Takes effect on restart.
  admin: "angler"
  # Permission for the journal, Fisherman and trophy board. Empty lets every player use them.
  player-permission: ""
  # Permission for the admin subcommands: event, legendary, journal reset and bottle give.
  admin-permission: "angler.admin"

Messages

Every line players see, in config/global/angler/messages.yml. Uses MiniMessage formatting.

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

bar-empty: <dark_gray>■</dark_gray>
bar-full: <accent>■</accent>
bottle-bad-amount: '''{amount}'' is not an amount from 1 to 64.'
bottle-given: <body>Gave <accent>{amount}</accent> bottle(s) ({tier}) to <accent>{player}</accent>.
bottle-handed: The Fisherman took <accent>{count}</accent> bottle(s).
bottle-lore:
- <muted>Tier:</muted> <white>{tier}</white>
- ''
- <body>Right-click to read the note.
- <body>Hand it in with <white>/{command}</white>
bottle-name: <accent>Message in a Bottle</accent>
bottle-note: <muted>The note inside reads:</muted>
bottle-note-line: <white>"{note}"</white>
bottle-returned: The Fisherman only takes bottles. The rest went back to you.
bottle-unknown-tier: 'No tier called ''{tier}''. Tiers: {tiers}'
disabled: That part of Angler is switched off on this server.
event-bad-minutes: '''{minutes}'' is not a number of minutes from 1 to 1440.'
event-bar: '{event} <dark_gray>-</dark_gray> <white>{left}</white> <gray>left</gray>'
event-ended: '{event} <body>is over.'
event-list: '<body>Events: <accent>{events}</accent>. Running: <accent>{running}</accent>'
event-none: No event is running.
event-started: '{event} <body>has started! Fishing is better for <accent>{minutes}</accent>
  minutes.'
event-stopped: <body>Stopped <accent>{event}</accent>.
event-unknown: 'No event called ''{event}''. Events: {events}'
fisherman-hand-in: <success>Hand in</success>
fisherman-hand-in-lore:
- <body>Pays for every bottle above.
fisherman-lore:
- <body>Place your bottles in the slots below,
- <body>then hand them in or close the menu.
- ''
- <muted>Pays per bottle:</muted>
fisherman-name: <accent>The Fisherman</accent>
fisherman-tier: <white>{tier}</white><muted>:</muted> <white>{reward}</white>
fisherman-title: The Fisherman
journal-entry-lore:
- <success>Caught</success>
journal-entry-name: <white>{entry}</white>
journal-loading: Your journal is still loading. Try again in a moment.
journal-locked-lore:
- <muted>Hint:</muted> <white>{hint}</white>
journal-locked-name: <muted>Not caught yet</muted>
journal-new: 'New journal entry: <accent>{entry}</accent> <muted>({count}/{total})'
journal-page-done: <success>Complete</success>
journal-page-lore:
- <muted>Caught:</muted> <white>{have}/{total}</white>
- '{bar}'
journal-page-name: <accent>{page}</accent>
journal-page-open: <body>Click to open.
journal-page-reward: <muted>Reward:</muted>
journal-page-reward-line: <white>{line}</white>
journal-page-title: 'Fishing Journal: {page}'
journal-reset: <body>Reset the fishing journal of <accent>{player}</accent>.
journal-summary-lore:
- <muted>Entries:</muted> <white>{have}/{total}</white>
- <muted>Pages complete:</muted> <white>{done}/{pages}</white>
- ''
- '{bar} <white>{percent}%</white>'
journal-summary-name: <accent>Your journal</accent>
journal-title: Fishing Journal
legendary-busy: A legendary fish is already out there. Clear it first.
legendary-caught: You landed <accent>{fish}</accent>, weighing <accent>{weight} kg</accent>!
legendary-caught-nearby: <emphasis>{player}</emphasis> landed <accent>{fish}</accent>,
  weighing <accent>{weight} kg</accent>!
legendary-cleared: <body>The legendary fish is gone.
legendary-escaped: <accent>{fish}</accent> slipped back into the deep.
legendary-no-water: There is no open water near <emphasis>{player}</emphasis>.
legendary-none: No legendary fish is out right now.
legendary-spawned: <body><accent>{fish}</accent> surfaced near <accent>{player}</accent>.
legendary-surfaced: Something huge stirs in the water near <emphasis>{player}</emphasis>.
  Cast into the bubbles!
menu-back: <accent>Back</accent>
menu-close: <accent>Close</accent>
menu-next: <accent>Next page</accent>
menu-previous: <accent>Previous page</accent>
not-online: <emphasis>{player}</emphasis> must be online.
nothing: none
players-only: Only a player can do that.
trophies-empty: No legendary fish has been caught yet.
trophies-empty-name: <muted>No legendary fish caught yet</muted>
trophies-header: '<body>Biggest legendary catches:'
trophies-item-lore:
- <muted>Caught by:</muted> <white>{player}</white>
- <muted>Weight:</muted> <white>{weight} kg</white>
- <muted>Date:</muted> <white>{date}</white>
trophies-item-name: <accent>#{rank}</accent> <white>{fish}</white>
trophies-line: <body><accent>#{rank}</accent> {fish} <muted>-</muted> {player} <accent>{weight}
  kg</accent> <muted>({date})
trophies-title: Trophy Board
trophy-lore:
- <body>{description}
- ''
- <muted>Caught by:</muted> <white>{player}</white>
- <muted>Weight:</muted> <white>{weight} kg</white>
- <muted>Date:</muted> <white>{date}</white>
trophy-name: <accent>{fish}</accent>
unknown-player: No player called <emphasis>{player}</emphasis> has played here.