🎨Creating Message Sets

Learn how to create your own unique join/leave message sets in join-leave-messages.yml.

πŸ“– Message Set Structure

Each message set follows this structure:

messages:
  your-message-id:
    join:
      - "Join message line 1"
      - "Join message line 2 (optional)"
    leave:
      - "Leave message line 1"
      - "Leave message line 2 (optional)"
    item:
      material: "MATERIAL_NAME"
      skull: "base64_texture (optional)"
      name: "Display Name"
      lore:
        - "Lore line 1"
        - "Lore line 2"
    permission: "blockyjoin.set.your-message-id"
    glow-on-select: true
    info-lore:
      enabled: true
      selected-lore:
        - "Currently selected text"
      not-selected-lore:
        - "Click to select text"
    favorite-lore:
      enabled: true
      selected-icon:
        - "β˜…"
      selected-lore:
        - "β˜… shift-click to add to favorites"
      not-selected-lore:
        - "β˜… shift-click to add to favorites"

🎯 Step-by-Step Guide

Step 1: Choose a Unique ID

The message ID should be:

  • Lowercase

  • No spaces (use hyphens instead)

  • Descriptive of the theme

Examples:

  • king

  • wizard

  • space-explorer

  • medieval-knight

Step 2: Write Join Messages

Tips:

  • Use multiple lines for random selection

  • Include placeholders like {player}, {online}, etc.

  • Use MiniMessage for colors and formatting

Multiple Messages (Random):

BlockyJoin will randomly select one message each time the player joins.

Step 3: Write Leave Messages

Same principles as join messages apply here.

Step 4: Configure the GUI Item

Basic Material

Custom Player Head

For custom player heads, use base64 textures from Minecraft-Heads.comarrow-up-right:

How to get skull textures:

  1. Visit https://minecraft-heads.com

  2. Find a head you like

  3. Click "Get Value"

  4. Copy the value (starts with eyJ...)

  5. Paste into the skull: field

Preview Placeholders

Use these placeholders in your lore to show message previews:

Step 5: Set Permissions

  • Leave empty (permission: "") for free access to all players

  • Set to a custom permission for restricted access

  • Format: blockyjoin.set.<id>

Step 6: Configure Additional Options

Glow Effect

Info Lore (Selection Status)

Favorite Lore

πŸ“ Complete Examples

Example 1: Simple Message Set

Example 2: VIP Message Set with Stats

Example 3: Themed Message Set with Custom Head

🎨 MiniMessage Formatting

BlockyJoin uses MiniMessage for advanced text formatting. Here are some examples:

Colors

Text Decoration

Hover Events

Click Events

Combined Example

πŸ› οΈ Best Practices

DO:

βœ… Use meaningful IDs (medieval-knight not set1) βœ… Include preview placeholders in lore βœ… Test messages with /blockyjoin test βœ… Use multiple message variants for variety βœ… Set appropriate permissions βœ… Use custom player heads for unique themes βœ… Keep messages concise and readable

DON'T:

❌ Use spaces in message IDs ❌ Make messages too long (>80 characters recommended) ❌ Forget to reload after changes ❌ Use invalid material names ❌ Leave skull field for non-PLAYER_HEAD materials ❌ Use uppercase in IDs ❌ Duplicate message IDs

πŸ”„ Testing Your Message Set

1. Save your changes

Edit join-leave-messages.yml and save the file.

2. Reload the plugin

3. Test the messages

4. View in GUI

Check that your message set appears with correct icon, name, and lore.

πŸ› Troubleshooting

Message Set Not Showing

Problem: New message set doesn't appear in GUI

Solutions:

  1. Check for YAML syntax errors

  2. Ensure message ID is unique

  3. Reload plugin: /blockyjoin reload

  4. Check console for errors

Invalid Material

Problem: GUI item shows as barrier/error

Solutions:

  1. Verify material name: Spigot Materialsarrow-up-right

  2. Use UPPER_CASE format: DIAMOND_SWORD

  3. Reload after fixing

Skull Not Loading

Problem: Player head shows as Steve head

Solutions:

  1. Ensure material: "PLAYER_HEAD"

  2. Verify base64 is complete (starts with eyJ)

  3. Test texture on https://minecraft-heads.com

  4. Check for quotes around skull value

Colors Not Working

Problem: Colors show as text

Solutions:

  1. Use MiniMessage format: <#HEX> not Β§c

  2. Check for typos in color codes

  3. Ensure format is <#RRGGBB>

Placeholders Not Replacing

Problem: {player} shows literally

Solutions:

  1. Check placeholder spelling

  2. Ensure using curly braces {}

  3. For PAPI, use percent signs %player_name%

  4. Test with /blockyjoin test join

πŸ“š Additional Resources


Next Steps:

Last updated