File Details
Syntactical 2.0.8
- R
- Nov 13, 2025
- 26.25 KB
- 68
- 1.21.4
File Name
syntactical-2.0.8.jar
Supported Versions
- 1.21.4
Syntactical (Latest Update) 2.0.8
New Features
Armor Stand Arms Toggle
-
Added
/enablearmscommand to toggle arms on placed armor stands -
Per-player setting stored in memory
-
Requires
syntactical.arms.togglepermission -
Visual feedback when placing armor stands with arms enabled
-
Added
/armsstatuscommand to check current arms setting
LuckPerms Integration
-
Added
/promoteand/demotecommands -
Supports:
-
Step-by-step rank changes (
/promote Player→ next rank) -
Direct rank changes (
/promote Player governor)
-
-
Enforces hierarchy: players can only modify ranks below their own
-
All messages configurable via config.yml
-
Tab-completion for player names and configured ranks
Configurable Rank Order
-
Rank progression now defined in config.yml under
ranks.order -
Easily modify or extend rank ladders without recompiling
OP Safeguard
-
Intercepts
/opfrom authorized players and assigns the governor rank via LuckPerms instead -
Console-issued
/opis never intercepted -
Sends configurable warnings advising the use of
/promote -
Stores a pending override so the executor can still force
/opwith/override -
Added
/overridecommand (with tab-complete for pending player) -
Now supports offline targets: resolves UUID via LuckPerms and assigns governor even if the player is offline
Improvements
-
Centralized messages: All command/event messages now come from config.yml
-
Paper Brigadier commands: Registered commands via Paper's lifecycle for better tab-complete and performance
-
Permission-aware safeguard: The
/opsafeguard only triggers if the executor actually has permission to use/op(no extra messages for unauthorized users) -
LuckPerms rank updates: Only inheritance (group) nodes are changed; other permission nodes are preserved
-
Rank order handling: Normalizes to lowercase and provides a sensible default fallback aligned with config
-
Vault UX consistency:
-
Unified vault title prefix across manager/listener
-
/pvuses an integer argument with proper bounds based on config and permissions (syntactical.vault.unlimited)
-
-
Code cleanup:
-
Removed duplicate listener registration
-
Consistent colorization and minor UX tweaks
-
Fixes
-
Resolved LuckPerms API incompatibility: replaced
NodeMap.mutate()/removeIfwith a safe collect-and-remove approach -
Unban logging: fixed to use
logUnBaninstead oflogBan -
Player name handling: stopped lowercasing player names during
/opinterception to preserve exact matches
Existing Features Maintained
-
Ban logging system (
banlogs.yml) -
/seticoncommand -
/swaphandcommand -
Personal vault system with configurable limits
Notes for Admins
-
Ensure LuckPerms API 5.x is available (
compileOnly net.luckperms:api:5.4recommended) -
Paper 1.21.4 and Java 21 are targeted
-
Update config.yml to customize the new messages:
-
messages.op-safeguard.*(usage, warn, override-tip, given-governor, given-governor-offline, unknown-offline, etc.) -
Arms toggle messages can be added to config if needed
-
-
If you previously relied on multi-group setups, review the new "single-group" behavior for promotions/demotions (only inheritance nodes are replaced)
-
Armor stand arms setting is per-player and resets on server restart (can be extended to persist if needed)

