-
Notifications
You must be signed in to change notification settings - Fork 1
Fix console chat logging and improve empty message handling #11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,37 +1,145 @@ | ||
| # RemmyChat | ||
|
|
||
| **RemmyChat** is a lightweight, feature-rich chat management solution for PaperMC servers that enhances player communication with a clean, modern design. | ||
|
|
||
|  | ||
| <img src="https://img.shields.io/badge/API-1.21-blue" alt="API Version"> <img src="https://img.shields.io/badge/Version-1.4.2-green" alt="Version"> <img src="https://img.shields.io/badge/License-GPL--3.0-orange" alt="License"> | ||
|
|
||
| ## Overview | ||
|
|
||
| RemmyChat transforms your server's communication with a sleek, modern interface while providing powerful customization through MiniMessage formatting. From immersive proximity chat to comprehensive anti-spam features, RemmyChat balances simplicity with functionality to create the perfect chat experience. | ||
|
|
||
| ## Features | ||
| - **Full MiniMessage Support** - Rich text formatting with colors, hover effects, and clickable elements | ||
| - **Multiple Chat Channels** - Global, local, staff, and trade channels with customizable formats | ||
| - **Proximity Chat** - Configure radius-based local chat for immersive gameplay | ||
| - **PlaceholderAPI Integration** - Unlimited customization possibilities | ||
| - **Private Messaging** - Seamless player-to-player communication with reply functionality | ||
| - **Interactive Elements** - Hoverable player names with information tooltips | ||
| - **Smart URL Detection** - Automatic link formatting with click-to-open | ||
| - **Anti-Spam** - Configurable chat cooldown system | ||
| - **Optimized Performance** - Minimal resource usage even on busy servers | ||
|
|
||
| ## Why Choose RemmyChat? | ||
| RemmyChat stands out with its perfect balance of simplicity and functionality. The plugin is designed with both server administrators and players in mind - easy to configure yet highly customizable, with a beautiful interface that enhances communication while staying out of the way. | ||
| - **Advanced MiniMessage Formatting** — Rich text with colors, gradients, hover effects, and clickable elements | ||
| - **Multi-Channel System** — Global, local, staff, and trade channels with completely customizable formats | ||
| - **Proximity Chat** — Configurable radius-based local chat for immersive gameplay | ||
| - **Private Messaging System** — Seamless player-to-player communication with reply functionality | ||
| - **Message Toggle** — Allow players to enable/disable private messages | ||
| - **Social Spy** — Staff monitoring of player private messages | ||
| - **Flexible Permission System** — Granular control over all plugin features and channels | ||
| - **Group-Based Formatting** — Different chat formats based on player permissions | ||
| - **Custom Placeholders** — Create reusable text elements for consistency across formats | ||
| - **Template System** — Hover templates, channel prefixes, and name styles for easy configuration | ||
| - **Interactive Elements** — Hoverable player names with customizable information tooltips | ||
| - **Automatic URL Detection** — Link formatting with configurable click-to-open functionality | ||
| - **Chat Cooldown** — Configurable anti-spam system to prevent message flooding | ||
| - **Message Persistence** — Database storage for player preferences and chat history | ||
| - **PlaceholderAPI Integration** — Unlimited customization possibilities | ||
| - **LuckPerms Integration** — Seamless permission management | ||
| - **Optimized Performance** — Minimal resource usage even on busy servers | ||
|
|
||
|  | ||
|  | ||
| ## Getting Started | ||
| Installation is straightforward - just drop the plugin in your server's plugins folder, restart, and you're ready to go! Default configuration works great out of the box, but you can easily customize every aspect to match your server's unique needs. | ||
|
|
||
| Whether you're running a small community server or a large network, RemmyChat offers the flexibility, performance, and sleek design to elevate your chat experience. | ||
| Installation is straightforward: | ||
|
|
||
| 1. Download the latest RemmyChat release | ||
| 2. Place the JAR file in your server's `plugins` folder | ||
| 3. Restart your server | ||
| 4. Configuration files will be generated automatically | ||
|
|
||
| ## Configuration | ||
|
|
||
| RemmyChat's configuration is highly flexible while remaining intuitive. Here's a sample of what you can accomplish: | ||
|
|
||
| ### Channel Configuration | ||
|
|
||
| ```yaml | ||
| # Channel configurations | ||
| channels: | ||
| global: | ||
| permission: "" # Empty means everyone can use | ||
| radius: -1 # -1 means global chat | ||
| prefix: "" # No prefix for global | ||
| hover: "player-info" | ||
| display-name: "" | ||
|
|
||
| local: | ||
| permission: "remmychat.channel.local" | ||
| radius: 100 # Chat radius in blocks | ||
| prefix: "local" | ||
| hover: "local-chat" | ||
| display-name: "<gray>[Local]</gray>" | ||
|
|
||
| staff: | ||
| permission: "remmychat.channel.staff" | ||
| radius: -1 | ||
| prefix: "staff" | ||
| hover: "staff-chat" | ||
| display-name: "<gold>[Staff]</gold>" | ||
| ``` | ||
|
|
||
| ### Custom Formatting | ||
|
|
||
| ```yaml | ||
| # Group-based formatting with customizable styles | ||
| groups: | ||
| admin: | ||
| name-style: "admin" | ||
| prefix: "" | ||
| format: "%admin-hover% %player_name%: %default-message%" | ||
|
|
||
| vip: | ||
| name-style: "vip" | ||
| prefix: "" | ||
| format: "<click:suggest_command:'/msg %player_name%'><hover:show_text:'VIP Player'>%vip-prefix%</hover></click> %player_name%: %default-message%" | ||
| ``` | ||
|
|
||
|  | ||
| ### Commands | ||
| - `/remchat channel <name>` - Switch between chat channels | ||
| - `/msg <player> <message>` - Send private messages | ||
| - `/reply <message>` - Reply to the last private message | ||
| ### Interactive Templates | ||
|
|
||
| ```yaml | ||
| # Templates for reuse across formats | ||
| templates: | ||
| hovers: | ||
| player-info: "<#778899>Player information\n<#F8F9FA>Name: <#E8E8E8>%player_name%\n<#F8F9FA>Click to message" | ||
|
|
||
| name-styles: | ||
| default: "<#4A90E2>%player_name%" | ||
| owner: "<bold><gradient:#FF0000:#FFAA00>%player_name%</gradient></bold>" | ||
| admin: "<italic><color:#CC44FF>%player_name%</color></italic>" | ||
| ``` | ||
|
|
||
| ## Commands | ||
|
|
||
| | Command | Description | Permission | | ||
| |---------|-------------|------------| | ||
| | `/remchat channel <name>` | Switch between chat channels | `remmychat.use` | | ||
| | `/remchat reload` | Reload plugin configuration | `remmychat.admin` | | ||
| | `/msg <player> <message>` | Send private message | `remmychat.msg` | | ||
| | `/reply <message>` | Reply to last private message | `remmychat.msg` | | ||
| | `/msgtoggle` | Toggle receiving private messages | `remmychat.msgtoggle` | | ||
| | `/socialspy` | Monitor private messages between players | `remmychat.socialspy` | | ||
|
|
||
| ## Permissions | ||
|
|
||
| | Permission | Description | Default | | ||
| |------------|-------------|---------| | ||
| | `remmychat.use` | Basic plugin access | `true` | | ||
| | `remmychat.msg` | Send private messages | `true` | | ||
| | `remmychat.msgtoggle` | Toggle private messages | `true` | | ||
| | `remmychat.msgtoggle.bypass` | Bypass message toggle | `op` | | ||
| | `remmychat.socialspy` | Use social spy feature | `op` | | ||
| | `remmychat.admin` | Administrative access | `op` | | ||
| | `remmychat.channel.<name>` | Access to specific channel | Varies | | ||
|
|
||
| ## Integration | ||
|
|
||
| ### PlaceholderAPI | ||
|
|
||
| RemmyChat automatically integrates with PlaceholderAPI if installed, allowing you to use any placeholders in your chat formats. | ||
|
|
||
| ### LuckPerms | ||
|
|
||
| When LuckPerms is detected, RemmyChat can use permission groups for chat formatting, simplifying setup for servers with existing permission structures. | ||
|
|
||
| ## Why Choose RemmyChat? | ||
|
|
||
| RemmyChat stands out with its perfect balance of simplicity and functionality. The plugin is designed with both server administrators and players in mind - easy to configure yet highly customizable, with a beautiful interface that enhances communication while staying out of the way. | ||
|
|
||
| Whether you're running a small community server or a large network, RemmyChat offers the flexibility, performance, and sleek design to elevate your chat experience. | ||
|
|
||
| ### Permissions | ||
| - `remmychat.use` - Access to basic commands | ||
| - `remmychat.channel.<channelname>` - Access to specific channels | ||
| - `remmychat.admin` - Administrative access | ||
| ## Support & Development | ||
|
|
||
|  | ||
| - **Website**: [noximity.com](https://noximity.com) | ||
| - **Issues & Feature Requests**: Please use our GitHub issues tracker | ||
| - **Version**: 1.4.1 | ||
| - **License**: GPL-3.0 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Returning null here might lead to potential NullPointerExceptions if any caller forgets to perform a null check. Consider returning Component.empty() instead or explicitly documenting that null is a valid response.