
135
1
Список изменений
Wiki: https://github.com/castledking/Allium/wiki
Highlights
- Glow command — New
/glowcommand for per-player colored glow outlines using PacketEvents virtual team packets. Supports all 16 vanilla colors, ✨ cycling, and per-color permissions. No scoreboard pollution — teams are sent directly to viewers and never registered on any Bukkit scoreboard. - Join/Quit message permissions — Permission-based join/quit message formats via
allium.join_message.<id>andallium.quit_message.<id>. Set custom formats with LuckPerms metadata. - Chat system rewrite —
ChatMessageManager,FormatChatListener, andPacketChatTrackerImplsignificantly reworked for better PacketEvents integration and staff moderation features. - Flight restoration refactor —
FlightRestorationrewritten for improved Folia compatibility and reliability. - Command management —
CommandManagernow caches the server's known commands map with a 2-second TTL, eliminating repeated reflection calls.Helpcommand caches available commands per-player with a 3-second TTL. - TP companion teleportation — Pet/entity teleport-on-TP moved from
TPlistener to dedicatedTeleportBackListenerfor cleaner separation. - Inventory snapshot optimization —
InventoryManager.saveSnapshot()simplified to run directly on the calling thread instead of throughSchedulerAdapter.run().
New Commands
| Command | Description | Permission |
|---|---|---|
/glow <color> [player] | Set glow color (e.g. /glow red, /glow dark_aqua) | allium.glow + allium.glow.<color> |
/glow ✨ [player] | Enable ✨ cycling glow | allium.glow.✨ |
/glow off [player] | Remove glow effect | allium.glow / allium.glow.others |
New Permissions
| Permission | Description | Default |
|---|---|---|
allium.glow | Base glow permission (grants all 16 color sub-permissions) | op |
allium.glow.<color> | Per-color (e.g. allium.glow.red, allium.glow.blue) | via parent |
allium.glow.✨ | ✨ glow mode | op |
allium.glow.others | Target other players | op |
allium.join_message.<id> | Custom join message format (value from LP metadata) | — |
allium.quit_message.<id> | Custom quit message format (value from LP metadata) | — |
allium.join_message.* | Wildcard — grants all join message formats | staff |
allium.quit_message.* | Wildcard — grants all quit message formats | staff |
New Config
join-and-quit-messages:
join:
enabled: true
format: "&e%name% &7has joined the server"
quit:
enabled: true
format: "&e%name% &7has left the server"
broadcast-scope: server # server, world, or global
Setting Custom Join/Quit Messages with LuckPerms
Set a permission with a metadata value on a player:
/lp user <player> meta set allium.join_message.vip.a "rift in the universe has spawned %player%"
/lp user <player> meta set allium.quit_message.vip.a "%player% has left through a rift"
Supported placeholders: %name% (display name, respects /nick), %player% (real name), %prefix% (Vault prefix), %suffix% (Vault suffix).
The first matching permission (alphabetical by suffix) is used. If no permission metadata is found, the default config format is used.
Technical Details
Glow
- Uses PacketEvents
WrapperPlayServerTeamswithTeamMode.CREATE(includes both team info and player entries in one packet) TeamMode.UPDATEfor ✨ color changes,TeamMode.REMOVEfor cleanup- Packets sent to all online players including the target (the client needs to receive the team packet to render the colored outline)
- No
Bukkit.getScoreboardManager()usage — completely virtual - Folia-safe: no region-scheduled tasks needed
Join/Quit Messages
- Handled via standard
PlayerJoinEvent/PlayerQuitEvent(main thread on both Bukkit and Folia) - Permission metadata read through Vault Chat's
getPlayerInfoString() - Falls back to default config format if no permission match found
- Vanish check: vanished players don't show join/quit messages
Chat System
ChatMessageManagerrewritten with improved message storage and retrievalPacketChatTrackerImplupdated for better PacketEvents 2.11.1 compatibilityFormatChatListenersignificantly expanded with new formatting options
SchedulerAdapter
- All scheduled tasks route through
SchedulerAdapterwhich auto-detects Folia - Folia path: uses
EntitySchedulerfor entity-specific tasks,GlobalRegionSchedulerfor global tasks - Bukkit path: uses standard
BukkitScheduler - No raw
Bukkit.getScheduler()calls in new code
Files Changed (22)
| File | Change |
|---|---|
PluginStart.java | Glow command + listener registration, glow field |
Glow.java | New — /glow command with PacketEvents team packets |
GlowListener.java | New — cleanup on player quit |
JoinQuitMessages.java | New — permission-based join/quit messages |
ChatMessageManager.java | Rewritten — message storage, tracking, moderation |
FormatChatListener.java | Major rewrite — chat formatting, hover, click events |
PacketChatTrackerImpl.java | Major rewrite — PacketEvents 2.11.1 integration |
FlightRestoration.java | Major rewrite — Folia-safe flight state management |
CommandManager.java | Known commands caching, getCachedKnownCommands() API |
Help.java | Available commands caching, uses CommandManager cache |
| `TeleportBackListener.java** | Extracted from TP — pet/entity companion teleport |
TP.java | Removed inline teleport listener, now delegates |
InventoryManager.java | Simplified snapshot saving, removed SchedulerAdapter wrapper |
AlliumPlaceholder.java | Import cleanup |
GeneralPlaceholder.java | Import cleanup |
TFlyManager.java | Import cleanup, formatting |
SpawnerChangerManager.java | Minor cleanup |
config.yml | New join-and-quit-messages section |
lang.yml | New glow.* message keys |
plugin.yml | New glow command, permission definitions |
pom.xml | Paper version 1.21.8 |
Support and Feedback
Issues: https://github.com/castledking/Allium/issues Wiki: https://github.com/castledking/Allium/wiki Discord: https://discord.com/invite/pCKdCX6nYr Website: https://castled.codes/
Файлы
Allium.jar(1.55 MiB)
ОсновнойМетаданные
Канал релиза
Release
Номер версии
0.2.2a
Загрузчики
BukkitFoliaPaperPurpurSpigot
Версии игры
1.20–26.1.2
Загрузок
2
Дата публикации
21.06.2026
