chore(release): v0.1.4

### Added
- Console error logging
- Configurable message text

### Fixed
- Tick timeout error

### Changed
- Renamed command class from `ChatitCommand.java` to `ChatITCommand.java`
This commit is contained in:
itqop 2024-10-21 18:21:24 +03:00
parent 39b750d590
commit b78e25ceac
5 changed files with 104 additions and 10 deletions

View File

@ -4,6 +4,37 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/).
## [0.1.4] - 2024-10-28
### Added
- **Console Error Logging**:
- Implemented comprehensive error logging to the console.
- Facilitates easier debugging and monitoring by providing detailed error messages during runtime.
- **Configurable Message Text**:
- Introduced the ability to customize message texts via configuration.
- Users can now modify the default messages to better fit their server's communication style.
### Fixed
- **Tick Timeout Error**:
- Resolved the tick timeout issue that caused the server to lag or crash under high load.
- Enhanced the stability and performance of the mod by ensuring smoother execution of tick cycles.
### Changed
- **Renamed Command Class**:
- Renamed the command class from `ChatitCommand.java` to `ChatITCommand.java`.
- Improves consistency and readability within the codebase, aligning with naming conventions.
### Summary of Changes
- **Enhanced Debugging**: With the addition of console error logs, developers can now trace and fix issues more efficiently.
- **Increased Configurability**: Allowing message texts to be configured provides greater flexibility for server administrators.
- **Improved Stability**: Fixing the tick timeout error ensures that the mod runs more reliably, even under heavy usage.
- **Codebase Refinement**: Renaming the command class contributes to a more organized and maintainable code structure.
## [0.1.3] - 2024-10-21
### Added

View File

@ -4,6 +4,37 @@
Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.0.0/), и этот проект придерживается [Семантического Версионирования](https://semver.org/lang/ru/).
## [0.1.4] - 2024-10-28
### Добавлено
- **Логирование ошибок в консоль**:
- Реализовано комплексное логирование ошибок в консоль.
- Облегчает отладку и мониторинг, предоставляя подробные сообщения об ошибках во время выполнения.
- **Настраиваемый текст сообщений**:
- Введена возможность настройки текста сообщений через конфигурацию.
- Пользователи теперь могут изменять стандартные сообщения, чтобы они лучше соответствовали стилю общения сервера.
### Исправлено
- **Ошибка таймаута тика**:
- Исправлена проблема с таймаутом тика, которая вызывала зависание или сбой сервера при высокой нагрузке.
- Повышена стабильность и производительность мода за счет обеспечения более плавного выполнения циклов тиков.
### Изменено
- **Переименование класса команды**:
- Переименован класс команды с `ChatitCommand.java` на `ChatITCommand.java`.
- Улучшает согласованность и читаемость в кодовой базе, соответствуя стандартам именования.
### Сводка изменений
- **Улучшенная отладка**: С добавлением логирования ошибок в консоль разработчики теперь могут более эффективно отслеживать и исправлять проблемы.
- **Повышенная настраиваемость**: Возможность настройки текста сообщений предоставляет большую гибкость для администраторов серверов.
- **Повышенная стабильность**: Исправление ошибки таймаута тика обеспечивает более надежную работу мода, даже при высокой нагрузке.
- **Улучшение кодовой базы**: Переименование класса команды способствует более организованной и поддерживаемой структуре кода.
## [0.1.3] - 2024-10-21
### Добавлено

View File

@ -38,7 +38,7 @@ mod_name=ChatIT
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
mod_license=All Rights Reserved
# The mod version. See https://semver.org/
mod_version=0.1.3-BETA
mod_version=0.1.4-BETA
# The group ID for the mod. It is only important when publishing as an artifact to a Maven repository.
# This should match the base package used for the mod sources.
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html

View File

@ -42,22 +42,28 @@ public class ChatEventHandler {
future.thenAccept(profanityScore -> {
if (server != null) {
server.execute(() -> {
double threshold = Config.profanityThreshold; // Получаем порог из конфигурации
double threshold = Config.profanityThreshold;
if (profanityScore > threshold && !PlayerConfigManager.hasAdultContentEnabled(sender)) {
MutableComponent errorComponent = createErrorMessage(sender, message);
sender.sendSystemMessage(errorComponent);
MutableComponent adultComponent = createAdultMessage(sender, message);
sender.sendSystemMessage(adultComponent);
} else {
boolean messageSent = false;
for (ServerPlayer receiver : server.getPlayerList().getPlayers()) {
PlayerConfigManager.ensurePlayerExists(receiver);
if (profanityScore > threshold && !PlayerConfigManager.hasAdultContentEnabled(receiver)) {
continue;
}
if (isGlobal || (receiver.getCommandSenderWorld() == sender.getCommandSenderWorld() && receiver.position().distanceTo(sender.position()) <= 50)) {
if (((receiver.getCommandSenderWorld() == sender.getCommandSenderWorld() && receiver.position().distanceTo(sender.position()) <= 50) && (sender != receiver)) || isGlobal) {
receiver.sendSystemMessage(chatComponent);
messageSent = true;
}
}
if (!messageSent) {
MutableComponent errorComponent = createErrorMessage(sender, Config.messageLocal);
sender.sendSystemMessage(errorComponent);
}
}
});
}
@ -81,10 +87,22 @@ public class ChatEventHandler {
MutableComponent prefixComponent = openBracket.append(errorText).append(closeBracket);
Component playerName = Component.literal(player.getName().getString());
Component messageComponent = Component.literal(": " + message);
Component messageComponent = Component.literal(": " + message).withStyle(ChatFormatting.RED);;
return prefixComponent.append(playerName).append(messageComponent);
return prefixComponent.append(messageComponent);
}
private static MutableComponent createAdultMessage(ServerPlayer player, String message) {
MutableComponent openBracket = Component.literal("[");
MutableComponent errorText = Component.literal("ADULT")
.withStyle(ChatFormatting.RED);
MutableComponent closeBracket = Component.literal("] ");
MutableComponent prefixComponent = openBracket.append(errorText).append(closeBracket);
Component errorMessage = Component.literal(Config.messageAdult).withStyle(ChatFormatting.RED);
return prefixComponent.append(errorMessage);
}
private static MutableComponent createChatMessage(ServerPlayer player, String message, boolean isGlobal) {

View File

@ -16,8 +16,10 @@ public class Config {
public static ForgeConfigSpec.ConfigValue<String> HOST_API;
public static ForgeConfigSpec.BooleanValue DEFAULT_ADULT;
public static ForgeConfigSpec.BooleanValue USE_REGEX;
public static ForgeConfigSpec.DoubleValue PROFANITY_THRESHOLD; // Новое
public static ForgeConfigSpec.ConfigValue<String> PROFANITY_REGEX; // Новое
public static ForgeConfigSpec.DoubleValue PROFANITY_THRESHOLD;
public static ForgeConfigSpec.ConfigValue<String> PROFANITY_REGEX;
public static ForgeConfigSpec.ConfigValue<String> MESSAGE_ADULT;
public static ForgeConfigSpec.ConfigValue<String> MESSAGE_LOCAL;
static {
BUILDER.comment("Настройки ChatIT");
@ -42,6 +44,14 @@ public class Config {
.comment("Регулярное выражение для проверки мата")
.define("profanity_regex", "(?iu)\\b(?:(?:(?:у|[нз]а|(?:хитро|не)?вз?[ыьъ]|с[ьъ]|(?:и|ра)[зс]ъ?|(?:.\\B)+?[оаеи-])-?)?(?:[её](?:б(?!о[рй]|рач)|п[уа](?:ц|тс))|и[пб][ае][тцд][ьъ]).*?|(?:(?:н[иеа]|(?:ра|и)[зс]|[зд]?[ао](?:т|дн[оа])?|с(?:м[еи])?|а[пб]ч|в[ъы]?|пр[еи])-?)?ху(?:[яйиеёю]|л+и(?!ган)).*?|бл(?:[эя]|еа?)(?:[дт][ьъ]?)?|\\S*?(?:п(?:[иеё]зд|ид[аое]?р|ед(?:р(?!о)|[аое]р|ик)|охую)|бля(?:[дбц]|тс)|[ое]ху[яйиеё]|хуйн).*?|(?:о[тб]?|про|на|вы)?м(?:анд(?:[ауеыи](?:л(?:и[сзщ])?[ауеиы])?|ой|[ао]в.*?|юк(?:ов|[ауи])?|е[нт]ь|ища)|уд(?:[яаиое].+?|е?н(?:[ьюия]|ей))|[ао]л[ао]ф[ьъ](?:[яиюе]|[еёо]й))|елд[ауые].*?|ля[тд]ь|(?:[нз]а|по)х)\\b"); // Дефолтное регулярное выражение
MESSAGE_ADULT = BUILDER
.comment("Сообщение запрета на маты.")
.define("message_adult", "Вы пытаетесь использовать ненормативную лексику в своем сообщении.");
MESSAGE_LOCAL = BUILDER
.comment("Сообщение предупреждения о том, что никого рядом нет")
.define("message_local", "Вас никто не услышал, поставьте ! перед сообщением.");
COMMON_CONFIG = BUILDER.build();
}
@ -50,6 +60,8 @@ public class Config {
public static boolean useRegex;
public static double profanityThreshold;
public static String profanityRegex;
public static String messageAdult;
public static String messageLocal;
@SubscribeEvent
public static void onLoad(final ModConfigEvent event) {
@ -58,5 +70,7 @@ public class Config {
useRegex = USE_REGEX.get();
profanityThreshold = PROFANITY_THRESHOLD.get();
profanityRegex = PROFANITY_REGEX.get();
messageAdult = MESSAGE_ADULT.get();
messageLocal = MESSAGE_LOCAL.get();
}
}