v0.1.6a: Staff Party Bar, Local Chat, ModGuard, Animated Names, and Release Automation
Allium v0.1.6a
Wiki:
https://github.com/castledking/Allium/wiki
Highlights
-
Chat channels are now split between global and local -
/local and
/l toggle radius chat, while
/global and
/g return players to global chat.
-
Staff locator mode -
/locatorbar now toggles a staff mode that can show every visible player on the party locator bar, regardless of party radius.
-
ModGuard - new configurable client-mod detection framework with brand, plugin-channel, Forge/FML handshake, evidence logs, alerts, kicks, bypasses, and optional translation probes.
-
Animated gradient names -
%gradientdisplayname% can now be converted into MiniMessage gradient phase output for players with
allium.gradientname.
-
Item Renamer - new single-use custom item that grants temporary
/rename access and is consumed after a successful rename.
-
Safer End Gateway teleports - gateway/ender-pearl teleports near the main End island now search for a safe same-level landing instead of relying on vanilla highest-block behavior.
-
Release automation - new GitHub Actions and
.release tooling for Discord, Modrinth, and Spigot release publishing.
Chat Channels
- Added the dedicated local chat channel config at
chat.channels.local-channel.
- Local chat defaults to a 100 block radius.
- Local chat defaults to
&8[&eLocal&8] <prefix> &a%allium_nickname%&f: &f<message>.
- Local chat is excluded from Discord relay by default.
- Global channel aliases are now only
g and
global;
local and
l no longer point at global chat.
-
/local and
/l toggle between local chat and the default/global write channel.
-
/global and
/g always switch the player back to the default/global write channel.
-
/channel join <channel> [read|write] still supports explicit read/write channel selection.
- Channel state continues to save per player in
player-channels.yml.
DiscordSRV Integration
- Discord inbound messages are routed through Allium's channel system.
- Discord messages now use Allium channel formats only for explicitly configured Allium channel formats.
- Default or unmapped DiscordSRV channels fall back to DiscordSRV's native message format.
- Discord role alias, role color, username, effective name, channel, reply snippet, and message fields now pass through Discord emoji parsing.
- Discord inbound messages are mirrored to console because Allium cancels DiscordSRV's normal preprocess/postprocess event handling.
- Outbound chat loop detection now tracks local/staff/shortcut context so Allium avoids relaying duplicate chat events.
- Local chat is intentionally blocked from Discord relay when
exclude-from-discord is true.
Party And Locator Bar
- Added staff locator mode for players with
allium.party.staff.
-
/locatorbar with no arguments now toggles staff locator mode.
- Added
/locatorbar help.
- Added
/locatorbar aliases:
/partybar,
/lbar, and
/pbar.
- Added
allium.locatorbar.help for viewing locator help.
- Staff locator mode lets staff see all non-vanished players on the locator bar, regardless of normal visibility distance.
- Locator bar show/hide/reset flows remain available for temporary manual visibility overrides.
- Party locator visibility updates keep the existing move throttling to reduce TAB packet pressure.
TAB And Far-Away Player Entries
- Improved TAB integration for players Allium hides in the world but keeps visible in tab.
- PacketEvents tab add paths now actively re-add missing entries instead of silently no-oping.
- TAB reflection is used where available so synthetic tab entries better match TAB-managed skins, ping, game mode, and format.
- PacketEvents fallback add packets are still available when TAB reflection cannot add an entry.
- TAB group formatting can be read from TAB's
config/groups.yml when placeholders are unavailable.
- Placeholder fallbacks now reject unresolved
%tab_...% strings instead of showing raw placeholder text in tab.
- Far-away animated gradient targets are tracked and refreshed with
UPDATE_DISPLAY_NAME.
- Animated far-away tab entries use the same animated name builder as the normal tab display name.
Animated Gradient Names
- Added
GradientNameManager.
- Players with
allium.gradientname can have
%gradientdisplayname% rewritten into MiniMessage
<gradient:...:phase> output.
- The manager extracts first and last colors from existing gradient display names.
- Supported color input includes legacy
&/section colors,
&#RRGGBB, section hex,
&x/section-x hex, and MiniMessage hex tags.
- The middle named color is chosen from the nearest general color name for MiniMessage's gradient tag.
-
#phase-mm-g# and
#-phase-mm-g# are updated every tick.
- The player list name is refreshed every tick for animated gradient players.
- TAB prefix and suffix are preserved when Allium builds the animated tab display name.
- Prefix/name spacing is normalized so TAB prefixes do not collapse directly into the player name.
- Added PlaceholderAPI outputs:
-
%allium_gradientdisplayname%
-
%allium_phase-mm-g%
-
%allium_-phase-mm-g%
-
%allium_phase_mm_g%
-
%allium_negative_phase_mm_g%
- Added
chat.minimessage.gradient.animation for animated gradient phase permission checks.
Nicknames
- Added
/editnick for editing other players' nicknames through the nickname GUI.
- Nicknames now persist more reliably when TAB is installed.
- Allium now clears plugin-set tab overrides when TAB owns tab formatting.
- Nicknames are blocked when they match an existing online or offline player name.
- Added
nickname.sync-to-essentials, enabled by default.
- When EssentialsX is present, Allium syncs nickname set/reset/restore into Essentials so commands such as
/whois see the same nickname.
- Nickname placeholders can read stored offline nicknames by UUID.
ModGuard
- Added
plugins/Allium/modguard/config.yml from bundled
src/main/resources/modguard/config.yml.
- Legacy
modguard settings from the root
Allium/config.yml are migrated into
modguard/config.yml.
- Added blacklist/whitelist detection mode.
- Added configurable join-time checks with
check-on-join and
check-delay-ticks.
- Added configurable punishment mode with
kick-on-detection.
- Added
modguard.bypass to skip checks.
- Added
modguard.notify for staff notifications.
- Added
allium.alerts support for staff alert delivery.
- Added
/core alerts modguard [on|off|toggle].
- Added per-player ModGuard evidence logs at
plugins/Allium/modguard/logs/{uuid}.yml.
- Evidence logs are only created once a player gets a hit, then later hits append to the same UUID file.
- Evidence entries include session, timestamp, method, check, raw value, confidence, action, and whether punishment happened.
- Brand checks listen for
minecraft:brand.
- Channel checks inspect client plugin channel registrations.
- Forge/FML checks listen on
fml:handshake,
fml:login,
forge:handshake, and
forge:login.
- Matching supports case-sensitive and regex modes.
- Default banned mod patterns include Freecam, Inventory Profiles Next variants, Tweakeroo, Litematica, MiniHUD, Meteor, Wurst, Vape, LiquidBounce, Aristois, Baritone, and related client/mod ids.
- Default allowed mod examples for whitelist mode include OptiFabric, Sodium, Lithium, Phosphor, Iris, Fabric API, and Mod Menu.
Translation Probe Detection
- Added optional PacketEvents translation-key probing under
modguard/config.yml.
- Translation probes are disabled by default.
- Probe checks can define translation keys, expected resolved text, action, timeout, fallback prefix, and whether kicks require corroboration.
- The default sample check targets
key.meteorclient.opengui as an alert-only Meteor probe.
- Probe hits feed into ModGuard alerts and evidence logs.
- Probe defaults are intentionally alert-based because resource packs can define translation keys and cause false positives.
Security Alerts
- Added ModGuard as an individual security alert feed.
-
/core alerts now shows gamemode audit, chat filter, and ModGuard alert state.
-
/core alerts modguard toggles whether a staff member sees ModGuard alerts.
- Staff permission bundles now include
allium.alerts and
modguard.notify.
Custom Items
- Added the
item_renamer custom item.
- Item Renamer uses a name tag item with Oraxen model
oraxen:item_renamer.
- Holding an Item Renamer grants temporary ItemEdit rename permissions.
- Supported temporary permissions include MiniMessage, format, and color rename access.
- Players with direct ItemEdit rename permission are not managed by the Item Renamer system.
-
/rename <name> and
/ie rename <name> are intercepted for item consumption.
- The renamer cannot be used on air or to rename itself.
- One renamer is consumed shortly after a successful rename command.
World And Ore Generation
- Added the custom ore generation manager and listener for applying configured Oraxen ores to generated chunks.
- Added pre-generation plumbing in the ore manager for processing chunks around a configured center/radius.
- Ore generation remains configurable under
ore-generation.
- Added safe End Gateway teleport handling near the main End island.
- End Gateway handling is configurable with
end-gateway.max-distance-from-center and
end-gateway.search-radius.
- The gateway safety search prioritizes same-Y landing positions, then nearby Y levels, then an expanding perimeter search.
- Gateway handling rejects unsafe ground and blocked feet/head positions.
- A short cooldown prevents repeated gateway handling spam.
Inventory And Restore QoL
- Offline inventory handling was expanded for restore workflows.
- Restore GUI support now works against target UUIDs so staff can restore offline players more easily.
- Inventory snapshot/restore GUI code was expanded across inventory, ender chest, options, and formatting views.
Command Hiding And Alt Accounts
- Added an
alt hide group to
hide.yml.
- The
alt group is blacklist mode by default.
- The default blocked alt commands are
pay,
jobs,
quests,
tasks,
ah, and
auctionhouse.
- Tab completion hiding remains configured with
^.
Config And Permissions
- Added
allium.gradientname.
- Added
allium.party.staff.
- Added
allium.locatorbar.help.
- Added
chat.minimessage.gradient.animation.
- Added
modguard.bypass.
- Added
modguard.notify.
- Added
nickname.sync-to-essentials.
- Added
end-gateway.max-distance-from-center.
- Added
end-gateway.search-radius.
- Plugin metadata now uses
${project.version} from Maven.
- Maven project version is now
0.1.6a.
- Plugin main class moved to
codes.castled.allium.PluginStart.
- Plugin author metadata changed to
castledking.
Fixes
- Fixed
/local and
/global alias handling by using the executed command label instead of only the Bukkit command name.
- Fixed local chat accidentally behaving like global chat through shared aliases.
- Fixed DiscordSRV inbound messages not appearing in console after Allium cancels DiscordSRV events.
- Fixed raw
%tab_tabprefix%,
%tab_customtabname%, and
%tab_tabsuffix% placeholders showing in tab when TAB/PAPI could not resolve them.
- Fixed far-away animated names snapshotting once and appearing paused in synthetic tab entries.
- Fixed animated tab display names fighting TAB prefix/suffix formatting by preserving TAB formatting in the animated name builder.
- Fixed missing spacing between TAB prefix and animated name in common prefix formats.
- Fixed nickname persistence/restore behavior when TAB owns the tab list.
- Fixed same-name nicknames being accepted.
- Reduced max database pool connections to lower memory usage.
- Kept party movement/TAB visibility updates throttled to avoid excessive packet churn.
Internal And Release Engineering
- Java packages were renamed from
net.survivalfun.core to
codes.castled.allium.
- Removed the old command bridge manager.
- Added GitHub Actions for continuous delivery and Spigot release publishing.
- Added
.release scripts for release note conversion, Modrinth publishing, Spigot publishing, cookie handling, and Discord notifications.
- Added a release Dockerfile and Discord webhook template.