**BREAKING CHANGES (MUST READ BEFORE UPDATE):**
This update contains **some** breaking changes that needs to be reconfigured manually:
- The `command-map.yml` config file is not a thing anymore. All commands now have their own config files located in the `/commands/` directory. Command's settings were moved out to their respective module configs.
- Changed **lang entries** and **permission nodes** for some commands.
- Command cooldown settings were moved out from the `command-map.yml` to individual command files (in `/commands/` directory) under the `Cooldown` setting. Cooldowns for commands of other plugins no longer supported (read full changelog for details).
- All paths in the Bans module's `settings.yml` have been changed for clarity and better organization.
- All current ban entries in your database will become invalid due to new database schema.
- All paths in the Chat module's `settings.yml` have been changed for clarity and better organization.
- Warps cooldown feature is non-functional currently (will be reimplemented).
- Ignore feature is not a thing currently (will be reimplemented as a dedicated module).
**CHANGES:**
- **Core**:
- Added support for **1.21.10**, **1.21.11**.
- Commands get their own, dedicated `/commands/` directory with individual config files.
- Module settings were moved out to the dedicated `modules.yml` config file.
- Multiple `others` permissions in various commands were merged into single permission per each command.
- Improved performance of the `broadcast` command.
- Added explicit, static permissions for all portable containers of the `container` command.
- Added sounds when opening portable containers from the `container` command.
- Fixed `disposal` command used permissions of the `dimension` command.
- Added explicit `Notify` message for the `/enderchest open` command.
- Command `/enchant` has been split into `/enchant` and `/disenchant` commands.
- Command `/disenchant` now can remove all enchantents from an item if no enchantment provided.
- Command `/xp` has been split into `/xp` and `/level` commands.
- Removed unnecessary permissions from `/xp` and `/level` commands.
- Removed the `/xp view` command since the same info can be obtained through the `/playerinfo` command.
- Changed all default messages for the `/xp` and `/level` commands to more clean ones.
- Changed permissions and messages for `/ignite` and `/extinguish` commands to make them less confusing.
- Command `/fly` has been split into `/flytoggle`, `/flyon` and `/flyoff` commands for clarity and simplified usage.
- Fixed a bug, where the `/feed` command can override player's saturation value even if it was greater than the one that's configured for the command.
- Fixed a bug, where the `/health` commands can be executed on dead players which makes them buggied.
- Command `/heal` now can revive dead players.
- Commands `/mob` were removed in favor of better vanilla alternatives.
- Command `/near` now can be used on other players to see players around targetted player.
- Added the `others` permission for the `/near` command.
- Added the `exclude` permission for the `/near` command.
- Added the `%direction%` placeholder to the `/near` command.
- Improved default layout for the `/playerinfo` command. Added a few QoL functions (copy UUID, name, IP).
- Added `others` and `custom` permissions for the `/skull` command.
- Fixed and improved the `/skull` command, so it can produce heads of any real player, from URL and Base 64 values.
- The `/sudo` command has been split on 2 commands: `/forcesay` and `/forcerun`, to make it more clear and easier to use.
- The `/forcesay` and `/forcerun` commands now can bypass the player's `bypass` if run from console.
- The `/suicide` command no longer broadcasts a message, it's a job for the death messages plugin/module.
- Added error handling and feedback for all teleport related commands.
- Added config option to exclude certain plugins from the `Unregister Conflicting Commands` feature.
- Added logs indicates whether conflicting commands were replaced by SunLight's alternatives or not.
- All modules gets their own configurable prefixes for lang messages.
- **Command Cooldowns**:
- The command cooldowns feature has been reworked and is no longer works with external (non-Sunlight) commands.
- SunLight's commands get the `Cooldown` setting inside their config files in the `/commands/` directory.
- The cooldown is now applied if and only if the command execution was successful (the command did it job).
- Since the command result can not be determined for external commands (the API and the game itself don't have such an option), the cooldown feature is not reliable for them, so it was removed.
- **\[Module] Essential**:
- A new module that is responsible for the most common, essential commands and features.
- It was introduced so you can easily toggle on/off the essential features and to respect the modular plugin system.
- **\[Module] Items**:
- A new module that is responsible for item customization.
- Command `/item` with all it's sub-commands are not part of this module.
- Command `/item enchant` now properly supports custom enchantments (if they are properly registered).
- Command `/item enchant` no more can be used to remove enchantments.
- Added command `/item disenchant` to remove enchantment(s) from the item.
- Added command `/item lore insert` to insert lore at specific position.
- Removed command `/item take` since it can't provide enough details for specific items.
- Swapped some arguments in the `/item spawn` command to simplify the usage.
- Added silent `-s` flag for the `/item give` command.
- Added `state` argument for the `/item unbreakable` command.
- Added more validations, better tab completions and feedback messages.
- Added permission for each sub-command of the `/itemlore` command.
- **\[Module] Inventories**:
- A new module that is responsible for viewing and creating inventories and various stuff related to it.
- Commands `/enderchest`, `/inventory`, `/container` and all their sub-commands are now part of this module.
- **\[Module] AFK**:
- Recoded the activity tracker. Improved code and performance.
- Added the status bar message for AFK players indicating their AFK status and AFK time.
- Improved placeholder handling. No more stupid `?` in placeholder output.
- **\[Module] BackLocation**:
- No more caches death location if PlayerDeathEvent was cancelled.
- Added **PlaceholderAPI** placeholders indicating whether player has a back/death location and their expiration time.
- **\[Module] Bans**:
- Bans database merged with the main plugin's database, removing unnecessary extra database connection. You can still isolate it from the player data to synchronize it across multiple servers.
- Added single async task to save modified punishment datas instead of creating new tasks per data every time.
- Database handler is optimized and way more efficient now.
- Added explicit command to unban IP addresses: `/unbanip`
- Added explicit priority setting for Console. Now it's possible to allow console to punish anyone.
- Added explicit kick error message if target player has a greater rank priority than the command sender.
- Added explicit priority error messages for kicks, bans, mutes and warns.
- Added support for offline players for the "Rank Priority" setting. Now prevents players with lower ranks to ban/kick/warn/mute players with higher ranks even if they're offline. Requires **LuckPerms** to work.
- Added explicit commands for temporal bans, mutes and warns.
- IP bans are always permanent now.
- Added explicit duration limit messages for bans, mutes and warns.
- Added explicit mute notification messages when player tries to speak while muted.
- Added config setting to toggle blocking commands for muted players.
- Added UUID support for the `Immunity-List` setting.
- Added permission `sunlight.bans.alts.notify`. Players with this permission will be notified about possible alt accounts of a player when they join the server.
- Command `/alts` now requires `player` argument.
- Greatly improved and optimized **Alts Checker** feature.
- Staff members with "low" ranks can't override existing bans/mutes with lower values anymore.
- Restyled all lang messages (no breaking changes here).
- **\[Module] Chat**:
- Recoded chat event handler, resolving various compatibility and performance issues.
- Improved **AntiCaps** automoderation feature: more smarter and optimized.
- Improved **AntiFlood** (previously AntiSpam) automoderation feature: more smarter and optimized.
- Added config setting that defines cache lifetime of user's content (last message, command, etc.).
- Join-Quit messages feature now is a separated **Greetings** module and is not a part of the Chat module anymore.
- Death Messages feature now is a separated **Death Messages** module and is not a part of the Chat module anymore.
- Announcer feature is now a separated **Announcer** module and is not a part of the Chat module anymore.
- Spy feature is now a separated **Spy** module and is not a part of the Chat module anymore.
- Fixed all issues related to showing items in chat.
- Added message indicating player has no item in hand when using `@hand` in message.
- ItemShow feature will no longer display `Air` if player holds no item.
- Fixed mentions worked incorrect in various scenarios.
- Added message indicating there are no players in a channel radius.
- Added `Format.Fallback` setting.
- Channel's `Auto_Join` setting now works only if player has permissions to listen or speak in a channel.
- Removed setting `Silent_Channel_On_Join`, make this behavior by default.
- Removed active channel feature. Now always uses `Default-Channel-Id` if no channel specified.
- Added config setting to disable the channels feature (basically fallbacks to a single channel).
- Added new channel range modes: `SERVER_WIDE`, `WORLD_WIDE` and `RANGE`.
- Added explicit setting to disable conversation sounds.
- Console can't send private messsages anymore.
- New WordFilter system instead of regex rules. It's easier to use and more optimized.
- Fix: Players can't send private messages to themselves anymore.
- Added config setting to toggle the `Spy` feature.
- Fix: Players can't tag themselves in chat anymore.
- **\[Module] Greetings**:
- A new module that is resposible for join and quit messages, and welcoming new players.
- Removed the `DisplayMode` thing in favor of Spigot/Paper API usage.
- Added proper message implementation for PaperMC.
- **\[Module] Death Messages:**
- A new module that is responsible for player death messages.
- Removed `Range` config setting in favor of Spigot/Paper API usage.
- Added proper message implementation for PaperMC.
- **\[Module] Scheduler:**
- A new module that is responsible for automatic message broadcasting and command dispatching.
- Announcers got their own dedicated `/announcers/` folder.
- Announcers with random order mode no more repeat messages until all of them were displayed.
- **\[Module] Texts:**
- Fixed missing permission check when viewing texts.
- **\[Module] Homes:**
- Fixed typos and mistakes in some lang paths.
- Added explicit message indicating players can't invite themselves.
- Added notify message for online players invited to homes.
- Added sounds for almost every message.
- Replaced `Default` and `Respawn` home settings with a single `Favorite` setting.
- Added a new GUI to browse all players invited to a home.
- Added a dialog screen to invite players to a home.
- Added a new GUI to browse and select home icon.
- Added config option with presets of home icons.
- GUI redesign.
- Players can't set their own icons for homes anymore.
- Improved multi-world handling.
- **\[Module] Tab**:
- Nametags feature were moved out to a dedicated module.
- Tablist sorting no more depends on nametags.
- Added an explicit configuration option to define tablist order for player ranks (permission groups).
- **\[Module] Nametags**:
- A new module that is resposible for player nametag customization.
- **\[Module] Spawns**:
- Added "force" `-f` flag for the `/spawn` command to force teleport players.
- **\[Module] Warmups**:
- Now works for RTP.
- **\[Module] RTP:**
- Improved location lookup, removed hardcoded delays and unnecessary tasks. All instant now.
- Fixed location pick in Nether worlds.
- Fixed a bug, where `StartX` and `StartZ` range options never used.
Optional dependencies
PacketEvents
Any compatible version
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }