This guide covers all configuration options available in AnnouncementGUI.
📁 Configuration Files
AnnouncementGUI uses several configuration files:
config.yml - Main plugin configuration
gui-messages.yml - GUI messages and prompts
guis/*.yml - GUI layout configurations
🔧 Main Configuration (config.yml)
Full Configuration Example
# AnnouncementGUI configuration# Local server identifier for this instancelocalServerId:"server-1"# List of known server IDs admins can choose from in the GUIservers:-"server-1"-"server-2"-"server-3"# If true, servers will run announcements with target = ALLenableAllServersAnnouncements:true# How often (in seconds) the change poller checks for announcement updates on MySQL (lightweight, no special privileges needed)# Only applies when using MySQL; defaults to 10 seconds for fast cross-server syncchangePollingIntervalSeconds:10# Storage configuration for announcements (shared across servers)storage:type:sqlite# sqlite or mysqlsqlite:file:announcements.dbmysql:host:localhostport:3306database:announcementsusername:rootpassword:passwordparams:"useSSL=false&serverTimezone=UTC"
⚙️ Configuration Options Explained
Server Configuration
localServerId
Type: String
Default: "server-1"
Description: Unique identifier for this server instance. Used to target specific servers for announcements.
Example:
servers
Type: List of Strings
Default: ["server-1", "server-2", "server-3"]
Description: List of all server IDs in your network. These appear as options when creating announcements.
Example:
enableAllServersAnnouncements
Type: Boolean
Default: true
Description: When enabled, this server will run announcements that target "ALL" servers.
Example:
Use Cases:
Set to true on all servers for network-wide announcements
Set to false on specific servers to exclude them from ALL announcements
Polling Configuration
changePollingIntervalSeconds
Type: Integer
Default: 10
Description: How often (in seconds) the plugin checks for changes when using MySQL. Lower values = faster sync but more database queries.
Example:
Recommendations:
Small networks (2-5 servers): 5-10 seconds
Medium networks (5-15 servers): 10-15 seconds
Large networks (15+ servers): 15-30 seconds
Storage Configuration
SQLite Storage
When to use: Single server or servers sharing a filesystem.
Options:
file: Name of the SQLite database file (stored in plugin folder)
Advantages:
No additional setup required
Simple and reliable
Good for single servers
Limitations:
Not ideal for multi-server networks
No real-time cross-server sync
MySQL Storage
When to use: Multi-server networks requiring real-time synchronization.
Options:
host: MySQL server hostname or IP address
port: MySQL server port (default: 3306)
database: Database name for announcements
username: MySQL username
password: MySQL password (use strong passwords!)
params: Additional JDBC connection parameters
Common Parameters:
Advantages:
Real-time multi-server synchronization
Centralized announcement management
Automatic change detection
📝 GUI Messages Configuration (gui-messages.yml)
Full Configuration Example
Message Customization
You can customize all messages using:
Color Codes: Use & codes (e.g., &a for green, &c for red)
# GUI Messages Configuration
# Used for chat prompts, confirmations, and other player-facing messages in the Announcement GUI system
# Prefix shown before all messages
prefix: "&7[&aAnnouncements&7]&r "
# Chat prompts when player is asked to type in chat
chat:
promptMessage: "&7Type lines one by one. Type &aDONE &7when finished."
promptInterval: "&7Type &ainterval seconds&7 (e.g., 300)."
promptServer: "&7Type a &aserver id&7 from: &f%servers% &7or &aALL&7."
promptName: "&7Type a short &aname &7for the announcement."
lineAdded: "&aLine added.&7 Type more or &aDONE&7."
linesSaved: "&aLines saved.&7 You can now set interval/server and save."
emptyLineSkipped: "&cEmpty line skipped.&7 Type a message or &aDONE&7."
# Confirmation messages shown after actions
confirm:
messageSet: "&aMessage set.&7 Reopen GUI and continue."
intervalSet: "&aInterval set."
intervalInvalid: "&cInvalid interval.&7 Enter a positive number."
serverSet: "&aServer set."
serverInvalid: "&cInvalid server.&7 Type a known server id or ALL."
saved: "&aAnnouncement saved."
cancelled: "&cCancelled."
deleted: "&aAnnouncement deleted."
nameSet: "&aName set."
# Command-related messages
command:
playerOnly: "&cOnly players can use this."
noPermission: "&cYou don't have permission."
exportSuccess: "&aExported announcements successfully!"
exportError: "&cFailed to export announcements."
importUsage: "&cUsage: /announcegui import <filename> [replace|merge]"
importFileNotFound: "&cFile not found in plugin folder."
importEmpty: "&cNo announcements found in file."
importSuccess: "&aImported announcements successfully!"
importError: "&cFailed to import announcements."
importParseError: "&cFailed to parse JSON file."
localServerId: "survival"
servers:
- "lobby"
- "survival"
- "creative"
enableAllServersAnnouncements: true
changePollingIntervalSeconds: 10
storage:
type: mysql
# ... same MySQL config as Server 1
localServerId: "hub"
servers:
- "hub"
- "game1"
- "game2"
enableAllServersAnnouncements: true # Only run ALL announcements
storage:
type: mysql
# ... MySQL config
localServerId: "game1"
servers:
- "hub"
- "game1"
- "game2"
enableAllServersAnnouncements: true # Run both game1 and ALL announcements
storage:
type: mysql
# ... MySQL config
password: "Use_A_Strong_P@ssw0rd_Here"
CREATE USER 'announcegui'@'%' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON announcements.* TO 'announcegui'@'%';
FLUSH PRIVILEGES;