diff --git a/bin/main/com/loki/lochat/LoChat.class b/bin/main/com/loki/lochat/LoChat.class index b8b59b0..631806c 100644 Binary files a/bin/main/com/loki/lochat/LoChat.class and b/bin/main/com/loki/lochat/LoChat.class differ diff --git a/bin/main/com/loki/lochat/api/service/ChatService.class b/bin/main/com/loki/lochat/api/service/ChatService.class deleted file mode 100644 index e3de413..0000000 Binary files a/bin/main/com/loki/lochat/api/service/ChatService.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/api/service/MentionService.class b/bin/main/com/loki/lochat/api/service/MentionService.class deleted file mode 100644 index 63edd11..0000000 Binary files a/bin/main/com/loki/lochat/api/service/MentionService.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/api/service/MessageService.class b/bin/main/com/loki/lochat/api/service/MessageService.class deleted file mode 100644 index 33e3a3a..0000000 Binary files a/bin/main/com/loki/lochat/api/service/MessageService.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/api/service/MessagingService.class b/bin/main/com/loki/lochat/api/service/MessagingService.class deleted file mode 100644 index cf948f8..0000000 Binary files a/bin/main/com/loki/lochat/api/service/MessagingService.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/api/service/MuteService.class b/bin/main/com/loki/lochat/api/service/MuteService.class deleted file mode 100644 index fe2653f..0000000 Binary files a/bin/main/com/loki/lochat/api/service/MuteService.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/api/service/NickService.class b/bin/main/com/loki/lochat/api/service/NickService.class deleted file mode 100644 index 73f02c5..0000000 Binary files a/bin/main/com/loki/lochat/api/service/NickService.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/api/service/PlayerService.class b/bin/main/com/loki/lochat/api/service/PlayerService.class deleted file mode 100644 index fe4f987..0000000 Binary files a/bin/main/com/loki/lochat/api/service/PlayerService.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/api/service/PunishmentService.class b/bin/main/com/loki/lochat/api/service/PunishmentService.class deleted file mode 100644 index 47de38c..0000000 Binary files a/bin/main/com/loki/lochat/api/service/PunishmentService.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/commands/CommandManager.class b/bin/main/com/loki/lochat/commands/CommandManager.class index ec9feae..16fe583 100644 Binary files a/bin/main/com/loki/lochat/commands/CommandManager.class and b/bin/main/com/loki/lochat/commands/CommandManager.class differ diff --git a/bin/main/com/loki/lochat/commands/admin/broadcast/AnnounceCommand.class b/bin/main/com/loki/lochat/commands/admin/broadcast/AnnounceCommand.class index 31446b0..da3260f 100644 Binary files a/bin/main/com/loki/lochat/commands/admin/broadcast/AnnounceCommand.class and b/bin/main/com/loki/lochat/commands/admin/broadcast/AnnounceCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/admin/broadcast/DiscordCommand.class b/bin/main/com/loki/lochat/commands/admin/broadcast/DiscordCommand.class index bd741ae..0eee752 100644 Binary files a/bin/main/com/loki/lochat/commands/admin/broadcast/DiscordCommand.class and b/bin/main/com/loki/lochat/commands/admin/broadcast/DiscordCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/admin/chat/ChatSpyCommand.class b/bin/main/com/loki/lochat/commands/admin/chat/ChatSpyCommand.class index cc53d9d..b64736a 100644 Binary files a/bin/main/com/loki/lochat/commands/admin/chat/ChatSpyCommand.class and b/bin/main/com/loki/lochat/commands/admin/chat/ChatSpyCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/admin/chat/ClearChatCommand.class b/bin/main/com/loki/lochat/commands/admin/chat/ClearChatCommand.class index 0f978dd..c6624cc 100644 Binary files a/bin/main/com/loki/lochat/commands/admin/chat/ClearChatCommand.class and b/bin/main/com/loki/lochat/commands/admin/chat/ClearChatCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/admin/chat/ClearChatConfigCommand.class b/bin/main/com/loki/lochat/commands/admin/chat/ClearChatConfigCommand.class index e33eee1..54c70d5 100644 Binary files a/bin/main/com/loki/lochat/commands/admin/chat/ClearChatConfigCommand.class and b/bin/main/com/loki/lochat/commands/admin/chat/ClearChatConfigCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/admin/system/HubCommand.class b/bin/main/com/loki/lochat/commands/admin/system/HubCommand.class index b164af2..2139fbe 100644 Binary files a/bin/main/com/loki/lochat/commands/admin/system/HubCommand.class and b/bin/main/com/loki/lochat/commands/admin/system/HubCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/admin/system/LoChatCommand.class b/bin/main/com/loki/lochat/commands/admin/system/LoChatCommand.class index b2410aa..3ed77f7 100644 Binary files a/bin/main/com/loki/lochat/commands/admin/system/LoChatCommand.class and b/bin/main/com/loki/lochat/commands/admin/system/LoChatCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/admin/system/ReloadConfigCommand.class b/bin/main/com/loki/lochat/commands/admin/system/ReloadConfigCommand.class index 4f6c9c4..26f4813 100644 Binary files a/bin/main/com/loki/lochat/commands/admin/system/ReloadConfigCommand.class and b/bin/main/com/loki/lochat/commands/admin/system/ReloadConfigCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/base/BaseCommand.class b/bin/main/com/loki/lochat/commands/base/BaseCommand.class index e4e1de1..5b067f8 100644 Binary files a/bin/main/com/loki/lochat/commands/base/BaseCommand.class and b/bin/main/com/loki/lochat/commands/base/BaseCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/chat/GlobalChatCommand.class b/bin/main/com/loki/lochat/commands/chat/GlobalChatCommand.class index 7326ae4..1e98fbe 100644 Binary files a/bin/main/com/loki/lochat/commands/chat/GlobalChatCommand.class and b/bin/main/com/loki/lochat/commands/chat/GlobalChatCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/chat/LocalChatCommand.class b/bin/main/com/loki/lochat/commands/chat/LocalChatCommand.class index c820701..c784e17 100644 Binary files a/bin/main/com/loki/lochat/commands/chat/LocalChatCommand.class and b/bin/main/com/loki/lochat/commands/chat/LocalChatCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/messaging/IgnoreCommand.class b/bin/main/com/loki/lochat/commands/messaging/IgnoreCommand.class index bcc76bc..f662fc2 100644 Binary files a/bin/main/com/loki/lochat/commands/messaging/IgnoreCommand.class and b/bin/main/com/loki/lochat/commands/messaging/IgnoreCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/messaging/IgnoreListCommand.class b/bin/main/com/loki/lochat/commands/messaging/IgnoreListCommand.class index 6502363..f87c613 100644 Binary files a/bin/main/com/loki/lochat/commands/messaging/IgnoreListCommand.class and b/bin/main/com/loki/lochat/commands/messaging/IgnoreListCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/messaging/MsgCommand.class b/bin/main/com/loki/lochat/commands/messaging/MsgCommand.class index a73d17a..ab40ab4 100644 Binary files a/bin/main/com/loki/lochat/commands/messaging/MsgCommand.class and b/bin/main/com/loki/lochat/commands/messaging/MsgCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/messaging/ReplyCommand.class b/bin/main/com/loki/lochat/commands/messaging/ReplyCommand.class index 9f88850..e76663c 100644 Binary files a/bin/main/com/loki/lochat/commands/messaging/ReplyCommand.class and b/bin/main/com/loki/lochat/commands/messaging/ReplyCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/messaging/UnignoreCommand.class b/bin/main/com/loki/lochat/commands/messaging/UnignoreCommand.class index 3b86919..1dbe248 100644 Binary files a/bin/main/com/loki/lochat/commands/messaging/UnignoreCommand.class and b/bin/main/com/loki/lochat/commands/messaging/UnignoreCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/moderation/ban/BanCommand.class b/bin/main/com/loki/lochat/commands/moderation/ban/BanCommand.class index 1d60b77..0ff691d 100644 Binary files a/bin/main/com/loki/lochat/commands/moderation/ban/BanCommand.class and b/bin/main/com/loki/lochat/commands/moderation/ban/BanCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/moderation/ban/UnbanCommand.class b/bin/main/com/loki/lochat/commands/moderation/ban/UnbanCommand.class index 29e039e..6ccbf11 100644 Binary files a/bin/main/com/loki/lochat/commands/moderation/ban/UnbanCommand.class and b/bin/main/com/loki/lochat/commands/moderation/ban/UnbanCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/moderation/mute/MuteBlameCommand.class b/bin/main/com/loki/lochat/commands/moderation/mute/MuteBlameCommand.class index bce1baf..5c67b05 100644 Binary files a/bin/main/com/loki/lochat/commands/moderation/mute/MuteBlameCommand.class and b/bin/main/com/loki/lochat/commands/moderation/mute/MuteBlameCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/moderation/mute/MuteCommand.class b/bin/main/com/loki/lochat/commands/moderation/mute/MuteCommand.class index c080456..8b54920 100644 Binary files a/bin/main/com/loki/lochat/commands/moderation/mute/MuteCommand.class and b/bin/main/com/loki/lochat/commands/moderation/mute/MuteCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/moderation/mute/MuteHistoryCommand.class b/bin/main/com/loki/lochat/commands/moderation/mute/MuteHistoryCommand.class index f677142..0128282 100644 Binary files a/bin/main/com/loki/lochat/commands/moderation/mute/MuteHistoryCommand.class and b/bin/main/com/loki/lochat/commands/moderation/mute/MuteHistoryCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/moderation/mute/MuteListCommand.class b/bin/main/com/loki/lochat/commands/moderation/mute/MuteListCommand.class index a03d8f0..b0af18a 100644 Binary files a/bin/main/com/loki/lochat/commands/moderation/mute/MuteListCommand.class and b/bin/main/com/loki/lochat/commands/moderation/mute/MuteListCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/moderation/mute/UnmuteCommand.class b/bin/main/com/loki/lochat/commands/moderation/mute/UnmuteCommand.class index 32e180d..0ba99c5 100644 Binary files a/bin/main/com/loki/lochat/commands/moderation/mute/UnmuteCommand.class and b/bin/main/com/loki/lochat/commands/moderation/mute/UnmuteCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/moderation/warn/SilentWarnCommand.class b/bin/main/com/loki/lochat/commands/moderation/warn/SilentWarnCommand.class index 6d98c50..56ff276 100644 Binary files a/bin/main/com/loki/lochat/commands/moderation/warn/SilentWarnCommand.class and b/bin/main/com/loki/lochat/commands/moderation/warn/SilentWarnCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/moderation/warn/WarnCommand.class b/bin/main/com/loki/lochat/commands/moderation/warn/WarnCommand.class index 008634b..4f31393 100644 Binary files a/bin/main/com/loki/lochat/commands/moderation/warn/WarnCommand.class and b/bin/main/com/loki/lochat/commands/moderation/warn/WarnCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/nick/NickCommand.class b/bin/main/com/loki/lochat/commands/nick/NickCommand.class index 607f5c4..7382e76 100644 Binary files a/bin/main/com/loki/lochat/commands/nick/NickCommand.class and b/bin/main/com/loki/lochat/commands/nick/NickCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/nick/PlayerInfoCommand.class b/bin/main/com/loki/lochat/commands/nick/PlayerInfoCommand.class index c0fdb6c..ec4db27 100644 Binary files a/bin/main/com/loki/lochat/commands/nick/PlayerInfoCommand.class and b/bin/main/com/loki/lochat/commands/nick/PlayerInfoCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/rp/DoCommand.class b/bin/main/com/loki/lochat/commands/rp/DoCommand.class index 371a781..4b0aff2 100644 Binary files a/bin/main/com/loki/lochat/commands/rp/DoCommand.class and b/bin/main/com/loki/lochat/commands/rp/DoCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/rp/MeCommand.class b/bin/main/com/loki/lochat/commands/rp/MeCommand.class index 72276c6..4d65d30 100644 Binary files a/bin/main/com/loki/lochat/commands/rp/MeCommand.class and b/bin/main/com/loki/lochat/commands/rp/MeCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/rp/RollCommand.class b/bin/main/com/loki/lochat/commands/rp/RollCommand.class index 1e0861f..d591d3f 100644 Binary files a/bin/main/com/loki/lochat/commands/rp/RollCommand.class and b/bin/main/com/loki/lochat/commands/rp/RollCommand.class differ diff --git a/bin/main/com/loki/lochat/commands/rp/RpUtil.class b/bin/main/com/loki/lochat/commands/rp/RpUtil.class index a507f05..3e058b7 100644 Binary files a/bin/main/com/loki/lochat/commands/rp/RpUtil.class and b/bin/main/com/loki/lochat/commands/rp/RpUtil.class differ diff --git a/bin/main/com/loki/lochat/commands/rp/TryCommand.class b/bin/main/com/loki/lochat/commands/rp/TryCommand.class index be6a376..4730f50 100644 Binary files a/bin/main/com/loki/lochat/commands/rp/TryCommand.class and b/bin/main/com/loki/lochat/commands/rp/TryCommand.class differ diff --git a/bin/main/com/loki/lochat/config/AppearanceConfig.class b/bin/main/com/loki/lochat/config/AppearanceConfig.class deleted file mode 100644 index 1ef321a..0000000 Binary files a/bin/main/com/loki/lochat/config/AppearanceConfig.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/config/ConfigManager.class b/bin/main/com/loki/lochat/config/ConfigManager.class index de4a9cd..3c9f12d 100644 Binary files a/bin/main/com/loki/lochat/config/ConfigManager.class and b/bin/main/com/loki/lochat/config/ConfigManager.class differ diff --git a/bin/main/com/loki/lochat/config/FiltersConfig.class b/bin/main/com/loki/lochat/config/FiltersConfig.class deleted file mode 100644 index 6142cbd..0000000 Binary files a/bin/main/com/loki/lochat/config/FiltersConfig.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/config/MessageConfig.class b/bin/main/com/loki/lochat/config/MessageConfig.class deleted file mode 100644 index 6acb34c..0000000 Binary files a/bin/main/com/loki/lochat/config/MessageConfig.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/config/MessagesConfig.class b/bin/main/com/loki/lochat/config/MessagesConfig.class deleted file mode 100644 index 32949fc..0000000 Binary files a/bin/main/com/loki/lochat/config/MessagesConfig.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/config/MuteConfig.class b/bin/main/com/loki/lochat/config/MuteConfig.class deleted file mode 100644 index 1565152..0000000 Binary files a/bin/main/com/loki/lochat/config/MuteConfig.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/config/SoundsConfig.class b/bin/main/com/loki/lochat/config/SoundsConfig.class deleted file mode 100644 index 72a50ea..0000000 Binary files a/bin/main/com/loki/lochat/config/SoundsConfig.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/core/PluginInitializer.class b/bin/main/com/loki/lochat/core/PluginInitializer.class index 3fd93d8..3b88712 100644 Binary files a/bin/main/com/loki/lochat/core/PluginInitializer.class and b/bin/main/com/loki/lochat/core/PluginInitializer.class differ diff --git a/bin/main/com/loki/lochat/core/PluginShutdown.class b/bin/main/com/loki/lochat/core/PluginShutdown.class index bf16670..14bf7ee 100644 Binary files a/bin/main/com/loki/lochat/core/PluginShutdown.class and b/bin/main/com/loki/lochat/core/PluginShutdown.class differ diff --git a/bin/main/com/loki/lochat/core/factory/ServiceFactory.class b/bin/main/com/loki/lochat/core/factory/ServiceFactory.class index a904342..d9c4722 100644 Binary files a/bin/main/com/loki/lochat/core/factory/ServiceFactory.class and b/bin/main/com/loki/lochat/core/factory/ServiceFactory.class differ diff --git a/bin/main/com/loki/lochat/core/filter/AdvancedMessageFilter.class b/bin/main/com/loki/lochat/core/filter/AdvancedMessageFilter.class index 61797f8..dc2730e 100644 Binary files a/bin/main/com/loki/lochat/core/filter/AdvancedMessageFilter.class and b/bin/main/com/loki/lochat/core/filter/AdvancedMessageFilter.class differ diff --git a/bin/main/com/loki/lochat/core/filter/CooldownFilter.class b/bin/main/com/loki/lochat/core/filter/CooldownFilter.class index 97bbc3d..f71c9c2 100644 Binary files a/bin/main/com/loki/lochat/core/filter/CooldownFilter.class and b/bin/main/com/loki/lochat/core/filter/CooldownFilter.class differ diff --git a/bin/main/com/loki/lochat/core/filter/MuteFilter.class b/bin/main/com/loki/lochat/core/filter/MuteFilter.class index 885697a..b13f2bb 100644 Binary files a/bin/main/com/loki/lochat/core/filter/MuteFilter.class and b/bin/main/com/loki/lochat/core/filter/MuteFilter.class differ diff --git a/bin/main/com/loki/lochat/core/filter/filters/SpamFilter.class b/bin/main/com/loki/lochat/core/filter/filters/SpamFilter.class index 765cec6..4983154 100644 Binary files a/bin/main/com/loki/lochat/core/filter/filters/SpamFilter.class and b/bin/main/com/loki/lochat/core/filter/filters/SpamFilter.class differ diff --git a/bin/main/com/loki/lochat/core/filter/filters/UrlFilter.class b/bin/main/com/loki/lochat/core/filter/filters/UrlFilter.class index 92add1d..67547a2 100644 Binary files a/bin/main/com/loki/lochat/core/filter/filters/UrlFilter.class and b/bin/main/com/loki/lochat/core/filter/filters/UrlFilter.class differ diff --git a/bin/main/com/loki/lochat/core/registry/ServiceRegistry.class b/bin/main/com/loki/lochat/core/registry/ServiceRegistry.class index a5ae37b..d010129 100644 Binary files a/bin/main/com/loki/lochat/core/registry/ServiceRegistry.class and b/bin/main/com/loki/lochat/core/registry/ServiceRegistry.class differ diff --git a/bin/main/com/loki/lochat/core/service/ChatServiceImpl.class b/bin/main/com/loki/lochat/core/service/ChatServiceImpl.class deleted file mode 100644 index 4302624..0000000 Binary files a/bin/main/com/loki/lochat/core/service/ChatServiceImpl.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/core/service/MentionServiceImpl.class b/bin/main/com/loki/lochat/core/service/MentionServiceImpl.class deleted file mode 100644 index 534e922..0000000 Binary files a/bin/main/com/loki/lochat/core/service/MentionServiceImpl.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/core/service/MessageServiceImpl.class b/bin/main/com/loki/lochat/core/service/MessageServiceImpl.class deleted file mode 100644 index 3ebdad9..0000000 Binary files a/bin/main/com/loki/lochat/core/service/MessageServiceImpl.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/core/service/MessagingServiceImpl.class b/bin/main/com/loki/lochat/core/service/MessagingServiceImpl.class deleted file mode 100644 index ad532ef..0000000 Binary files a/bin/main/com/loki/lochat/core/service/MessagingServiceImpl.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/core/service/MuteServiceImpl.class b/bin/main/com/loki/lochat/core/service/MuteServiceImpl.class deleted file mode 100644 index 55ae702..0000000 Binary files a/bin/main/com/loki/lochat/core/service/MuteServiceImpl.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/core/service/NickServiceImpl.class b/bin/main/com/loki/lochat/core/service/NickServiceImpl.class deleted file mode 100644 index 2deef7d..0000000 Binary files a/bin/main/com/loki/lochat/core/service/NickServiceImpl.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/core/service/PlayerServiceImpl.class b/bin/main/com/loki/lochat/core/service/PlayerServiceImpl.class deleted file mode 100644 index 0383637..0000000 Binary files a/bin/main/com/loki/lochat/core/service/PlayerServiceImpl.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/core/service/PunishmentServiceImpl$1.class b/bin/main/com/loki/lochat/core/service/PunishmentServiceImpl$1.class deleted file mode 100644 index 7ae9a8c..0000000 Binary files a/bin/main/com/loki/lochat/core/service/PunishmentServiceImpl$1.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/core/service/PunishmentServiceImpl$PunishmentSnapshot.class b/bin/main/com/loki/lochat/core/service/PunishmentServiceImpl$PunishmentSnapshot.class deleted file mode 100644 index 8828fc9..0000000 Binary files a/bin/main/com/loki/lochat/core/service/PunishmentServiceImpl$PunishmentSnapshot.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/core/service/PunishmentServiceImpl.class b/bin/main/com/loki/lochat/core/service/PunishmentServiceImpl.class deleted file mode 100644 index 8765ecf..0000000 Binary files a/bin/main/com/loki/lochat/core/service/PunishmentServiceImpl.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/core/service/messaging/IgnoreService.class b/bin/main/com/loki/lochat/core/service/messaging/IgnoreService.class deleted file mode 100644 index 56d3770..0000000 Binary files a/bin/main/com/loki/lochat/core/service/messaging/IgnoreService.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/core/service/messaging/PrivateMessageService.class b/bin/main/com/loki/lochat/core/service/messaging/PrivateMessageService.class deleted file mode 100644 index 152fa2b..0000000 Binary files a/bin/main/com/loki/lochat/core/service/messaging/PrivateMessageService.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/core/service/messaging/SpyService.class b/bin/main/com/loki/lochat/core/service/messaging/SpyService.class deleted file mode 100644 index 723e9d1..0000000 Binary files a/bin/main/com/loki/lochat/core/service/messaging/SpyService.class and /dev/null differ diff --git a/bin/main/com/loki/lochat/core/service/mute/strategies/VoiceMuteStrategy.class b/bin/main/com/loki/lochat/core/service/mute/strategies/VoiceMuteStrategy.class index 441bc7d..4bda532 100644 Binary files a/bin/main/com/loki/lochat/core/service/mute/strategies/VoiceMuteStrategy.class and b/bin/main/com/loki/lochat/core/service/mute/strategies/VoiceMuteStrategy.class differ diff --git a/bin/main/com/loki/lochat/data/model/BanRecord.class b/bin/main/com/loki/lochat/data/model/BanRecord.class index 161ffa4..1aa125a 100644 Binary files a/bin/main/com/loki/lochat/data/model/BanRecord.class and b/bin/main/com/loki/lochat/data/model/BanRecord.class differ diff --git a/bin/main/com/loki/lochat/gradient/GradientModule.class b/bin/main/com/loki/lochat/gradient/GradientModule.class index 93344ea..d37dd65 100644 Binary files a/bin/main/com/loki/lochat/gradient/GradientModule.class and b/bin/main/com/loki/lochat/gradient/GradientModule.class differ diff --git a/bin/main/com/loki/lochat/gradient/commands/GradientAdminCommand.class b/bin/main/com/loki/lochat/gradient/commands/GradientAdminCommand.class index a740667..e77bde5 100644 Binary files a/bin/main/com/loki/lochat/gradient/commands/GradientAdminCommand.class and b/bin/main/com/loki/lochat/gradient/commands/GradientAdminCommand.class differ diff --git a/bin/main/com/loki/lochat/gradient/commands/handlers/PrefixCommandHandler.class b/bin/main/com/loki/lochat/gradient/commands/handlers/PrefixCommandHandler.class index df6401b..00a6152 100644 Binary files a/bin/main/com/loki/lochat/gradient/commands/handlers/PrefixCommandHandler.class and b/bin/main/com/loki/lochat/gradient/commands/handlers/PrefixCommandHandler.class differ diff --git a/bin/main/com/loki/lochat/gradient/commands/handlers/prefix/PrefixSetHandler.class b/bin/main/com/loki/lochat/gradient/commands/handlers/prefix/PrefixSetHandler.class index 280be64..c35e771 100644 Binary files a/bin/main/com/loki/lochat/gradient/commands/handlers/prefix/PrefixSetHandler.class and b/bin/main/com/loki/lochat/gradient/commands/handlers/prefix/PrefixSetHandler.class differ diff --git a/bin/main/com/loki/lochat/gradient/data/GradientDataManager.class b/bin/main/com/loki/lochat/gradient/data/GradientDataManager.class index 37fca5f..63a588e 100644 Binary files a/bin/main/com/loki/lochat/gradient/data/GradientDataManager.class and b/bin/main/com/loki/lochat/gradient/data/GradientDataManager.class differ diff --git a/bin/main/com/loki/lochat/gradient/gui/GradientConfirmGUI$ConfirmType.class b/bin/main/com/loki/lochat/gradient/gui/GradientConfirmGUI$ConfirmType.class index b2271b0..999819e 100644 Binary files a/bin/main/com/loki/lochat/gradient/gui/GradientConfirmGUI$ConfirmType.class and b/bin/main/com/loki/lochat/gradient/gui/GradientConfirmGUI$ConfirmType.class differ diff --git a/bin/main/com/loki/lochat/gradient/gui/GradientConfirmGUI.class b/bin/main/com/loki/lochat/gradient/gui/GradientConfirmGUI.class index 3584e88..61f1549 100644 Binary files a/bin/main/com/loki/lochat/gradient/gui/GradientConfirmGUI.class and b/bin/main/com/loki/lochat/gradient/gui/GradientConfirmGUI.class differ diff --git a/bin/main/com/loki/lochat/gradient/listeners/GradientGUIListener.class b/bin/main/com/loki/lochat/gradient/listeners/GradientGUIListener.class index bedcce6..37059d4 100644 Binary files a/bin/main/com/loki/lochat/gradient/listeners/GradientGUIListener.class and b/bin/main/com/loki/lochat/gradient/listeners/GradientGUIListener.class differ diff --git a/bin/main/com/loki/lochat/gradient/service/GradientService.class b/bin/main/com/loki/lochat/gradient/service/GradientService.class index 571d257..1df1e81 100644 Binary files a/bin/main/com/loki/lochat/gradient/service/GradientService.class and b/bin/main/com/loki/lochat/gradient/service/GradientService.class differ diff --git a/bin/main/com/loki/lochat/gradient/service/PrefixService.class b/bin/main/com/loki/lochat/gradient/service/PrefixService.class index 7a2872e..7fac04b 100644 Binary files a/bin/main/com/loki/lochat/gradient/service/PrefixService.class and b/bin/main/com/loki/lochat/gradient/service/PrefixService.class differ diff --git a/bin/main/com/loki/lochat/gradient/util/DisplayNameUtil.class b/bin/main/com/loki/lochat/gradient/util/DisplayNameUtil.class index 653af57..5948528 100644 Binary files a/bin/main/com/loki/lochat/gradient/util/DisplayNameUtil.class and b/bin/main/com/loki/lochat/gradient/util/DisplayNameUtil.class differ diff --git a/bin/main/com/loki/lochat/gradient/util/GradientUtil.class b/bin/main/com/loki/lochat/gradient/util/GradientUtil.class index adb1cd9..e88ce88 100644 Binary files a/bin/main/com/loki/lochat/gradient/util/GradientUtil.class and b/bin/main/com/loki/lochat/gradient/util/GradientUtil.class differ diff --git a/bin/main/com/loki/lochat/integrations/DiscordIntegration.class b/bin/main/com/loki/lochat/integrations/DiscordIntegration.class index d4ff258..89a0389 100644 Binary files a/bin/main/com/loki/lochat/integrations/DiscordIntegration.class and b/bin/main/com/loki/lochat/integrations/DiscordIntegration.class differ diff --git a/bin/main/com/loki/lochat/integrations/DiscordWebhook.class b/bin/main/com/loki/lochat/integrations/DiscordWebhook.class index 704f51e..1b2c105 100644 Binary files a/bin/main/com/loki/lochat/integrations/DiscordWebhook.class and b/bin/main/com/loki/lochat/integrations/DiscordWebhook.class differ diff --git a/bin/main/com/loki/lochat/integrations/LibertyBansHook.class b/bin/main/com/loki/lochat/integrations/LibertyBansHook.class index 39c670f..7318f2f 100644 Binary files a/bin/main/com/loki/lochat/integrations/LibertyBansHook.class and b/bin/main/com/loki/lochat/integrations/LibertyBansHook.class differ diff --git a/bin/main/com/loki/lochat/integrations/PlaceholderAPIHook.class b/bin/main/com/loki/lochat/integrations/PlaceholderAPIHook.class index 70e11bf..a2d2df4 100644 Binary files a/bin/main/com/loki/lochat/integrations/PlaceholderAPIHook.class and b/bin/main/com/loki/lochat/integrations/PlaceholderAPIHook.class differ diff --git a/bin/main/com/loki/lochat/integrations/SkinsRestorerHook.class b/bin/main/com/loki/lochat/integrations/SkinsRestorerHook.class index dd15896..fca0896 100644 Binary files a/bin/main/com/loki/lochat/integrations/SkinsRestorerHook.class and b/bin/main/com/loki/lochat/integrations/SkinsRestorerHook.class differ diff --git a/bin/main/com/loki/lochat/integrations/discord/DiscordMessageService.class b/bin/main/com/loki/lochat/integrations/discord/DiscordMessageService.class index deb7501..a558231 100644 Binary files a/bin/main/com/loki/lochat/integrations/discord/DiscordMessageService.class and b/bin/main/com/loki/lochat/integrations/discord/DiscordMessageService.class differ diff --git a/bin/main/com/loki/lochat/listener/ChatEventListener$ChatMode.class b/bin/main/com/loki/lochat/listener/ChatEventListener$ChatMode.class index ed94676..ebdd5ea 100644 Binary files a/bin/main/com/loki/lochat/listener/ChatEventListener$ChatMode.class and b/bin/main/com/loki/lochat/listener/ChatEventListener$ChatMode.class differ diff --git a/bin/main/com/loki/lochat/listener/ChatEventListener.class b/bin/main/com/loki/lochat/listener/ChatEventListener.class index 18cce17..70154e5 100644 Binary files a/bin/main/com/loki/lochat/listener/ChatEventListener.class and b/bin/main/com/loki/lochat/listener/ChatEventListener.class differ diff --git a/bin/main/com/loki/lochat/listener/DiscordEventListener.class b/bin/main/com/loki/lochat/listener/DiscordEventListener.class index 00b97f3..6b20b84 100644 Binary files a/bin/main/com/loki/lochat/listener/DiscordEventListener.class and b/bin/main/com/loki/lochat/listener/DiscordEventListener.class differ diff --git a/bin/main/com/loki/lochat/listener/ModerationListener.class b/bin/main/com/loki/lochat/listener/ModerationListener.class index 6b1248d..40517d6 100644 Binary files a/bin/main/com/loki/lochat/listener/ModerationListener.class and b/bin/main/com/loki/lochat/listener/ModerationListener.class differ diff --git a/bin/main/com/loki/lochat/listener/PlayerEventListener.class b/bin/main/com/loki/lochat/listener/PlayerEventListener.class index 3cde257..96fbbf5 100644 Binary files a/bin/main/com/loki/lochat/listener/PlayerEventListener.class and b/bin/main/com/loki/lochat/listener/PlayerEventListener.class differ diff --git a/bin/main/com/loki/lochat/managers/AutoMessageManager.class b/bin/main/com/loki/lochat/managers/AutoMessageManager.class index 9dc8630..d555acd 100644 Binary files a/bin/main/com/loki/lochat/managers/AutoMessageManager.class and b/bin/main/com/loki/lochat/managers/AutoMessageManager.class differ diff --git a/bin/main/com/loki/lochat/managers/CustomCommandManager$CustomCommandData.class b/bin/main/com/loki/lochat/managers/CustomCommandManager$CustomCommandData.class index fc26f37..d78bd0b 100644 Binary files a/bin/main/com/loki/lochat/managers/CustomCommandManager$CustomCommandData.class and b/bin/main/com/loki/lochat/managers/CustomCommandManager$CustomCommandData.class differ diff --git a/bin/main/com/loki/lochat/managers/CustomCommandManager.class b/bin/main/com/loki/lochat/managers/CustomCommandManager.class index 5ee3509..2356f56 100644 Binary files a/bin/main/com/loki/lochat/managers/CustomCommandManager.class and b/bin/main/com/loki/lochat/managers/CustomCommandManager.class differ diff --git a/bin/main/com/loki/lochat/managers/EmojiManager.class b/bin/main/com/loki/lochat/managers/EmojiManager.class index 24efb6e..b491cc3 100644 Binary files a/bin/main/com/loki/lochat/managers/EmojiManager.class and b/bin/main/com/loki/lochat/managers/EmojiManager.class differ diff --git a/bin/main/com/loki/lochat/managers/commands/MessageSender.class b/bin/main/com/loki/lochat/managers/commands/MessageSender.class index 88dd679..c0f1118 100644 Binary files a/bin/main/com/loki/lochat/managers/commands/MessageSender.class and b/bin/main/com/loki/lochat/managers/commands/MessageSender.class differ diff --git a/bin/main/com/loki/lochat/managers/commands/PlaceholderProcessor.class b/bin/main/com/loki/lochat/managers/commands/PlaceholderProcessor.class index 641e47f..0d91b96 100644 Binary files a/bin/main/com/loki/lochat/managers/commands/PlaceholderProcessor.class and b/bin/main/com/loki/lochat/managers/commands/PlaceholderProcessor.class differ diff --git a/bin/main/com/loki/lochat/renderer/EnhancedChatRenderer.class b/bin/main/com/loki/lochat/renderer/EnhancedChatRenderer.class index d583e12..b902ff8 100644 Binary files a/bin/main/com/loki/lochat/renderer/EnhancedChatRenderer.class and b/bin/main/com/loki/lochat/renderer/EnhancedChatRenderer.class differ diff --git a/bin/main/com/loki/lochat/renderer/components/EmojiComponent.class b/bin/main/com/loki/lochat/renderer/components/EmojiComponent.class index 4ac2be6..d333323 100644 Binary files a/bin/main/com/loki/lochat/renderer/components/EmojiComponent.class and b/bin/main/com/loki/lochat/renderer/components/EmojiComponent.class differ diff --git a/bin/main/com/loki/lochat/renderer/components/GradientBuilder.class b/bin/main/com/loki/lochat/renderer/components/GradientBuilder.class index bb704c2..8d89e50 100644 Binary files a/bin/main/com/loki/lochat/renderer/components/GradientBuilder.class and b/bin/main/com/loki/lochat/renderer/components/GradientBuilder.class differ diff --git a/bin/main/com/loki/lochat/renderer/components/UrlProcessor.class b/bin/main/com/loki/lochat/renderer/components/UrlProcessor.class index 96260fd..bd8a720 100644 Binary files a/bin/main/com/loki/lochat/renderer/components/UrlProcessor.class and b/bin/main/com/loki/lochat/renderer/components/UrlProcessor.class differ diff --git a/bin/main/com/loki/lochat/utils/color/ColorConverter.class b/bin/main/com/loki/lochat/utils/color/ColorConverter.class index 4b1e614..13e103e 100644 Binary files a/bin/main/com/loki/lochat/utils/color/ColorConverter.class and b/bin/main/com/loki/lochat/utils/color/ColorConverter.class differ diff --git a/bin/main/com/loki/lochat/utils/format/ChatFormatter.class b/bin/main/com/loki/lochat/utils/format/ChatFormatter.class index a59d738..338731b 100644 Binary files a/bin/main/com/loki/lochat/utils/format/ChatFormatter.class and b/bin/main/com/loki/lochat/utils/format/ChatFormatter.class differ diff --git a/bin/main/com/loki/lochat/utils/format/TextFormatter.class b/bin/main/com/loki/lochat/utils/format/TextFormatter.class index 1230a43..7db77fd 100644 Binary files a/bin/main/com/loki/lochat/utils/format/TextFormatter.class and b/bin/main/com/loki/lochat/utils/format/TextFormatter.class differ diff --git a/bin/main/com/loki/lochat/utils/platform/AdventureManager.class b/bin/main/com/loki/lochat/utils/platform/AdventureManager.class index d64f755..a17f118 100644 Binary files a/bin/main/com/loki/lochat/utils/platform/AdventureManager.class and b/bin/main/com/loki/lochat/utils/platform/AdventureManager.class differ diff --git a/bin/main/com/loki/lochat/utils/platform/FoliaUtil.class b/bin/main/com/loki/lochat/utils/platform/FoliaUtil.class index cedc760..2fa744f 100644 Binary files a/bin/main/com/loki/lochat/utils/platform/FoliaUtil.class and b/bin/main/com/loki/lochat/utils/platform/FoliaUtil.class differ diff --git a/bin/main/com/loki/lochat/utils/player/DistanceUtil.class b/bin/main/com/loki/lochat/utils/player/DistanceUtil.class index 5c032d5..8af332d 100644 Binary files a/bin/main/com/loki/lochat/utils/player/DistanceUtil.class and b/bin/main/com/loki/lochat/utils/player/DistanceUtil.class differ diff --git a/bin/main/config.yml b/bin/main/config.yml index f6eb1e2..7c61714 100644 --- a/bin/main/config.yml +++ b/bin/main/config.yml @@ -1,143 +1,114 @@ -# ╔══════════════════════════════════════════════════════════════════════════════╗ -# ║ LoChat Configuration ║ -# ║ Единый конфиг плагина ║ -# ╚══════════════════════════════════════════════════════════════════════════════╝ +# LoChat main configuration +# All settings for chat, gradients, moderation, RP commands, sounds, and filters. -config-version: 5 -prefix: "�D4FF[LoChat]" +config-version: 6 + +# ── General ──────────────────────────────────────────────────────────────────── + +prefix: "&8[&3LoChat&8]" + +# ── Chat System ──────────────────────────────────────────────────────────────── -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Режимы чата │ -# └─────────────────────────────────────────────────────────────────────────────┘ chat: - # Глобальный чат (все видят, активируется через "!") global: enabled: true cooldown: 3 - - # Локальный чат (только в радиусе) + local: enabled: true cooldown: 1 radius: 100 - - # Личные сообщения + pm: enabled: true cooldown: 2 - - # Лимиты сообщений - min_message_length: 1 - max_message_length: 2000 - clear_lines: 100 -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Внешний вид чата (префиксы, форматы, цвета) │ -# └─────────────────────────────────────────────────────────────────────────────┘ + min-message-length: 1 + max-message-length: 2000 + clear-lines: 100 + +# ── Chat Appearance ──────────────────────────────────────────────────────────── + appearance: - # Префиксы чата (GLOBAL / LOCAL) prefixes: global: - emoji: "✦" + emoji: "&b\u2726" text: "GLOBAL" - colors: ["#B798A8", "#7858E9"] - separator: - text: " ▶ " - color: "#9878C9" - message-color: "#E8E0F0" - + separator: " &8\u25B6 " + message-color: "&7" + local: - emoji: "◆" + emoji: "&d\u25C6" text: "LOCAL" - colors: ["#9878C9", "#7858E9"] - separator: - text: " ▶ " - color: "#8B6BD6" - message-color: "#E8E0F0" - - # Формат сообщений - # {emoji} {prefix} {separator} {player_prefix} {player} {player_suffix} {message} + separator: " &8\u25B6 " + message-color: "&7" + chat-format: - global: "{emoji} {prefix} {separator} {player_prefix}{player}{player_suffix}: {message}" - local: "{emoji} {prefix} {separator} {player_prefix}{player}{player_suffix}: {message}" - - # Hover при наведении на ник + global: "{emoji} {prefix}{separator}{player_prefix}{player}{player_suffix}&f: {message}" + local: "{emoji} {prefix}{separator}{player_prefix}{player}{player_suffix}&f: {message}" + hover: enabled: true format: - - "ẲE9▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬" - - "&#B798A8✦ &f{player}" + - "&8\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550" + - " &b\u2726 &f{player}" - "" - - "⚖C9⏱ &fПинг: ẲE9{ping}ms" - - "⚖C9❤ &fЗдоровье: ẲE9{health}/20" - - "⚖C9🍖 &fГолод: ẲE9{food}/20" + - " &7Ping: &b{ping}ms" + - " &7Health: &a{health}&7/20" + - " &7Food: &6{food}&7/20" - "" - - "ẲE9▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬" - - "&#B798A8✦ &fНажми чтобы написать" - - # Эмодзи (текстовые замены) + - "&8\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550" + - " &7Click to message" + emojis: - ":heart:": "❤" - ":star:": "★" - ":diamond:": "♦" - ":check:": "✓" - ":cross:": "✗" - ":arrow:": "→" + ":heart:": "\u2764" + ":star:": "\u2605" + ":diamond:": "\u2666" + ":check:": "\u2713" + ":cross:": "\u2717" + ":arrow:": "\u2192" ":smile:": ":)" ":sad:": ":(" - ":shrug:": "¯\\_(ツ)_/¯" - - # Цвета системных сообщений - colors: - nobody_heard: "#9878C9" - error: "#CF6679" - success: "#9878C9" - warning: "#B798A8" - info: "#A485BC" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Градиентные ники и префиксы │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Gradient Nicknames & Prefixes ────────────────────────────────────────────── + gradient: enabled: true use-gradient-name: true use-custom-prefix: true - - # Настройки отображения + display: update-display-name: true update-tab-list: true - - # Лимиты - min-colors: 1 - max-colors: 7 - max-prefix-length: 16 - - # Цены (PlayerPoints) - price-per-color: 50 - prefix-price: 500 - prefix-one-time-purchase: true - use-permission-instead-of-cost: false - - # Кулдауны (секунды) - color-cooldown: 60 - prefix-cooldown: 120 - - # Форматирование - prefix-format: "[{prefix}] " - gradient-on-prefix: true - gradient-on-luckperms-prefix: true - gradient-on-luckperms-suffix: true - continuous-gradient: true - use-legacy-rgb-format: true - - # Хранилище (file / sqlite) - storage-type: "file" - sqlite-file: "gradient-data.db" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ RP команды (/me, /do, /try, /roll) │ -# └─────────────────────────────────────────────────────────────────────────────┘ + limits: + min-colors: 1 + max-colors: 7 + max-prefix-length: 16 + + pricing: + price-per-color: 50 + prefix-price: 500 + prefix-one-time-purchase: true + use-permission-instead-of-cost: false + + cooldowns: + color: 60 + prefix: 120 + + formatting: + prefix-format: "[{prefix}] " + gradient-on-prefix: true + gradient-on-luckperms-prefix: true + gradient-on-luckperms-suffix: true + continuous-gradient: true + + storage: + type: file + sqlite-file: "gradient-data.db" + +# ── RP Commands ──────────────────────────────────────────────────────────────── + rp: radius: 100 cooldowns: @@ -146,126 +117,92 @@ rp: do: 3 roll: 2 -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Фильтры чата │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Chat Filters ─────────────────────────────────────────────────────────────── + filters: - # Мат-фильтр swear: enabled: true replace: false replacement: "***" - words: - - "хуй" - - "пизда" - - "ебать" - - # URL фильтр + url: enabled: true - replacement: "[ссылка скрыта]" - - # IP фильтр + replacement: "&7[URL hidden]" + ip: enabled: true - replacement: "[IP скрыт]" - - # Скрытые URL (discord.gg и т.д.) + replacement: "&7[IP hidden]" + hidden-urls: enabled: true patterns: - "discord\\.gg" - "dsc\\.gg" - - # Анти-спам + - "bit\\.ly" + - "tinyurl\\.com" + spam: enabled: true max-repeating-chars: 5 - - # Анти-флуд + flood: enabled: true max-same-messages: 3 - - # Капс + caps: enabled: true max-caps-percent: 70 min-length: 5 -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Модерация (муты, баны, варны) │ -# └─────────────────────────────────────────────────────────────────────────────┘ -moderation: - # Дефолтные значения - default-mute-duration: "7d" - default-mute-reason: "Без причины" - default-ban-reason: "Без причины" - - # Команда после мута (для голосового чата) - voice-mute-console-command: "" - - # Сообщение при кике забаненного - ban-kick-message: "&#CF6679Вы забанены! &#B798A8Причина: ẲE9{reason}" +# ── Moderation ───────────────────────────────────────────────────────────────── + +moderation: + default-mute-duration: "7d" + default-mute-reason: "No reason specified" + default-ban-reason: "No reason specified" + voice-mute-console-command: "" + ban-kick-message: "&cYou have been banned!\n&7Reason: &f{reason}" + +# ── Sounds ───────────────────────────────────────────────────────────────────── -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Звуки │ -# └─────────────────────────────────────────────────────────────────────────────┘ sounds: - # Упоминание в чате mention: enabled: true - sound: "BLOCK_NOTE_BLOCK_PLING" + sound: BLOCK_NOTE_BLOCK_PLING volume: 1.0 pitch: 1.5 - - # Личное сообщение + pm: enabled: true - sound: "ENTITY_EXPERIENCE_ORB_PICKUP" + sound: ENTITY_EXPERIENCE_ORB_PICKUP volume: 0.8 pitch: 1.2 - - # Команды + command: enabled: false - sound: "UI_BUTTON_CLICK" + sound: UI_BUTTON_CLICK volume: 0.5 pitch: 1.0 -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Сообщения входа/выхода/смерти │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Join / Quit / Death Messages ────────────────────────────────────────────── + messages: - # Сообщение при входе - # {player} - ник игрока join: enabled: true - format: "⚖C9✦ &#B798A8{player} ẲE9зашел на сервер" - - # Сообщение при выходе + format: "&7\u2726 &b{player} &7joined the server" + quit: enabled: true - format: "⚖C9✦ &#B798A8{player} ẲE9вышел с сервера" - - # Сообщение при смерти - # {player} - ник игрока - # {killer} - ник убийцы (если есть) - # {weapon} - название оружия (если есть) - # {death_message} - стандартное сообщение смерти + format: "&7\u2726 &b{player} &7left the server" + death: enabled: true - # Убийство игроком - player_kill: "&#CF6679☠ &#B798A8{player} ẲE9был убит игроком &#B798A8{killer} ⚖C9({weapon})" - # Смерть от моба - mob_kill: "&#CF6679☠ &#B798A8{player} ẲE9был убит мобом &#B798A8{killer}" - # Обычная смерть - default: "&#CF6679☠ &#B798A8{player} ẲE9{death_message}" + player-kill: "&c\u2620 &7{player} was killed by &f{killer} &7(&f{weapon}&7)" + mob-kill: "&c\u2620 &7{player} was slain by &f{killer}" + default: "&c\u2620 &7{player} {death_message}" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Прочее │ -# └─────────────────────────────────────────────────────────────────────────────┘ -# Hub команда -hub_command: +# ── Hub Command ──────────────────────────────────────────────────────────────── + +hub-command: enabled: true server: "hub" diff --git a/bin/main/config/appearance.yml b/bin/main/config/appearance.yml index a76805e..cf1b11a 100644 --- a/bin/main/config/appearance.yml +++ b/bin/main/config/appearance.yml @@ -1,136 +1,98 @@ -# ╔══════════════════════════════════════════════════════════════════════════════╗ -# ║ LoChat — config/appearance.yml ║ -# ║ In-game chat look: prefixes, format, hover, emoji shortcuts, Discord UI ║ -# ║ Palette (Spacelegacy): #B798A8 (dusty rose) → #7858E9 (violet) ║ -# ╚══════════════════════════════════════════════════════════════════════════════╝ +# LoChat chat appearance +# Controls how messages look in-game: prefixes, format, hover, emojis. -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Chat prefixes (gradient label + separator + default message color) │ -# └─────────────────────────────────────────────────────────────────────────────┘ -# -# Gradient: use 2+ hex colors; letters are blended smoothly along the label. -# message-color: used when the player does NOT have lochat.chat.colors (see plugin.yml). +# ── Chat Prefixes ────────────────────────────────────────────────────────────── prefixes: global: - emoji: "✦" + emoji: "\u2726" text: "GLOBAL" - colors: - - "#B798A8" - - "#7858E9" - separator: - text: " ▶ " - color: "#9878C9" - message-color: "#E8E0F0" + separator: " \u25B6 " + message-color: "&7" local: - emoji: "◆" + emoji: "\u25C6" text: "LOCAL" - colors: - - "#9878C9" - - "#7858E9" - separator: - text: " ▶ " - color: "#8B6BD6" - message-color: "#E8E0F0" + separator: " \u25B6 " + message-color: "&7" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Rendered chat line layout │ -# └─────────────────────────────────────────────────────────────────────────────┘ -# +# ── Chat Format ──────────────────────────────────────────────────────────────── # Placeholders: -# {emoji} — prefix emoji (✦ / ◆) -# {prefix} — gradient prefix text (GLOBAL / LOCAL) -# {separator} — separator (e.g. ▶) -# {player_prefix} — LuckPerms / gradient prefix from LoPreff -# {player} — display name + hover (click to /msg) -# {player_suffix} — LuckPerms / gradient suffix from LoPreff -# {message} — message body -# -# Examples: -# Default: {emoji} {prefix} {separator} {player} : {message} -# Minimal: {player_prefix} {player} ▶ {message} -# Custom: ✦ {player_prefix} {player} {player_suffix} ▶ {message} +# {emoji}, {prefix}, {separator} +# {player_prefix}, {player}, {player_suffix} +# {message} chat-format: - global: "{emoji} {prefix} {separator} {player_prefix}{player}{player_suffix} : {message}" - local: "{emoji} {prefix} {separator} {player_prefix}{player}{player_suffix} : {message}" + global: "{emoji} {prefix}{separator}{player_prefix}{player}{player_suffix}&f: {message}" + local: "{emoji} {prefix}{separator}{player_prefix}{player}{player_suffix}&f: {message}" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Hover shown when pointing at the player name in chat │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Hover on Player Name ─────────────────────────────────────────────────────── hover: enabled: true format: - - "ẲE9▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬" - - "&#B798A8✦ &f{player}" + - "&8\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550" + - " \u2726 &f{player}" - "" - - "⚖C9⏱ &fПинг: ẲE9{ping}ms" - - "⚖C9❤ &fЗдоровье: ẲE9{health}/20" - - "⚖C9🍖 &fГолод: ẲE9{food}/20" + - " &7Ping: &b{ping}ms" + - " &7Health: &a{health}&7/20" + - " &7Food: &6{food}&7/20" - "" - - "ẲE9▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬" - - "&#B798A8✦ &fНажми чтобы написать" + - "&8\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550" + - " &7Click to message" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Text shortcuts → unicode (applied to outgoing chat before URLs / mentions) │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Emoji Shortcuts ──────────────────────────────────────────────────────────── +# Text shortcuts replaced in outgoing messages before processing. emojis: - ":heart:": "❤" - ":hearts:": "♥" - ":star:": "★" - ":stars:": "✦" - ":diamond:": "♦" - ":check:": "✓" - ":cross:": "✗" - ":arrow:": "→" - ":up:": "↑" - ":down:": "↓" - ":left:": "←" - ":right:": "→" - ":music:": "♪" - ":note:": "♫" + ":heart:": "\u2764" + ":hearts:": "\u2665" + ":star:": "\u2605" + ":stars:": "\u2726" + ":diamond:": "\u2666" + ":check:": "\u2713" + ":cross:": "\u2717" + ":arrow:": "\u2192" + ":up:": "\u2191" + ":down:": "\u2193" + ":left:": "\u2190" + ":right:": "\u2192" + ":music:": "\u266A" + ":note:": "\u266B" ":smile:": ":)" ":sad:": ":(" - ":wink:": ";)" - ":shrug:": "¯\\_(ツ)_/¯" + ":shrug:": "\u00AF\\_(\u30C4)_/\u00AF" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Radius, length limits, and misc chat UI colors (plugin internals) │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Chat Settings ────────────────────────────────────────────────────────────── chat: - local_radius: 100 - clear_lines: 100 - min_message_length: 1 - max_message_length: 2000 + local-radius: 100 + clear-lines: 100 + min-message-length: 1 + max-message-length: 2000 colors: - nobody_heard: "#9878C9" - error: "#CF6679" - success: "#9878C9" - warning: "#B798A8" - info: "#A485BC" + nobody-heard: "&7" + error: "&c" + success: "&a" + warning: "&6" + info: "&7" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Discord webhook embeds (see also config/discord.yml for webhooks) │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Discord Embeds ───────────────────────────────────────────────────────────── discord: emojis: - global_chat: "✦" - local_chat: "◆" - player_join: "♦" - player_quit: "◈" - player_death: "✗" - avatar_urls: + global-chat: "\u2726" + local-chat: "\u25C6" + player-join: "\u25C6" + player-quit: "\u25C7" + player-death: "\u2717" + avatar-urls: default: "https://mc-heads.net/avatar/minecraft/64" player: "https://mc-heads.net/avatar/{player}/64" - default_embed_color: "7858E9" - event_titles: - join: "♦ Игрок зашел на сервер" - quit: "◈ Игрок покинул сервер" - death: "✗ Смерть игрока" - global_chat: "✦ Глобальный чат" - local_chat: "◆ Локальный чат" + default-embed-color: "3498DB" + event-titles: + join: "Player joined" + quit: "Player left" + death: "Player died" + global-chat: "Global Chat" + local-chat: "Local Chat" diff --git a/bin/main/config/discord.yml b/bin/main/config/discord.yml index 1070b6a..d8c849c 100644 --- a/bin/main/config/discord.yml +++ b/bin/main/config/discord.yml @@ -1,110 +1,73 @@ -# ╔══════════════════════════════════════════════════════════════════════════════╗ -# ║ Discord Integration ║ -# ║ Интеграция с Discord ║ -# ╚══════════════════════════════════════════════════════════════════════════════╝ +# LoChat Discord integration +# Relays chat messages and server events to a Discord channel via webhook. + +# ── General ──────────────────────────────────────────────────────────────────── -# Включить интеграцию с Discord enabled: true -# Настройки вебхука +# ── Webhook ──────────────────────────────────────────────────────────────────── + webhook: - # URL вебхука Discord (получить в настройках канала) url: "https://discord.com/api/webhooks/YOUR_WEBHOOK_ID/YOUR_WEBHOOK_TOKEN" - - # Имя бота в Discord - username: "Minecraft Server" - - # Аватар бота (URL изображения) - avatar_url: "https://mc-heads.net/avatar/minecraft/64" + username: "Minecraft" + avatar-url: "https://mc-heads.net/avatar/minecraft/64" + +# ── Chat Relay ───────────────────────────────────────────────────────────────── -# Настройки чата chat: - # Отправлять сообщения чата в Discord enabled: true - - # Отправлять только глобальный чат (true) или весь чат (false) - global_only: true - - # Формат сообщения чата + global-only: true format: "**{player}**: {message}" - - # Цвет embed для сообщений чата (hex без #) - embed_color: "5865F2" - - # Использовать embed или обычное сообщение - use_embed: true + embed-color: "5865F2" + use-embed: true + +# ── Events ───────────────────────────────────────────────────────────────────── -# Настройки событий игроков events: - # Отправлять события входа/выхода enabled: true - - # Настройки входа на сервер - # {player} - ник игрока + join: enabled: true - title: "🟢 Игрок зашел на сервер" - description: "**{player}** присоединился к серверу" + title: "Player joined" + description: "**{player}** joined the server" color: "00FF00" thumbnail: "https://mc-heads.net/avatar/{player}/64" - - # Настройки выхода с сервера - # {player} - ник игрока + quit: enabled: true - title: "🔴 Игрок покинул сервер" - description: "**{player}** покинул сервер" + title: "Player left" + description: "**{player}** left the server" color: "FF0000" thumbnail: "https://mc-heads.net/avatar/{player}/64" - - # Настройки смерти игрока - # {player} - ник игрока - # {killer} - ник убийцы (если есть) - # {weapon} - название оружия (если есть) - # {death_message} - стандартное сообщение смерти + death: enabled: true - # Убийство игроком - player_kill: - title: "⚔️ PvP убийство" - description: "**{player}** был убит игроком **{killer}** с помощью **{weapon}**" + player-kill: + title: "PvP kill" + description: "**{player}** was killed by **{killer}** using **{weapon}**" color: "FF0000" - # Смерть от моба - mob_kill: - title: "💀 Смерть от моба" - description: "**{player}** был убит мобом **{killer}**" + mob-kill: + title: "Mob kill" + description: "**{player}** was slain by **{killer}**" color: "800080" - # Обычная смерть default: - title: "💀 Смерть игрока" + title: "Player died" description: "**{player}** {death_message}" color: "800080" thumbnail: "https://mc-heads.net/avatar/{player}/64" -# Настройки фильтрации -filter: - # Игнорировать сообщения от ботов - ignore_bots: true - - # Минимальная длина сообщения для отправки - min_message_length: 1 - - # Максимальная длина сообщения (обрезать если больше) - max_message_length: 2000 - - # Заменять @everyone и @here на безопасные варианты - sanitize_mentions: true +# ── Filtering ────────────────────────────────────────────────────────────────── + +filter: + ignore-bots: true + min-message-length: 1 + max-message-length: 2000 + sanitize-mentions: true + +# ── Performance ──────────────────────────────────────────────────────────────── -# Настройки производительности performance: - # Асинхронная отправка (рекомендуется) async: true - - # Таймаут подключения (секунды) timeout: 10 - - # Повторные попытки при ошибке - retry_attempts: 3 - - # Задержка между попытками (миллисекунды) - retry_delay: 1000 \ No newline at end of file + retry-attempts: 3 + retry-delay: 1000 diff --git a/bin/main/config/filters.yml b/bin/main/config/filters.yml index 029c0f0..5638e7f 100644 --- a/bin/main/config/filters.yml +++ b/bin/main/config/filters.yml @@ -1,44 +1,34 @@ -# ╔══════════════════════════════════════════════════════════════════════════════╗ -# ║ LoChat — Фильтры чата ║ -# ╚══════════════════════════════════════════════════════════════════════════════╝ +# LoChat chat filters +# Control spam, swearing, URLs, and other unwanted content. -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Мат-фильтр │ -# └─────────────────────────────────────────────────────────────────────────────┘ -# Использует badwords.txt для списка слов -# Автоматически ловит замены букв: х->x, о->o, е->e и т.д. -# Обход: lochat.bypass.swear +# ── Swear Filter ─────────────────────────────────────────────────────────────── +# Uses badwords.txt for the word list. +# Bypass permission: lochat.bypass.swear swear: enabled: true - replace: false # true = заменять на ***, false = блокировать сообщение + replace: false replacement: "***" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ URL фильтр │ -# └─────────────────────────────────────────────────────────────────────────────┘ -# Блокирует ссылки в чате -# Обход: lochat.bypass.urlfilter +# ── URL Filter ───────────────────────────────────────────────────────────────── +# Blocks URLs in messages. +# Bypass permission: lochat.bypass.urlfilter url: enabled: true - replacement: "[ссылка скрыта]" + replacement: "&7[URL hidden]" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ IP фильтр │ -# └─────────────────────────────────────────────────────────────────────────────┘ -# Блокирует IP адреса в чате -# Обход: lochat.bypass.ipfilter +# ── IP Filter ────────────────────────────────────────────────────────────────── +# Blocks IP addresses in messages. +# Bypass permission: lochat.bypass.ipfilter ip: enabled: true - replacement: "[IP скрыт]" + replacement: "&7[IP hidden]" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Скрытые URL (discord.gg и т.д.) │ -# └─────────────────────────────────────────────────────────────────────────────┘ -# Блокирует популярные сокращенные ссылки -# Обход: lochat.bypass.hiddenurls +# ── Hidden URL Filter ────────────────────────────────────────────────────────── +# Blocks known link shorteners and invite links. +# Bypass permission: lochat.bypass.hiddenurls hidden-urls: enabled: true @@ -49,33 +39,27 @@ hidden-urls: - "tinyurl\\.com" - "goo\\.gl" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Анти-спам │ -# └─────────────────────────────────────────────────────────────────────────────┘ -# Блокирует повторяющиеся символы (ааааааа, хххххх) -# Обход: lochat.bypass.spam +# ── Spam Filter ──────────────────────────────────────────────────────────────── +# Blocks messages with excessive repeated characters. +# Bypass permission: lochat.bypass.spam spam: enabled: true - max-repeating-chars: 5 # Максимум повторений одного символа + max-repeating-chars: 5 -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Анти-флуд │ -# └─────────────────────────────────────────────────────────────────────────────┘ -# Блокирует одинаковые сообщения подряд -# Обход: lochat.bypass.flood +# ── Flood Filter ─────────────────────────────────────────────────────────────── +# Blocks identical messages sent in quick succession. +# Bypass permission: lochat.bypass.flood flood: enabled: true - max-same-messages: 3 # Сколько раз можно отправить одно и то же + max-same-messages: 3 -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Капс-фильтр │ -# └─────────────────────────────────────────────────────────────────────────────┘ -# Блокирует сообщения с большим количеством заглавных букв -# Обход: lochat.bypass.caps +# ── CAPS Filter ──────────────────────────────────────────────────────────────── +# Blocks messages with too many capital letters. +# Bypass permission: lochat.bypass.caps caps: enabled: true - max-caps-percent: 70 # Максимум % заглавных букв - min-length: 5 # Минимальная длина для проверки + max-caps-percent: 70 + min-length: 5 diff --git a/bin/main/config/messages.yml b/bin/main/config/messages.yml index 8da71fb..f7ff89a 100644 --- a/bin/main/config/messages.yml +++ b/bin/main/config/messages.yml @@ -1,137 +1,123 @@ -# ╔══════════════════════════════════════════════════════════════════════════════╗ -# ║ LoChat Hardcoded Messages ║ -# ║ Цветовая гамма: Spacelegacy ║ -# ║ #B798A8 → #7858E9 ║ -# ╚══════════════════════════════════════════════════════════════════════════════╝ +# LoChat system messages +# Internal messages for commands, filters, moderation, and general feedback. + +# ── Commands ─────────────────────────────────────────────────────────────────── commands: mute: - usage: "&#B798A8Использование: ẲE9/mute <ник> [время] [-s] [причина]" - time_help: "⚖C9Время: ẲE91d⚖C9, ẲE92h⚖C9, ẲE930m⚖C9, ẲE960s⚖C9, ẲE9perm" - silent_help: "&#B798A8-s ⚖C9— тихий мут (право ẲE9lochat.mute.silent⚖C9)" - no_silent_permission: "&#CF6679Нет права на тихий мут" - default_reason: "Без причины" - default_duration: "7d" + usage: "&cUsage: &f/mute [time] [-s] [reason]" + time-help: "&7Time format: &f1d&7, &f2h&7, &f30m&7, &f60s&7, &fperm" + silent-help: "&7-s &7= silent mute (requires &flochat.mute.silent&7)" + no-silent-permission: "&cNo permission for silent mute" + default-reason: "No reason specified" + default-duration: "7d" cooldown: - message: "&#B798A8Подождите ẲE9{remaining} &#B798A8сек" + message: "&cPlease wait &f{remaining} &cseconds" - clear_chat: - lines_cleared: "⚖C9Чат очищен ẲE9({lines} строк⚖C9)" - no_permission: "&#CF6679Нет прав для очистки чата" + clear-chat: + lines-cleared: "&aChat cleared &7({lines} lines)" + no-permission: "&cNo permission to clear chat" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ЛОКАЛЬНЫЙ ЧАТ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Local Chat ───────────────────────────────────────────────────────────────── -local_chat: - nobody_heard: "⚖C9Вас никто не услышал &#B798A8— рядом нет игроков" - no_players_nearby: "&#B798A8Рядом нет игроков" +local-chat: + nobody-heard: "&7Nobody heard you — no players nearby" + no-players-nearby: "&7No players nearby" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ФИЛЬТРЫ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Filters ──────────────────────────────────────────────────────────────────── filters: caps: - min_length: 3 - blocked_message: "&#CF6679Не кричите в чате" - auto_lowercase_notice: "&#B798A8Сообщение автоматически исправлено" + min-length: 3 + blocked-message: "&cPlease don't shout" + auto-lowercase-notice: "&7Message auto-corrected" spam: - blocked_message: "&#CF6679Не спамьте" - similar_message: "&#CF6679Вы уже отправляли похожее сообщение" + blocked-message: "&cDo not spam" + similar-message: "&cYou already sent a similar message" swear: - blocked_message: "&#CF6679Запрещённые слова" - replaced_notice: "&#B798A8Некоторые слова заменены" + blocked-message: "&cInappropriate language" + replaced-notice: "&7Some words were replaced" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ МУТИРОВАНИЕ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Mute Messages ────────────────────────────────────────────────────────────── mute: - muted_message: "&#CF6679Вы замучены! &#B798A8Причина: ẲE9{reason}&#B798A8. Осталось: ẲE9{time}" - muted_permanent: "&#CF6679Вы замучены навсегда! &#B798A8Причина: ẲE9{reason}" - player_muted: "⚖C9Игрок ẲE9{player} ⚖C9замучен на ẲE9{time}⚖C9. Причина: &#B798A8{reason}" - player_muted_permanent: "⚖C9Игрок ẲE9{player} ⚖C9замучен навсегда. Причина: &#B798A8{reason}" - player_muted_silent: "&#B798A8[⚖C9ТИХИЙ МУТ&#B798A8] ẲE9{player} &#B798A8замучен на ẲE9{time}" - player_unmuted: "⚖C9Игрок ẲE9{player} ⚖C9размучен" - not_muted: "&#B798A8Игрок ẲE9{player} &#B798A8не замучен" - player_not_found: "&#CF6679Игрок не найден!" - invalid_time: "&#CF6679Неверный формат времени!" - already_muted: "&#CF6679Игрок уже замучен!" - no_silent_unmute_permission: "&#CF6679Нет права на тихий размут!" - player_not_muted_simple: "&#CF6679Игрок не замучен!" + muted-message: "&cYou are muted! &7Reason: &f{reason}&7. Remaining: &f{time}" + muted-permanent: "&cYou are permanently muted! &7Reason: &f{reason}" + player-muted: "&aPlayer &f{player} &amuted for &f{time}&a. Reason: &7{reason}" + player-muted-permanent: "&aPlayer &f{player} &amuted permanently. Reason: &7{reason}" + player-muted-silent: "&8[&7SILENT&8] &f{player} &7muted for &f{time}" + player-unmuted: "&aPlayer &f{player} &aunmuted" + not-muted: "&7Player &f{player} &7is not muted" + player-not-found: "&cPlayer not found!" + invalid-time: "&cInvalid time format!" + already-muted: "&cPlayer is already muted!" + no-silent-unmute-permission: "&cNo permission for silent unmute" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ИГРОВЫЕ РЕЖИМЫ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Gamemodes ────────────────────────────────────────────────────────────────── gamemodes: - survival: "Выживание" - creative: "Творчество" - adventure: "Приключение" - spectator: "Наблюдатель" + survival: "Survival" + creative: "Creative" + adventure: "Adventure" + spectator: "Spectator" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ЛИЧНЫЕ СООБЩЕНИЯ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Private Messages ─────────────────────────────────────────────────────────── -private_messages: - no_reply_target: "&#CF6679Нет цели для ответа" - message_sent: "&#B798A8Сообщение отправлено ẲE9{player}" - player_offline: "&#CF6679Игрок ẲE9{player} &#CF6679не в сети" - cannot_message_self: "&#CF6679Нельзя писать самому себе" +private-messages: + no-reply-target: "&cNobody to reply to" + message-sent: "&aMessage sent to &f{player}" + player-offline: "&cPlayer &f{player} &cis not online" + cannot-message-self: "&cYou cannot message yourself" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ИГНОРИРОВАНИЕ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Ignore ───────────────────────────────────────────────────────────────────── ignore: - player_ignored: "⚖C9Игрок ẲE9{player} ⚖C9добавлен в игнор" - player_unignored: "⚖C9Игрок ẲE9{player} ⚖C9убран из игнора" - already_ignored: "&#B798A8Игрок ẲE9{player} &#B798A8уже в игноре" - not_ignored: "&#B798A8Игрок ẲE9{player} &#B798A8не в игноре" - cannot_ignore_self: "&#CF6679Нельзя игнорировать самого себя" - ignore_list_empty: "&#B798A8Список игнора пуст" - ignore_list_header: "&#B798A8Игнорируемые игроки⚖C9:" + player-ignored: "&aPlayer &f{player} &ais now ignored" + player-unignored: "&aPlayer &f{player} &ais no longer ignored" + already-ignored: "&7Player &f{player} &7is already ignored" + not-ignored: "&7Player &f{player} &7is not ignored" + cannot-ignore-self: "&cYou cannot ignore yourself" + ignore-list-empty: "&7Your ignore list is empty" + ignore-list-header: "&7Ignored players:" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ОБЩИЕ СООБЩЕНИЯ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── General ──────────────────────────────────────────────────────────────────── general: - no_permission: "&#CF6679Нет прав!" - player_only: "&#CF6679Только для игроков!" - invalid_arguments: "&#CF6679Неверные аргументы!" - command_disabled: "&#CF6679Команда отключена!" - feature_disabled: "&#CF6679Функция отключена!" - player_not_found: "&#CF6679Игрок не найден!" - time_formats: - seconds: "сек" - minutes: "мин" - hours: "ч" - days: "д" - permanent: "навсегда" - enabled: "ẲE9Включено" - disabled: "&#B798A8Отключено" - online: "⚖C9В сети" - offline: "&#B798A8Не в сети" + no-permission: "&cNo permission!" + player-only: "&cPlayers only!" + invalid-arguments: "&cInvalid arguments!" + command-disabled: "&cCommand disabled!" + feature-disabled: "&cFeature disabled!" + player-not-found: "&cPlayer not found!" + time-formats: + seconds: "s" + minutes: "m" + hours: "h" + days: "d" + permanent: "permanent" + enabled: "&aEnabled" + disabled: "&7Disabled" + online: "&aOnline" + offline: "&7Offline" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ВАРНЫ / БАНЫ (LoChat) │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Moderation ───────────────────────────────────────────────────────────────── moderation: - default_reason: "Без причины" - duration_permanent: "навсегда" - warn_received: "&#CF6679⚠ Вам выдано предупреждение! &#B798A8Причина: ẲE9{reason}" - warn_staff_confirm: "⚖C9Игроку ẲE9{player} ⚖C9выдан варн. &#B798A8Причина: ẲE9{reason}" - silent_warn_staff: "&#B798A8[⚖C9ТИХИЙ ВАРН&#B798A8] ẲE9{player}⚖C9: &#B798A8{reason}" - ban_usage: "&#B798A8Использование: ẲE9/lban <ник> [время|perm] [причина]" - ban_confirm: "⚖C9Игрок ẲE9{player} ⚖C9забанен. &#B798A8Срок: ẲE9{duration}" - unban_confirm: "⚖C9Бан снят с ẲE9{player}" - not_banned: "&#CF6679Игрок не забанен!" - already_banned: "&#CF6679Игрок уже забанен!" - warn_usage: "&#B798A8Использование: ẲE9/warn <ник> [причина]" - silent_warn_usage: "&#B798A8Использование: ẲE9/silentwarn <ник> [причина]" - ban_kick_message: "═══════ ДОСТУП ЗАПРЕЩЁН ═══════\nВы заблокированы на этом сервере.\nПричина: {reason}\nМодератор: {moderator}\nСрок: <#7858E9>{duration}\n════════════════════════" + default-reason: "No reason specified" + duration-permanent: "permanent" + warn-received: "&6\u26A0 &cYou received a warning! &7Reason: &f{reason}" + warn-staff-confirm: "&aPlayer &f{player} &awarned. &7Reason: &f{reason}" + silent-warn-staff: "&8[&7SILENT&8] &f{player}&7: &7{reason}" + ban-usage: "&cUsage: &f/lban [time|perm] [reason]" + ban-confirm: "&aPlayer &f{player} &abanned. &7Duration: &f{duration}" + unban-confirm: "&aBan lifted for &f{player}" + not-banned: "&cPlayer is not banned!" + already-banned: "&cPlayer is already banned!" + warn-usage: "&cUsage: &f/warn [reason]" + silent-warn-usage: "&cUsage: &f/silentwarn [reason]" + ban-kick-message: | + You are banned from this server. + Reason: {reason} + Moderator: {moderator} + Duration: {duration} diff --git a/bin/main/config/mute.yml b/bin/main/config/mute.yml index 675c031..848fbc6 100644 --- a/bin/main/config/mute.yml +++ b/bin/main/config/mute.yml @@ -1,290 +1,212 @@ -# ╔══════════════════════════════════════════════════════════════════════════════╗ -# ║ LoChat Mute Configuration ║ -# ║ Конфигурация мутов ║ -# ║ Версия: 1.5.5-1.20.1 ║ -# ╚══════════════════════════════════════════════════════════════════════════════╝ +# LoChat mute system configuration +# Controls mute durations, automatic mutes, escalation, and notifications. -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ОСНОВНЫЕ НАСТРОЙКИ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── General Settings ─────────────────────────────────────────────────────────── settings: - # Причина мута по умолчанию - default-reason: "Нарушение правил чата" - - # Длительность мута по умолчанию + default-reason: "Chat rule violation" default-duration: "1h" - - # Максимальная длина причины мута max-reason-length: 100 - - # Показывать причину мута игроку show-reason: true - - # Показывать оставшееся время мута show-remaining-time: true - - # Автоматически размучивать при истечении времени auto-unmute: true - - # Сохранять историю мутов save-history: true - - # Максимальное количество записей в истории на игрока max-history-entries: 50 -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ДОСТУПНЫЕ ДЛИТЕЛЬНОСТИ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Available Durations ──────────────────────────────────────────────────────── +# Each duration requires a permission. Empty permission = no restriction. durations: - # Формат: "время": "право для использования" "5m": permission: "lochat.mute.dur.5m" - display: "5 минут" - + display: "5 minutes" + "10m": permission: "lochat.mute.dur.10m" - display: "10 минут" - + display: "10 minutes" + "30m": permission: "lochat.mute.dur.30m" - display: "30 минут" - + display: "30 minutes" + "1h": permission: "lochat.mute.dur.1h" - display: "1 час" - + display: "1 hour" + "3h": permission: "lochat.mute.dur.3h" - display: "3 часа" - + display: "3 hours" + "6h": permission: "lochat.mute.dur.6h" - display: "6 часов" - + display: "6 hours" + "12h": permission: "lochat.mute.dur.12h" - display: "12 часов" - + display: "12 hours" + "1d": permission: "lochat.mute.dur.1d" - display: "1 день" - + display: "1 day" + "3d": permission: "lochat.mute.dur.3d" - display: "3 дня" - + display: "3 days" + "7d": permission: "lochat.mute.dur.7d" - display: "7 дней" - + display: "7 days" + "14d": permission: "lochat.mute.dur.14d" - display: "14 дней" - + display: "14 days" + "30d": permission: "lochat.mute.dur.30d" - display: "30 дней" - + display: "30 days" + "perm": permission: "lochat.mute.dur.perm" - display: "Навсегда" + display: "Permanent" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ГОТОВЫЕ ПРИЧИНЫ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Preset Reasons ───────────────────────────────────────────────────────────── reasons: spam: - text: "Спам в чате" + text: "Spam" duration: "30m" permission: "lochat.mute.reason.spam" - + caps: - text: "Злоупотребление заглавными буквами" + text: "Excessive caps" duration: "15m" permission: "lochat.mute.reason.caps" - + swear: - text: "Использование нецензурной лексики" + text: "Inappropriate language" duration: "1h" permission: "lochat.mute.reason.swear" - + flood: - text: "Флуд в чате" + text: "Flood" duration: "20m" permission: "lochat.mute.reason.flood" - + advertising: - text: "Реклама" + text: "Advertising" duration: "3h" permission: "lochat.mute.reason.advertising" - + insult: - text: "Оскорбления игроков" + text: "Insulting players" duration: "2h" permission: "lochat.mute.reason.insult" - - toxicity: - text: "Токсичное поведение" - duration: "6h" - permission: "lochat.mute.reason.toxicity" - - politics: - text: "Обсуждение политики" - duration: "1h" - permission: "lochat.mute.reason.politics" - - religion: - text: "Религиозные споры" - duration: "1h" - permission: "lochat.mute.reason.religion" - - begging: - text: "Попрошайничество" - duration: "30m" - permission: "lochat.mute.reason.begging" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ АВТОМАТИЧЕСКИЕ МУТЫ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Auto-Mute ────────────────────────────────────────────────────────────────── auto-mute: - # Включить автоматические муты enabled: true - - # Мут за спам + spam: enabled: true - threshold: 5 # Количество сообщений - time-window: 10 # За какое время (секунды) + threshold: 5 + time-window: 10 duration: "10m" - reason: "Автомут: спам в чате" - - # Мут за мат + reason: "Auto-mute: spam" + swear: enabled: true - threshold: 3 # Количество нарушений + threshold: 3 duration: "30m" - reason: "Автомут: использование мата" - - # Мут за заглавные буквы + reason: "Auto-mute: inappropriate language" + caps: enabled: true - threshold: 5 # Количество нарушений + threshold: 5 duration: "5m" - reason: "Автомут: злоупотребление CAPS" - - # Мут за рекламу + reason: "Auto-mute: excessive caps" + advertising: enabled: true - threshold: 1 # Одно нарушение + threshold: 1 duration: "1h" - reason: "Автомут: реклама" + reason: "Auto-mute: advertising" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ЭСКАЛАЦИЯ НАКАЗАНИЙ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Punishment Escalation ────────────────────────────────────────────────────── escalation: - # Включить эскалацию наказаний enabled: true - - # Период для подсчета нарушений (дни) period: 30 - - # Уровни наказаний + levels: 1: duration: "30m" - reason: "Первое нарушение" - + reason: "First offense" + 2: duration: "2h" - reason: "Повторное нарушение" - + reason: "Second offense" + 3: duration: "12h" - reason: "Третье нарушение" - + reason: "Third offense" + 4: duration: "3d" - reason: "Четвертое нарушение" - + reason: "Fourth offense" + 5: duration: "7d" - reason: "Пятое нарушение" - + reason: "Fifth offense" + 6: duration: "perm" - reason: "Систематические нарушения" + reason: "Systematic violations" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ УВЕДОМЛЕНИЯ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Notifications ────────────────────────────────────────────────────────────── notifications: - # Уведомлять администраторов о мутах notify-staff: true - - # Право для получения уведомлений staff-permission: "lochat.mute.notify" - - # Публичные уведомления о мутах public-mute: false - - # Публичные уведомления о размутах public-unmute: false - - # Скрытые муты (с флагом -s) + silent-mute: enabled: true permission: "lochat.mute.silent" notify-permission: "lochat.mute.see-silent" - - # Формат уведомлений - formats: - mute: "&#FF6B6B{moderator} замутил {player} на {duration}. Причина: {reason}" - unmute: "BCB77{moderator} размутил {player}" - silent-mute: "&#FFA726[ТИХО] {moderator} замутил {player} на {duration}. Причина: {reason}" - auto-mute: "&#FF6B6B[АВТО] {player} замучен на {duration}. Причина: {reason}" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ИНТЕГРАЦИИ │ -# └─────────────────────────────────────────────────────────────────────────────┘ + formats: + mute: "&c{moderator} &7muted &f{player} &7for &f{duration}&7. Reason: &f{reason}" + unmute: "&a{moderator} &7unmuted &f{player}" + silent-mute: "&6[SILENT] &f{moderator} &7muted &f{player} &7for &f{duration}" + auto-mute: "&c[AUTO] &f{player} &7muted for &f{duration}&7. Reason: &f{reason}" + +# ── Integrations ─────────────────────────────────────────────────────────────── integrations: - # LibertyBans libertybans: enabled: false sync-mutes: true - - # AdvancedBan + advancedban: enabled: false sync-mutes: true - - # LiteBans + litebans: enabled: false sync-mutes: true - - # Discord уведомления + discord: enabled: false webhook-url: "" - format: "**{moderator}** замутил **{player}** на **{duration}**\nПричина: {reason}" + format: "**{moderator}** muted **{player}** for **{duration}**\nReason: {reason}" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ХРАНЕНИЕ ДАННЫХ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Storage ──────────────────────────────────────────────────────────────────── storage: - # Тип хранения: file, mysql, sqlite - type: "file" - - # Настройки MySQL + type: file + mysql: host: "localhost" port: 3306 @@ -292,45 +214,36 @@ storage: username: "root" password: "password" table-prefix: "lochat_" - - # Настройки SQLite + sqlite: file: "plugins/LoChat/mutes.db" - - # Автоматическая очистка старых записей + cleanup: enabled: true - days: 90 # Удалять записи старше N дней + days: 90 -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ДОПОЛНИТЕЛЬНЫЕ ФУНКЦИИ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Extra Features ───────────────────────────────────────────────────────────── features: - # Временные муты (автоматически снимаются) temporary-mutes: true - - # IP муты (мутить по IP адресу) + ip-mutes: enabled: false permission: "lochat.mute.ip" - - # Мут команд (блокировать определенные команды) + command-mute: enabled: false blocked-commands: - "me" - "say" - "tell" - - # Предупреждения перед мутом + warnings: enabled: true max-warnings: 3 - reset-time: 3600 # Сброс предупреждений (секунды) - - # Апелляции на муты + reset-time: 3600 + appeals: enabled: false command: "/appeal" - permission: "lochat.appeal" \ No newline at end of file + permission: "lochat.appeal" diff --git a/bin/main/config/sounds.yml b/bin/main/config/sounds.yml index 2f72b96..1ca37e1 100644 --- a/bin/main/config/sounds.yml +++ b/bin/main/config/sounds.yml @@ -1,313 +1,158 @@ -# ╔══════════════════════════════════════════════════════════════════════════════╗ -# ║ LoChat Sounds Configuration ║ -# ║ Конфигурация звуков ║ -# ║ Версия: 1.5.5-1.20.1 ║ -# ╚══════════════════════════════════════════════════════════════════════════════╝ +# LoChat sound configuration +# Controls sound effects for chat events, moderation, and system actions. -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ОСНОВНЫЕ НАСТРОЙКИ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── General ──────────────────────────────────────────────────────────────────── settings: - # Включить звуки enabled: true - - # Глобальная громкость (0.0 - 1.0) global-volume: 0.5 - - # Глобальная высота тона (0.5 - 2.0) global-pitch: 1.0 - - # Разрешить игрокам отключать звуки allow-disable: true - - # Команда для управления звуками toggle-command: "/sounds" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ЗВУКИ СООБЩЕНИЙ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Message Sounds ───────────────────────────────────────────────────────────── messages: - # Личные сообщения private-message: enabled: true - sound: "BLOCK_NOTE_BLOCK_PLING" + sound: BLOCK_NOTE_BLOCK_PLING volume: 0.8 pitch: 1.2 - # Играть только получателю receiver-only: true - - # Упоминания в чате + mention: enabled: true - sound: "BLOCK_NOTE_BLOCK_BELL" + sound: BLOCK_NOTE_BLOCK_BELL volume: 0.7 pitch: 1.5 - # Дополнительный звук для @everyone - everyone-sound: "BLOCK_NOTE_BLOCK_CHIME" - - # Глобальный чат + everyone-sound: BLOCK_NOTE_BLOCK_CHIME + global-chat: enabled: false - sound: "UI_BUTTON_CLICK" + sound: UI_BUTTON_CLICK volume: 0.3 pitch: 1.0 - - # Локальный чат + local-chat: enabled: false - sound: "UI_BUTTON_CLICK" + sound: UI_BUTTON_CLICK volume: 0.2 pitch: 0.8 - - # Объявления + announcement: enabled: true - sound: "BLOCK_NOTE_BLOCK_CHIME" + sound: BLOCK_NOTE_BLOCK_CHIME volume: 1.0 pitch: 1.0 - # Дополнительные звуки для важных объявлений - important-sound: "ENTITY_ENDER_DRAGON_GROWL" + important-sound: ENTITY_ENDER_DRAGON_GROWL -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ЗВУКИ СИСТЕМЫ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── System Sounds ────────────────────────────────────────────────────────────── system: - # Подключение к серверу join: enabled: false - sound: "ENTITY_PLAYER_LEVELUP" + sound: ENTITY_PLAYER_LEVELUP volume: 0.5 pitch: 1.0 - # Играть только подключившемуся игроку self-only: true - - # Отключение от сервера + quit: enabled: false - sound: "BLOCK_NOTE_BLOCK_BASS" + sound: BLOCK_NOTE_BLOCK_BASS volume: 0.3 pitch: 0.8 - - # Мут игрока + mute: enabled: true - sound: "BLOCK_ANVIL_LAND" + sound: BLOCK_ANVIL_LAND volume: 0.6 pitch: 0.5 - # Играть замученному игроку - target-sound: "ENTITY_VILLAGER_NO" - - # Размут игрока + target-sound: ENTITY_VILLAGER_NO + unmute: enabled: true - sound: "ENTITY_PLAYER_LEVELUP" + sound: ENTITY_PLAYER_LEVELUP volume: 0.7 pitch: 1.2 - # Играть размученному игроку - target-sound: "ENTITY_VILLAGER_YES" - - # Очистка чата + target-sound: ENTITY_VILLAGER_YES + clear-chat: enabled: true - sound: "ITEM_BUCKET_EMPTY" + sound: ITEM_BUCKET_EMPTY volume: 0.5 pitch: 1.5 -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ЗВУКИ ГРАДИЕНТОВ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Gradient Sounds ──────────────────────────────────────────────────────────── gradient: - # Установка градиента color-set: enabled: true - sound: "BLOCK_NOTE_BLOCK_HARP" + sound: BLOCK_NOTE_BLOCK_HARP volume: 0.6 pitch: 1.3 - - # Сброс градиента + color-reset: enabled: true - sound: "BLOCK_NOTE_BLOCK_BASS" + sound: BLOCK_NOTE_BLOCK_BASS volume: 0.4 pitch: 0.7 - - # Установка префикса + prefix-set: enabled: true - sound: "BLOCK_NOTE_BLOCK_CHIME" + sound: BLOCK_NOTE_BLOCK_CHIME volume: 0.7 pitch: 1.4 - - # Ошибка (недостаточно средств, кулдаун и т.д.) + error: enabled: true - sound: "ENTITY_VILLAGER_NO" + sound: ENTITY_VILLAGER_NO volume: 0.5 pitch: 0.8 -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ЗВУКИ КОМАНД │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Command Sounds ───────────────────────────────────────────────────────────── commands: - # Успешное выполнение команды success: enabled: false - sound: "ENTITY_EXPERIENCE_ORB_PICKUP" + sound: ENTITY_EXPERIENCE_ORB_PICKUP volume: 0.4 pitch: 1.2 - - # Ошибка выполнения команды + error: enabled: true - sound: "ENTITY_VILLAGER_NO" + sound: ENTITY_VILLAGER_NO volume: 0.5 pitch: 0.8 - - # Недостаточно прав + no-permission: enabled: true - sound: "BLOCK_NOTE_BLOCK_BASS" + sound: BLOCK_NOTE_BLOCK_BASS volume: 0.6 pitch: 0.5 - - # Игрок не найден + player-not-found: enabled: true - sound: "ENTITY_ITEM_BREAK" + sound: ENTITY_ITEM_BREAK volume: 0.4 pitch: 0.6 -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ЗВУКИ ФИЛЬТРОВ │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Filter Sounds ────────────────────────────────────────────────────────────── filters: - # Сообщение заблокировано фильтром blocked: enabled: true - sound: "ENTITY_VILLAGER_NO" + sound: ENTITY_VILLAGER_NO volume: 0.6 pitch: 0.7 - - # Предупреждение от фильтра + warning: enabled: true - sound: "BLOCK_NOTE_BLOCK_PLING" + sound: BLOCK_NOTE_BLOCK_PLING volume: 0.5 pitch: 0.9 - - # Автоматическое исправление (например, caps) + auto-fix: enabled: false - sound: "UI_BUTTON_CLICK" + sound: UI_BUTTON_CLICK volume: 0.3 pitch: 1.1 - -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ КАСТОМНЫЕ ЗВУКИ │ -# └─────────────────────────────────────────────────────────────────────────────┘ - -custom: - # Звуки для VIP игроков - vip: - enabled: false - join-sound: "ENTITY_PLAYER_LEVELUP" - message-sound: "BLOCK_NOTE_BLOCK_HARP" - volume: 0.8 - pitch: 1.3 - - # Звуки для администраторов - admin: - enabled: false - join-sound: "ENTITY_ENDER_DRAGON_GROWL" - command-sound: "BLOCK_ANVIL_USE" - volume: 0.7 - pitch: 1.0 - - # Праздничные звуки - holiday: - enabled: false - christmas: - sound: "BLOCK_NOTE_BLOCK_CHIME" - volume: 0.6 - pitch: 1.5 - new-year: - sound: "ENTITY_FIREWORK_ROCKET_BLAST" - volume: 0.8 - pitch: 1.2 - -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ЗВУКОВЫЕ СХЕМЫ │ -# └─────────────────────────────────────────────────────────────────────────────┘ - -schemes: - # Классическая схема - classic: - name: "Классическая" - description: "Стандартные звуки Minecraft" - sounds: - private-message: "BLOCK_NOTE_BLOCK_PLING" - mention: "BLOCK_NOTE_BLOCK_BELL" - announcement: "BLOCK_NOTE_BLOCK_CHIME" - - # Минималистичная схема - minimal: - name: "Минимальная" - description: "Только важные звуки" - sounds: - private-message: "UI_BUTTON_CLICK" - mention: "BLOCK_NOTE_BLOCK_PLING" - announcement: "ENTITY_EXPERIENCE_ORB_PICKUP" - - # Отключенная схема - silent: - name: "Тишина" - description: "Все звуки отключены" - sounds: {} - -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ НАСТРОЙКИ ПО МИРАМ │ -# └─────────────────────────────────────────────────────────────────────────────┘ - -worlds: - # Настройки для конкретных миров - world_nether: - volume-modifier: 0.7 # Уменьшить громкость на 30% - pitch-modifier: 0.8 # Понизить тон - - world_the_end: - volume-modifier: 0.5 - pitch-modifier: 1.2 - # Отключить определенные звуки - disabled-sounds: - - "global-chat" - - "local-chat" - - creative_world: - volume-modifier: 1.2 - # Включить дополнительные звуки - extra-sounds: - build: "BLOCK_STONE_PLACE" - fly: "ENTITY_BAT_TAKEOFF" - -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ ПЕРСОНАЛЬНЫЕ НАСТРОЙКИ │ -# └─────────────────────────────────────────────────────────────────────────────┘ - -personal: - # Разрешить игрокам настраивать громкость - allow-volume-control: true - - # Разрешить игрокам выбирать звуковые схемы - allow-scheme-selection: true - - # Сохранять настройки игроков - save-preferences: true - - # Файл для сохранения настроек - preferences-file: "plugins/LoChat/sound-preferences.yml" \ No newline at end of file diff --git a/bin/main/custom-commands.yml b/bin/main/custom-commands.yml index 75b7de7..5742840 100644 --- a/bin/main/custom-commands.yml +++ b/bin/main/custom-commands.yml @@ -1,140 +1,83 @@ -# ╔══════════════════════════════════════════════════════════════════════════════╗ -# ║ Custom Commands Configuration ║ -# ║ Конфигурация кастомных команд ║ -# ╚══════════════════════════════════════════════════════════════════════════════╝ +# LoChat custom commands +# Define your own commands with custom messages and actions. +# +# Fields: +# enabled - whether the command is active +# permission - required permission (optional) +# message - message content (supports MiniMessage format) +# aliases - alternative command names +# type - chat | broadcast | title | actionbar | bungee +# target - sender | all | permission: +# server - (bungee only) target server name -# Информационные команды help: enabled: true message: | - ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ - 📚 Помощь по серверу - - <#FFEB3B>🏠 Основные команды: - <#9E9E9E>• <#FFFFFF>/spawn - телепорт на спавн - <#9E9E9E>• <#FFFFFF>/home - телепорт домой - <#9E9E9E>• <#FFFFFF>/sethome - установить дом - - <#FFEB3B>💬 Чат команды: - <#9E9E9E>• <#FFFFFF>!сообщение - глобальный чат - <#9E9E9E>• <#FFFFFF>/msg игрок - личное сообщение - <#9E9E9E>• <#FFFFFF>/reply - ответить на ЛС - - <#FFEB3B>🎨 Кастомизация: - <#9E9E9E>• <#FFFFFF>/color - градиентный ник - <#9E9E9E>• <#FFFFFF>/prefix - кастомный префикс - - ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ - aliases: ["помощь", "хелп"] - type: "chat" - target: "sender" + Available commands: + \u2022 /spawn - teleport to spawn + \u2022 /msg - private message + \u2022 /color - gradient nickname + \u2022 /prefix - custom prefix + aliases: [] + type: chat + target: sender rules: enabled: true message: | - ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ - 📋 Правила сервера - - <#F44336>🚫 Запрещено: - <#9E9E9E>• Читерство и использование модов - <#9E9E9E>• Гриферство и воровство - <#9E9E9E>• Мат и оскорбления - <#9E9E9E>• Спам в чате - <#9E9E9E>• Реклама других серверов - - <#4CAF50>✅ Разрешено: - <#9E9E9E>• Строительство в любом стиле - <#9E9E9E>• Торговля между игроками - <#9E9E9E>• Создание команд и кланов - <#9E9E9E>• Использование /home и /spawn - - <#FFA726>⚠️ За нарушения: - <#9E9E9E>• Предупреждение → Мут → Бан - - ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ - aliases: ["правила", "rule"] - type: "chat" - target: "sender" + Server Rules + 1. No cheating or hacking + 2. No griefing or stealing + 3. No swearing or insults + 4. No spam + 5. No advertising + aliases: [] + type: chat + target: sender discord: enabled: true message: | - ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ - 💬 Discord сервер - - <#5865F2>Присоединяйся к нашему Discord! - - <#FFEB3B>🔗 Ссылка: <#00BFFF>discord.gg/yourserver - - <#FFEB3B>📢 В Discord ты найдешь: - <#9E9E9E>• Общение с игроками - <#9E9E9E>• Новости и обновления - <#9E9E9E>• Поддержку администрации - <#9E9E9E>• Конкурсы и ивенты - - ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ - aliases: ["дискорд", "ds"] - type: "chat" - target: "sender" + Join our Discord! + discord.gg/yourserver + aliases: ["ds"] + type: chat + target: sender coords: enabled: true - message: "<#FFEB3B>📍 Ваши координаты: <#9E9E9E>X: <#FFFFFF>{x} Y: <#FFFFFF>{y} Z: <#FFFFFF>{z} <#9E9E9E>Мир: <#4CAF50>{world}" - aliases: ["координаты", "pos", "position"] - type: "chat" - target: "sender" + message: "\u25B6 X: {x} Y: {y} Z: {z} World: {world}" + aliases: ["pos", "position"] + type: chat + target: sender ping: enabled: true - message: "<#FFEB3B>📶 Ваш пинг: <#4CAF50>{ping}ms" - aliases: ["пинг"] - type: "chat" - target: "sender" - type: "chat" - target: "sender" + message: "\u25B6 Your ping: {ping}ms" + aliases: [] + type: chat + target: sender hub: enabled: true - message: "<#4CAF50>🏠 Подключение к хабу..." - aliases: ["lobby", "хаб"] - type: "bungee" - target: "sender" - server: "hub" + message: "Connecting to hub..." + aliases: ["lobby"] + type: bungee + target: sender + server: hub -discord: - enabled: true - message: | - ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ - 💬 Discord сервер - - <#5865F2>Присоединяйся к нашему Discord! - - <#FFEB3B>🔗 Ссылка: <#00BFFF>discord.gg/yourserver - - <#FFEB3B>📢 В Discord ты найдешь: - <#9E9E9E>• Общение с игроками - <#9E9E9E>• Новости и обновления - <#9E9E9E>• Поддержку администрации - <#9E9E9E>• Конкурсы и ивенты - - ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ - aliases: ["дискорд", "ds"] - type: "chat" - target: "sender" - -# Команды для администрации broadcast: enabled: true permission: "lochat.broadcast" message: "{message}" - aliases: ["bc", "объявить"] - type: "broadcast" - target: "all" + aliases: ["bc"] + type: broadcast + target: all maintenance: enabled: false permission: "lochat.maintenance" - message: "<#FFA726>🔧 Сервер переведен в режим технических работ" - aliases: ["тех-работы", "техработы"] - type: "title" - target: "all" \ No newline at end of file + message: "Server is now in maintenance mode" + aliases: [] + type: title + target: all diff --git a/bin/main/messages.yml b/bin/main/messages.yml index 4cd0418..2a1c53f 100644 --- a/bin/main/messages.yml +++ b/bin/main/messages.yml @@ -1,225 +1,166 @@ -# ╔══════════════════════════════════════════════════════════════════════════════╗ -# ║ LoChat — messages.yml ║ -# ║ Default palette (Spacelegacy): #7858E9 (dusty rose) → #7858E9 (violet) ║ -# ╚══════════════════════════════════════════════════════════════════════════════╝ -# -# Color roles (reference when editing strings below): -# ẲE9 — primary labels / body (dusty rose) -# ⚖C9 — accents / separators (mid violet) -# ẲE9 — emphasis / values (deep violet) -# &f / #E8E0F0 — message body white -# &#CF6679 — errors (muted red, fits the palette) +# LoChat player messages +# All messages sent to players. Supports & color codes and placeholders. -prefix: "ẲE9[⚖C9LB6BD6oẲE9CⅵDChB6BD6a⚖C9tẲE9]" +prefix: "&8[&3LoChat&8]" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Global chat (toggle messages, server-disabled notice) │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Global Chat ──────────────────────────────────────────────────────────────── global: - toggled-on: "⚖C9Глобальный чат ẲE9включён" - toggled-off: "⚖C9Глобальный чат ẲE9отключён" - disabled: "&#CF6679Глобальный чат отключён на этом сервере" + toggled-on: "&aGlobal chat enabled" + toggled-off: "&cGlobal chat disabled" + disabled: "&cGlobal chat is disabled on this server" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Local chat (no recipients nearby) │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Local Chat ───────────────────────────────────────────────────────────────── local: - no-players: "ẲE9Рядом нет игроков" - nobody-heard: "⚖C9Вас никто не услышал ẲE9— рядом нет игроков" + no-players: "&cNo players nearby" + nobody-heard: "&7Nobody heard you — no players nearby" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Private messages (/msg, /reply) │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Private Messages ─────────────────────────────────────────────────────────── pm: - format-sent: "ẲE9[⚖C9→ẲE9] ⚖C9Вы ẲE9→ {receiver_display}ẲE9: &f{message}" - format-received: "ẲE9[⚖C9←ẲE9] {sender_display} ẲE9→ ⚖C9ВыẲE9: &f{message}" - use-gradient-names: true - sent: "ẲE9[⚖C9→ẲE9] ⚖C9Вы ẲE9→ &f{player}ẲE9: &f{message}" - received: "ẲE9[⚖C9←ẲE9] &f{player} ẲE9→ ⚖C9ВыẲE9: &f{message}" - no-reply: "&#CF6679Некому ответить" - ignored: "&#CF6679Этот игрок вас игнорирует" - player-offline: "&#CF6679Игрок не в сети" - self: "&#CF6679Нельзя писать самому себе" + format-sent: "&8[&a\u2192&8] &7You &a\u2192 &f{receiver_display}&8: &f{message}" + format-received: "&8[&e\u2190&8] &f{sender_display} &e\u2192 &7You&8: &f{message}" + no-reply: "&cNobody to reply to" + ignored: "&cThis player is ignoring you" + player-offline: "&cPlayer is not online" + self: "&cYou cannot message yourself" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Ignore list │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Ignore List ──────────────────────────────────────────────────────────────── ignore: - added: "⚖C9Игрок ẲE9{player} ⚖C9добавлен в игнор" - removed: "⚖C9Игрок ẲE9{player} ⚖C9убран из игнора" - already-ignored: "ẲE9Игрок ẲE9{player} ẲE9уже в игноре" - not-ignored: "ẲE9Игрок ẲE9{player} ẲE9не в игноре" - self: "&#CF6679Нельзя игнорировать самого себя" - list-empty: "ẲE9Ваш список игнора пуст" - list-header: "ẲE9▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬" - list-footer: "ẲE9Всего: ẲE9{count} ẲE9игроков" + added: "&aPlayer &f{player} &ais now ignored" + removed: "&aPlayer &f{player} &ais no longer ignored" + already-ignored: "&7Player &f{player} &7is already ignored" + not-ignored: "&7Player &f{player} &7is not ignored" + self: "&cYou cannot ignore yourself" + list-empty: "&7Your ignore list is empty" + list-header: "&8\u2500\u2500\u2500\u2500\u2500 Ignored Players \u2500\u2500\u2500\u2500\u2500" + list-footer: "&7Total: &f{count} &7players" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Announcements │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Announcements ────────────────────────────────────────────────────────────── announce: - reloaded: "⚖C9Конфигурация ẲE9перезагружена" + reloaded: "&aConfiguration reloaded" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Chat spy (moderation) │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Chat Spy ─────────────────────────────────────────────────────────────────── spy: - enabled: "⚖C9Режим шпиона ẲE9включён" - disabled: "⚖C9Режим шпиона ẲE9отключён" - format: "ẲE9[⚖C9SPYẲE9] ẲE9{sender} ẲE9→ ⚖C9{receiver}ẲE9: &f{message}" - chat-format: "ẲE9[⚖C9SPYẲE9] ẲE9{type} ẲE9{sender}ẲE9: &f{message}" + enabled: "&aSpy mode enabled" + disabled: "&cSpy mode disabled" + format: "&8[&4SPY&8] &f{sender} &8\u2192 &7{receiver}&8: &f{message}" + chat-format: "&8[&4SPY&8] &f{sender}&8: &f{message}" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Message filters │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Filters ──────────────────────────────────────────────────────────────────── filter: - blocked: "&#CF6679Сообщение заблокировано" - warning: "ẲE9Предупреждение" + blocked: "&cMessage blocked" + warning: "&6Warning" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Cooldowns │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Cooldowns ────────────────────────────────────────────────────────────────── cooldown: - wait: "ẲE9Подождите ẲE9{time} ẲE9сек" + wait: "&cPlease wait &f{time} &cseconds" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Anti-spam (caps, repeat, similar messages) │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Anti-Spam ────────────────────────────────────────────────────────────────── antispam: - caps: "&#CF6679Не кричите в чате" - repeat: "&#CF6679Не повторяйте символы" - similar: "&#CF6679Не отправляйте одинаковые сообщения" + caps: "&cPlease don't shout" + repeat: "&cPlease don't repeat characters" + similar: "&cPlease don't send the same message" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Clear chat │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Clear Chat ───────────────────────────────────────────────────────────────── clearchat: - cleared: "⚖C9Чат очищен ẲE9администратором ẲE9{player}" + cleared: "&aChat cleared by &f{player}" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Command / usage errors │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Errors ───────────────────────────────────────────────────────────────────── errors: - no-permission: "&#CF6679Нет прав" - player-not-found: "&#CF6679Игрок не найден" - invalid-usage: "ẲE9Использование: ẲE9{usage}" + no-permission: "&cNo permission" + player-not-found: "&cPlayer not found" + invalid-usage: "&cUsage: &f{usage}" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ General (permissions, reload, hub, etc.) │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── General ──────────────────────────────────────────────────────────────────── general: - no-permission: "&#CF6679У вас нет прав!" - players-only: "&#CF6679Только для игроков!" - config-reloaded: "⚖C9Конфиг ẲE9перезагружен!" - invalid-player: "&#CF6679Игрок ẲE9{player} &#CF6679не найден!" - cooldown-active: "ẲE9Подождите ẲE9{time}с" - command-disabled: "&#CF6679Команда отключена!" + no-permission: "&cYou don't have permission!" + players-only: "&cThis command is for players only!" + config-reloaded: "&aConfiguration reloaded!" + invalid-player: "&cPlayer &f{player} &cnot found!" + cooldown-active: "&cPlease wait &f{time}&cs" + command-disabled: "&cCommand disabled!" + +# ── Hub ──────────────────────────────────────────────────────────────────────── hub: - connecting: "⚖C9Подключение к ẲE9{server}⚖C9..." + connecting: "&aConnecting to &f{server}&a..." -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Mutes │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Mute ─────────────────────────────────────────────────────────────────────── mute: - muted: "⚖C9Игрок ẲE9{player} ⚖C9замучен на ẲE9{time}" - unmuted: "⚖C9Игрок ẲE9{player} ⚖C9размучен" - already-muted: "ẲE9Игрок ẲE9{player} ẲE9уже замучен" - not-muted: "ẲE9Игрок ẲE9{player} ẲE9не замучен" - you-muted: "&#CF6679Вы замучены! ẲE9Осталось: ẲE9{time}" - permanent: "&#CF6679Вы замучены навсегда!" + muted: "&aPlayer &f{player} &amuted for &f{time}" + unmuted: "&aPlayer &f{player} &aunmuted" + already-muted: "&7Player &f{player} &7is already muted" + not-muted: "&7Player &f{player} &7is not muted" + you-muted: "&cYou are muted! &7Remaining: &f{time}" + permanent: "&cYou are permanently muted!" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Gradient nick module (LoPreff) │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Gradients ────────────────────────────────────────────────────────────────── gradient: - color-set: "⚖C9Градиент ẲE9установлен!" - color-enabled: "⚖C9Градиентный ник ẲE9включён" - color-disabled: "ẲE9Градиентный ник ⚖C9отключён" - color-reset: "ẲE9Градиент сброшен" - prefix-set: "⚖C9Префикс ẲE9установлен!" - prefix-reset: "ẲE9Префикс сброшен" - prefix-reset-success: "⚖C9Префикс успешно ẲE9сброшен!" - prefix-enabled: "⚖C9Префикс ẲE9включён" - prefix-disabled: "ẲE9Префикс ⚖C9отключён" - invalid-hex: "&#CF6679Неверный HEX цвет: ẲE9{color}" - invalid-color: "&#CF6679Неверный цвет: ẲE9{color}" - too-many-colors: "&#CF6679Слишком много цветов! Максимум: ẲE9{max}" - too-few-colors: "&#CF6679Слишком мало цветов! Минимум: ẲE9{min}" - not-enough-colors: "&#CF6679Слишком мало цветов! Минимум: ẲE9{min}" - cooldown: "ẲE9Подождите ẲE9{time} ẲE9сек" - not-enough-points: "&#CF6679Недостаточно поинтов! Нужно: ẲE9{price}" - not-enough-points-color: "&#CF6679Недостаточно поинтов! Нужно: ẲE9{price}" - not-enough-points-prefix: "&#CF6679Недостаточно поинтов! Нужно: ẲE9{price}" - player-not-found: "&#CF6679Игрок не найден" - color-help: "ẲE9Использование: ẲE9/color " - color-success: "⚖C9Градиент успешно ẲE9установлен!" - color-no-colors: "ẲE9У вас нет установленных цветов" - color-copy-usage: "ẲE9Использование: ẲE9/color copy <игрок>" - color-copy-no-colors: "ẲE9У игрока ẲE9{player} ẲE9нет цветов" - prefix-help: "ẲE9Использование: ẲE9/prefix <текст> ẲE9или ẲE9/prefix reset" - prefix-success: "⚖C9Префикс установлен! ẲE9Стоимость: ẲE9{price} ẲE9поинтов" - prefix-success-free: "⚖C9Префикс ẲE9установлен!" - prefix-no-prefix: "ẲE9У вас нет префикса" - prefix-too-long: "&#CF6679Префикс слишком длинный! Максимум: ẲE9{max}" - prefix-no-colors: "&#CF6679Префикс не может содержать цветовые коды!" - prefix-invalid-chars: "&#CF6679Недопустимые символы в префиксе!" - prefix-blacklisted: "&#CF6679Этот префикс запрещён!" - only-player: "&#CF6679Только для игроков!" - no-permission: "&#CF6679Нет прав!" - reload-success: "⚖C9Конфигурация ẲE9перезагружена!" - info-header: "ẲE9▬▬▬▬▬▬▬▬ ẲE9{player} ẲE9▬▬▬▬▬▬▬▬" - info-prefix: "ẲE9Префикс: &f{prefix}" - info-prefix-enabled: "ẲE9Префикс активен: &f{enabled}" - info-colors: "ẲE9Цвета: &f{colors}" - info-color-enabled: "ẲE9Цвет активен: &f{enabled}" - info-prefix-purchased: "ẲE9Куплен: &f{purchased}" + color-set: "&aGradient set!" + color-enabled: "&aGradient nickname enabled" + color-disabled: "&7Gradient nickname disabled" + color-reset: "&7Gradient reset" + prefix-set: "&aPrefix set!" + prefix-reset: "&7Prefix reset" + prefix-enabled: "&aPrefix enabled" + prefix-disabled: "&7Prefix disabled" + invalid-hex: "&cInvalid hex color: &f{color}" + invalid-color: "&cInvalid color: &f{color}" + too-many-colors: "&cToo many colors! Maximum: &f{max}" + too-few-colors: "&cToo few colors! Minimum: &f{min}" + cooldown: "&cPlease wait &f{time} &cseconds" + not-enough-points: "&cNot enough points! Need: &f{price}" + player-not-found: "&cPlayer not found" + color-help: "&cUsage: &f/color ..." + color-success: "&aGradient applied!" + color-no-colors: "&7You have no colors set" + prefix-help: "&cUsage: &f/prefix " + prefix-success: "&aPrefix set!" + prefix-success-free: "&aPrefix set!" + prefix-no-prefix: "&7You have no prefix" + prefix-too-long: "&cPrefix too long! Max: &f{max}" + prefix-no-colors: "&cPrefix cannot contain color codes" + only-player: "&cPlayers only!" + no-permission: "&cNo permission!" + reload-success: "&aConfiguration reloaded!" + info-header: "&8\u2500\u2500\u2500\u2500\u2500 &f{player} &8\u2500\u2500\u2500\u2500\u2500" + info-prefix: "&7Prefix: &f{prefix}" + info-colors: "&7Colors: &f{colors}" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Custom nicknames (/nick) │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── Custom Nicknames ─────────────────────────────────────────────────────────── nick: - current: "ẲE9Ваш ник: ẲE9{nick}" - usage: "ẲE9Использование: ẲE9/nick <ник> ẲE9или ẲE9/nick reset" - reset-usage: "ẲE9Используйте ẲE9/nick reset ẲE9для сброса" - set-usage: "ẲE9Используйте ẲE9/nick <ник> ẲE9для установки" - no-nick: "ẲE9У вас нет кастомного ника" - reset-success: "⚖C9Ник ẲE9сброшен!" - set-success: "⚖C9Ник изменён на: &f{nick}" - invalid: "&#CF6679Невалидный ник!" - requirements-header: "ẲE9Требования:" - requirements-length: "⚖C9◆ &fДлина: 3-16 символов" - requirements-chars: "⚖C9◆ &fБуквы, цифры, _, русские буквы" - requirements-colors: "⚖C9◆ &fЦвета: ẲE9&#RRGGBBẲE9текст" - taken: "&#CF6679Этот ник уже занят!" - error: "&#CF6679Не удалось установить ник!" + current: "&7Your nickname: &f{nick}" + usage: "&cUsage: &f/nick &7or &f/nick reset" + no-nick: "&7You have no custom nickname" + reset-success: "&aNickname reset!" + set-success: "&aNickname changed to: &f{nick}" + invalid: "&cInvalid nickname!" + taken: "&cThis nickname is already taken!" + error: "&cFailed to set nickname!" -# ┌─────────────────────────────────────────────────────────────────────────────┐ -# │ Roleplay commands (/me, /try, /do, /roll) │ -# └─────────────────────────────────────────────────────────────────────────────┘ +# ── RP Commands ──────────────────────────────────────────────────────────────── rp: - me: "* {player} {action}" - try-format: "* {player} пытается {action}... {result}" - try-success: "[Успех!]" - try-fail: "[Провал!]" - do-format: "[Сцена] {description} ({player})" - roll-format: "* {player} бросает кубик и получает {result} из {max}" - roll-min-error: "Минимальное значение кубика: 2" - roll-max-error: "Максимальное значение: 1000000" - roll-invalid-number: "Укажите число: /roll [максимум]" + me: "&7* {player} {action}" + try-format: "&7* {player} tries {action}... &f{result}" + try-success: "&a[Success!]" + try-fail: "&c[Fail!]" + do-format: "&8[Scene] &f{description} &7({player})" + roll-format: "&7* {player} rolls &f{result} &7out of &f{max}" + roll-min-error: "&cMinimum dice value: 2" + roll-max-error: "&cMaximum dice value: 1000000" + roll-invalid-number: "&cPlease specify a number: /roll [max]" diff --git a/build.gradle.kts b/build.gradle.kts index 17db837..f4e3f96 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -36,7 +36,7 @@ checkstyle { configFile = file("config/checkstyle/checkstyle.xml") isIgnoreFailures = false maxErrors = 0 - maxWarnings = 100 + maxWarnings = 200 } java { diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml index 651930a..6595e25 100644 --- a/config/checkstyle/checkstyle.xml +++ b/config/checkstyle/checkstyle.xml @@ -3,81 +3,59 @@ "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN" "https://checkstyle.org/dtds/configuration_1_3.dtd"> - - - - + - - - - - - - - - - - - + + - - - - - - - - - - + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - @@ -87,38 +65,19 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - - - @@ -136,52 +95,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/src/main/java/com/loki/lochat/LoChat.java b/src/main/java/com/loki/lochat/LoChat.java index f5b5757..b1687e5 100644 --- a/src/main/java/com/loki/lochat/LoChat.java +++ b/src/main/java/com/loki/lochat/LoChat.java @@ -11,6 +11,7 @@ import com.loki.lochat.gradient.GradientModule; import com.loki.lochat.integrations.DiscordIntegration; import com.loki.lochat.managers.AutoMessageManager; import com.loki.lochat.managers.CustomCommandManager; + import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; @@ -82,9 +83,15 @@ public final class LoChat extends JavaPlugin { configManager.reload(); messageConfig.reload(); autoMessageManager.reload(); - if (gradientModule != null) gradientModule.reload(); - if (customCommandManager != null) customCommandManager.reload(); - if (discordIntegration != null) discordIntegration.reload(); + if (gradientModule != null) { + gradientModule.reload(); + } + if (customCommandManager != null) { + customCommandManager.reload(); + } + if (discordIntegration != null) { + discordIntegration.reload(); + } if (serviceRegistry != null) { try { serviceRegistry.get(PunishmentService.class).save(); diff --git a/src/main/java/com/loki/lochat/api/filter/MessageFilter.java b/src/main/java/com/loki/lochat/api/filter/MessageFilter.java index 93f0ddb..8262db8 100644 --- a/src/main/java/com/loki/lochat/api/filter/MessageFilter.java +++ b/src/main/java/com/loki/lochat/api/filter/MessageFilter.java @@ -1,6 +1,7 @@ package com.loki.lochat.api.filter; import com.loki.lochat.data.model.ChatMessage; + import org.bukkit.entity.Player; /** diff --git a/src/main/java/com/loki/lochat/api/service/MessagingService.java b/src/main/java/com/loki/lochat/api/service/MessagingService.java index 2344c44..9d8bc3b 100644 --- a/src/main/java/com/loki/lochat/api/service/MessagingService.java +++ b/src/main/java/com/loki/lochat/api/service/MessagingService.java @@ -1,6 +1,7 @@ package com.loki.lochat.api.service; import net.kyori.adventure.text.Component; + import org.bukkit.entity.Player; import java.util.Optional; diff --git a/src/main/java/com/loki/lochat/api/service/MuteService.java b/src/main/java/com/loki/lochat/api/service/MuteService.java index 02f09b4..b42a90f 100644 --- a/src/main/java/com/loki/lochat/api/service/MuteService.java +++ b/src/main/java/com/loki/lochat/api/service/MuteService.java @@ -1,6 +1,7 @@ package com.loki.lochat.api.service; import com.loki.lochat.data.model.MuteData; + import org.bukkit.entity.Player; import java.util.List; diff --git a/src/main/java/com/loki/lochat/api/service/PunishmentService.java b/src/main/java/com/loki/lochat/api/service/PunishmentService.java index ced09b1..6035c28 100644 --- a/src/main/java/com/loki/lochat/api/service/PunishmentService.java +++ b/src/main/java/com/loki/lochat/api/service/PunishmentService.java @@ -2,6 +2,7 @@ package com.loki.lochat.api.service; import com.loki.lochat.data.model.BanRecord; import com.loki.lochat.data.model.WarnEntry; + import net.kyori.adventure.text.Component; import java.util.List; diff --git a/src/main/java/com/loki/lochat/commands/CommandManager.java b/src/main/java/com/loki/lochat/commands/CommandManager.java index 0625aee..b322e51 100644 --- a/src/main/java/com/loki/lochat/commands/CommandManager.java +++ b/src/main/java/com/loki/lochat/commands/CommandManager.java @@ -1,9 +1,9 @@ package com.loki.lochat.commands; import com.loki.lochat.LoChat; +import com.loki.lochat.commands.admin.broadcast.*; import com.loki.lochat.commands.admin.chat.*; import com.loki.lochat.commands.admin.system.*; -import com.loki.lochat.commands.admin.broadcast.*; import com.loki.lochat.commands.chat.*; import com.loki.lochat.commands.messaging.*; import com.loki.lochat.commands.moderation.ban.*; @@ -11,6 +11,7 @@ import com.loki.lochat.commands.moderation.mute.*; import com.loki.lochat.commands.moderation.warn.*; import com.loki.lochat.commands.nick.*; import com.loki.lochat.commands.rp.*; + import org.bukkit.command.PluginCommand; import java.util.HashMap; @@ -94,7 +95,9 @@ public class CommandManager { PluginCommand cmd = plugin.getCommand(name); if (cmd != null) { cmd.setExecutor((org.bukkit.command.CommandExecutor) executor); - if (executor instanceof org.bukkit.command.TabCompleter tc) cmd.setTabCompleter(tc); + if (executor instanceof org.bukkit.command.TabCompleter tc) { + cmd.setTabCompleter(tc); + } } else { plugin.getLogger().warning("[LoChat] Команда '" + name + "' не найдена в plugin.yml!"); } diff --git a/src/main/java/com/loki/lochat/commands/CustomCommand.java b/src/main/java/com/loki/lochat/commands/CustomCommand.java index 0ca00b1..b1c2074 100644 --- a/src/main/java/com/loki/lochat/commands/CustomCommand.java +++ b/src/main/java/com/loki/lochat/commands/CustomCommand.java @@ -1,6 +1,7 @@ package com.loki.lochat.commands; import com.loki.lochat.managers.CustomCommandManager; + import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/main/java/com/loki/lochat/commands/CustomCommandsCommand.java b/src/main/java/com/loki/lochat/commands/CustomCommandsCommand.java index 6414b68..63ca74e 100644 --- a/src/main/java/com/loki/lochat/commands/CustomCommandsCommand.java +++ b/src/main/java/com/loki/lochat/commands/CustomCommandsCommand.java @@ -3,7 +3,9 @@ package com.loki.lochat.commands; import com.loki.lochat.LoChat; import com.loki.lochat.managers.CustomCommandManager; import com.loki.lochat.utils.format.ChatFormatter; + import net.kyori.adventure.text.Component; + import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; diff --git a/src/main/java/com/loki/lochat/commands/admin/broadcast/AnnounceCommand.java b/src/main/java/com/loki/lochat/commands/admin/broadcast/AnnounceCommand.java index ddfea18..1d29c4c 100644 --- a/src/main/java/com/loki/lochat/commands/admin/broadcast/AnnounceCommand.java +++ b/src/main/java/com/loki/lochat/commands/admin/broadcast/AnnounceCommand.java @@ -2,8 +2,10 @@ package com.loki.lochat.commands.admin.broadcast; import com.loki.lochat.LoChat; import com.loki.lochat.utils.format.ChatFormatter; + import net.kyori.adventure.text.Component; import net.kyori.adventure.title.Title; + import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -38,8 +40,9 @@ public class AnnounceCommand implements CommandExecutor { for (Player player : Bukkit.getOnlinePlayers()) { player.sendMessage(formatted); - if (plugin.getConfigManager().isAnnouncementActionBarEnabled()) + if (plugin.getConfigManager().isAnnouncementActionBarEnabled()) { player.sendActionBar(formatted); + } if (plugin.getConfigManager().isAnnouncementTitleEnabled()) { player.showTitle(Title.title( ChatFormatter.parse(plugin.getConfigManager().getAnnouncementTitleHeader()), diff --git a/src/main/java/com/loki/lochat/commands/admin/broadcast/DiscordCommand.java b/src/main/java/com/loki/lochat/commands/admin/broadcast/DiscordCommand.java index 752f8ff..dcb5f23 100644 --- a/src/main/java/com/loki/lochat/commands/admin/broadcast/DiscordCommand.java +++ b/src/main/java/com/loki/lochat/commands/admin/broadcast/DiscordCommand.java @@ -3,6 +3,7 @@ package com.loki.lochat.commands.admin.broadcast; import com.loki.lochat.LoChat; import com.loki.lochat.integrations.DiscordIntegration; import com.loki.lochat.utils.format.ChatFormatter; + import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -29,22 +30,34 @@ public class DiscordCommand implements CommandExecutor, TabCompleter { sender.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("errors.no-permission"))); return true; } - if (args.length == 0) { sendHelp(sender); return true; } + if (args.length == 0) { + sendHelp(sender); + return true; + } switch (args[0].toLowerCase()) { case "status" -> sender.sendMessage(ChatFormatter.parse(discord.isEnabled() ? "⚖C9Discord ẲE9включён" : "⚖C9Discord &#CF6679отключён")); case "reload" -> { - try { discord.reload(); sender.sendMessage(ChatFormatter.parse("⚖C9Discord ẲE9перезагружен")); } - catch (Exception e) { sender.sendMessage(ChatFormatter.parse("&#CF6679Ошибка: " + e.getMessage())); } + try { + discord.reload(); + sender.sendMessage(ChatFormatter.parse("⚖C9Discord ẲE9перезагружен")); + } catch (Exception e) { + sender.sendMessage(ChatFormatter.parse("&#CF6679Ошибка: " + e.getMessage())); + } } case "test" -> { - if (!discord.isEnabled()) { sender.sendMessage(ChatFormatter.parse("&#CF6679Discord отключён")); return true; } + if (!discord.isEnabled()) { + sender.sendMessage(ChatFormatter.parse("&#CF6679Discord отключён")); + return true; + } String msg = args.length > 1 ? String.join(" ", Arrays.copyOfRange(args, 1, args.length)) : "Тест от " + sender.getName(); sender.sendMessage(ChatFormatter.parse("&#B798A8Отправка...")); java.util.concurrent.CompletableFuture.runAsync(() -> { discord.sendTestMessage(msg, sender.getName()); - if (sender instanceof org.bukkit.entity.Player p) + if (sender instanceof org.bukkit.entity.Player p) { p.getScheduler().run(plugin, t -> sender.sendMessage(ChatFormatter.parse("⚖C9Отправлено ẲE9✓")), null); - else sender.sendMessage(ChatFormatter.parse("⚖C9Отправлено ẲE9✓")); + } else { + sender.sendMessage(ChatFormatter.parse("⚖C9Отправлено ẲE9✓")); + } }); } default -> sendHelp(sender); @@ -58,8 +71,12 @@ public class DiscordCommand implements CommandExecutor, TabCompleter { @Override public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { - if (!sender.hasPermission("lochat.discord.admin")) return null; - if (args.length == 1) return List.of("status", "reload", "test"); + if (!sender.hasPermission("lochat.discord.admin")) { + return null; + } + if (args.length == 1) { + return List.of("status", "reload", "test"); + } return null; } } diff --git a/src/main/java/com/loki/lochat/commands/admin/chat/ChatSpyCommand.java b/src/main/java/com/loki/lochat/commands/admin/chat/ChatSpyCommand.java index 7f12b66..4416656 100644 --- a/src/main/java/com/loki/lochat/commands/admin/chat/ChatSpyCommand.java +++ b/src/main/java/com/loki/lochat/commands/admin/chat/ChatSpyCommand.java @@ -3,6 +3,7 @@ package com.loki.lochat.commands.admin.chat; import com.loki.lochat.LoChat; import com.loki.lochat.api.service.MessagingService; import com.loki.lochat.utils.format.ChatFormatter; + import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; diff --git a/src/main/java/com/loki/lochat/commands/admin/chat/ClearChatCommand.java b/src/main/java/com/loki/lochat/commands/admin/chat/ClearChatCommand.java index 0763832..062c9e6 100644 --- a/src/main/java/com/loki/lochat/commands/admin/chat/ClearChatCommand.java +++ b/src/main/java/com/loki/lochat/commands/admin/chat/ClearChatCommand.java @@ -2,6 +2,7 @@ package com.loki.lochat.commands.admin.chat; import com.loki.lochat.LoChat; import com.loki.lochat.utils.format.ChatFormatter; + import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -21,7 +22,9 @@ public class ClearChatCommand implements CommandExecutor { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { int lines = plugin.getConfigManager().getAppearanceConfig().getClearLines(); for (Player player : Bukkit.getOnlinePlayers()) { - for (int i = 0; i < lines; i++) player.sendMessage(""); + for (int i = 0; i < lines; i++) { + player.sendMessage(""); + } if (plugin.getConfigManager().isClearChatMessageEnabled()) { player.sendMessage(ChatFormatter.parse( plugin.getConfigManager().getClearChatMessage().replace("{player}", sender.getName()))); diff --git a/src/main/java/com/loki/lochat/commands/admin/chat/ClearChatConfigCommand.java b/src/main/java/com/loki/lochat/commands/admin/chat/ClearChatConfigCommand.java index 351f599..ff83fb2 100644 --- a/src/main/java/com/loki/lochat/commands/admin/chat/ClearChatConfigCommand.java +++ b/src/main/java/com/loki/lochat/commands/admin/chat/ClearChatConfigCommand.java @@ -2,6 +2,7 @@ package com.loki.lochat.commands.admin.chat; import com.loki.lochat.LoChat; import com.loki.lochat.utils.format.ChatFormatter; + import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -31,10 +32,19 @@ public class ClearChatConfigCommand implements CommandExecutor, TabCompleter { return true; } switch (args[0].toLowerCase()) { - case "enable" -> { plugin.getConfigManager().setClearChatMessageEnabled(true); sender.sendMessage(ChatFormatter.parse("⚖C9Сообщение очистки ẲE9включено")); } - case "disable" -> { plugin.getConfigManager().setClearChatMessageEnabled(false); sender.sendMessage(ChatFormatter.parse("⚖C9Сообщение очистки &#B798A8отключено")); } + case "enable" -> { + plugin.getConfigManager().setClearChatMessageEnabled(true); + sender.sendMessage(ChatFormatter.parse("⚖C9Сообщение очистки ẲE9включено")); + } + case "disable" -> { + plugin.getConfigManager().setClearChatMessageEnabled(false); + sender.sendMessage(ChatFormatter.parse("⚖C9Сообщение очистки &#B798A8отключено")); + } case "message" -> { - if (args.length < 2) { sender.sendMessage(ChatFormatter.parse("&#CF6679Укажите текст!")); return true; } + if (args.length < 2) { + sender.sendMessage(ChatFormatter.parse("&#CF6679Укажите текст!")); + return true; + } String msg = String.join(" ", Arrays.copyOfRange(args, 1, args.length)); plugin.getConfigManager().setClearChatMessage(msg); sender.sendMessage(ChatFormatter.parse("⚖C9Сообщение установлено: &f" + msg)); @@ -50,8 +60,10 @@ public class ClearChatConfigCommand implements CommandExecutor, TabCompleter { @Override public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { - if (args.length == 1) return List.of("enable", "disable", "message", "status").stream() - .filter(s -> s.startsWith(args[0].toLowerCase())).toList(); + if (args.length == 1) { + return List.of("enable", "disable", "message", "status").stream() + .filter(s -> s.startsWith(args[0].toLowerCase())).toList(); + } return null; } } diff --git a/src/main/java/com/loki/lochat/commands/admin/system/HubCommand.java b/src/main/java/com/loki/lochat/commands/admin/system/HubCommand.java index 9774994..382a3fb 100644 --- a/src/main/java/com/loki/lochat/commands/admin/system/HubCommand.java +++ b/src/main/java/com/loki/lochat/commands/admin/system/HubCommand.java @@ -4,6 +4,7 @@ import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; import com.loki.lochat.LoChat; import com.loki.lochat.utils.format.ChatFormatter; + import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; diff --git a/src/main/java/com/loki/lochat/commands/admin/system/LoChatCommand.java b/src/main/java/com/loki/lochat/commands/admin/system/LoChatCommand.java index ca5002f..e697fb6 100644 --- a/src/main/java/com/loki/lochat/commands/admin/system/LoChatCommand.java +++ b/src/main/java/com/loki/lochat/commands/admin/system/LoChatCommand.java @@ -2,6 +2,7 @@ package com.loki.lochat.commands.admin.system; import com.loki.lochat.LoChat; import com.loki.lochat.utils.format.ChatFormatter; + import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -54,9 +55,15 @@ public class LoChatCommand implements CommandExecutor, TabCompleter { @Override public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { - if (!sender.hasPermission("lochat.admin")) return new ArrayList<>(); - if (args.length == 1) return List.of("reload", "commands").stream().filter(s -> s.startsWith(args[0].toLowerCase())).toList(); - if (args.length == 2 && args[0].equalsIgnoreCase("commands")) return List.of("reload"); + if (!sender.hasPermission("lochat.admin")) { + return new ArrayList<>(); + } + if (args.length == 1) { + return List.of("reload", "commands").stream().filter(s -> s.startsWith(args[0].toLowerCase())).toList(); + } + if (args.length == 2 && args[0].equalsIgnoreCase("commands")) { + return List.of("reload"); + } return new ArrayList<>(); } } diff --git a/src/main/java/com/loki/lochat/commands/admin/system/ReloadConfigCommand.java b/src/main/java/com/loki/lochat/commands/admin/system/ReloadConfigCommand.java index c935a18..2ed603f 100644 --- a/src/main/java/com/loki/lochat/commands/admin/system/ReloadConfigCommand.java +++ b/src/main/java/com/loki/lochat/commands/admin/system/ReloadConfigCommand.java @@ -2,6 +2,7 @@ package com.loki.lochat.commands.admin.system; import com.loki.lochat.LoChat; import com.loki.lochat.utils.format.ChatFormatter; + import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; diff --git a/src/main/java/com/loki/lochat/commands/base/AdminCommand.java b/src/main/java/com/loki/lochat/commands/base/AdminCommand.java index 079606f..5bce7fa 100644 --- a/src/main/java/com/loki/lochat/commands/base/AdminCommand.java +++ b/src/main/java/com/loki/lochat/commands/base/AdminCommand.java @@ -1,6 +1,7 @@ package com.loki.lochat.commands.base; import com.loki.lochat.LoChat; + import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/com/loki/lochat/commands/base/BaseCommand.java b/src/main/java/com/loki/lochat/commands/base/BaseCommand.java index c3be604..53081e4 100644 --- a/src/main/java/com/loki/lochat/commands/base/BaseCommand.java +++ b/src/main/java/com/loki/lochat/commands/base/BaseCommand.java @@ -1,6 +1,7 @@ package com.loki.lochat.commands.base; import com.loki.lochat.LoChat; + import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; diff --git a/src/main/java/com/loki/lochat/commands/base/PlayerCommand.java b/src/main/java/com/loki/lochat/commands/base/PlayerCommand.java index 9ed74da..690cf97 100644 --- a/src/main/java/com/loki/lochat/commands/base/PlayerCommand.java +++ b/src/main/java/com/loki/lochat/commands/base/PlayerCommand.java @@ -1,6 +1,7 @@ package com.loki.lochat.commands.base; import com.loki.lochat.LoChat; + import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/main/java/com/loki/lochat/commands/chat/GlobalChatCommand.java b/src/main/java/com/loki/lochat/commands/chat/GlobalChatCommand.java index 471c5ed..b4be2e2 100644 --- a/src/main/java/com/loki/lochat/commands/chat/GlobalChatCommand.java +++ b/src/main/java/com/loki/lochat/commands/chat/GlobalChatCommand.java @@ -3,7 +3,9 @@ package com.loki.lochat.commands.chat; import com.loki.lochat.LoChat; import com.loki.lochat.api.service.ChatService; import com.loki.lochat.utils.format.ChatFormatter; + import net.kyori.adventure.text.minimessage.MiniMessage; + import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; diff --git a/src/main/java/com/loki/lochat/commands/chat/LocalChatCommand.java b/src/main/java/com/loki/lochat/commands/chat/LocalChatCommand.java index 5fa8691..fc8cf4e 100644 --- a/src/main/java/com/loki/lochat/commands/chat/LocalChatCommand.java +++ b/src/main/java/com/loki/lochat/commands/chat/LocalChatCommand.java @@ -3,7 +3,9 @@ package com.loki.lochat.commands.chat; import com.loki.lochat.LoChat; import com.loki.lochat.api.service.ChatService; import com.loki.lochat.utils.format.ChatFormatter; + import net.kyori.adventure.text.minimessage.MiniMessage; + import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; diff --git a/src/main/java/com/loki/lochat/commands/messaging/IgnoreCommand.java b/src/main/java/com/loki/lochat/commands/messaging/IgnoreCommand.java index aefc3f3..383ec9c 100644 --- a/src/main/java/com/loki/lochat/commands/messaging/IgnoreCommand.java +++ b/src/main/java/com/loki/lochat/commands/messaging/IgnoreCommand.java @@ -3,6 +3,7 @@ package com.loki.lochat.commands.messaging; import com.loki.lochat.LoChat; import com.loki.lochat.api.service.MessagingService; import com.loki.lochat.utils.format.ChatFormatter; + import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -22,13 +23,28 @@ public class IgnoreCommand implements CommandExecutor { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { - if (!(sender instanceof Player player)) { sender.sendMessage(plugin.getConfigManager().getMessagesConfig().getPlayerOnly()); return true; } - if (args.length == 0) { player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().getInvalidUsage("/ignore <ник>"))); return true; } + if (!(sender instanceof Player player)) { + sender.sendMessage(plugin.getConfigManager().getMessagesConfig().getPlayerOnly()); + return true; + } + if (args.length == 0) { + player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().getInvalidUsage("/ignore <ник>"))); + return true; + } Player target = Bukkit.getPlayer(args[0]); - if (target == null) { player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().getPlayerNotFound())); return true; } - if (target.equals(player)) { player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("ignore.self"))); return true; } - if (messagingService.isIgnoring(player.getUniqueId(), target.getUniqueId())) { player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("ignore.already-ignored"))); return true; } + if (target == null) { + player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().getPlayerNotFound())); + return true; + } + if (target.equals(player)) { + player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("ignore.self"))); + return true; + } + if (messagingService.isIgnoring(player.getUniqueId(), target.getUniqueId())) { + player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("ignore.already-ignored"))); + return true; + } messagingService.addIgnore(player.getUniqueId(), target.getUniqueId()); player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("ignore.added", "{player}", target.getName()))); diff --git a/src/main/java/com/loki/lochat/commands/messaging/IgnoreListCommand.java b/src/main/java/com/loki/lochat/commands/messaging/IgnoreListCommand.java index 12263eb..51bf317 100644 --- a/src/main/java/com/loki/lochat/commands/messaging/IgnoreListCommand.java +++ b/src/main/java/com/loki/lochat/commands/messaging/IgnoreListCommand.java @@ -4,6 +4,7 @@ import com.loki.lochat.LoChat; import com.loki.lochat.api.service.MessagingService; import com.loki.lochat.utils.format.ChatFormatter; import com.loki.lochat.utils.player.PlayerUtil; + import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -25,15 +26,23 @@ public class IgnoreListCommand implements CommandExecutor { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { - if (!(sender instanceof Player player)) { sender.sendMessage(plugin.getConfigManager().getMessagesConfig().getPlayerOnly()); return true; } + if (!(sender instanceof Player player)) { + sender.sendMessage(plugin.getConfigManager().getMessagesConfig().getPlayerOnly()); + return true; + } Set ignored = messagingService.getIgnoredPlayers(player.getUniqueId()); - if (ignored.isEmpty()) { player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("ignore.list-empty"))); return true; } + if (ignored.isEmpty()) { + player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("ignore.list-empty"))); + return true; + } player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("ignore.list-header"))); for (UUID uuid : ignored) { String name = PlayerUtil.getPlayerName(uuid); - if (name != null) player.sendMessage(ChatFormatter.parse("⚖C9◆ &f" + name)); + if (name != null) { + player.sendMessage(ChatFormatter.parse("⚖C9◆ &f" + name)); + } } player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("ignore.list-footer").replace("{count}", String.valueOf(ignored.size())))); return true; diff --git a/src/main/java/com/loki/lochat/commands/messaging/MsgCommand.java b/src/main/java/com/loki/lochat/commands/messaging/MsgCommand.java index a1222aa..842b7a8 100644 --- a/src/main/java/com/loki/lochat/commands/messaging/MsgCommand.java +++ b/src/main/java/com/loki/lochat/commands/messaging/MsgCommand.java @@ -4,6 +4,7 @@ import com.loki.lochat.LoChat; import com.loki.lochat.api.service.MessagingService; import com.loki.lochat.utils.format.ChatFormatter; import com.loki.lochat.utils.player.PlayerUtil; + import org.bukkit.Bukkit; import org.bukkit.Sound; import org.bukkit.command.Command; @@ -28,17 +29,31 @@ public class MsgCommand implements CommandExecutor { sender.sendMessage(plugin.getConfigManager().getMessagesConfig().getPlayerOnly()); return true; } - if (!plugin.getConfigManager().isPmEnabled()) return true; + if (!plugin.getConfigManager().isPmEnabled()) { + return true; + } if (args.length < 2) { player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().getInvalidUsage("/msg <ник> <сообщение>"))); return true; } Player target = Bukkit.getPlayer(args[0]); - if (target == null) { player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("pm.player-offline"))); return true; } - if (target.equals(player)) { player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("pm.self"))); return true; } - if (messagingService.isIgnoring(target.getUniqueId(), player.getUniqueId())) { player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("pm.ignored"))); return true; } - if (messagingService.isIgnoring(player.getUniqueId(), target.getUniqueId())) { player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("pm.ignored"))); return true; } + if (target == null) { + player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("pm.player-offline"))); + return true; + } + if (target.equals(player)) { + player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("pm.self"))); + return true; + } + if (messagingService.isIgnoring(target.getUniqueId(), player.getUniqueId())) { + player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("pm.ignored"))); + return true; + } + if (messagingService.isIgnoring(player.getUniqueId(), target.getUniqueId())) { + player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("pm.ignored"))); + return true; + } String message = String.join(" ", java.util.Arrays.copyOfRange(args, 1, args.length)); sendPm(player, target, message); @@ -50,12 +65,15 @@ public class MsgCommand implements CommandExecutor { target.sendMessage(ChatFormatter.formatPmReceivedNew(plugin.getMessageConfig().getPmFormatReceived(), sender, target, message)); if (plugin.getConfigManager().isPmSoundEnabled()) { Sound sound = PlayerUtil.parseSound(plugin.getConfigManager().getPmSoundType(), null); - if (sound != null) target.playSound(target.getLocation(), sound, 1.0f, 1.0f); + if (sound != null) { + target.playSound(target.getLocation(), sound, 1.0f, 1.0f); + } } messagingService.broadcastPM(sender, target, message); messagingService.setLastConversation(sender.getUniqueId(), target.getUniqueId()); messagingService.setLastConversation(target.getUniqueId(), sender.getUniqueId()); - if (plugin.getConfigManager().isPmLogEnabled()) + if (plugin.getConfigManager().isPmLogEnabled()) { plugin.getLogger().info("[PM] " + sender.getName() + " -> " + target.getName() + ": " + message); + } } } diff --git a/src/main/java/com/loki/lochat/commands/messaging/ReplyCommand.java b/src/main/java/com/loki/lochat/commands/messaging/ReplyCommand.java index 1664652..6155ecd 100644 --- a/src/main/java/com/loki/lochat/commands/messaging/ReplyCommand.java +++ b/src/main/java/com/loki/lochat/commands/messaging/ReplyCommand.java @@ -4,6 +4,7 @@ import com.loki.lochat.LoChat; import com.loki.lochat.api.service.MessagingService; import com.loki.lochat.utils.format.ChatFormatter; import com.loki.lochat.utils.player.PlayerUtil; + import org.bukkit.Bukkit; import org.bukkit.Sound; import org.bukkit.command.Command; @@ -31,30 +32,44 @@ public class ReplyCommand implements CommandExecutor { sender.sendMessage(plugin.getConfigManager().getMessagesConfig().getPlayerOnly()); return true; } - if (!plugin.getConfigManager().isPmEnabled()) return true; + if (!plugin.getConfigManager().isPmEnabled()) { + return true; + } if (args.length == 0) { player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().getInvalidUsage("/reply <сообщение>"))); return true; } Optional lastUuid = messagingService.getLastConversation(player.getUniqueId()); - if (lastUuid.isEmpty()) { player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("pm.no-reply"))); return true; } + if (lastUuid.isEmpty()) { + player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("pm.no-reply"))); + return true; + } Player target = Bukkit.getPlayer(lastUuid.get()); - if (target == null) { player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("pm.player-offline"))); return true; } - if (messagingService.isIgnoring(target.getUniqueId(), player.getUniqueId())) { player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("pm.ignored"))); return true; } + if (target == null) { + player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("pm.player-offline"))); + return true; + } + if (messagingService.isIgnoring(target.getUniqueId(), player.getUniqueId())) { + player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("pm.ignored"))); + return true; + } String message = String.join(" ", args); player.sendMessage(ChatFormatter.formatPmSentNew(plugin.getMessageConfig().getPmFormatSent(), player, target, message)); target.sendMessage(ChatFormatter.formatPmReceivedNew(plugin.getMessageConfig().getPmFormatReceived(), player, target, message)); if (plugin.getConfigManager().isPmSoundEnabled()) { Sound sound = PlayerUtil.parseSound(plugin.getConfigManager().getPmSoundType(), null); - if (sound != null) target.playSound(target.getLocation(), sound, 1.0f, 1.0f); + if (sound != null) { + target.playSound(target.getLocation(), sound, 1.0f, 1.0f); + } } messagingService.broadcastPM(player, target, message); messagingService.setLastConversation(target.getUniqueId(), player.getUniqueId()); - if (plugin.getConfigManager().isPmLogEnabled()) + if (plugin.getConfigManager().isPmLogEnabled()) { plugin.getLogger().info("[PM] " + player.getName() + " -> " + target.getName() + ": " + message); + } return true; } } diff --git a/src/main/java/com/loki/lochat/commands/messaging/UnignoreCommand.java b/src/main/java/com/loki/lochat/commands/messaging/UnignoreCommand.java index 6ee5b96..0c2a20d 100644 --- a/src/main/java/com/loki/lochat/commands/messaging/UnignoreCommand.java +++ b/src/main/java/com/loki/lochat/commands/messaging/UnignoreCommand.java @@ -3,6 +3,7 @@ package com.loki.lochat.commands.messaging; import com.loki.lochat.LoChat; import com.loki.lochat.api.service.MessagingService; import com.loki.lochat.utils.format.ChatFormatter; + import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -22,12 +23,24 @@ public class UnignoreCommand implements CommandExecutor { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { - if (!(sender instanceof Player player)) { sender.sendMessage(plugin.getConfigManager().getMessagesConfig().getPlayerOnly()); return true; } - if (args.length == 0) { player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().getInvalidUsage("/unignore <ник>"))); return true; } + if (!(sender instanceof Player player)) { + sender.sendMessage(plugin.getConfigManager().getMessagesConfig().getPlayerOnly()); + return true; + } + if (args.length == 0) { + player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().getInvalidUsage("/unignore <ник>"))); + return true; + } Player target = Bukkit.getPlayer(args[0]); - if (target == null) { player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().getPlayerNotFound())); return true; } - if (!messagingService.isIgnoring(player.getUniqueId(), target.getUniqueId())) { player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("ignore.not-ignored"))); return true; } + if (target == null) { + player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().getPlayerNotFound())); + return true; + } + if (!messagingService.isIgnoring(player.getUniqueId(), target.getUniqueId())) { + player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("ignore.not-ignored"))); + return true; + } messagingService.removeIgnore(player.getUniqueId(), target.getUniqueId()); player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("ignore.removed", "{player}", target.getName()))); diff --git a/src/main/java/com/loki/lochat/commands/moderation/ban/BanCommand.java b/src/main/java/com/loki/lochat/commands/moderation/ban/BanCommand.java index 86b4338..249766d 100644 --- a/src/main/java/com/loki/lochat/commands/moderation/ban/BanCommand.java +++ b/src/main/java/com/loki/lochat/commands/moderation/ban/BanCommand.java @@ -7,6 +7,7 @@ import com.loki.lochat.config.MessagesConfig; import com.loki.lochat.data.model.BanRecord; import com.loki.lochat.utils.format.ChatFormatter; import com.loki.lochat.utils.player.PlayerUtil; + import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -78,7 +79,9 @@ public class BanCommand implements CommandExecutor, TabCompleter { if (timeStr == null && isTimeFormat(args[i])) { timeStr = args[i]; } else { - if (reasonBuilder.length() > 0) reasonBuilder.append(" "); + if (reasonBuilder.length() > 0) { + reasonBuilder.append(" "); + } reasonBuilder.append(args[i]); } } @@ -98,7 +101,9 @@ public class BanCommand implements CommandExecutor, TabCompleter { String reason = reasonBuilder.length() > 0 ? reasonBuilder.toString() : msg.getModerationDefaultReason(); String finalName = PlayerUtil.getPlayerName(targetUuid); - if (finalName == null) finalName = targetName; + if (finalName == null) { + finalName = targetName; + } punishmentService.ban(targetUuid, finalName, durationMs, reason, sender.getName()); @@ -126,8 +131,11 @@ public class BanCommand implements CommandExecutor, TabCompleter { @NotNull String alias, @NotNull String[] args) { List c = new ArrayList<>(); if (args.length == 1) { - for (Player p : Bukkit.getOnlinePlayers()) - if (p.getName().toLowerCase().startsWith(args[0].toLowerCase())) c.add(p.getName()); + for (Player p : Bukkit.getOnlinePlayers()) { + if (p.getName().toLowerCase().startsWith(args[0].toLowerCase())) { + c.add(p.getName()); + } + } } else if (args.length == 2) { c.addAll(List.of("1h", "1d", "7d", "30d", "perm")); } diff --git a/src/main/java/com/loki/lochat/commands/moderation/ban/UnbanCommand.java b/src/main/java/com/loki/lochat/commands/moderation/ban/UnbanCommand.java index 4d4d672..3c75a6e 100644 --- a/src/main/java/com/loki/lochat/commands/moderation/ban/UnbanCommand.java +++ b/src/main/java/com/loki/lochat/commands/moderation/ban/UnbanCommand.java @@ -5,6 +5,7 @@ import com.loki.lochat.api.service.PunishmentService; import com.loki.lochat.config.MessagesConfig; import com.loki.lochat.utils.format.ChatFormatter; import com.loki.lochat.utils.player.PlayerUtil; + import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -56,7 +57,9 @@ public class UnbanCommand implements CommandExecutor, TabCompleter { } String name = PlayerUtil.getPlayerName(uuid); - if (name == null) name = args[0]; + if (name == null) { + name = args[0]; + } punishmentService.unban(uuid); sender.sendMessage(ChatFormatter.parse(msg.getUnbanConfirm().replace("{player}", name))); @@ -70,7 +73,9 @@ public class UnbanCommand implements CommandExecutor, TabCompleter { if (args.length == 1) { String p = args[0].toLowerCase(); for (Player pl : Bukkit.getOnlinePlayers()) { - if (pl.getName().toLowerCase().startsWith(p)) out.add(pl.getName()); + if (pl.getName().toLowerCase().startsWith(p)) { + out.add(pl.getName()); + } } } return out; diff --git a/src/main/java/com/loki/lochat/commands/moderation/mute/MuteBlameCommand.java b/src/main/java/com/loki/lochat/commands/moderation/mute/MuteBlameCommand.java index 7951555..90c9ef2 100644 --- a/src/main/java/com/loki/lochat/commands/moderation/mute/MuteBlameCommand.java +++ b/src/main/java/com/loki/lochat/commands/moderation/mute/MuteBlameCommand.java @@ -3,6 +3,7 @@ package com.loki.lochat.commands.moderation.mute; import com.loki.lochat.LoChat; import com.loki.lochat.api.service.MuteService; import com.loki.lochat.data.model.MuteData; + import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -30,16 +31,28 @@ public class MuteBlameCommand implements CommandExecutor, TabCompleter { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { - if (!sender.hasPermission("lochat.muteblame")) { sender.sendMessage(plugin.getMessageConfig().getComponent("errors.no-permission")); return true; } - if (args.length < 1) { sender.sendMessage("&#CF6679Использование: /lmuteblame <модератор>"); return true; } + if (!sender.hasPermission("lochat.muteblame")) { + sender.sendMessage(plugin.getMessageConfig().getComponent("errors.no-permission")); + return true; + } + if (args.length < 1) { + sender.sendMessage("&#CF6679Использование: /lmuteblame <модератор>"); + return true; + } List mutes = muteService.getMutesByOperator(args[0]); - if (mutes.isEmpty()) { sender.sendMessage("⚖C9Модератор ẲE9" + args[0] + " ⚖C9не выдавал мутов"); return true; } + if (mutes.isEmpty()) { + sender.sendMessage("⚖C9Модератор ẲE9" + args[0] + " ⚖C9не выдавал мутов"); + return true; + } sender.sendMessage("ẲE9▬▬▬▬▬ &#B798A8Муты от ⚖C9" + args[0] + " ⚖C9(" + mutes.size() + "⚖C9) ẲE9▬▬▬▬▬"); int idx = 1; for (MuteData.MuteHistoryEntry e : mutes) { - if (idx > 15) { sender.sendMessage("&#B798A8...и ещё " + (mutes.size() - 15) + " записей"); break; } + if (idx > 15) { + sender.sendMessage("&#B798A8...и ещё " + (mutes.size() - 15) + " записей"); + break; + } String status = e.unmuted ? "⚖C9Размучен" : (e.duration == 0 ? "&#CF6679Активен (навсегда)" : System.currentTimeMillis() > e.mutedAt + e.duration ? "&#B798A8Истёк" : "&#CF6679Активен"); sender.sendMessage("⚖C9" + idx + ". &f" + (e.playerName != null ? e.playerName : "???") + " &#B798A8— " + status); @@ -53,7 +66,13 @@ public class MuteBlameCommand implements CommandExecutor, TabCompleter { @Override public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { List c = new ArrayList<>(); - if (args.length == 1) for (Player p : Bukkit.getOnlinePlayers()) if (p.getName().toLowerCase().startsWith(args[0].toLowerCase())) c.add(p.getName()); + if (args.length == 1) { + for (Player p : Bukkit.getOnlinePlayers()) { + if (p.getName().toLowerCase().startsWith(args[0].toLowerCase())) { + c.add(p.getName()); + } + } + } return c; } } diff --git a/src/main/java/com/loki/lochat/commands/moderation/mute/MuteCommand.java b/src/main/java/com/loki/lochat/commands/moderation/mute/MuteCommand.java index 1dbeac6..cdc1145 100644 --- a/src/main/java/com/loki/lochat/commands/moderation/mute/MuteCommand.java +++ b/src/main/java/com/loki/lochat/commands/moderation/mute/MuteCommand.java @@ -4,6 +4,7 @@ import com.loki.lochat.LoChat; import com.loki.lochat.api.service.MuteService; import com.loki.lochat.config.MessagesConfig; import com.loki.lochat.utils.format.ChatFormatter; + import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -62,7 +63,9 @@ public class MuteCommand implements CommandExecutor, TabCompleter { } else if (timeStr == null && isTimeFormat(arg)) { timeStr = arg; } else { - if (reasonBuilder.length() > 0) reasonBuilder.append(" "); + if (reasonBuilder.length() > 0) { + reasonBuilder.append(" "); + } reasonBuilder.append(arg); } } @@ -78,12 +81,17 @@ public class MuteCommand implements CommandExecutor, TabCompleter { long duration; if (timeStr == null || timeStr.isEmpty()) { duration = sender instanceof Player p ? muteService.getMaxDuration(p) : 0; - if (duration == -1) duration = muteService.parseTime(hm.getDefaultMuteDuration()); + if (duration == -1) { + duration = muteService.parseTime(hm.getDefaultMuteDuration()); + } } else if (timeStr.equalsIgnoreCase("perm") || timeStr.equals("0")) { duration = 0; } else { duration = muteService.parseTime(timeStr); - if (duration < 0) { sender.sendMessage(ChatFormatter.parse(hm.getMuteTimeHelp())); return true; } + if (duration < 0) { + sender.sendMessage(ChatFormatter.parse(hm.getMuteTimeHelp())); + return true; + } } if (sender instanceof Player p && !muteService.canMuteForDuration(p, duration)) { @@ -94,8 +102,14 @@ public class MuteCommand implements CommandExecutor, TabCompleter { } UUID targetUUID = com.loki.lochat.utils.player.PlayerUtil.findPlayerUUID(targetName); - if (targetUUID == null) { sender.sendMessage(plugin.getMessageConfig().getComponent("errors.player-not-found")); return true; } - if (muteService.isMuted(targetUUID)) { sender.sendMessage(ChatFormatter.parse("&#CF6679Игрок уже замучен!")); return true; } + if (targetUUID == null) { + sender.sendMessage(plugin.getMessageConfig().getComponent("errors.player-not-found")); + return true; + } + if (muteService.isMuted(targetUUID)) { + sender.sendMessage(ChatFormatter.parse("&#CF6679Игрок уже замучен!")); + return true; + } Player target = Bukkit.getPlayer(targetUUID); String finalName = com.loki.lochat.utils.player.PlayerUtil.getPlayerName(targetUUID); @@ -116,7 +130,11 @@ public class MuteCommand implements CommandExecutor, TabCompleter { if (silent) { String msgText = hm.getPlayerMutedSilent().replace("{player}", finalName).replace("{time}", timeDisplay); - for (Player p : Bukkit.getOnlinePlayers()) if (p.hasPermission("lochat.mute.see-silent")) p.sendMessage(ChatFormatter.parse(msgText)); + for (Player p : Bukkit.getOnlinePlayers()) { + if (p.hasPermission("lochat.mute.see-silent")) { + p.sendMessage(ChatFormatter.parse(msgText)); + } + } } else { String broadcastMsg = (duration == 0 ? hm.getPlayerMutedPermanent() : hm.getPlayerMuted()) .replace("{player}", finalName).replace("{time}", timeDisplay).replace("{reason}", reason); @@ -141,8 +159,11 @@ public class MuteCommand implements CommandExecutor, TabCompleter { @NotNull String alias, @NotNull String[] args) { List c = new ArrayList<>(); if (args.length == 1) { - for (Player p : Bukkit.getOnlinePlayers()) - if (p.getName().toLowerCase().startsWith(args[0].toLowerCase())) c.add(p.getName()); + for (Player p : Bukkit.getOnlinePlayers()) { + if (p.getName().toLowerCase().startsWith(args[0].toLowerCase())) { + c.add(p.getName()); + } + } } else if (args.length == 2) { c.addAll(List.of("10m", "30m", "1h", "6h", "12h", "1d", "7d", "30d", "perm", "-s")); } else if (args.length == 3) { diff --git a/src/main/java/com/loki/lochat/commands/moderation/mute/MuteHistoryCommand.java b/src/main/java/com/loki/lochat/commands/moderation/mute/MuteHistoryCommand.java index 8cf30ef..967090e 100644 --- a/src/main/java/com/loki/lochat/commands/moderation/mute/MuteHistoryCommand.java +++ b/src/main/java/com/loki/lochat/commands/moderation/mute/MuteHistoryCommand.java @@ -3,6 +3,7 @@ package com.loki.lochat.commands.moderation.mute; import com.loki.lochat.LoChat; import com.loki.lochat.api.service.MuteService; import com.loki.lochat.data.model.MuteData; + import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -31,15 +32,29 @@ public class MuteHistoryCommand implements CommandExecutor, TabCompleter { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { - if (!sender.hasPermission("lochat.mutehistory")) { sender.sendMessage(plugin.getMessageConfig().getComponent("errors.no-permission")); return true; } - if (args.length < 1) { sender.sendMessage("&#CF6679Использование: /lmutehistory <ник>"); return true; } + if (!sender.hasPermission("lochat.mutehistory")) { + sender.sendMessage(plugin.getMessageConfig().getComponent("errors.no-permission")); + return true; + } + if (args.length < 1) { + sender.sendMessage("&#CF6679Использование: /lmutehistory <ник>"); + return true; + } UUID uuid = com.loki.lochat.utils.player.PlayerUtil.findPlayerUUID(args[0]); - if (uuid == null) uuid = muteService.getUUIDByName(args[0]); - if (uuid == null) { sender.sendMessage(plugin.getMessageConfig().getComponent("errors.player-not-found")); return true; } + if (uuid == null) { + uuid = muteService.getUUIDByName(args[0]); + } + if (uuid == null) { + sender.sendMessage(plugin.getMessageConfig().getComponent("errors.player-not-found")); + return true; + } List history = muteService.getPlayerHistory(uuid); - if (history.isEmpty()) { sender.sendMessage("⚖C9У ẲE9" + args[0] + " ⚖C9нет истории мутов"); return true; } + if (history.isEmpty()) { + sender.sendMessage("⚖C9У ẲE9" + args[0] + " ⚖C9нет истории мутов"); + return true; + } sender.sendMessage("ẲE9▬▬▬▬▬ &#B798A8История мутов ⚖C9" + args[0] + " ⚖C9(" + history.size() + "⚖C9) ẲE9▬▬▬▬▬"); int idx = 1; @@ -50,17 +65,26 @@ public class MuteHistoryCommand implements CommandExecutor, TabCompleter { sender.sendMessage("⚖C9" + idx + ". &f" + fmt.format(new Date(e.mutedAt)) + " &#B798A8— " + status); sender.sendMessage(" &#B798A8Длительность: &f" + (e.duration == 0 ? "навсегда" : muteService.formatTime(e.duration))); sender.sendMessage(" &#B798A8Причина: &f" + (e.reason != null ? e.reason : "—") + " &#B798A8Выдал: ẲE9" + e.mutedBy); - if (e.unmuted && e.unmutedBy != null) + if (e.unmuted && e.unmutedBy != null) { sender.sendMessage(" &#B798A8Размутил: ẲE9" + e.unmutedBy + " &f(" + fmt.format(new Date(e.unmutedAt)) + ")"); + } + } + if (history.size() > 10) { + sender.sendMessage("&#B798A8...и ещё " + (history.size() - 10) + " записей"); } - if (history.size() > 10) sender.sendMessage("&#B798A8...и ещё " + (history.size() - 10) + " записей"); return true; } @Override public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { List c = new ArrayList<>(); - if (args.length == 1) for (Player p : Bukkit.getOnlinePlayers()) if (p.getName().toLowerCase().startsWith(args[0].toLowerCase())) c.add(p.getName()); + if (args.length == 1) { + for (Player p : Bukkit.getOnlinePlayers()) { + if (p.getName().toLowerCase().startsWith(args[0].toLowerCase())) { + c.add(p.getName()); + } + } + } return c; } } diff --git a/src/main/java/com/loki/lochat/commands/moderation/mute/MuteListCommand.java b/src/main/java/com/loki/lochat/commands/moderation/mute/MuteListCommand.java index f93c0e0..341f62e 100644 --- a/src/main/java/com/loki/lochat/commands/moderation/mute/MuteListCommand.java +++ b/src/main/java/com/loki/lochat/commands/moderation/mute/MuteListCommand.java @@ -3,6 +3,7 @@ package com.loki.lochat.commands.moderation.mute; import com.loki.lochat.LoChat; import com.loki.lochat.api.service.MuteService; import com.loki.lochat.data.model.MuteData; + import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -27,10 +28,16 @@ public class MuteListCommand implements CommandExecutor { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { - if (!sender.hasPermission("lochat.mutelist")) { sender.sendMessage(plugin.getMessageConfig().getComponent("errors.no-permission")); return true; } + if (!sender.hasPermission("lochat.mutelist")) { + sender.sendMessage(plugin.getMessageConfig().getComponent("errors.no-permission")); + return true; + } Map mutes = muteService.getActiveMutes(); - if (mutes.isEmpty()) { sender.sendMessage("⚖C9Нет активных мутов"); return true; } + if (mutes.isEmpty()) { + sender.sendMessage("⚖C9Нет активных мутов"); + return true; + } sender.sendMessage("ẲE9▬▬▬▬▬ &#B798A8Активные муты ⚖C9(" + mutes.size() + "⚖C9) ẲE9▬▬▬▬▬"); int i = 1; diff --git a/src/main/java/com/loki/lochat/commands/moderation/mute/UnmuteCommand.java b/src/main/java/com/loki/lochat/commands/moderation/mute/UnmuteCommand.java index 9970859..361dbb4 100644 --- a/src/main/java/com/loki/lochat/commands/moderation/mute/UnmuteCommand.java +++ b/src/main/java/com/loki/lochat/commands/moderation/mute/UnmuteCommand.java @@ -3,6 +3,7 @@ package com.loki.lochat.commands.moderation.mute; import com.loki.lochat.LoChat; import com.loki.lochat.api.service.MuteService; import com.loki.lochat.utils.format.ChatFormatter; + import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -28,14 +29,23 @@ public class UnmuteCommand implements CommandExecutor, TabCompleter { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { - if (!sender.hasPermission("lochat.unmute")) { sender.sendMessage(plugin.getMessageConfig().getComponent("errors.no-permission")); return true; } - if (args.length < 1) { sender.sendMessage(ChatFormatter.parse("&#CF6679Использование: /unmute <ник> [-s]")); return true; } + if (!sender.hasPermission("lochat.unmute")) { + sender.sendMessage(plugin.getMessageConfig().getComponent("errors.no-permission")); + return true; + } + if (args.length < 1) { + sender.sendMessage(ChatFormatter.parse("&#CF6679Использование: /unmute <ник> [-s]")); + return true; + } String targetName = null; boolean silent = false; for (String a : args) { - if (a.equalsIgnoreCase("-s")) silent = true; - else if (targetName == null) targetName = a; + if (a.equalsIgnoreCase("-s")) { + silent = true; + } else if (targetName == null) { + targetName = a; + } } if (silent && !sender.hasPermission("lochat.mute.silent")) { sender.sendMessage(ChatFormatter.parse(plugin.getConfigManager().getMessagesConfig().getNoSilentUnmutePermission())); @@ -43,7 +53,10 @@ public class UnmuteCommand implements CommandExecutor, TabCompleter { } UUID uuid = com.loki.lochat.utils.player.PlayerUtil.findPlayerUUID(targetName); - if (uuid == null) { sender.sendMessage(plugin.getMessageConfig().getComponent("errors.player-not-found")); return true; } + if (uuid == null) { + sender.sendMessage(plugin.getMessageConfig().getComponent("errors.player-not-found")); + return true; + } String name = com.loki.lochat.utils.player.PlayerUtil.getPlayerName(uuid); Player target = Bukkit.getPlayer(uuid); @@ -51,10 +64,16 @@ public class UnmuteCommand implements CommandExecutor, TabCompleter { if (muteService.unmute(uuid, op)) { sender.sendMessage(ChatFormatter.parse("⚖C9Игрок ẲE9" + name + " ⚖C9размучен")); - if (target != null) target.sendMessage(ChatFormatter.parse("⚖C9Вы были ẲE9размучены!")); + if (target != null) { + target.sendMessage(ChatFormatter.parse("⚖C9Вы были ẲE9размучены!")); + } if (silent) { String msg = "&#B798A8[⚖C9ТИХО&#B798A8] ẲE9" + name + " &#B798A8размучен ⚖C9(" + op + ")"; - for (Player p : Bukkit.getOnlinePlayers()) if (p.hasPermission("lochat.mute.see-silent")) p.sendMessage(ChatFormatter.parse(msg)); + for (Player p : Bukkit.getOnlinePlayers()) { + if (p.hasPermission("lochat.mute.see-silent")) { + p.sendMessage(ChatFormatter.parse(msg)); + } + } } else { Bukkit.broadcast(ChatFormatter.parse("⚖C9Игрок ẲE9" + name + " ⚖C9размучен модератором ẲE9" + op)); } @@ -67,8 +86,15 @@ public class UnmuteCommand implements CommandExecutor, TabCompleter { @Override public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { List c = new ArrayList<>(); - if (args.length == 1) for (Player p : Bukkit.getOnlinePlayers()) if (p.getName().toLowerCase().startsWith(args[0].toLowerCase())) c.add(p.getName()); - else if (args.length == 2) c.add("-s"); + if (args.length == 1) { + for (Player p : Bukkit.getOnlinePlayers()) { + if (p.getName().toLowerCase().startsWith(args[0].toLowerCase())) { + c.add(p.getName()); + } + } + } else if (args.length == 2) { + c.add("-s"); + } return c; } } diff --git a/src/main/java/com/loki/lochat/commands/moderation/warn/SilentWarnCommand.java b/src/main/java/com/loki/lochat/commands/moderation/warn/SilentWarnCommand.java index 594d8c9..617dbad 100644 --- a/src/main/java/com/loki/lochat/commands/moderation/warn/SilentWarnCommand.java +++ b/src/main/java/com/loki/lochat/commands/moderation/warn/SilentWarnCommand.java @@ -5,6 +5,7 @@ import com.loki.lochat.api.service.PunishmentService; import com.loki.lochat.config.MessagesConfig; import com.loki.lochat.utils.format.ChatFormatter; import com.loki.lochat.utils.player.PlayerUtil; + import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -55,7 +56,9 @@ public class SilentWarnCommand implements CommandExecutor, TabCompleter { ? String.join(" ", java.util.Arrays.copyOfRange(args, 1, args.length)) : msg.getModerationDefaultReason(); String name = PlayerUtil.getPlayerName(targetUuid); - if (name == null) name = args[0]; + if (name == null) { + name = args[0]; + } punishmentService.addWarn(targetUuid, name, mod, reason, true); @@ -77,7 +80,9 @@ public class SilentWarnCommand implements CommandExecutor, TabCompleter { if (args.length == 1) { String p = args[0].toLowerCase(); for (Player pl : Bukkit.getOnlinePlayers()) { - if (pl.getName().toLowerCase().startsWith(p)) out.add(pl.getName()); + if (pl.getName().toLowerCase().startsWith(p)) { + out.add(pl.getName()); + } } } return out; diff --git a/src/main/java/com/loki/lochat/commands/moderation/warn/WarnCommand.java b/src/main/java/com/loki/lochat/commands/moderation/warn/WarnCommand.java index ed267d5..a414758 100644 --- a/src/main/java/com/loki/lochat/commands/moderation/warn/WarnCommand.java +++ b/src/main/java/com/loki/lochat/commands/moderation/warn/WarnCommand.java @@ -5,6 +5,7 @@ import com.loki.lochat.api.service.PunishmentService; import com.loki.lochat.config.MessagesConfig; import com.loki.lochat.utils.format.ChatFormatter; import com.loki.lochat.utils.player.PlayerUtil; + import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -58,7 +59,9 @@ public class WarnCommand implements CommandExecutor, TabCompleter { String mod = sender.getName(); String reason = buildReason(msg, args, 1); String name = PlayerUtil.getPlayerName(targetUuid); - if (name == null) name = args[0]; + if (name == null) { + name = args[0]; + } Player targetOnline = Bukkit.getPlayer(targetUuid); if (targetOnline != null && targetOnline.hasPermission("lochat.bypass.warn")) { @@ -82,7 +85,9 @@ public class WarnCommand implements CommandExecutor, TabCompleter { } StringBuilder sb = new StringBuilder(); for (int i = from; i < args.length; i++) { - if (sb.length() > 0) sb.append(" "); + if (sb.length() > 0) { + sb.append(" "); + } sb.append(args[i]); } return sb.toString(); @@ -95,7 +100,9 @@ public class WarnCommand implements CommandExecutor, TabCompleter { if (args.length == 1) { String p = args[0].toLowerCase(); for (Player pl : Bukkit.getOnlinePlayers()) { - if (pl.getName().toLowerCase().startsWith(p)) out.add(pl.getName()); + if (pl.getName().toLowerCase().startsWith(p)) { + out.add(pl.getName()); + } } } return out; diff --git a/src/main/java/com/loki/lochat/commands/nick/NickCommand.java b/src/main/java/com/loki/lochat/commands/nick/NickCommand.java index 55dd417..f4e97f5 100644 --- a/src/main/java/com/loki/lochat/commands/nick/NickCommand.java +++ b/src/main/java/com/loki/lochat/commands/nick/NickCommand.java @@ -3,8 +3,10 @@ package com.loki.lochat.commands.nick; import com.loki.lochat.LoChat; import com.loki.lochat.api.service.NickService; import com.loki.lochat.utils.format.ChatFormatter; + import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; + import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -84,8 +86,12 @@ public class NickCommand implements CommandExecutor, TabCompleter { public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { List c = new ArrayList<>(); if (args.length == 1) { - if ("reset".startsWith(args[0].toLowerCase())) c.add("reset"); - if (sender instanceof Player p) nickService.getNickname(p.getUniqueId()).ifPresent(c::add); + if ("reset".startsWith(args[0].toLowerCase())) { + c.add("reset"); + } + if (sender instanceof Player p) { + nickService.getNickname(p.getUniqueId()).ifPresent(c::add); + } } return c; } diff --git a/src/main/java/com/loki/lochat/commands/nick/PlayerInfoCommand.java b/src/main/java/com/loki/lochat/commands/nick/PlayerInfoCommand.java index d1ee197..86ddbab 100644 --- a/src/main/java/com/loki/lochat/commands/nick/PlayerInfoCommand.java +++ b/src/main/java/com/loki/lochat/commands/nick/PlayerInfoCommand.java @@ -8,6 +8,7 @@ import com.loki.lochat.data.model.MuteData; import com.loki.lochat.data.model.WarnEntry; import com.loki.lochat.utils.format.ChatFormatter; import com.loki.lochat.utils.player.PlayerUtil; + import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -55,7 +56,9 @@ public class PlayerInfoCommand implements CommandExecutor, TabCompleter { } String name = PlayerUtil.getPlayerName(uuid); - if (name == null) name = args[0]; + if (name == null) { + name = args[0]; + } Player target = Bukkit.getPlayer(uuid); @@ -129,7 +132,9 @@ public class PlayerInfoCommand implements CommandExecutor, TabCompleter { if (args.length == 1) { String p = args[0].toLowerCase(); for (Player pl : Bukkit.getOnlinePlayers()) { - if (pl.getName().toLowerCase().startsWith(p)) out.add(pl.getName()); + if (pl.getName().toLowerCase().startsWith(p)) { + out.add(pl.getName()); + } } } return out; diff --git a/src/main/java/com/loki/lochat/commands/rp/DoCommand.java b/src/main/java/com/loki/lochat/commands/rp/DoCommand.java index e9dee62..522a417 100644 --- a/src/main/java/com/loki/lochat/commands/rp/DoCommand.java +++ b/src/main/java/com/loki/lochat/commands/rp/DoCommand.java @@ -4,7 +4,9 @@ import com.loki.lochat.LoChat; import com.loki.lochat.api.service.PlayerService; import com.loki.lochat.commands.base.PlayerCommand; import com.loki.lochat.utils.format.ChatFormatter; + import net.kyori.adventure.text.Component; + import org.bukkit.command.Command; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @@ -26,7 +28,9 @@ public class DoCommand extends PlayerCommand { @Override protected boolean executePlayerCommand(@NotNull Player player, @NotNull Command command, @NotNull String label, @NotNull String[] args) { - if (!requirePermission(player, "lochat.rp.do")) return true; + if (!requirePermission(player, "lochat.rp.do")) { + return true; + } int cooldown = plugin.getConfigManager().getInt("rp.cooldowns.do", 0); if (cooldown > 0 && playerService.isOnCooldown(player.getUniqueId(), "rp_do", cooldown)) { @@ -54,7 +58,9 @@ public class DoCommand extends PlayerCommand { int radius = plugin.getConfigManager().getInt("rp.radius", 100); RpUtil.sendToRadius(player, message, radius); - if (cooldown > 0) playerService.setCooldown(player.getUniqueId(), "rp_do"); + if (cooldown > 0) { + playerService.setCooldown(player.getUniqueId(), "rp_do"); + } plugin.getLogger().info("[DO] " + player.getName() + ": " + description); return true; } diff --git a/src/main/java/com/loki/lochat/commands/rp/MeCommand.java b/src/main/java/com/loki/lochat/commands/rp/MeCommand.java index 32044c0..cf8fbe2 100644 --- a/src/main/java/com/loki/lochat/commands/rp/MeCommand.java +++ b/src/main/java/com/loki/lochat/commands/rp/MeCommand.java @@ -4,7 +4,9 @@ import com.loki.lochat.LoChat; import com.loki.lochat.api.service.PlayerService; import com.loki.lochat.commands.base.PlayerCommand; import com.loki.lochat.utils.format.ChatFormatter; + import net.kyori.adventure.text.Component; + import org.bukkit.command.Command; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @@ -26,7 +28,9 @@ public class MeCommand extends PlayerCommand { @Override protected boolean executePlayerCommand(@NotNull Player player, @NotNull Command command, @NotNull String label, @NotNull String[] args) { - if (!requirePermission(player, "lochat.rp.me")) return true; + if (!requirePermission(player, "lochat.rp.me")) { + return true; + } int cooldown = plugin.getConfigManager().getInt("rp.cooldowns.me", 0); if (cooldown > 0 && playerService.isOnCooldown(player.getUniqueId(), "rp_me", cooldown)) { @@ -54,7 +58,9 @@ public class MeCommand extends PlayerCommand { int radius = plugin.getConfigManager().getInt("rp.radius", 100); RpUtil.sendToRadius(player, message, radius); - if (cooldown > 0) playerService.setCooldown(player.getUniqueId(), "rp_me"); + if (cooldown > 0) { + playerService.setCooldown(player.getUniqueId(), "rp_me"); + } plugin.getLogger().info("[ME] " + player.getName() + ": " + action); return true; } diff --git a/src/main/java/com/loki/lochat/commands/rp/RollCommand.java b/src/main/java/com/loki/lochat/commands/rp/RollCommand.java index fae0701..d24157b 100644 --- a/src/main/java/com/loki/lochat/commands/rp/RollCommand.java +++ b/src/main/java/com/loki/lochat/commands/rp/RollCommand.java @@ -4,7 +4,9 @@ import com.loki.lochat.LoChat; import com.loki.lochat.commands.base.PlayerCommand; import com.loki.lochat.config.RatConfig; import com.loki.lochat.utils.format.ChatFormatter; + import net.kyori.adventure.text.Component; + import org.bukkit.command.Command; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @@ -29,7 +31,9 @@ public class RollCommand extends PlayerCommand { @Override protected boolean executePlayerCommand(@NotNull Player player, @NotNull Command command, @NotNull String label, @NotNull String[] args) { - if (!requirePermission(player, "lochat.rp.roll")) return true; + if (!requirePermission(player, "lochat.rp.roll")) { + return true; + } int max = RatConfig.ROLL_DEFAULT_MAX; diff --git a/src/main/java/com/loki/lochat/commands/rp/RpUtil.java b/src/main/java/com/loki/lochat/commands/rp/RpUtil.java index a3036e3..7dfa5a3 100644 --- a/src/main/java/com/loki/lochat/commands/rp/RpUtil.java +++ b/src/main/java/com/loki/lochat/commands/rp/RpUtil.java @@ -2,8 +2,10 @@ package com.loki.lochat.commands.rp; import com.loki.lochat.LoChat; import com.loki.lochat.utils.player.DistanceUtil; + import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; + import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -34,7 +36,8 @@ public final class RpUtil { if (plugin.getGradientModule() != null && plugin.getGradientModule().isEnabled()) { return plugin.getGradientModule().getFormattedName(player); } - } catch (Exception ignored) {} + } catch (Exception ignored) { + } // Пробуем взять displayName (может содержать градиент от NickService) Component displayName = player.displayName(); diff --git a/src/main/java/com/loki/lochat/commands/rp/TryCommand.java b/src/main/java/com/loki/lochat/commands/rp/TryCommand.java index 95d5d1b..661dc1d 100644 --- a/src/main/java/com/loki/lochat/commands/rp/TryCommand.java +++ b/src/main/java/com/loki/lochat/commands/rp/TryCommand.java @@ -4,7 +4,9 @@ import com.loki.lochat.LoChat; import com.loki.lochat.api.service.PlayerService; import com.loki.lochat.commands.base.PlayerCommand; import com.loki.lochat.utils.format.ChatFormatter; + import net.kyori.adventure.text.Component; + import org.bukkit.command.Command; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @@ -29,7 +31,9 @@ public class TryCommand extends PlayerCommand { @Override protected boolean executePlayerCommand(@NotNull Player player, @NotNull Command command, @NotNull String label, @NotNull String[] args) { - if (!requirePermission(player, "lochat.rp.try")) return true; + if (!requirePermission(player, "lochat.rp.try")) { + return true; + } int cooldown = plugin.getConfigManager().getInt("rp.cooldowns.try", 0); if (cooldown > 0 && playerService.isOnCooldown(player.getUniqueId(), "rp_try", cooldown)) { @@ -64,7 +68,9 @@ public class TryCommand extends PlayerCommand { int radius = plugin.getConfigManager().getInt("rp.radius", 100); RpUtil.sendToRadius(player, message, radius); - if (cooldown > 0) playerService.setCooldown(player.getUniqueId(), "rp_try"); + if (cooldown > 0) { + playerService.setCooldown(player.getUniqueId(), "rp_try"); + } plugin.getLogger().info("[TRY] " + player.getName() + ": " + action + " -> " + (success ? "SUCCESS" : "FAIL")); return true; } diff --git a/src/main/java/com/loki/lochat/config/AppearanceConfig.java b/src/main/java/com/loki/lochat/config/AppearanceConfig.java index 02dc56c..017cb32 100644 --- a/src/main/java/com/loki/lochat/config/AppearanceConfig.java +++ b/src/main/java/com/loki/lochat/config/AppearanceConfig.java @@ -2,9 +2,9 @@ package com.loki.lochat.config; import org.bukkit.plugin.Plugin; +import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.HashMap; /** * Конфигурация внешнего вида чата (config/appearance.yml) @@ -48,19 +48,43 @@ public class AppearanceConfig extends BaseConfig { return config.getString("prefixes." + chatType + "." + key, defaultValue); } - public String getGlobalEmoji() { return getPrefixValue("global", "emoji", "🌍"); } - public String getGlobalText() { return getPrefixValue("global", "text", "GLOBAL"); } - public List getGlobalColors() { return config.getStringList("prefixes.global.colors"); } - public String getGlobalSeparatorText() { return getPrefixValue("global", "separator.text", " ▶ "); } - public String getGlobalSeparatorColor() { return getPrefixValue("global", "separator.color", "#FFD700"); } - public String getGlobalMessageColor() { return getPrefixValue("global", "message-color", "#FFFFFF"); } + public String getGlobalEmoji() { + return getPrefixValue("global", "emoji", "🌍"); + } + public String getGlobalText() { + return getPrefixValue("global", "text", "GLOBAL"); + } + public List getGlobalColors() { + return config.getStringList("prefixes.global.colors"); + } + public String getGlobalSeparatorText() { + return getPrefixValue("global", "separator.text", " ▶ "); + } + public String getGlobalSeparatorColor() { + return getPrefixValue("global", "separator.color", "#FFD700"); + } + public String getGlobalMessageColor() { + return getPrefixValue("global", "message-color", "#FFFFFF"); + } - public String getLocalEmoji() { return getPrefixValue("local", "emoji", ""); } - public String getLocalText() { return getPrefixValue("local", "text", "LOCAL"); } - public List getLocalColors() { return config.getStringList("prefixes.local.colors"); } - public String getLocalSeparatorText() { return getPrefixValue("local", "separator.text", " ▶ "); } - public String getLocalSeparatorColor() { return getPrefixValue("local", "separator.color", "#FFFFFF"); } - public String getLocalMessageColor() { return getPrefixValue("local", "message-color", "#FFFFFF"); } + public String getLocalEmoji() { + return getPrefixValue("local", "emoji", ""); + } + public String getLocalText() { + return getPrefixValue("local", "text", "LOCAL"); + } + public List getLocalColors() { + return config.getStringList("prefixes.local.colors"); + } + public String getLocalSeparatorText() { + return getPrefixValue("local", "separator.text", " ▶ "); + } + public String getLocalSeparatorColor() { + return getPrefixValue("local", "separator.color", "#FFFFFF"); + } + public String getLocalMessageColor() { + return getPrefixValue("local", "message-color", "#FFFFFF"); + } // ========== ФОРМАТ СООБЩЕНИЙ ========== @@ -74,36 +98,72 @@ public class AppearanceConfig extends BaseConfig { // ========== HOVER ЭФФЕКТЫ ========== - public boolean isHoverEnabled() { return config.getBoolean("hover.enabled", true); } - public List getHoverFormat() { return config.getStringList("hover.format"); } + public boolean isHoverEnabled() { + return config.getBoolean("hover.enabled", true); + } + public List getHoverFormat() { + return config.getStringList("hover.format"); + } // ========== ЭМОДЗИ ========== - public Map getEmojis() { return new HashMap<>(emojiCache); } - public String getEmoji(String key) { return emojiCache.get(key); } + public Map getEmojis() { + return new HashMap<>(emojiCache); + } + public String getEmoji(String key) { + return emojiCache.get(key); + } // ========== НАСТРОЙКИ ЧАТА ========== - public int getLocalRadius() { return config.getInt("chat.local_radius", 100); } - public int getClearLines() { return config.getInt("chat.clear_lines", 100); } - public int getMinMessageLength() { return config.getInt("chat.min_message_length", 1); } - public int getMaxMessageLength() { return config.getInt("chat.max_message_length", 2000); } + public int getLocalRadius() { + return config.getInt("chat.local_radius", 100); + } + public int getClearLines() { + return config.getInt("chat.clear_lines", 100); + } + public int getMinMessageLength() { + return config.getInt("chat.min_message_length", 1); + } + public int getMaxMessageLength() { + return config.getInt("chat.max_message_length", 2000); + } private String getChatColor(String type, String defaultColor) { return config.getString("chat.colors." + type, defaultColor); } - public String getNobodyHeardColor() { return getChatColor("nobody_heard", "#FFA726"); } - public String getErrorColor() { return getChatColor("error", "#FF6B6B"); } - public String getSuccessColor() { return getChatColor("success", "#6BCB77"); } - public String getWarningColor() { return getChatColor("warning", "#FFA726"); } - public String getInfoColor() { return getChatColor("info", "#87CEEB"); } + public String getNobodyHeardColor() { + return getChatColor("nobody_heard", "#FFA726"); + } + public String getErrorColor() { + return getChatColor("error", "#FF6B6B"); + } + public String getSuccessColor() { + return getChatColor("success", "#6BCB77"); + } + public String getWarningColor() { + return getChatColor("warning", "#FFA726"); + } + public String getInfoColor() { + return getChatColor("info", "#87CEEB"); + } // ========== DISCORD ========== - public String getDiscordEmoji(String event) { return config.getString("discord.emojis." + event, ""); } - public String getDiscordEventTitle(String event) { return config.getString("discord.event_titles." + event, ""); } - public String getDefaultAvatarUrl() { return config.getString("discord.avatar_urls.default", "https://mc-heads.net/avatar/minecraft/64"); } - public String getPlayerAvatarUrl() { return config.getString("discord.avatar_urls.player", "https://mc-heads.net/avatar/{player}/64"); } - public String getDefaultEmbedColor() { return config.getString("discord.default_embed_color", "5865F2"); } + public String getDiscordEmoji(String event) { + return config.getString("discord.emojis." + event, ""); + } + public String getDiscordEventTitle(String event) { + return config.getString("discord.event_titles." + event, ""); + } + public String getDefaultAvatarUrl() { + return config.getString("discord.avatar_urls.default", "https://mc-heads.net/avatar/minecraft/64"); + } + public String getPlayerAvatarUrl() { + return config.getString("discord.avatar_urls.player", "https://mc-heads.net/avatar/{player}/64"); + } + public String getDefaultEmbedColor() { + return config.getString("discord.default_embed_color", "5865F2"); + } } diff --git a/src/main/java/com/loki/lochat/config/ConfigManager.java b/src/main/java/com/loki/lochat/config/ConfigManager.java index 5780a87..b4a456d 100644 --- a/src/main/java/com/loki/lochat/config/ConfigManager.java +++ b/src/main/java/com/loki/lochat/config/ConfigManager.java @@ -1,9 +1,8 @@ package com.loki.lochat.config; import com.loki.lochat.LoChat; -import com.loki.lochat.config.core.ConfigLoader; import com.loki.lochat.config.core.ConfigAccessor; -import org.bukkit.configuration.file.FileConfiguration; +import com.loki.lochat.config.core.ConfigLoader; import java.util.List; diff --git a/src/main/java/com/loki/lochat/config/MessageConfig.java b/src/main/java/com/loki/lochat/config/MessageConfig.java index e21a8d7..1b3f7bd 100644 --- a/src/main/java/com/loki/lochat/config/MessageConfig.java +++ b/src/main/java/com/loki/lochat/config/MessageConfig.java @@ -2,7 +2,9 @@ package com.loki.lochat.config; import com.loki.lochat.LoChat; import com.loki.lochat.utils.format.ChatFormatter; + import net.kyori.adventure.text.Component; + import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; diff --git a/src/main/java/com/loki/lochat/config/core/ConfigAccessor.java b/src/main/java/com/loki/lochat/config/core/ConfigAccessor.java index 6b5fee6..b499d4b 100644 --- a/src/main/java/com/loki/lochat/config/core/ConfigAccessor.java +++ b/src/main/java/com/loki/lochat/config/core/ConfigAccessor.java @@ -1,6 +1,7 @@ package com.loki.lochat.config.core; import com.loki.lochat.utils.format.ChatFormatter; + import org.bukkit.configuration.file.FileConfiguration; import java.util.List; diff --git a/src/main/java/com/loki/lochat/core/PluginInitializer.java b/src/main/java/com/loki/lochat/core/PluginInitializer.java index aa2bee2..7e77964 100644 --- a/src/main/java/com/loki/lochat/core/PluginInitializer.java +++ b/src/main/java/com/loki/lochat/core/PluginInitializer.java @@ -15,6 +15,7 @@ import com.loki.lochat.listener.ModerationListener; import com.loki.lochat.listener.PlayerEventListener; import com.loki.lochat.managers.AutoMessageManager; import com.loki.lochat.managers.CustomCommandManager; + import org.bukkit.Bukkit; /** diff --git a/src/main/java/com/loki/lochat/core/PluginShutdown.java b/src/main/java/com/loki/lochat/core/PluginShutdown.java index ca0f72c..ed76d09 100644 --- a/src/main/java/com/loki/lochat/core/PluginShutdown.java +++ b/src/main/java/com/loki/lochat/core/PluginShutdown.java @@ -3,13 +3,14 @@ package com.loki.lochat.core; import com.loki.lochat.LoChat; import com.loki.lochat.api.service.MessagingService; import com.loki.lochat.api.service.MuteService; -import com.loki.lochat.api.service.PunishmentService; import com.loki.lochat.api.service.NickService; import com.loki.lochat.api.service.PlayerService; +import com.loki.lochat.api.service.PunishmentService; import com.loki.lochat.core.registry.ServiceRegistry; import com.loki.lochat.gradient.GradientModule; import com.loki.lochat.integrations.DiscordIntegration; import com.loki.lochat.managers.AutoMessageManager; + import org.bukkit.event.HandlerList; /** @@ -59,7 +60,9 @@ public class PluginShutdown { * Сохранить все данные через сервисы */ private void saveAllData(ServiceRegistry serviceRegistry) { - if (serviceRegistry == null) return; + if (serviceRegistry == null) { + return; + } // Статистика игроков PlayerService playerService = serviceRegistry.get(PlayerService.class); diff --git a/src/main/java/com/loki/lochat/core/factory/ServiceFactory.java b/src/main/java/com/loki/lochat/core/factory/ServiceFactory.java index 08c1b6e..6260991 100644 --- a/src/main/java/com/loki/lochat/core/factory/ServiceFactory.java +++ b/src/main/java/com/loki/lochat/core/factory/ServiceFactory.java @@ -10,6 +10,7 @@ import com.loki.lochat.core.service.mute.MuteHistoryManager; import com.loki.lochat.core.service.mute.strategies.ChatMuteStrategy; import com.loki.lochat.core.service.mute.strategies.MuteStrategy; import com.loki.lochat.core.service.mute.strategies.VoiceMuteStrategy; + import org.bukkit.plugin.java.JavaPlugin; import java.io.File; @@ -21,6 +22,9 @@ import java.util.List; */ public class ServiceFactory { + private ServiceFactory() { + } + /** * Создать MuteService со всеми зависимостями */ diff --git a/src/main/java/com/loki/lochat/core/filter/AdvancedMessageFilter.java b/src/main/java/com/loki/lochat/core/filter/AdvancedMessageFilter.java index 5410401..3f2355a 100644 --- a/src/main/java/com/loki/lochat/core/filter/AdvancedMessageFilter.java +++ b/src/main/java/com/loki/lochat/core/filter/AdvancedMessageFilter.java @@ -1,6 +1,7 @@ package com.loki.lochat.core.filter; import com.loki.lochat.core.filter.filters.*; + import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; @@ -80,24 +81,32 @@ public class AdvancedMessageFilter { // 2. Мат if (config.getBoolean("filters.swear.enabled", true) && !canBypassFilter(player, "swear")) { FilterResult swear = swearFilter.filter(player, message); - if (!swear.allowed()) return swear; + if (!swear.allowed()) { + return swear; + } message = swear.filteredMessage(); } // 3. URL фильтры if (config.getBoolean("filters.advertising.enabled", true)) { FilterResult r = urlFilter.filterUrls(player, message); - if (!r.allowed()) return r; + if (!r.allowed()) { + return r; + } message = r.filteredMessage(); r = urlFilter.filterHiddenUrls(player, message); - if (!r.allowed()) return r; + if (!r.allowed()) { + return r; + } } // 4. IP if (config.getBoolean("filters.ip.enabled", true)) { FilterResult r = urlFilter.filterIPs(player, message); - if (!r.allowed()) return r; + if (!r.allowed()) { + return r; + } message = r.filteredMessage(); } @@ -109,13 +118,17 @@ public class AdvancedMessageFilter { // 6. Anti-flood if (config.getBoolean("filters.flood.enabled", true) && !canBypassFilter(player, "flood")) { FilterResult r = floodFilter.filter(player); - if (!r.allowed()) return r; + if (!r.allowed()) { + return r; + } } // 7. Anti-spam if (config.getBoolean("filters.spam.enabled", true) && !canBypassFilter(player, "spam")) { FilterResult r = spamFilter.filter(player, message); - if (!r.allowed()) return r; + if (!r.allowed()) { + return r; + } } return FilterResult.ok(message); diff --git a/src/main/java/com/loki/lochat/core/filter/CooldownFilter.java b/src/main/java/com/loki/lochat/core/filter/CooldownFilter.java index c44a557..c2368b9 100644 --- a/src/main/java/com/loki/lochat/core/filter/CooldownFilter.java +++ b/src/main/java/com/loki/lochat/core/filter/CooldownFilter.java @@ -3,6 +3,7 @@ package com.loki.lochat.core.filter; import com.loki.lochat.api.filter.MessageFilter; import com.loki.lochat.api.service.PlayerService; import com.loki.lochat.data.model.ChatMessage; + import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; diff --git a/src/main/java/com/loki/lochat/core/filter/MuteFilter.java b/src/main/java/com/loki/lochat/core/filter/MuteFilter.java index 8c5201c..5e7662e 100644 --- a/src/main/java/com/loki/lochat/core/filter/MuteFilter.java +++ b/src/main/java/com/loki/lochat/core/filter/MuteFilter.java @@ -5,6 +5,7 @@ import com.loki.lochat.api.service.MuteService; import com.loki.lochat.config.MessagesConfig; import com.loki.lochat.data.model.ChatMessage; import com.loki.lochat.utils.format.ChatFormatter; + import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; diff --git a/src/main/java/com/loki/lochat/core/filter/filters/FloodFilter.java b/src/main/java/com/loki/lochat/core/filter/filters/FloodFilter.java index fccf0dc..7d5f3b7 100644 --- a/src/main/java/com/loki/lochat/core/filter/filters/FloodFilter.java +++ b/src/main/java/com/loki/lochat/core/filter/filters/FloodFilter.java @@ -1,6 +1,7 @@ package com.loki.lochat.core.filter.filters; import com.loki.lochat.core.filter.FilterResult; + import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; diff --git a/src/main/java/com/loki/lochat/core/filter/filters/SpamFilter.java b/src/main/java/com/loki/lochat/core/filter/filters/SpamFilter.java index e3e3df0..00c6f18 100644 --- a/src/main/java/com/loki/lochat/core/filter/filters/SpamFilter.java +++ b/src/main/java/com/loki/lochat/core/filter/filters/SpamFilter.java @@ -1,6 +1,7 @@ package com.loki.lochat.core.filter.filters; import com.loki.lochat.core.filter.FilterResult; + import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; @@ -41,15 +42,21 @@ public class SpamFilter { // Добавляем в историю (храним последние 10) history.addLast(message); - if (history.size() > 10) history.pollFirst(); + if (history.size() > 10) { + history.pollFirst(); + } return FilterResult.ok(null); } private int similarity(String a, String b) { - if (a.equals(b)) return 100; + if (a.equals(b)) { + return 100; + } int maxLen = Math.max(a.length(), b.length()); - if (maxLen == 0) return 100; + if (maxLen == 0) { + return 100; + } int dist = levenshtein( a.toLowerCase().substring(0, Math.min(a.length(), 50)), @@ -60,7 +67,9 @@ public class SpamFilter { private int levenshtein(String a, String b) { int[] dp = new int[b.length() + 1]; - for (int j = 0; j <= b.length(); j++) dp[j] = j; + for (int j = 0; j <= b.length(); j++) { + dp[j] = j; + } for (int i = 1; i <= a.length(); i++) { int prev = dp[0]; diff --git a/src/main/java/com/loki/lochat/core/filter/filters/SwearFilter.java b/src/main/java/com/loki/lochat/core/filter/filters/SwearFilter.java index b6c0d06..79caea5 100644 --- a/src/main/java/com/loki/lochat/core/filter/filters/SwearFilter.java +++ b/src/main/java/com/loki/lochat/core/filter/filters/SwearFilter.java @@ -1,6 +1,7 @@ package com.loki.lochat.core.filter.filters; import com.loki.lochat.core.filter.FilterResult; + import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; diff --git a/src/main/java/com/loki/lochat/core/filter/filters/UrlFilter.java b/src/main/java/com/loki/lochat/core/filter/filters/UrlFilter.java index 6515475..aad1642 100644 --- a/src/main/java/com/loki/lochat/core/filter/filters/UrlFilter.java +++ b/src/main/java/com/loki/lochat/core/filter/filters/UrlFilter.java @@ -1,11 +1,11 @@ package com.loki.lochat.core.filter.filters; import com.loki.lochat.core.filter.FilterResult; + import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import java.util.HashSet; -import java.util.List; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/src/main/java/com/loki/lochat/core/registry/ServiceRegistry.java b/src/main/java/com/loki/lochat/core/registry/ServiceRegistry.java index 15c69f9..0ad02c4 100644 --- a/src/main/java/com/loki/lochat/core/registry/ServiceRegistry.java +++ b/src/main/java/com/loki/lochat/core/registry/ServiceRegistry.java @@ -5,6 +5,7 @@ import com.loki.lochat.config.ConfigManager; import com.loki.lochat.config.MessageConfig; import com.loki.lochat.core.factory.ServiceFactory; import com.loki.lochat.core.service.*; + import org.bukkit.plugin.java.JavaPlugin; import java.util.HashMap; diff --git a/src/main/java/com/loki/lochat/core/service/ChatServiceImpl.java b/src/main/java/com/loki/lochat/core/service/ChatServiceImpl.java index 58b6f38..0380a89 100644 --- a/src/main/java/com/loki/lochat/core/service/ChatServiceImpl.java +++ b/src/main/java/com/loki/lochat/core/service/ChatServiceImpl.java @@ -3,10 +3,12 @@ package com.loki.lochat.core.service; import com.loki.lochat.api.service.ChatService; import com.loki.lochat.core.registry.ServiceRegistry; import com.loki.lochat.renderer.EnhancedChatRenderer; -import com.loki.lochat.utils.player.DistanceUtil; -import com.loki.lochat.utils.platform.FoliaUtil; import com.loki.lochat.utils.format.ChatFormatter; +import com.loki.lochat.utils.platform.FoliaUtil; +import com.loki.lochat.utils.player.DistanceUtil; + import net.kyori.adventure.text.Component; + import org.bukkit.Bukkit; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; @@ -97,12 +99,15 @@ public class ChatServiceImpl implements ChatService { // ────────────────────────────────────────────────────────────────────────── private void loadDisabled() { - if (!playersFile.exists()) return; + if (!playersFile.exists()) { + return; + } YamlConfiguration cfg = YamlConfiguration.loadConfiguration(playersFile); for (String uuidStr : cfg.getStringList("global-chat-disabled")) { try { globalChatDisabled.add(UUID.fromString(uuidStr)); - } catch (IllegalArgumentException ignored) {} + } catch (IllegalArgumentException ignored) { + } } } @@ -123,7 +128,9 @@ public class ChatServiceImpl implements ChatService { private void ensureDir() { File dir = playersFile.getParentFile(); - if (!dir.exists()) dir.mkdirs(); + if (!dir.exists()) { + dir.mkdirs(); + } } private Component toComponent(Object message) { diff --git a/src/main/java/com/loki/lochat/core/service/MentionServiceImpl.java b/src/main/java/com/loki/lochat/core/service/MentionServiceImpl.java index 29ea9c7..31afddb 100644 --- a/src/main/java/com/loki/lochat/core/service/MentionServiceImpl.java +++ b/src/main/java/com/loki/lochat/core/service/MentionServiceImpl.java @@ -3,6 +3,7 @@ package com.loki.lochat.core.service; import com.loki.lochat.api.service.MentionService; import com.loki.lochat.config.ConfigManager; import com.loki.lochat.utils.player.PlayerUtil; + import org.bukkit.Bukkit; import org.bukkit.Sound; import org.bukkit.entity.Player; @@ -113,8 +114,12 @@ public class MentionServiceImpl implements MentionService { @Override public void notifyIfMentioned(String message, Player viewer, Player sender) { - if (viewer.equals(sender)) return; - if (!configManager.isMentionSoundEnabled()) return; + if (viewer.equals(sender)) { + return; + } + if (!configManager.isMentionSoundEnabled()) { + return; + } if (isPlayerMentioned(message, viewer)) { String soundName = configManager.getMentionSoundType(); diff --git a/src/main/java/com/loki/lochat/core/service/MessageServiceImpl.java b/src/main/java/com/loki/lochat/core/service/MessageServiceImpl.java index 71b6ea5..98b06d6 100644 --- a/src/main/java/com/loki/lochat/core/service/MessageServiceImpl.java +++ b/src/main/java/com/loki/lochat/core/service/MessageServiceImpl.java @@ -1,13 +1,14 @@ package com.loki.lochat.core.service; import com.loki.lochat.api.filter.MessageFilter; -import com.loki.lochat.api.service.PlayerService; import com.loki.lochat.api.service.MessageService; import com.loki.lochat.api.service.MuteService; +import com.loki.lochat.api.service.PlayerService; import com.loki.lochat.core.filter.CooldownFilter; import com.loki.lochat.core.filter.MuteFilter; import com.loki.lochat.core.registry.ServiceRegistry; import com.loki.lochat.data.model.ChatMessage; + import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; diff --git a/src/main/java/com/loki/lochat/core/service/MessagingServiceImpl.java b/src/main/java/com/loki/lochat/core/service/MessagingServiceImpl.java index abbfd03..ddd58cd 100644 --- a/src/main/java/com/loki/lochat/core/service/MessagingServiceImpl.java +++ b/src/main/java/com/loki/lochat/core/service/MessagingServiceImpl.java @@ -5,7 +5,9 @@ import com.loki.lochat.config.MessageConfig; import com.loki.lochat.core.service.messaging.IgnoreService; import com.loki.lochat.core.service.messaging.PrivateMessageService; import com.loki.lochat.core.service.messaging.SpyService; + import net.kyori.adventure.text.Component; + import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; diff --git a/src/main/java/com/loki/lochat/core/service/MuteServiceImpl.java b/src/main/java/com/loki/lochat/core/service/MuteServiceImpl.java index 8443a2f..9bcd096 100644 --- a/src/main/java/com/loki/lochat/core/service/MuteServiceImpl.java +++ b/src/main/java/com/loki/lochat/core/service/MuteServiceImpl.java @@ -7,6 +7,7 @@ import com.loki.lochat.core.service.mute.MutePermissionChecker; import com.loki.lochat.core.service.mute.strategies.MuteStrategy; import com.loki.lochat.data.model.MuteData; import com.loki.lochat.utils.format.TimeFormatter; + import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; @@ -82,12 +83,18 @@ public class MuteServiceImpl implements MuteService { @Override public boolean isMuted(UUID uuid) { - if (uuid == null) return false; + if (uuid == null) { + return false; + } MuteData data = storage.get(uuid); - if (data == null) return false; + if (data == null) { + return false; + } - if (!isExpired(data)) return true; + if (!isExpired(data)) { + return true; + } // Мут истек - удаляем storage.remove(uuid); @@ -104,8 +111,12 @@ public class MuteServiceImpl implements MuteService { @Override public long getRemainingTime(UUID uuid) { MuteData data = storage.get(uuid); - if (data == null) return 0; - if (data.getEndTime() == 0) return -1; + if (data == null) { + return 0; + } + if (data.getEndTime() == 0) { + return -1; + } return Math.max(0, data.getEndTime() - System.currentTimeMillis()); } diff --git a/src/main/java/com/loki/lochat/core/service/NickServiceImpl.java b/src/main/java/com/loki/lochat/core/service/NickServiceImpl.java index 8b8f947..76f294f 100644 --- a/src/main/java/com/loki/lochat/core/service/NickServiceImpl.java +++ b/src/main/java/com/loki/lochat/core/service/NickServiceImpl.java @@ -3,8 +3,10 @@ package com.loki.lochat.core.service; import com.loki.lochat.api.service.NickService; import com.loki.lochat.config.RatConfig; import com.loki.lochat.utils.format.ChatFormatter; + import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; + import org.bukkit.Bukkit; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; diff --git a/src/main/java/com/loki/lochat/core/service/PlayerServiceImpl.java b/src/main/java/com/loki/lochat/core/service/PlayerServiceImpl.java index f52a180..bbe0991 100644 --- a/src/main/java/com/loki/lochat/core/service/PlayerServiceImpl.java +++ b/src/main/java/com/loki/lochat/core/service/PlayerServiceImpl.java @@ -2,6 +2,7 @@ package com.loki.lochat.core.service; import com.loki.lochat.api.service.PlayerService; import com.loki.lochat.utils.platform.FoliaUtil; + import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.plugin.java.JavaPlugin; @@ -47,7 +48,9 @@ public class PlayerServiceImpl implements PlayerService { Map cooldowns = getCooldownMap(type); Long lastTime = cooldowns.get(player); - if (lastTime == null) return false; + if (lastTime == null) { + return false; + } long elapsed = (System.currentTimeMillis() - lastTime) / 1000; return elapsed < cooldownSeconds; @@ -58,7 +61,9 @@ public class PlayerServiceImpl implements PlayerService { Map cooldowns = getCooldownMap(type); Long lastTime = cooldowns.get(player); - if (lastTime == null) return 0; + if (lastTime == null) { + return 0; + } long elapsed = (System.currentTimeMillis() - lastTime) / 1000; return Math.max(0, cooldownSeconds - (int) elapsed); @@ -89,6 +94,8 @@ public class PlayerServiceImpl implements PlayerService { case "global" -> globalChatCount.incrementAndGet(); case "local" -> localChatCount.incrementAndGet(); case "pm" -> pmCount.incrementAndGet(); + default -> { + } } } @@ -152,6 +159,8 @@ public class PlayerServiceImpl implements PlayerService { private void ensureDir() { File dir = statsFile.getParentFile(); - if (!dir.exists()) dir.mkdirs(); + if (!dir.exists()) { + dir.mkdirs(); + } } } diff --git a/src/main/java/com/loki/lochat/core/service/PunishmentServiceImpl.java b/src/main/java/com/loki/lochat/core/service/PunishmentServiceImpl.java index 8bb6d3f..0931bb2 100644 --- a/src/main/java/com/loki/lochat/core/service/PunishmentServiceImpl.java +++ b/src/main/java/com/loki/lochat/core/service/PunishmentServiceImpl.java @@ -7,10 +7,12 @@ import com.loki.lochat.api.service.PunishmentService; import com.loki.lochat.config.MessagesConfig; import com.loki.lochat.data.model.BanRecord; import com.loki.lochat.data.model.WarnEntry; -import com.loki.lochat.utils.platform.FoliaUtil; import com.loki.lochat.utils.format.ChatFormatter; import com.loki.lochat.utils.format.TimeFormatter; +import com.loki.lochat.utils.platform.FoliaUtil; + import net.kyori.adventure.text.Component; + import org.bukkit.plugin.java.JavaPlugin; import java.io.*; @@ -48,7 +50,9 @@ public class PunishmentServiceImpl implements PunishmentService { @Override public List getWarns(UUID uuid) { List list = warns.get(uuid); - if (list == null) return List.of(); + if (list == null) { + return List.of(); + } synchronized (list) { return List.copyOf(list); } @@ -81,8 +85,12 @@ public class PunishmentServiceImpl implements PunishmentService { @Override public boolean isBanned(UUID uuid) { BanRecord b = bans.get(uuid); - if (b == null) return false; - if (b.isPermanent()) return true; + if (b == null) { + return false; + } + if (b.isPermanent()) { + return true; + } if (b.isExpired()) { bans.remove(uuid, b); saveAsync(); @@ -93,7 +101,9 @@ public class PunishmentServiceImpl implements PunishmentService { @Override public BanRecord getActiveBan(UUID uuid) { - if (!isBanned(uuid)) return null; + if (!isBanned(uuid)) { + return null; + } return bans.get(uuid); } @@ -153,11 +163,15 @@ public class PunishmentServiceImpl implements PunishmentService { } private void load() { - if (!dataFile.exists()) return; + if (!dataFile.exists()) { + return; + } try (Reader r = new InputStreamReader(new FileInputStream(dataFile), java.nio.charset.StandardCharsets.UTF_8)) { - Type type = new TypeToken() {}.getType(); + Type type = new TypeToken() { }.getType(); PunishmentSnapshot snap = gson.fromJson(r, type); - if (snap == null) return; + if (snap == null) { + return; + } if (snap.warns != null) { for (Map.Entry> e : snap.warns.entrySet()) { try { @@ -173,7 +187,9 @@ public class PunishmentServiceImpl implements PunishmentService { BanRecord br = e.getValue(); if (br != null) { br.uuid = id; - if (!br.isPermanent() && br.isExpired()) continue; + if (!br.isPermanent() && br.isExpired()) { + continue; + } bans.put(id, br); } } catch (IllegalArgumentException ignored) { diff --git a/src/main/java/com/loki/lochat/core/service/messaging/IgnoreService.java b/src/main/java/com/loki/lochat/core/service/messaging/IgnoreService.java index 13ddb35..7182438 100644 --- a/src/main/java/com/loki/lochat/core/service/messaging/IgnoreService.java +++ b/src/main/java/com/loki/lochat/core/service/messaging/IgnoreService.java @@ -1,6 +1,7 @@ package com.loki.lochat.core.service.messaging; import com.loki.lochat.utils.platform.FoliaUtil; + import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.plugin.java.JavaPlugin; @@ -36,15 +37,21 @@ public class IgnoreService { public boolean addIgnore(UUID player, UUID target) { Set ignored = ignoreMap.computeIfAbsent(player, k -> ConcurrentHashMap.newKeySet()); boolean added = ignored.add(target); - if (added) saveAsync(); + if (added) { + saveAsync(); + } return added; } public boolean removeIgnore(UUID player, UUID target) { Set ignored = ignoreMap.get(player); - if (ignored == null) return false; + if (ignored == null) { + return false; + } boolean removed = ignored.remove(target); - if (removed) saveAsync(); + if (removed) { + saveAsync(); + } return removed; } @@ -63,7 +70,9 @@ public class IgnoreService { } public void load() { - if (!ignoreFile.exists()) return; + if (!ignoreFile.exists()) { + return; + } YamlConfiguration config = YamlConfiguration.loadConfiguration(ignoreFile); for (String key : config.getKeys(false)) { diff --git a/src/main/java/com/loki/lochat/core/service/messaging/SpyService.java b/src/main/java/com/loki/lochat/core/service/messaging/SpyService.java index b38a8c3..0ccd3b8 100644 --- a/src/main/java/com/loki/lochat/core/service/messaging/SpyService.java +++ b/src/main/java/com/loki/lochat/core/service/messaging/SpyService.java @@ -2,8 +2,10 @@ package com.loki.lochat.core.service.messaging; import com.loki.lochat.config.MessageConfig; import com.loki.lochat.utils.format.ChatFormatter; + import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; + import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -53,7 +55,9 @@ public class SpyService { } public void sendToSpies(Player sender, Component message, boolean isGlobal) { - if (spyEnabled.isEmpty()) return; + if (spyEnabled.isEmpty()) { + return; + } String chatType = isGlobal ? "Global" : "Local"; String plainMessage = PlainTextComponentSerializer.plainText().serialize(message); diff --git a/src/main/java/com/loki/lochat/core/service/mute/MuteDataStorage.java b/src/main/java/com/loki/lochat/core/service/mute/MuteDataStorage.java index 53eb99a..f5b7b7e 100644 --- a/src/main/java/com/loki/lochat/core/service/mute/MuteDataStorage.java +++ b/src/main/java/com/loki/lochat/core/service/mute/MuteDataStorage.java @@ -5,6 +5,7 @@ import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import com.loki.lochat.data.model.MuteData; import com.loki.lochat.utils.platform.FoliaUtil; + import org.bukkit.plugin.java.JavaPlugin; import java.io.*; @@ -59,7 +60,7 @@ public class MuteDataStorage { } try (Reader reader = new FileReader(dataFile)) { - Type type = new TypeToken>() {}.getType(); + Type type = new TypeToken>() { }.getType(); Map loaded = gson.fromJson(reader, type); if (loaded != null) { loaded.forEach((key, value) -> { diff --git a/src/main/java/com/loki/lochat/core/service/mute/MutePermissionChecker.java b/src/main/java/com/loki/lochat/core/service/mute/MutePermissionChecker.java index 8eae26d..f3c4730 100644 --- a/src/main/java/com/loki/lochat/core/service/mute/MutePermissionChecker.java +++ b/src/main/java/com/loki/lochat/core/service/mute/MutePermissionChecker.java @@ -1,6 +1,7 @@ package com.loki.lochat.core.service.mute; import com.loki.lochat.utils.format.TimeFormatter; + import org.bukkit.entity.Player; /** diff --git a/src/main/java/com/loki/lochat/core/service/mute/strategies/VoiceMuteStrategy.java b/src/main/java/com/loki/lochat/core/service/mute/strategies/VoiceMuteStrategy.java index 689635f..70fee75 100644 --- a/src/main/java/com/loki/lochat/core/service/mute/strategies/VoiceMuteStrategy.java +++ b/src/main/java/com/loki/lochat/core/service/mute/strategies/VoiceMuteStrategy.java @@ -57,7 +57,9 @@ public class VoiceMuteStrategy implements MuteStrategy { } private void muteVoiceChat(UUID uuid, boolean mute) { - if (voicechatService == null) return; + if (voicechatService == null) { + return; + } try { Player player = Bukkit.getPlayer(uuid); diff --git a/src/main/java/com/loki/lochat/data/model/BanRecord.java b/src/main/java/com/loki/lochat/data/model/BanRecord.java index fd7fe7d..f5471b6 100644 --- a/src/main/java/com/loki/lochat/data/model/BanRecord.java +++ b/src/main/java/com/loki/lochat/data/model/BanRecord.java @@ -31,7 +31,9 @@ public class BanRecord { } public boolean isExpired() { - if (isPermanent()) return false; + if (isPermanent()) { + return false; + } return System.currentTimeMillis() >= until; } } diff --git a/src/main/java/com/loki/lochat/gradient/GradientModule.java b/src/main/java/com/loki/lochat/gradient/GradientModule.java index 5af1f70..102890d 100644 --- a/src/main/java/com/loki/lochat/gradient/GradientModule.java +++ b/src/main/java/com/loki/lochat/gradient/GradientModule.java @@ -11,6 +11,7 @@ import com.loki.lochat.gradient.listeners.GradientGUIListener; import com.loki.lochat.gradient.listeners.GradientPlayerListener; import com.loki.lochat.gradient.service.GradientService; import com.loki.lochat.gradient.service.PrefixService; + import org.black_ixx.playerpoints.PlayerPoints; import org.black_ixx.playerpoints.PlayerPointsAPI; import org.bukkit.Bukkit; @@ -113,7 +114,9 @@ public class GradientModule { * Получает отформатированное имя игрока (префикс + ник с градиентом) */ public String getFormattedName(Player player) { - if (!enabled) return player.getName(); + if (!enabled) { + return player.getName(); + } GradientPlayerData data = dataManager.getPlayerData(player.getUniqueId()); return prefixService.getFullName(player, data); @@ -123,7 +126,9 @@ public class GradientModule { * Получает отформатированное имя для TAB плагина */ public String getFormattedNameForTab(Player player) { - if (!enabled) return player.getName(); + if (!enabled) { + return player.getName(); + } GradientPlayerData data = dataManager.getPlayerData(player.getUniqueId()); return prefixService.getFullNameForTab(player, data); @@ -133,7 +138,9 @@ public class GradientModule { * Получает только градиентный ник (без префикса) */ public String getGradientNick(Player player) { - if (!enabled) return player.getName(); + if (!enabled) { + return player.getName(); + } GradientPlayerData data = dataManager.getPlayerData(player.getUniqueId()); return GradientService.applyGradient(player, player.getName(), data); @@ -143,7 +150,9 @@ public class GradientModule { * Получает префикс игрока (кастомный или LuckPerms) с градиентом */ public String getPrefix(Player player) { - if (!enabled) return ""; + if (!enabled) { + return ""; + } GradientPlayerData data = dataManager.getPlayerData(player.getUniqueId()); return prefixService.getPrefix(player, data); @@ -153,7 +162,9 @@ public class GradientModule { * Получает суффикс игрока из LuckPerms с градиентом */ public String getSuffix(Player player) { - if (!enabled) return ""; + if (!enabled) { + return ""; + } GradientPlayerData data = dataManager.getPlayerData(player.getUniqueId()); return prefixService.getLuckPermsSuffix(player, data); @@ -163,7 +174,9 @@ public class GradientModule { * Получает только LuckPerms префикс */ public String getLuckPermsPrefix(Player player) { - if (!enabled) return ""; + if (!enabled) { + return ""; + } GradientPlayerData data = dataManager.getPlayerData(player.getUniqueId()); return prefixService.getLuckPermsPrefix(player, data); diff --git a/src/main/java/com/loki/lochat/gradient/commands/GradientAdminCommand.java b/src/main/java/com/loki/lochat/gradient/commands/GradientAdminCommand.java index 63613df..81e15a8 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/GradientAdminCommand.java +++ b/src/main/java/com/loki/lochat/gradient/commands/GradientAdminCommand.java @@ -8,6 +8,7 @@ import com.loki.lochat.gradient.config.GradientMessages; import com.loki.lochat.gradient.data.GradientPlayerData; import com.loki.lochat.gradient.util.DisplayNameUtil; import com.loki.lochat.utils.platform.FoliaUtil; + import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; @@ -125,7 +126,9 @@ public class GradientAdminCommand implements CommandExecutor, TabCompleter { @Override public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { - if (!sender.hasPermission("gradient.admin")) return new ArrayList<>(); + if (!sender.hasPermission("gradient.admin")) { + return new ArrayList<>(); + } if (args.length == 1) { return Arrays.asList("reload", "info", "setcolor", "setprefix", "coloron", "coloroff", diff --git a/src/main/java/com/loki/lochat/gradient/commands/GradientColorCommand.java b/src/main/java/com/loki/lochat/gradient/commands/GradientColorCommand.java index 0ce1d11..6ac74b4 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/GradientColorCommand.java +++ b/src/main/java/com/loki/lochat/gradient/commands/GradientColorCommand.java @@ -3,6 +3,7 @@ package com.loki.lochat.gradient.commands; import com.loki.lochat.config.RatConfig; import com.loki.lochat.gradient.GradientModule; import com.loki.lochat.gradient.commands.handlers.color.*; + import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; diff --git a/src/main/java/com/loki/lochat/gradient/commands/GradientPrefixCommand.java b/src/main/java/com/loki/lochat/gradient/commands/GradientPrefixCommand.java index 541138e..c216971 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/GradientPrefixCommand.java +++ b/src/main/java/com/loki/lochat/gradient/commands/GradientPrefixCommand.java @@ -2,6 +2,7 @@ package com.loki.lochat.gradient.commands; import com.loki.lochat.gradient.GradientModule; import com.loki.lochat.gradient.commands.handlers.prefix.*; + import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; diff --git a/src/main/java/com/loki/lochat/gradient/commands/handlers/ColorCommandHandler.java b/src/main/java/com/loki/lochat/gradient/commands/handlers/ColorCommandHandler.java index 8f4314e..d51c316 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/handlers/ColorCommandHandler.java +++ b/src/main/java/com/loki/lochat/gradient/commands/handlers/ColorCommandHandler.java @@ -6,6 +6,7 @@ import com.loki.lochat.gradient.data.GradientPlayerData; import com.loki.lochat.gradient.util.DisplayNameUtil; import com.loki.lochat.gradient.util.GradientUtil; import com.loki.lochat.utils.platform.FoliaUtil; + import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; diff --git a/src/main/java/com/loki/lochat/gradient/commands/handlers/PrefixCommandHandler.java b/src/main/java/com/loki/lochat/gradient/commands/handlers/PrefixCommandHandler.java index dab72b8..32ecbbc 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/handlers/PrefixCommandHandler.java +++ b/src/main/java/com/loki/lochat/gradient/commands/handlers/PrefixCommandHandler.java @@ -5,6 +5,7 @@ import com.loki.lochat.gradient.config.GradientMessages; import com.loki.lochat.gradient.data.GradientPlayerData; import com.loki.lochat.gradient.util.DisplayNameUtil; import com.loki.lochat.utils.platform.FoliaUtil; + import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; @@ -38,7 +39,9 @@ public class PrefixCommandHandler { StringBuilder prefixBuilder = new StringBuilder(); for (int i = 2; i < args.length; i++) { - if (i > 2) prefixBuilder.append(" "); + if (i > 2) { + prefixBuilder.append(" "); + } prefixBuilder.append(args[i]); } String prefix = prefixBuilder.toString(); diff --git a/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorCopyHandler.java b/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorCopyHandler.java index c2f7eb3..c685c88 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorCopyHandler.java +++ b/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorCopyHandler.java @@ -6,6 +6,7 @@ import com.loki.lochat.gradient.config.GradientConfig; import com.loki.lochat.gradient.data.GradientPlayerData; import com.loki.lochat.gradient.gui.GradientConfirmGUI; import com.loki.lochat.utils.platform.FoliaUtil; + import org.bukkit.Bukkit; import org.bukkit.entity.Player; diff --git a/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorOffHandler.java b/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorOffHandler.java index e75cea3..88a65a8 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorOffHandler.java +++ b/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorOffHandler.java @@ -4,6 +4,7 @@ import com.loki.lochat.gradient.GradientModule; import com.loki.lochat.gradient.data.GradientPlayerData; import com.loki.lochat.gradient.util.DisplayNameUtil; import com.loki.lochat.utils.platform.FoliaUtil; + import org.bukkit.entity.Player; /** diff --git a/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorOnHandler.java b/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorOnHandler.java index 5edc901..9a3abf9 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorOnHandler.java +++ b/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorOnHandler.java @@ -4,6 +4,7 @@ import com.loki.lochat.gradient.GradientModule; import com.loki.lochat.gradient.data.GradientPlayerData; import com.loki.lochat.gradient.util.DisplayNameUtil; import com.loki.lochat.utils.platform.FoliaUtil; + import org.bukkit.entity.Player; /** diff --git a/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorResetHandler.java b/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorResetHandler.java index e9e4d6d..08044f1 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorResetHandler.java +++ b/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorResetHandler.java @@ -4,6 +4,7 @@ import com.loki.lochat.gradient.GradientModule; import com.loki.lochat.gradient.data.GradientPlayerData; import com.loki.lochat.gradient.util.DisplayNameUtil; import com.loki.lochat.utils.platform.FoliaUtil; + import org.bukkit.entity.Player; import java.util.ArrayList; diff --git a/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorSetHandler.java b/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorSetHandler.java index bc5aab5..c44821b 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorSetHandler.java +++ b/src/main/java/com/loki/lochat/gradient/commands/handlers/color/ColorSetHandler.java @@ -8,6 +8,7 @@ import com.loki.lochat.gradient.data.GradientPlayerData; import com.loki.lochat.gradient.gui.GradientConfirmGUI; import com.loki.lochat.gradient.util.GradientUtil; import com.loki.lochat.utils.platform.FoliaUtil; + import org.bukkit.entity.Player; import java.util.ArrayList; diff --git a/src/main/java/com/loki/lochat/gradient/commands/handlers/prefix/PrefixOffHandler.java b/src/main/java/com/loki/lochat/gradient/commands/handlers/prefix/PrefixOffHandler.java index efff579..8351b8c 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/handlers/prefix/PrefixOffHandler.java +++ b/src/main/java/com/loki/lochat/gradient/commands/handlers/prefix/PrefixOffHandler.java @@ -4,6 +4,7 @@ import com.loki.lochat.gradient.GradientModule; import com.loki.lochat.gradient.data.GradientPlayerData; import com.loki.lochat.gradient.util.DisplayNameUtil; import com.loki.lochat.utils.platform.FoliaUtil; + import org.bukkit.entity.Player; /** diff --git a/src/main/java/com/loki/lochat/gradient/commands/handlers/prefix/PrefixOnHandler.java b/src/main/java/com/loki/lochat/gradient/commands/handlers/prefix/PrefixOnHandler.java index c262d11..449ae42 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/handlers/prefix/PrefixOnHandler.java +++ b/src/main/java/com/loki/lochat/gradient/commands/handlers/prefix/PrefixOnHandler.java @@ -4,6 +4,7 @@ import com.loki.lochat.gradient.GradientModule; import com.loki.lochat.gradient.data.GradientPlayerData; import com.loki.lochat.gradient.util.DisplayNameUtil; import com.loki.lochat.utils.platform.FoliaUtil; + import org.bukkit.entity.Player; /** diff --git a/src/main/java/com/loki/lochat/gradient/commands/handlers/prefix/PrefixResetHandler.java b/src/main/java/com/loki/lochat/gradient/commands/handlers/prefix/PrefixResetHandler.java index ed60267..7bfc5a8 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/handlers/prefix/PrefixResetHandler.java +++ b/src/main/java/com/loki/lochat/gradient/commands/handlers/prefix/PrefixResetHandler.java @@ -4,6 +4,7 @@ import com.loki.lochat.gradient.GradientModule; import com.loki.lochat.gradient.data.GradientPlayerData; import com.loki.lochat.gradient.util.DisplayNameUtil; import com.loki.lochat.utils.platform.FoliaUtil; + import org.bukkit.entity.Player; /** diff --git a/src/main/java/com/loki/lochat/gradient/commands/handlers/prefix/PrefixSetHandler.java b/src/main/java/com/loki/lochat/gradient/commands/handlers/prefix/PrefixSetHandler.java index ba9ef38..ada2d3b 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/handlers/prefix/PrefixSetHandler.java +++ b/src/main/java/com/loki/lochat/gradient/commands/handlers/prefix/PrefixSetHandler.java @@ -7,6 +7,7 @@ import com.loki.lochat.gradient.config.GradientMessages; import com.loki.lochat.gradient.data.GradientPlayerData; import com.loki.lochat.gradient.gui.GradientConfirmGUI; import com.loki.lochat.utils.platform.FoliaUtil; + import org.bukkit.entity.Player; import java.util.regex.Pattern; @@ -80,7 +81,9 @@ public class PrefixSetHandler implements PrefixSubCommandHandler { } private int calculatePrice(Player player, GradientConfig cfg, GradientPlayerData data) { - if (player.hasPermission("gradient.bypass.cost")) return 0; + if (player.hasPermission("gradient.bypass.cost")) { + return 0; + } return (cfg.isPrefixOneTimePurchase() && data.isPrefixPurchased()) ? 0 : cfg.getPrefixPrice(); } diff --git a/src/main/java/com/loki/lochat/gradient/config/GradientMessages.java b/src/main/java/com/loki/lochat/gradient/config/GradientMessages.java index 2541deb..9e0916e 100644 --- a/src/main/java/com/loki/lochat/gradient/config/GradientMessages.java +++ b/src/main/java/com/loki/lochat/gradient/config/GradientMessages.java @@ -1,7 +1,9 @@ package com.loki.lochat.gradient.config; import com.loki.lochat.utils.format.ChatFormatter; + import net.kyori.adventure.text.Component; + import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; diff --git a/src/main/java/com/loki/lochat/gradient/data/GradientDataManager.java b/src/main/java/com/loki/lochat/gradient/data/GradientDataManager.java index b3a5d69..bea0b8a 100644 --- a/src/main/java/com/loki/lochat/gradient/data/GradientDataManager.java +++ b/src/main/java/com/loki/lochat/gradient/data/GradientDataManager.java @@ -1,6 +1,7 @@ package com.loki.lochat.gradient.data; import com.loki.lochat.gradient.config.GradientConfig; + import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.plugin.java.JavaPlugin; @@ -64,7 +65,9 @@ public class GradientDataManager { private void loadYamlData() { File dataFile = new File(plugin.getDataFolder(), "gradient-data.yml"); - if (!dataFile.exists()) return; + if (!dataFile.exists()) { + return; + } FileConfiguration data = YamlConfiguration.loadConfiguration(dataFile); for (String uuidStr : data.getKeys(false)) { @@ -118,7 +121,9 @@ public class GradientDataManager { public void savePlayerData(UUID uuid) { GradientPlayerData data = cache.get(uuid); - if (data == null) return; + if (data == null) { + return; + } if (useSqlite && sqliteConnection != null) { try (PreparedStatement stmt = sqliteConnection.prepareStatement( diff --git a/src/main/java/com/loki/lochat/gradient/gui/GradientConfirmGUI.java b/src/main/java/com/loki/lochat/gradient/gui/GradientConfirmGUI.java index b50c213..40a95af 100644 --- a/src/main/java/com/loki/lochat/gradient/gui/GradientConfirmGUI.java +++ b/src/main/java/com/loki/lochat/gradient/gui/GradientConfirmGUI.java @@ -3,10 +3,12 @@ package com.loki.lochat.gradient.gui; import com.loki.lochat.config.RatConfig; import com.loki.lochat.gradient.GradientModule; import com.loki.lochat.gradient.util.GradientUtil; + import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; + import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -49,7 +51,9 @@ public final class GradientConfirmGUI implements InventoryHolder { } private void initInventory() { - if (inventory != null) return; + if (inventory != null) { + return; + } this.inventory = Bukkit.createInventory(this, 27, Component.text("Подтверждение", NamedTextColor.DARK_GRAY)); setupItems(); @@ -128,7 +132,7 @@ public final class GradientConfirmGUI implements InventoryHolder { boolean useLegacyForPreview = true; // Если нет кастомного префикса - используем LuckPerms префикс - if ((prefixToUse == null || prefixToUse.isEmpty())) { + if (prefixToUse == null || prefixToUse.isEmpty()) { String lpPrefix = module.getPrefixService().getLuckPermsPrefix(player, data); if (lpPrefix != null && !lpPrefix.isEmpty()) { // Конвертируем LP префикс в legacy формат @@ -163,7 +167,9 @@ public final class GradientConfirmGUI implements InventoryHolder { * Конвертирует MiniMessage теги в legacy формат */ private String convertToLegacy(String text) { - if (text == null) return ""; + if (text == null) { + return ""; + } // Конвертируем <#RRGGBB> в &#RRGGBB return text.replaceAll("<#([A-Fa-f0-9]{6})>", "&#$1"); } @@ -172,7 +178,9 @@ public final class GradientConfirmGUI implements InventoryHolder { * Убирает цветовые коды из строки */ private String stripColors(String text) { - if (text == null) return ""; + if (text == null) { + return ""; + } return text.replaceAll("(?i)(§x(§[0-9a-f]){6}|§[0-9a-fk-or]|&[0-9a-fk-or]|&#[0-9a-f]{6}|<[^>]+>)", ""); } diff --git a/src/main/java/com/loki/lochat/gradient/listeners/GradientGUIListener.java b/src/main/java/com/loki/lochat/gradient/listeners/GradientGUIListener.java index 19742bd..7bef851 100644 --- a/src/main/java/com/loki/lochat/gradient/listeners/GradientGUIListener.java +++ b/src/main/java/com/loki/lochat/gradient/listeners/GradientGUIListener.java @@ -7,6 +7,7 @@ import com.loki.lochat.gradient.data.GradientPlayerData; import com.loki.lochat.gradient.gui.GradientConfirmGUI; import com.loki.lochat.gradient.util.DisplayNameUtil; import com.loki.lochat.utils.platform.FoliaUtil; + import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -31,15 +32,21 @@ public class GradientGUIListener implements Listener { @EventHandler public void onInventoryClick(InventoryClickEvent event) { - if (!(event.getInventory().getHolder() instanceof GradientConfirmGUI gui)) return; + if (!(event.getInventory().getHolder() instanceof GradientConfirmGUI gui)) { + return; + } event.setCancelled(true); - if (!(event.getWhoClicked() instanceof Player player) || !player.equals(gui.getPlayer())) return; + if (!(event.getWhoClicked() instanceof Player player) || !player.equals(gui.getPlayer())) { + return; + } switch (event.getRawSlot()) { case RatConfig.GUI_CONFIRM_SLOT -> handleConfirm(player, gui); case RatConfig.GUI_CANCEL_SLOT -> handleCancel(player); + default -> { + } } } @@ -76,7 +83,6 @@ public class GradientGUIListener implements Listener { data.setPrefixEnabled(true); data.setPrefixPurchased(true); data.setLastPrefixChange(System.currentTimeMillis()); - // Сохраняем существующие цвета если они есть if (gui.getColors() != null && !gui.getColors().isEmpty()) { data.setColors(gui.getColors()); data.setColorEnabled(true); @@ -84,6 +90,8 @@ public class GradientGUIListener implements Listener { msg.send(player, price > 0 ? "prefix-success" : "prefix-success-free", "price", String.valueOf(price)); } + default -> { + } } FoliaUtil.runEntityTask(module.getPlugin(), player, diff --git a/src/main/java/com/loki/lochat/gradient/listeners/GradientPlayerListener.java b/src/main/java/com/loki/lochat/gradient/listeners/GradientPlayerListener.java index 485a42f..90ceff3 100644 --- a/src/main/java/com/loki/lochat/gradient/listeners/GradientPlayerListener.java +++ b/src/main/java/com/loki/lochat/gradient/listeners/GradientPlayerListener.java @@ -2,6 +2,7 @@ package com.loki.lochat.gradient.listeners; import com.loki.lochat.gradient.GradientModule; import com.loki.lochat.utils.platform.FoliaUtil; + import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; diff --git a/src/main/java/com/loki/lochat/gradient/service/GradientService.java b/src/main/java/com/loki/lochat/gradient/service/GradientService.java index 46bb02b..5d23b63 100644 --- a/src/main/java/com/loki/lochat/gradient/service/GradientService.java +++ b/src/main/java/com/loki/lochat/gradient/service/GradientService.java @@ -2,6 +2,7 @@ package com.loki.lochat.gradient.service; import com.loki.lochat.gradient.data.GradientPlayerData; import com.loki.lochat.gradient.util.GradientUtil; + import org.bukkit.entity.Player; import java.util.List; @@ -11,6 +12,9 @@ import java.util.List; */ public class GradientService { + private GradientService() { + } + /** * Применяет градиент к тексту если у игрока есть цвета */ diff --git a/src/main/java/com/loki/lochat/gradient/service/PrefixService.java b/src/main/java/com/loki/lochat/gradient/service/PrefixService.java index 80425b8..b2b16d1 100644 --- a/src/main/java/com/loki/lochat/gradient/service/PrefixService.java +++ b/src/main/java/com/loki/lochat/gradient/service/PrefixService.java @@ -2,10 +2,12 @@ package com.loki.lochat.gradient.service; import com.loki.lochat.gradient.config.GradientConfig; import com.loki.lochat.gradient.data.GradientPlayerData; + import net.luckperms.api.LuckPerms; import net.luckperms.api.LuckPermsProvider; import net.luckperms.api.cacheddata.CachedMetaData; import net.luckperms.api.model.user.User; + import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -128,9 +130,13 @@ public class PrefixService { } StringBuilder result = new StringBuilder(); - if (!prefix.isEmpty()) result.append(prefix).append(" "); + if (!prefix.isEmpty()) { + result.append(prefix).append(" "); + } result.append(nick); - if (!suffix.isEmpty()) result.append(" ").append(suffix); + if (!suffix.isEmpty()) { + result.append(" ").append(suffix); + } return result.toString(); } @@ -149,9 +155,13 @@ public class PrefixService { } StringBuilder result = new StringBuilder(); - if (!prefix.isEmpty()) result.append(prefix).append(" "); + if (!prefix.isEmpty()) { + result.append(prefix).append(" "); + } result.append(nick); - if (!suffix.isEmpty()) result.append(" ").append(suffix); + if (!suffix.isEmpty()) { + result.append(" ").append(suffix); + } return result.toString(); } diff --git a/src/main/java/com/loki/lochat/gradient/util/DisplayNameUtil.java b/src/main/java/com/loki/lochat/gradient/util/DisplayNameUtil.java index 2bad26c..c1ac15b 100644 --- a/src/main/java/com/loki/lochat/gradient/util/DisplayNameUtil.java +++ b/src/main/java/com/loki/lochat/gradient/util/DisplayNameUtil.java @@ -3,7 +3,9 @@ package com.loki.lochat.gradient.util; import com.loki.lochat.gradient.GradientModule; import com.loki.lochat.gradient.config.GradientConfig; import com.loki.lochat.gradient.data.GradientPlayerData; + import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; + import org.bukkit.entity.Player; import java.util.regex.Matcher; @@ -38,7 +40,9 @@ public final class DisplayNameUtil { * Конвертирует MiniMessage <#RRGGBB> формат в §x§R§R§G§G§B§B для display name */ private static String convertMiniMessageToLegacy(String text) { - if (text == null) return ""; + if (text == null) { + return ""; + } // Конвертируем <#RRGGBB> в §x§R§R§G§G§B§B Pattern pattern = Pattern.compile("<#([0-9a-fA-F]{6})>"); @@ -59,7 +63,9 @@ public final class DisplayNameUtil { } public static String buildColoredPrefix(GradientModule module, GradientPlayerData data) { - if (!data.hasPrefix() || !data.isPrefixEnabled()) return null; + if (!data.hasPrefix() || !data.isPrefixEnabled()) { + return null; + } GradientConfig cfg = module.getConfig(); // ✅ FIX: Убрал stripTrailing() чтобы сохранить пробел из prefix-format diff --git a/src/main/java/com/loki/lochat/gradient/util/GradientUtil.java b/src/main/java/com/loki/lochat/gradient/util/GradientUtil.java index cdd52cb..47b44cf 100644 --- a/src/main/java/com/loki/lochat/gradient/util/GradientUtil.java +++ b/src/main/java/com/loki/lochat/gradient/util/GradientUtil.java @@ -25,7 +25,9 @@ public final class GradientUtil { char[] chars = text.toCharArray(); int length = chars.length; - if (length == 0) return text; + if (length == 0) { + return text; + } StringBuilder result = new StringBuilder(); @@ -61,9 +63,15 @@ public final class GradientUtil { } private static Color interpolateMultiColor(Color[] colors, double ratio) { - if (colors.length == 1) return colors[0]; - if (ratio <= 0) return colors[0]; - if (ratio >= 1) return colors[colors.length - 1]; + if (colors.length == 1) { + return colors[0]; + } + if (ratio <= 0) { + return colors[0]; + } + if (ratio >= 1) { + return colors[colors.length - 1]; + } double scaledRatio = ratio * (colors.length - 1); int index = (int) scaledRatio; @@ -128,7 +136,9 @@ public final class GradientUtil { char[] chars = text.toCharArray(); int length = chars.length; - if (length == 0) return text; + if (length == 0) { + return text; + } StringBuilder result = new StringBuilder(); diff --git a/src/main/java/com/loki/lochat/integrations/DiscordIntegration.java b/src/main/java/com/loki/lochat/integrations/DiscordIntegration.java index a0e5cb8..61a3355 100644 --- a/src/main/java/com/loki/lochat/integrations/DiscordIntegration.java +++ b/src/main/java/com/loki/lochat/integrations/DiscordIntegration.java @@ -2,6 +2,7 @@ package com.loki.lochat.integrations; import com.loki.lochat.integrations.discord.DiscordConfig; import com.loki.lochat.integrations.discord.DiscordMessageService; + import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; @@ -40,7 +41,9 @@ public class DiscordIntegration { } public void sendChatMessage(Player player, String message, boolean isGlobal) { - if (!enabled || !config.isChatEnabled()) return; + if (!enabled || !config.isChatEnabled()) { + return; + } if (config.isGlobalOnly() && !isGlobal) { return; @@ -50,22 +53,30 @@ public class DiscordIntegration { } public void sendPlayerJoin(Player player) { - if (!enabled || !config.isEventEnabled("join")) return; + if (!enabled || !config.isEventEnabled("join")) { + return; + } messageService.sendPlayerJoin(player); } public void sendPlayerQuit(Player player) { - if (!enabled || !config.isEventEnabled("quit")) return; + if (!enabled || !config.isEventEnabled("quit")) { + return; + } messageService.sendPlayerQuit(player); } public void sendPlayerDeath(Player player, String deathMessage) { - if (!enabled || !config.isEventEnabled("death")) return; + if (!enabled || !config.isEventEnabled("death")) { + return; + } messageService.sendPlayerDeath(player, deathMessage); } public void sendTestMessage(String message, String senderName) { - if (!enabled) return; + if (!enabled) { + return; + } messageService.sendTestMessage(message, senderName); } diff --git a/src/main/java/com/loki/lochat/integrations/DiscordWebhook.java b/src/main/java/com/loki/lochat/integrations/DiscordWebhook.java index bd4919d..3e160fd 100644 --- a/src/main/java/com/loki/lochat/integrations/DiscordWebhook.java +++ b/src/main/java/com/loki/lochat/integrations/DiscordWebhook.java @@ -2,6 +2,7 @@ package com.loki.lochat.integrations; import com.google.gson.JsonArray; import com.google.gson.JsonObject; + import org.bukkit.plugin.java.JavaPlugin; import java.io.IOException; @@ -78,10 +79,18 @@ public class DiscordWebhook { private JsonObject buildEmbed(String title, String description, String color, String thumbnailUrl, JsonArray fields) { JsonObject embed = new JsonObject(); - if (title != null) embed.addProperty("title", title); - if (description != null) embed.addProperty("description", description); - if (color != null) embed.addProperty("color", Integer.parseInt(color, 16)); - if (fields != null) embed.add("fields", fields); + if (title != null) { + embed.addProperty("title", title); + } + if (description != null) { + embed.addProperty("description", description); + } + if (color != null) { + embed.addProperty("color", Integer.parseInt(color, 16)); + } + if (fields != null) { + embed.add("fields", fields); + } if (thumbnailUrl != null) { JsonObject thumb = new JsonObject(); thumb.addProperty("url", thumbnailUrl); @@ -106,13 +115,19 @@ public class DiscordWebhook { return CompletableFuture.supplyAsync(() -> { for (int attempt = 1; attempt <= retryAttempts; attempt++) { try { - if (sendWebhookSync(json.toString())) return true; + if (sendWebhookSync(json.toString())) { + return true; + } } catch (Exception e) { plugin.getLogger().warning("Discord webhook attempt " + attempt + " failed: " + e.getMessage()); } if (attempt < retryAttempts) { - try { Thread.sleep(retryDelay); } - catch (InterruptedException e) { Thread.currentThread().interrupt(); break; } + try { + Thread.sleep(retryDelay); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + break; + } } } plugin.getLogger().severe("Failed to send Discord webhook after " + retryAttempts + " attempts"); @@ -134,8 +149,13 @@ public class DiscordWebhook { os.write(jsonPayload.getBytes(StandardCharsets.UTF_8)); } int code = conn.getResponseCode(); - if (code == 204) return true; - if (code == 429) { plugin.getLogger().warning("Discord webhook rate limited (429)"); return false; } + if (code == 204) { + return true; + } + if (code == 429) { + plugin.getLogger().warning("Discord webhook rate limited (429)"); + return false; + } plugin.getLogger().warning("Discord webhook returned code: " + code); return false; } finally { @@ -144,12 +164,22 @@ public class DiscordWebhook { } public boolean isValid() { - if (webhookUrl == null || webhookUrl.trim().isEmpty()) return false; + if (webhookUrl == null || webhookUrl.trim().isEmpty()) { + return false; + } String url = webhookUrl.trim(); if (!url.startsWith("https://discord.com/api/webhooks/") && - !url.startsWith("https://discordapp.com/api/webhooks/")) return false; - if (url.length() < 50) return false; - try { URI.create(url); } catch (IllegalArgumentException e) { return false; } + !url.startsWith("https://discordapp.com/api/webhooks/")) { + return false; + } + if (url.length() < 50) { + return false; + } + try { + URI.create(url); + } catch (IllegalArgumentException e) { + return false; + } return true; } } diff --git a/src/main/java/com/loki/lochat/integrations/LibertyBansHook.java b/src/main/java/com/loki/lochat/integrations/LibertyBansHook.java index 4b55607..6dc52ee 100644 --- a/src/main/java/com/loki/lochat/integrations/LibertyBansHook.java +++ b/src/main/java/com/loki/lochat/integrations/LibertyBansHook.java @@ -2,6 +2,7 @@ package com.loki.lochat.integrations; import com.loki.lochat.LoChat; import com.loki.lochat.api.service.MuteService; + import org.bukkit.entity.Player; /** diff --git a/src/main/java/com/loki/lochat/integrations/PlaceholderAPIHook.java b/src/main/java/com/loki/lochat/integrations/PlaceholderAPIHook.java index ec66a15..930a241 100644 --- a/src/main/java/com/loki/lochat/integrations/PlaceholderAPIHook.java +++ b/src/main/java/com/loki/lochat/integrations/PlaceholderAPIHook.java @@ -4,7 +4,7 @@ import com.loki.lochat.LoChat; import com.loki.lochat.api.service.ChatService; import com.loki.lochat.api.service.MessagingService; import com.loki.lochat.gradient.GradientModule; -import me.clip.placeholderapi.expansion.PlaceholderExpansion; + import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; @@ -14,6 +14,8 @@ import org.jetbrains.annotations.Nullable; import java.util.Optional; import java.util.UUID; +import me.clip.placeholderapi.expansion.PlaceholderExpansion; + public class PlaceholderAPIHook extends PlaceholderExpansion { private final LoChat plugin; @@ -48,7 +50,9 @@ public class PlaceholderAPIHook extends PlaceholderExpansion { @Override public @Nullable String onRequest(OfflinePlayer player, @NotNull String params) { - if (player == null) return ""; + if (player == null) { + return ""; + } UUID uuid = player.getUniqueId(); GradientModule gradient = plugin.getGradientModule(); @@ -58,7 +62,9 @@ public class PlaceholderAPIHook extends PlaceholderExpansion { case "global_enabled" -> String.valueOf(!chatService.isGlobalChatDisabled(uuid)); case "last_pm" -> { Optional lastOpt = messagingService.getLastConversation(uuid); - if (lastOpt.isEmpty()) yield ""; + if (lastOpt.isEmpty()) { + yield ""; + } var lastPlayer = Bukkit.getOfflinePlayer(lastOpt.get()); yield lastPlayer.getName() != null ? lastPlayer.getName() : ""; } @@ -68,7 +74,9 @@ public class PlaceholderAPIHook extends PlaceholderExpansion { // Используем TAB формат §x§R§R§G§G§B§B для совместимости с TAB плагином case "gradient_full", "full" -> { Player onlinePlayer = player.getPlayer(); - if (onlinePlayer == null) yield player.getName() != null ? player.getName() : ""; + if (onlinePlayer == null) { + yield player.getName() != null ? player.getName() : ""; + } // Если gradient модуль выключен — берём только LuckPerms префикс + ник if (gradient == null || !gradient.isEnabled()) { @@ -80,7 +88,9 @@ public class PlaceholderAPIHook extends PlaceholderExpansion { } case "gradient_name", "name" -> { Player onlinePlayer = player.getPlayer(); - if (onlinePlayer == null) yield player.getName() != null ? player.getName() : ""; + if (onlinePlayer == null) { + yield player.getName() != null ? player.getName() : ""; + } if (gradient == null || !gradient.isEnabled()) { yield player.getName(); @@ -89,16 +99,24 @@ public class PlaceholderAPIHook extends PlaceholderExpansion { } case "gradient_prefix", "prefix" -> { Player onlinePlayer = player.getPlayer(); - if (onlinePlayer == null) yield ""; + if (onlinePlayer == null) { + yield ""; + } - if (gradient == null || !gradient.isEnabled()) yield ""; + if (gradient == null || !gradient.isEnabled()) { + yield ""; + } yield gradient.getPrefix(onlinePlayer); } case "lp_prefix" -> { Player onlinePlayer = player.getPlayer(); - if (onlinePlayer == null) yield ""; + if (onlinePlayer == null) { + yield ""; + } - if (gradient == null || !gradient.isEnabled()) yield ""; + if (gradient == null || !gradient.isEnabled()) { + yield ""; + } yield gradient.getLuckPermsPrefix(onlinePlayer); } default -> null; diff --git a/src/main/java/com/loki/lochat/integrations/SkinsRestorerHook.java b/src/main/java/com/loki/lochat/integrations/SkinsRestorerHook.java index 2f2bca5..3901f4a 100644 --- a/src/main/java/com/loki/lochat/integrations/SkinsRestorerHook.java +++ b/src/main/java/com/loki/lochat/integrations/SkinsRestorerHook.java @@ -1,6 +1,7 @@ package com.loki.lochat.integrations; import com.loki.lochat.LoChat; + import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; @@ -57,7 +58,9 @@ public class SkinsRestorerHook { * @return URL текстуры или null */ public String getPlayerSkinTexture(Player player) { - if (!enabled) return null; + if (!enabled) { + return null; + } try { Object property = getSkinDataMethod.invoke(skinsAPI, player.getName()); diff --git a/src/main/java/com/loki/lochat/integrations/discord/DiscordMessageService.java b/src/main/java/com/loki/lochat/integrations/discord/DiscordMessageService.java index 8732614..270ceb6 100644 --- a/src/main/java/com/loki/lochat/integrations/discord/DiscordMessageService.java +++ b/src/main/java/com/loki/lochat/integrations/discord/DiscordMessageService.java @@ -2,6 +2,7 @@ package com.loki.lochat.integrations.discord; import com.loki.lochat.integrations.DiscordWebhook; import com.loki.lochat.utils.platform.FoliaUtil; + import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; @@ -140,7 +141,9 @@ public class DiscordMessageService { } private String sanitizeMessage(String message) { - if (message == null) return ""; + if (message == null) { + return ""; + } message = COLOR_CODE_PATTERN.matcher(message).replaceAll(""); diff --git a/src/main/java/com/loki/lochat/listener/ChatEventListener.java b/src/main/java/com/loki/lochat/listener/ChatEventListener.java index 1170b34..5167893 100644 --- a/src/main/java/com/loki/lochat/listener/ChatEventListener.java +++ b/src/main/java/com/loki/lochat/listener/ChatEventListener.java @@ -7,15 +7,18 @@ import com.loki.lochat.core.filter.FilterResult; import com.loki.lochat.core.registry.ServiceRegistry; import com.loki.lochat.renderer.EnhancedChatRenderer; import com.loki.lochat.utils.format.ChatFormatter; -import io.papermc.paper.event.player.AsyncChatEvent; + import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; + import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; +import io.papermc.paper.event.player.AsyncChatEvent; + public class ChatEventListener implements Listener { private final JavaPlugin plugin; private final MessageService messageService; @@ -122,7 +125,9 @@ public class ChatEventListener implements Listener { int radius = loChat.getConfigManager().getAppearanceConfig().getLocalRadius(); event.viewers().removeIf(v -> { - if (!(v instanceof Player p)) return false; + if (!(v instanceof Player p)) { + return false; + } try { return !com.loki.lochat.utils.player.DistanceUtil.isInRange(sender, p, radius); } catch (Exception e) { diff --git a/src/main/java/com/loki/lochat/listener/DiscordEventListener.java b/src/main/java/com/loki/lochat/listener/DiscordEventListener.java index 12408d1..8446bb8 100644 --- a/src/main/java/com/loki/lochat/listener/DiscordEventListener.java +++ b/src/main/java/com/loki/lochat/listener/DiscordEventListener.java @@ -1,8 +1,9 @@ package com.loki.lochat.listener; import com.loki.lochat.integrations.DiscordIntegration; -import io.papermc.paper.event.player.AsyncChatEvent; + import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; + import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -11,6 +12,8 @@ import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; +import io.papermc.paper.event.player.AsyncChatEvent; + /** * Слушатель событий для Discord интеграции */ @@ -26,7 +29,9 @@ public class DiscordEventListener implements Listener { */ @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onChat(AsyncChatEvent event) { - if (!discord.isEnabled()) return; + if (!discord.isEnabled()) { + return; + } Player player = event.getPlayer(); String message = PlainTextComponentSerializer.plainText().serialize(event.message()); @@ -47,7 +52,9 @@ public class DiscordEventListener implements Listener { */ @EventHandler(priority = EventPriority.MONITOR) public void onPlayerJoin(PlayerJoinEvent event) { - if (!discord.isEnabled()) return; + if (!discord.isEnabled()) { + return; + } Player player = event.getPlayer(); discord.sendPlayerJoin(player); @@ -58,7 +65,9 @@ public class DiscordEventListener implements Listener { */ @EventHandler(priority = EventPriority.MONITOR) public void onPlayerQuit(PlayerQuitEvent event) { - if (!discord.isEnabled()) return; + if (!discord.isEnabled()) { + return; + } Player player = event.getPlayer(); discord.sendPlayerQuit(player); @@ -69,7 +78,9 @@ public class DiscordEventListener implements Listener { */ @EventHandler(priority = EventPriority.MONITOR) public void onPlayerDeath(PlayerDeathEvent event) { - if (!discord.isEnabled()) return; + if (!discord.isEnabled()) { + return; + } Player player = event.getEntity(); String deathMessage = event.deathMessage() != null ? diff --git a/src/main/java/com/loki/lochat/listener/ModerationListener.java b/src/main/java/com/loki/lochat/listener/ModerationListener.java index 31a08ca..639385d 100644 --- a/src/main/java/com/loki/lochat/listener/ModerationListener.java +++ b/src/main/java/com/loki/lochat/listener/ModerationListener.java @@ -1,8 +1,9 @@ package com.loki.lochat.listener; import com.loki.lochat.api.service.PunishmentService; -import com.loki.lochat.data.model.BanRecord; import com.loki.lochat.core.registry.ServiceRegistry; +import com.loki.lochat.data.model.BanRecord; + import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; diff --git a/src/main/java/com/loki/lochat/listener/PlayerEventListener.java b/src/main/java/com/loki/lochat/listener/PlayerEventListener.java index 4503e81..9fb6d24 100644 --- a/src/main/java/com/loki/lochat/listener/PlayerEventListener.java +++ b/src/main/java/com/loki/lochat/listener/PlayerEventListener.java @@ -8,7 +8,9 @@ import com.loki.lochat.config.ConfigManager; import com.loki.lochat.core.filter.AdvancedMessageFilter; import com.loki.lochat.core.registry.ServiceRegistry; import com.loki.lochat.utils.format.ChatFormatter; + import net.kyori.adventure.text.Component; + import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; diff --git a/src/main/java/com/loki/lochat/managers/AutoMessageManager.java b/src/main/java/com/loki/lochat/managers/AutoMessageManager.java index 110adab..53a1a94 100644 --- a/src/main/java/com/loki/lochat/managers/AutoMessageManager.java +++ b/src/main/java/com/loki/lochat/managers/AutoMessageManager.java @@ -1,10 +1,11 @@ package com.loki.lochat.managers; import com.loki.lochat.LoChat; -import com.loki.lochat.utils.platform.FoliaUtil; import com.loki.lochat.utils.format.ChatFormatter; -import io.papermc.paper.threadedregions.scheduler.ScheduledTask; +import com.loki.lochat.utils.platform.FoliaUtil; + import net.kyori.adventure.text.Component; + import org.bukkit.Bukkit; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; @@ -13,6 +14,8 @@ import org.bukkit.scheduler.BukkitTask; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; +import io.papermc.paper.threadedregions.scheduler.ScheduledTask; + public class AutoMessageManager { private final LoChat plugin; @@ -133,7 +136,9 @@ public class AutoMessageManager { } List lines = messages.get(messageKey); - if (lines == null || lines.isEmpty()) return; + if (lines == null || lines.isEmpty()) { + return; + } boolean isFirstLine = true; for (String line : lines) { diff --git a/src/main/java/com/loki/lochat/managers/CustomCommandManager.java b/src/main/java/com/loki/lochat/managers/CustomCommandManager.java index 6afec15..4eed14f 100644 --- a/src/main/java/com/loki/lochat/managers/CustomCommandManager.java +++ b/src/main/java/com/loki/lochat/managers/CustomCommandManager.java @@ -5,6 +5,7 @@ import com.loki.lochat.commands.CustomCommand; import com.loki.lochat.managers.commands.MessageSender; import com.loki.lochat.managers.commands.PlaceholderProcessor; import com.loki.lochat.utils.format.ChatFormatter; + import org.bukkit.Bukkit; import org.bukkit.command.CommandMap; import org.bukkit.configuration.ConfigurationSection; @@ -44,7 +45,9 @@ public class CustomCommandManager { for (String commandName : commandsConfig.getKeys(false)) { ConfigurationSection section = commandsConfig.getConfigurationSection(commandName); - if (section == null) continue; + if (section == null) { + continue; + } CustomCommandData data = new CustomCommandData( commandName, @@ -96,7 +99,9 @@ public class CustomCommandManager { } } - if (data == null) return false; + if (data == null) { + return false; + } if (!data.enabled()) { return true; diff --git a/src/main/java/com/loki/lochat/managers/EmojiManager.java b/src/main/java/com/loki/lochat/managers/EmojiManager.java index f2b28a5..a0a70d2 100644 --- a/src/main/java/com/loki/lochat/managers/EmojiManager.java +++ b/src/main/java/com/loki/lochat/managers/EmojiManager.java @@ -1,6 +1,7 @@ package com.loki.lochat.managers; import com.loki.lochat.LoChat; + import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; @@ -42,7 +43,9 @@ public class EmojiManager { // Загружаем все категории for (String category : config.getKeys(false)) { - if (category.equals("settings")) continue; + if (category.equals("settings")) { + continue; + } ConfigurationSection section = config.getConfigurationSection(category); if (section != null) { @@ -66,7 +69,9 @@ public class EmojiManager { * Заменяет смайлики в сообщении */ public String process(String message, Player player) { - if (!enabled) return message; + if (!enabled) { + return message; + } // Проверка права if (requirePermission && player != null && !player.hasPermission("chat.emoji.use")) { @@ -82,7 +87,9 @@ public class EmojiManager { } public String process(String message) { - if (!enabled) return message; + if (!enabled) { + return message; + } String result = message; for (Map.Entry entry : emojis.entrySet()) { diff --git a/src/main/java/com/loki/lochat/managers/commands/MessageSender.java b/src/main/java/com/loki/lochat/managers/commands/MessageSender.java index c17335f..e1643ce 100644 --- a/src/main/java/com/loki/lochat/managers/commands/MessageSender.java +++ b/src/main/java/com/loki/lochat/managers/commands/MessageSender.java @@ -1,8 +1,10 @@ package com.loki.lochat.managers.commands; import com.loki.lochat.utils.format.ChatFormatter; + import net.kyori.adventure.text.Component; import net.kyori.adventure.title.Title; + import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -10,6 +12,9 @@ import java.time.Duration; public class MessageSender { + private MessageSender() { + } + public static void sendChat(String target, Player sender, String message) { Component formatted = ChatFormatter.parse(message); diff --git a/src/main/java/com/loki/lochat/managers/commands/PlaceholderProcessor.java b/src/main/java/com/loki/lochat/managers/commands/PlaceholderProcessor.java index a50e245..3b0e7ff 100644 --- a/src/main/java/com/loki/lochat/managers/commands/PlaceholderProcessor.java +++ b/src/main/java/com/loki/lochat/managers/commands/PlaceholderProcessor.java @@ -4,6 +4,9 @@ import org.bukkit.entity.Player; public class PlaceholderProcessor { + private PlaceholderProcessor() { + } + public static String process(String message, Player player, String[] args) { String result = message; diff --git a/src/main/java/com/loki/lochat/renderer/EnhancedChatRenderer.java b/src/main/java/com/loki/lochat/renderer/EnhancedChatRenderer.java index 6313d1f..437d5d4 100644 --- a/src/main/java/com/loki/lochat/renderer/EnhancedChatRenderer.java +++ b/src/main/java/com/loki/lochat/renderer/EnhancedChatRenderer.java @@ -1,20 +1,23 @@ package com.loki.lochat.renderer; import com.loki.lochat.renderer.components.*; -import com.loki.lochat.utils.player.MentionHandler; import com.loki.lochat.utils.format.TextFormatter; -import io.papermc.paper.chat.ChatRenderer; +import com.loki.lochat.utils.player.MentionHandler; + import net.kyori.adventure.audience.Audience; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.event.HoverEvent; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.TextColor; + import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import java.util.List; +import io.papermc.paper.chat.ChatRenderer; + /** * Рендерер чата — глобальный и локальный режимы */ @@ -185,7 +188,9 @@ public class EnhancedChatRenderer implements ChatRenderer { .replace("{food}", String.valueOf(player.getFoodLevel())); hoverBuilder.append(com.loki.lochat.utils.format.ChatFormatter.parse(line)); - if (i < hoverLines.size() - 1) hoverBuilder.append(Component.newline()); + if (i < hoverLines.size() - 1) { + hoverBuilder.append(Component.newline()); + } } return displayName @@ -194,7 +199,9 @@ public class EnhancedChatRenderer implements ChatRenderer { } private TextColor parseColor(String hex) { - if (hex == null || hex.isBlank()) return FALLBACK_COLOR; + if (hex == null || hex.isBlank()) { + return FALLBACK_COLOR; + } String n = hex.startsWith("#") ? hex : "#" + hex; TextColor c = TextColor.fromHexString(n); return c != null ? c : FALLBACK_COLOR; diff --git a/src/main/java/com/loki/lochat/renderer/components/EmojiComponent.java b/src/main/java/com/loki/lochat/renderer/components/EmojiComponent.java index 9ae30a5..08ac0d1 100644 --- a/src/main/java/com/loki/lochat/renderer/components/EmojiComponent.java +++ b/src/main/java/com/loki/lochat/renderer/components/EmojiComponent.java @@ -3,10 +3,14 @@ package com.loki.lochat.renderer.components; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.format.TextColor; + import org.bukkit.configuration.ConfigurationSection; public class EmojiComponent { + private EmojiComponent() { + } + public static Component build(ConfigurationSection emojiSection) { if (emojiSection == null || !emojiSection.getBoolean("enabled", false)) { return Component.empty(); diff --git a/src/main/java/com/loki/lochat/renderer/components/GradientBuilder.java b/src/main/java/com/loki/lochat/renderer/components/GradientBuilder.java index 8e7e79a..0d184b5 100644 --- a/src/main/java/com/loki/lochat/renderer/components/GradientBuilder.java +++ b/src/main/java/com/loki/lochat/renderer/components/GradientBuilder.java @@ -8,6 +8,9 @@ import java.util.List; public class GradientBuilder { + private GradientBuilder() { + } + public static Component build(String text, List colors) { if (colors == null || colors.size() < 2) { return Component.text(text); diff --git a/src/main/java/com/loki/lochat/renderer/components/UrlProcessor.java b/src/main/java/com/loki/lochat/renderer/components/UrlProcessor.java index f84b311..ed9673f 100644 --- a/src/main/java/com/loki/lochat/renderer/components/UrlProcessor.java +++ b/src/main/java/com/loki/lochat/renderer/components/UrlProcessor.java @@ -10,6 +10,9 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; public class UrlProcessor { + private UrlProcessor() { + } + private static final Pattern URL_PATTERN = Pattern.compile( "https?://[\\w\\-._~:/?#\\[\\]@!$&'()*+,;=%]+" ); diff --git a/src/main/java/com/loki/lochat/utils/color/ColorConverter.java b/src/main/java/com/loki/lochat/utils/color/ColorConverter.java index fb5de3c..2e5972c 100644 --- a/src/main/java/com/loki/lochat/utils/color/ColorConverter.java +++ b/src/main/java/com/loki/lochat/utils/color/ColorConverter.java @@ -9,6 +9,9 @@ import java.util.regex.Pattern; */ public class ColorConverter { + private ColorConverter() { + } + private static final Pattern HEX_PATTERN_1 = Pattern.compile("&#([0-9a-fA-F]{6})"); private static final Pattern HEX_PATTERN_2 = Pattern.compile("(?)"); @@ -66,7 +69,9 @@ public class ColorConverter { * Конвертирует legacy форматы цветов в MiniMessage формат */ public static String convertLegacyFormats(String message) { - if (message == null) return ""; + if (message == null) { + return ""; + } // Конвертируем &#RRGGBB в message = convertHexFormat1(message); @@ -138,7 +143,9 @@ public class ColorConverter { * Экранирует текст для безопасного использования внутри MiniMessage тегов */ public static String escapeForMiniMessage(String text) { - if (text == null) return ""; + if (text == null) { + return ""; + } return text.replace("\\", "\\\\").replace("<", "\\<"); } } diff --git a/src/main/java/com/loki/lochat/utils/format/ChatFormatter.java b/src/main/java/com/loki/lochat/utils/format/ChatFormatter.java index dc8c5fa..db76dfb 100644 --- a/src/main/java/com/loki/lochat/utils/format/ChatFormatter.java +++ b/src/main/java/com/loki/lochat/utils/format/ChatFormatter.java @@ -1,9 +1,11 @@ package com.loki.lochat.utils.format; import com.loki.lochat.utils.color.ColorConverter; + import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; + import org.bukkit.entity.Player; /** @@ -20,13 +22,17 @@ public final class ChatFormatter { // ========== Базовые методы ========== public static Component parse(String message) { - if (message == null) return Component.empty(); + if (message == null) { + return Component.empty(); + } String converted = ColorConverter.convertLegacyFormats(message); return MM.deserialize(converted); } public static Component parseWithDefaultMessageColor(String message, String hexCode) { - if (message == null) message = ""; + if (message == null) { + message = ""; + } String hex = (hexCode == null || hexCode.isBlank()) ? "#FFFFFF" : (hexCode.startsWith("#") ? hexCode : "#" + hexCode); String escaped = ColorConverter.escapeForMiniMessage(message); @@ -34,7 +40,9 @@ public final class ChatFormatter { } public static Component parse(String message, String... replacements) { - if (message == null) return Component.empty(); + if (message == null) { + return Component.empty(); + } String result = message; for (int i = 0; i + 1 < replacements.length; i += 2) { result = result.replace(replacements[i], replacements[i + 1]); @@ -46,7 +54,9 @@ public final class ChatFormatter { // ========== Утилиты ========== public static String stripTags(String message) { - if (message == null) return ""; + if (message == null) { + return ""; + } return PLAIN.serialize(MM.deserialize(message)); } @@ -55,7 +65,9 @@ public final class ChatFormatter { } public static String toPlain(Object obj) { - if (obj == null) return ""; + if (obj == null) { + return ""; + } if (obj instanceof Component component) { return PLAIN.serialize(component); } @@ -69,7 +81,9 @@ public final class ChatFormatter { } public static String convertAllColors(String message) { - if (message == null) return ""; + if (message == null) { + return ""; + } return ColorConverter.convertLegacyFormats(message); } diff --git a/src/main/java/com/loki/lochat/utils/format/TextFormatter.java b/src/main/java/com/loki/lochat/utils/format/TextFormatter.java index 1329ef0..f6bbaf4 100644 --- a/src/main/java/com/loki/lochat/utils/format/TextFormatter.java +++ b/src/main/java/com/loki/lochat/utils/format/TextFormatter.java @@ -7,6 +7,9 @@ import java.util.regex.Pattern; public class TextFormatter { + private TextFormatter() { + } + private static final Pattern BOLD_PATTERN = Pattern.compile("\\*\\*(.+?)\\*\\*"); private static final Pattern ITALIC_PATTERN = Pattern.compile("\\*(.+?)\\*"); private static final Pattern UNDERLINE_PATTERN = Pattern.compile("__(.+?)__"); diff --git a/src/main/java/com/loki/lochat/utils/platform/AdventureManager.java b/src/main/java/com/loki/lochat/utils/platform/AdventureManager.java index 631ecca..1910f23 100644 --- a/src/main/java/com/loki/lochat/utils/platform/AdventureManager.java +++ b/src/main/java/com/loki/lochat/utils/platform/AdventureManager.java @@ -9,6 +9,9 @@ import org.bukkit.plugin.Plugin; */ public class AdventureManager { + private AdventureManager() { + } + private static boolean adventureAvailable = false; private static Object audiences; diff --git a/src/main/java/com/loki/lochat/utils/platform/FoliaUtil.java b/src/main/java/com/loki/lochat/utils/platform/FoliaUtil.java index f9f8aae..08027fb 100644 --- a/src/main/java/com/loki/lochat/utils/platform/FoliaUtil.java +++ b/src/main/java/com/loki/lochat/utils/platform/FoliaUtil.java @@ -8,6 +8,9 @@ import org.bukkit.plugin.java.JavaPlugin; * Утилита для совместимости с Folia */ public class FoliaUtil { + private FoliaUtil() { + } + private static boolean isFolia; static { diff --git a/src/main/java/com/loki/lochat/utils/player/DistanceUtil.java b/src/main/java/com/loki/lochat/utils/player/DistanceUtil.java index 6557328..45ba0fa 100644 --- a/src/main/java/com/loki/lochat/utils/player/DistanceUtil.java +++ b/src/main/java/com/loki/lochat/utils/player/DistanceUtil.java @@ -7,6 +7,9 @@ import org.bukkit.entity.Player; */ public class DistanceUtil { + private DistanceUtil() { + } + public static boolean isInRange(Player player1, Player player2, int radius) { if (!player1.getWorld().equals(player2.getWorld())) { return false; diff --git a/src/main/java/com/loki/lochat/utils/player/MentionHandler.java b/src/main/java/com/loki/lochat/utils/player/MentionHandler.java index f4b19d5..d96a165 100644 --- a/src/main/java/com/loki/lochat/utils/player/MentionHandler.java +++ b/src/main/java/com/loki/lochat/utils/player/MentionHandler.java @@ -1,10 +1,12 @@ package com.loki.lochat.utils.player; import com.loki.lochat.utils.platform.FoliaUtil; + import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; + import org.bukkit.Bukkit; import org.bukkit.Sound; import org.bukkit.entity.Player;