RexWelcome Documentation

RexWelcome is a powerful welcome message plugin for Minecraft servers with randomized titles, first-join tracking, and PlaceholderAPI integration.

Requirements: Java 21 (Required), Minecraft 1.20.4+ (Supported), Paper/Spigot/Folia compatible

Features

Installation

  1. Download the latest RexWelcome.jar from GitHub Releases
  2. Place the jar file in your server's plugins folder
  3. (Optional) Install PlaceholderAPI
  4. Restart your server
  5. Configure the plugin in plugins/RexWelcome/config.yml
  6. Use /rw reload to apply changes without restarting

Commands

Command Aliases Description Permission
/rexwelcome /rw Main plugin command -
/rw reload - Reload configuration rexwelcome.reload
/rw info - Show plugin information -
/rw help - Show help message -

Permissions

Permission Description Default
rexwelcome.reload Reload plugin configuration op
rexwelcome.info View plugin information op
rexwelcome.help View help message op

Placeholders

PlaceholderAPI Placeholders

Use these in any plugin that supports PlaceholderAPI:

Placeholder Description Example Output
%rexwelcome_playernumber% Player's join number 42
%rexwelcome_totalplayers% Total unique players 150
%rexwelcome_player_<N>% Name of Nth player Steve
Example Usage:
# In DeluxeChat, EssentialsX, or any PAPI-compatible plugin
format: "&7[#%rexwelcome_playernumber%] &f{USERNAME}: {MESSAGE}"
message: "&aYou are player #%rexwelcome_playernumber%!"
message: "&7First player: %rexwelcome_player_1%"

Internal Placeholders

Use these inside RexWelcome's config.yml:

Placeholder Description
%player% Player's name
%displayname% Player's display name
%prefix% Plugin prefix (from config)
%online% Online player count
%max_players% Maximum players
%total_players% Total unique players
%joincount% Alias for %total_players%

Color Formats

RexWelcome supports multiple color formats:

Legacy Color Codes

message: "&aGreen &bAqua &cRed &eYellow"

Hex Colors

message: "&#ff5733Orange text"
message: "#ff5733This also works"

MiniMessage Format

message: "<color:#ff5733>Orange</color>"
message: "<gradient:#ff0000:#00ff00>Gradient text</gradient>"
message: "<bold><#FFD700>Bold gold text</bold>"

Randomized Titles

RexWelcome can display random titles from a list each time a player joins:

Returning Players

returning-player:
  titles:
    - title: "&#FFD700WELCOME BACK!"
      subtitle: "&fWe missed you, &e%player%&f!"
    - title: "&#FF6B6BYOU'RE BACK!"
      subtitle: "&7Good to see you again!"
    - title: "&#00FF7FBACK AGAIN?"
      subtitle: "&fOf course you are!"

First-Time Players

first-join:
  titles:
    - title: "&#00BFFF✨ WELCOME!"
      subtitle: "&fThis is your first time here!"
    - title: "&#FFD700🌟 FIRST TIME!"
      subtitle: "&eYou're player #%total_players%!"
    - title: "&#FF69B4WELCOME NEWBIE!"
      subtitle: "&fEnjoy your stay!"

First-Join Features

First-Join Commands

Execute commands automatically when a player joins for the first time:

first-join:
  enabled: true
  commands:
    - "give %player% diamond 5"
    - "eco give %player% 1000"
    - "advancement grant %player% only story/mine_diamond"

First-Join Messages

first-join:
  messages:
    - "&7"
    - "%prefix%&#00BFFF✨ Welcome &f%player%&b!"
    - "&7• &fYou are player #&#f75634%total_players%"
    - "&7• &fVisit: &#f75634https://rexsystems.cc"
    - "&7• &fRead the rules: &#f75634/rules"
    - "&7"

Broadcast System

Announce when someone joins for the first time:

broadcast:
  enabled: true
  message: "%prefix%&#f75634%player% &fhas joined for the first time! &7(Player #&e%joincount%&7)"

Join Sounds

Play a sound when players join:

sounds:
  join:
    enabled: true
    sound: "ENTITY_PLAYER_LEVELUP"
    volume: 1.0
    pitch: 1.0
Sound Names: See Bukkit Sound Documentation for all available sounds.

Player Data Storage

Player data is stored in plugins/RexWelcome/playerdata.yml:

players:
  550e8400-e29b-41d4-a716-446655440000:
    join-number: 1
    name: "Steve"
    first-join: 1673472000000
  550e8400-e29b-41d4-a716-446655440001:
    join-number: 2
    name: "Alex"
    first-join: 1673472100000

This tracks:

Full Configuration

Here's the complete config.yml with all available options:

# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║                               RexWelcome                                      ║
# ║                     Advanced Welcome Message Plugin                           ║
# ║                          by RexSystems.cc                                     ║
# ╚══════════════════════════════════════════════════════════════════════════════╝

# ═══════════════════════════════════════════════════════════════════════════════
# COLOR FORMAT SUPPORT:
# - Legacy: &a, &b, &c, &l, &o, etc.
# - Hex #1: &#a96eee (ampersand + hex)
# - Hex #2: #a96eee (plain hex)
# - MiniMessage: <color:#a96eee>, <gradient:#ff0000:#00ff00>, <bold>, <italic>
# ═══════════════════════════════════════════════════════════════════════════════

# General Messages
messages:
  prefix: "&7[&#f75634RexWelcome&7] "
  no-permission: "%prefix%&cYou don't have permission to use this command."
  reload-success: "%prefix%&aConfiguration reloaded successfully!"
  command-not-found: "%prefix%&cCommand not found. Use /rexwelcome help"
  reload-usage: "%prefix%&fUsage: /%cmd% reload"
  player-only: "%prefix%&cThis command can only be used by players!"

# ═══════════════════════════════════════════════════════════════════════════════
#                         RETURNING PLAYER SETTINGS
# ═══════════════════════════════════════════════════════════════════════════════

returning-player:
  # Multiple titles - one will be randomly selected each time!
  titles:
    - title: "&#FFD700WELCOME BACK!"
      subtitle: "&fWe missed you, &e%player%&f!"
    - title: "&#FF6B6BYOU'RE BACK!"
      subtitle: "&7Good to see you again, %player%!"
    - title: "&#00FF7FBACK AGAIN?"
      subtitle: "&fOf course you are, &a%player%&f!"
    - title: "&#9370DBLOOK WHO'S HERE!"
      subtitle: "&d%player% &fhas returned!"
    - title: "&#FF4500HEY THERE!"
      subtitle: "&fWelcome back, &6%player%&f!"
  
  # Messages sent to returning players
  messages:
    - "&7"
    - "%prefix%&#f75634Welcome back, &f%player%&f!"
    - "&7• &fOnline Players: &#f75634%online%/%max_players%"
    - "&7• &fVisit our store: &#f75634store.rexsystems.cc"
    - "&7• &fJoin our Discord: &#f75634discord.rexsystems.cc"
    - "&7"

# ═══════════════════════════════════════════════════════════════════════════════
#                         FIRST-TIME PLAYER SETTINGS
# ═══════════════════════════════════════════════════════════════════════════════

first-join:
  enabled: true
  
  # Multiple titles for first-time players - randomly selected!
  titles:
    - title: "&#00BFFF✨ WELCOME!"
      subtitle: "&fThis is your first time here!"
    - title: "&#FF69B4WELCOME NEWBIE!"
      subtitle: "&fEnjoy your stay, &d%player%&f!"
    - title: "&#7CFC00HELLO, &f%player%&a!"
      subtitle: "&fWelcome to our server!"
    - title: "&#FFD700🌟 FIRST TIME!"
      subtitle: "&eYou're player #%total_players%!"
    - title: "&#FF6347GREETINGS!"
      subtitle: "&fWe hope you enjoy your stay!"
  
  # Commands to execute when a player joins for the first time
  # Placeholders: %player%, %joincount%, %online%, etc.
  # These run as console commands!
  commands:
    - "give %player% diamond 1"
  
  # Messages sent to first-time players
  messages:
    - "&7"
    - "%prefix%&#00BFFF✨ Welcome &f%player% &7for the first time!"
    - "&7• &fYou are player number &#f75634#%total_players%"
    - "&7• &fVisit our website: &#f75634https://rexsystems.cc"
    - "&7• &fJoin our Discord: &#f75634discord.rexsystems.cc"
    - "&7• &fRead the rules: &#f75634/rules"
    - "&7"

# ═══════════════════════════════════════════════════════════════════════════════
#                            BROADCAST SETTINGS
# ═══════════════════════════════════════════════════════════════════════════════

# Broadcast when someone joins for the first time
broadcast:
  enabled: true
  message: "%prefix%&#f75634%player% &fhas joined for the first time! &7(Player #&e%joincount%&7)"

# ═══════════════════════════════════════════════════════════════════════════════
#                            WELCOME SETTINGS
# ═══════════════════════════════════════════════════════════════════════════════

welcome-messages:
  enabled: true
  
  # Clear chat before sending welcome messages? (Sends 100 empty lines)
  clear-chat: true

  # Title settings (applies to both first-join and returning)
  title:
    enabled: true
    fade-in: 10    # Ticks (20 ticks = 1 second)
    stay: 70       # Ticks
    fade-out: 20   # Ticks

# ═══════════════════════════════════════════════════════════════════════════════
#                             SOUND SETTINGS
# ═══════════════════════════════════════════════════════════════════════════════

sounds:
  join:
    enabled: true
    # Sound names: https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Sound.html
    sound: "ENTITY_PLAYER_LEVELUP"
    volume: 1.0
    pitch: 1.0

# ═══════════════════════════════════════════════════════════════════════════════
#                           COMMAND SETTINGS
# ═══════════════════════════════════════════════════════════════════════════════

commands:
  rexwelcome:
    enabled: true
    command: "rexwelcome"
    aliases: ["rw"]
    permission: "rexwelcome.reload"
    usage: "%prefix%&fUsage: /rexwelcome reload"