MessageOverHead | Сообщения чата над головой

MessageOverHead | Сообщения чата над головой 2.52

Нет прав для скачивания

TheDiVaZo

Пользователь
Сообщения
13
TheDiVaZo добавил(а) новый ресурс:

MessageOverHead | Сообщения чата над головой - Плагин позволяет добавлять кастомизированные сообщения над головой того, кто их пишет!

MessageOverHead
Пожалуйста, пишите обо всех ошибках и недоработках на GITHUB
You must be registered for see medias
Плагин на spigotmc.org: [COLOR=rgb(243, 121...[/quote]

Узнать больше об этом ресурсе...
 
Файл манифеста не нужен плагинам
.idea, *.iml убирают через gitignore

Без сборщика толку от исходного кода мало не заметил градл. Почему он в отдельной папке, вроде бы модулей то нет? И почему в проекте 2 конфига?

Обработчик ReloadConfig стоит назвать так, чтобы название имело отношение к командам. Проверять право и возвращать false некорректно, для этого как минимум есть установка прав через конфигурацию команды.

Называть методы в стиле "sound" и "particle" неправильно

Вместо new Random() лучше использовать ThreadLocalRandom.current() на каждом вызове (не сохраняй его в поле)

Меня удивило, что Bubble.java содержит кучу геттеров и сеттеров, хотя в проекте есть lombok

Listeners.java зачем то имеет конструктор, хотя его можно было заменить lombok. Более того, поле, которое конструктор дёргает, вообще без модификаторов. Сам класс написан очень плохо по стилю

offtop Не хотел такое писать на гитхабе
 
Последнее редактирование:
Хорошо, я учту ваши замечания.
1. Модули были раньше, но я их убрал, а вот это осталось
2. Не понял в этом моменте. Почему вам не понравилось название ReloadConfig?
3. А какое название тогда вы бы могли бы предложить?
4. Хорошо
5. Забыл убрать их. Заменю на ламбок. Раньше проект ломбок не содержал, а класс мало редактировался
6. Исправлю по стилистике
Файл манифеста не нужен плагинам
.idea, *.iml убирают через gitignore

Без сборщика толку от исходного кода мало не заметил градл. Почему он в отдельной папке, вроде бы модулей то нет? И почему в проекте 2 конфига?

Обработчик ReloadConfig стоит назвать так, чтобы название имело отношение к командам. Проверять право и возвращать false некорректно, для этого как минимум есть установка прав через конфигурацию команды.

Называть методы в стиле "sound" и "particle" неправильно

Вместо new Random() лучше использовать ThreadLocalRandom.current() на каждом вызове (не сохраняй его в поле)

Меня удивило, что Bubble.java содержит кучу геттеров и сеттеров, хотя в проекте есть lombok

Listeners.java зачем то имеет конструктор, хотя его можно было заменить lombok. Более того, поле, которое конструктор дёргает, вообще без модификаторов. Сам класс написан очень плохо по стилю

offtop Не хотел такое писать на гитхабе
Объединено

На гитхабе исправлены недочеты, о которых вы говорили
 
Последнее редактирование:
TheDiVaZo обновил(а) ресурс MessageOverHead | Сообщения чата над головой новой записью:

Фикс и исправление багов

- Исправлено некорректное отображение цвета- Изменен алгоритм резки по линии.
- Исправлена ошибка с нулевым символом
- Исправлена ошибка с отображением HEX цветов
- Исправлена ошибка на версии 1.18.2

- Теперь цветовые коды не учитываются при расчете длины сообщения.

- Добавлена поддержка невидимости (API спигота, зелье невидимости, SuperVanish). Если игрок невидим, чат над его головой будет скрыт от других игроков

- Добавлена метрика и улучшен само обновляющийся конфиг
- исправлена...

Узнать больше об этом обновлении...
 
2. Не понял в этом моменте. Почему вам не понравилось название ReloadConfig?
Потому что названия классов не должны быть глаголами. ConfigReloader, ReloadCommand - нормальные варианты
3. А какое название тогда вы бы могли бы предложить?
А методы должны быть глаголами. Условно, не particle, а spawnParticle
 
ТАм наверное создается armorstand это может положить крупный сервер
 
Не работает, голограмма не удаляется. Версия 1.17.1 Java 16 (Установлен ProtocolLib)

Код:
[04:01:01 WARN]: [MessageOverHead] Task #262 for MessageOverHead v2.5 generated an exception
java.lang.RuntimeException: Cannot set field private final it.unimi.dsi.fastutil.ints.IntList net.minecraft.network.protocol.game.PacketPlayOutEntityDestroy.a to value [[I@4f129e4b]
        at com.comphenix.protocol.reflect.accessors.DefaultFieldAccessor.set(DefaultFieldAccessor.java:46) ~[ProtocolLib.jar:?]
        at com.comphenix.protocol.reflect.FieldUtils.writeField(FieldUtils.java:439) ~[ProtocolLib.jar:?]
        at com.comphenix.protocol.reflect.StructureModifier.writeInternal(StructureModifier.java:379) ~[ProtocolLib.jar:?]
        at com.comphenix.protocol.reflect.StructureModifier.write(StructureModifier.java:349) ~[ProtocolLib.jar:?]
        at com.comphenix.protocol.reflect.StructureModifier.writeSafely(StructureModifier.java:414) ~[ProtocolLib.jar:?]
        at thedivazo.utils.Bubble.remove(Bubble.java:158) ~[MessageOverHead.jar:?]
        at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
        at thedivazo.utils.BubbleMessage.remove(BubbleMessage.java:102) ~[MessageOverHead.jar:?]
        at thedivazo.listener.Listeners$2.run(Listeners.java:117) ~[MessageOverHead.jar:?]
        at org.bukkit.craftbukkit.v1_17_R1.scheduler.CraftTask.run(CraftTask.java:101) ~[patched_1.17.1.jar:git-Airplane-"74774a0"]
        at org.bukkit.craftbukkit.v1_17_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:483) ~[patched_1.17.1.jar:git-Airplane-"74774a0"]
        at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1567) ~[patched_1.17.1.jar:git-Airplane-"74774a0"]
        at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:492) ~[patched_1.17.1.jar:git-Airplane-"74774a0"]
        at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1483) ~[patched_1.17.1.jar:git-Airplane-"74774a0"]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1282) ~[patched_1.17.1.jar:git-Airplane-"74774a0"]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319) ~[patched_1.17.1.jar:git-Airplane-"74774a0"]
        at java.lang.Thread.run(Thread.java:831) ~[?:?]
Caused by: java.lang.ClassCastException: Cannot cast java.util.ImmutableCollections$List12 to it.unimi.dsi.fastutil.ints.IntList
        at java.lang.Class.cast(Class.java:3818) ~[?:?]
        at com.comphenix.protocol.reflect.accessors.DefaultFieldAccessor.set(DefaultFieldAccessor.java:43) ~[ProtocolLib.jar:?]
        ... 16 more
 
Уже заработало. Я исправил эту ошибку. Пожалуйста, пишите обо всех ошибкан на гитхаб!
На spigot.org последняя версия 2.51 исправляющая эту ошибку
Не работает, голограмма не удаляется. Версия 1.17.1 Java 16 (Установлен ProtocolLib)

Код:
[04:01:01 WARN]: [MessageOverHead] Task #262 for MessageOverHead v2.5 generated an exception
java.lang.RuntimeException: Cannot set field private final it.unimi.dsi.fastutil.ints.IntList net.minecraft.network.protocol.game.PacketPlayOutEntityDestroy.a to value [[I@4f129e4b]
        at com.comphenix.protocol.reflect.accessors.DefaultFieldAccessor.set(DefaultFieldAccessor.java:46) ~[ProtocolLib.jar:?]
        at com.comphenix.protocol.reflect.FieldUtils.writeField(FieldUtils.java:439) ~[ProtocolLib.jar:?]
        at com.comphenix.protocol.reflect.StructureModifier.writeInternal(StructureModifier.java:379) ~[ProtocolLib.jar:?]
        at com.comphenix.protocol.reflect.StructureModifier.write(StructureModifier.java:349) ~[ProtocolLib.jar:?]
        at com.comphenix.protocol.reflect.StructureModifier.writeSafely(StructureModifier.java:414) ~[ProtocolLib.jar:?]
        at thedivazo.utils.Bubble.remove(Bubble.java:158) ~[MessageOverHead.jar:?]
        at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
        at thedivazo.utils.BubbleMessage.remove(BubbleMessage.java:102) ~[MessageOverHead.jar:?]
        at thedivazo.listener.Listeners$2.run(Listeners.java:117) ~[MessageOverHead.jar:?]
        at org.bukkit.craftbukkit.v1_17_R1.scheduler.CraftTask.run(CraftTask.java:101) ~[patched_1.17.1.jar:git-Airplane-"74774a0"]
        at org.bukkit.craftbukkit.v1_17_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:483) ~[patched_1.17.1.jar:git-Airplane-"74774a0"]
        at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1567) ~[patched_1.17.1.jar:git-Airplane-"74774a0"]
        at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:492) ~[patched_1.17.1.jar:git-Airplane-"74774a0"]
        at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1483) ~[patched_1.17.1.jar:git-Airplane-"74774a0"]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1282) ~[patched_1.17.1.jar:git-Airplane-"74774a0"]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319) ~[patched_1.17.1.jar:git-Airplane-"74774a0"]
        at java.lang.Thread.run(Thread.java:831) ~[?:?]
Caused by: java.lang.ClassCastException: Cannot cast java.util.ImmutableCollections$List12 to it.unimi.dsi.fastutil.ints.IntList
        at java.lang.Class.cast(Class.java:3818) ~[?:?]
        at com.comphenix.protocol.reflect.accessors.DefaultFieldAccessor.set(DefaultFieldAccessor.java:43) ~[ProtocolLib.jar:?]
        ... 16 more

Это даст нагрузку если поставить на крупный сервер?
На стороне сервера арморстанд не обрабатывается, так что нагрузки сильной быть не должно. Я смотрел аналогичный плагин ( - он не обновляется), работает по такому же принципу (спавнить фейковые арморстанды на стороне клиента), и у него на стене написано, что плагин не дает ощутимой нагрузки даже когда онлайн 250 человек.
 
Последнее редактирование:
TheDiVaZo обновил(а) ресурс MessageOverHead | Сообщения чата над головой новой записью:

Версия 2.51! Исправлено удаление сообщений на 1.17

- Исправлена ошибка, которая не позволяла удалять сообщения на версии 1.17! Теперь все работает. Код на гитхабе так же обнавлен

Узнать больше об этом обновлении...
 
TheDiVaZo, Спасибо, скоро протестю. Мне лучше сюда писать в обсуждениях, так удобнее
 
Не зависит от плагина на голограмы это круто, но что будет если у голограм и твоего плагина будет ентити с одним и тем же uuid?
 
Ну не кретично, но как минимум может существовать только один уникальный uuid, а значит в лучшем случае просто один из энтити пропадет
 
Не зависит от плагина на голограмы это круто, но что будет если у голограм и твоего плагина будет ентити с одним и тем же uuid?
шанс очень мал. ну можно проверку сделать, может когда-то и выстрелить
 
Ну не кретично, но как минимум может существовать только один уникальный uuid, а значит в лучшем случае просто один из энтити пропадет
Честно, за 2 месяца существования плагина мне никто не присылал ошибку, которая возникла бы по причине одинакого UUID. Но я добавлю проверку в следующем мини обновлении
 
Назад
Сверху Снизу