A comprehensive protection and utility system for Minecraft servers. This plugin includes
blockers,
disablers, and
general utilities to increase control, security, and performance.
✅ Fully configurable via config.yml ✅ Supports Minecraft
1.8.9 to 1.21.4 ✅ Includes
permission-based overrides ✅ Modular loading system with isolated config directories ✅ Automatic registration of utility modules via package scanning
ℹ️ Recent Updates
♻️ Modular System with Auto-loading
- Introduced ModuleLoader class that loads configuration files per-module from /modules/{name}/config.yml.
- Modules now support README generation and config fallback.
- Added getConfig(String module, String configName) and hasModule(...), hasConfig(...) utilities.
Utility Module Auto-registration
- Added loadUtilityModules(String basePackage) method (with Kotlin + Java compatibility).
- Scans all classes (even in subpackages) inside com.br.gabrielmartins.syntri.utils
- Automatically instantiates and registers any class implementing Registrable
- Supports both no-args constructors and constructors with (Plugin plugin) parameter
- Utility modules like EnderPearlCooldown, InfiniteAnvil, and SpawnOnJoin can now self-register seamlessly
Improved Plugin Compatibility
- Full compatibility with Kotlin reflection and Java Class API
- Handles utility modules with Plugin constructor via:
clazz.getDeclaredConstructor(Plugin::class.java).newInstance(plugin)
- Fallbacks to no-arg constructors if needed
- Supports abstract and interface filtering by default
Unified General Config
- Moved all blocker, disabler, and utility settings to modules/general/config.yml
- Cleaner organization, no longer split across random plugin paths
✅ Permissions Refactor
- All permissions standardized to syntri.* format (e.g., syntri.bypass.shiftemcontainer, syntri.spawn.vip)
- Updated documentation accordingly
Documentation Enhancements
- This README now includes:
- Feature-by-feature explanation
- ✅ Required permission for each module
- Clear summary table at the end
⚙️ Reflections Integration
- Using Reflections to dynamically load all modules and utility logic
- No need to manually register utility listeners anymore
Credit
- Many of the core features and original inspiration were based on the open-source work by Rush