Вопрос Плагин для замены звуков

forge

Пользователь
Сообщения
44
Как можно заменять один звук другим. Например. Изменять звук удара игрока или отключать его
 
Как можно заменять один звук другим. Например. Изменять звук удара игрока или отключать его
Ну базово это можно заменить через ресурспак.
Конкретно звуки ударов вроде бы как можно заменять или отключать в некоторых антирелог/пвп плагинах.
Объединено

Конкретно звуки ударов вроде бы как можно заменять или отключать в некоторых антирелог/пвп плагинах.
offtop Хотя в этом я не уверен, но эффекты при ударе точно можно редактировать.
 
Последнее редактирование:
Ну базово это можно заменить через ресурспак.
Нужно не через ресурспак
Конкретно звуки ударов вроде бы как можно заменять или отключать в некоторых антирелог/пвп плагинах.
Я посмотрю. Мне также интересно, можно ли отключить звук шагов. В зонах, где много игроков, этих звуков слишком много. Я бы хотел отключить звук шагов в зоне спавна
 
Нужно не через ресурспак

Я посмотрю. Мне также интересно, можно ли отключить звук шагов. В зонах, где много игроков, этих звуков слишком много. Я бы хотел отключить звук шагов в зоне спавна
Звуки шагов и сущностей не отправляются сервером - они создаются самим клиентом
Так что заблокировать их выборочно (без модов) невозможно

Максимум можно заблокировать все звуки - есть специальный серверный пакет для этого (и команда /stopsound если правильно помню)
 
Последнее редактирование:
Звуки шагов и сущностей не отправляются сервером - они создаются самим клиентом
Так что заблокировать их выборочно (без модов) невозможно
Значит, я не могу изменить определенные звуки. Можно поменять звук получения урона?
Максимум можно заблокировать все звуки - есть специальный серверный пакет для этого (и команда /stopsound если правильно помню)
Я хотел бы заблокировать определенные звуки, если можно без модификаций
 
Я хотел бы заблокировать определенные звуки, если можно без модификаций
Самое правильное решение это работа с Ресурспаком. Если у тебя новая версия - не мучайся и используй ресурспак, это уже обыденность для серверов. Рекомендую плагин Nexo.
 
Значит, я не могу изменить определенные звуки. Можно поменять звук получения урона?

Я хотел бы заблокировать определенные звуки, если можно без модификаций
Это уже в теории возможно (если засунуть миксин в нужное место, но такой возможности у ведроспиготов нет)
Но я без понятия как ты будешь отслеживать какой звук принадлежит какому мобу, тк инфа об этом не передается в пакете
А по координатам - невероятно медленно

Если только нет какого-то специального события на это дело (тут уже не подскажу тк не копался в этом полноценно больше 5 лет)
 
Как можно заменять один звук другим. Например. Изменять звук удара игрока или отключать его
Через PacketEvents можешь ловить пакет звука и отменять его или изменять
 
Звук зависит от типа брони. Например. Для удара по игроку без брони звук обычный, но при ударе по игроку в железной броне звук голема. И отключения звука шагов в определённом мире
 
Как можно заменять один звук другим. Например. Изменять звук удара игрока или отключать его
Использование ProtocolLib, Datapack с sounds.json либо ресурспаком, пример

ResourcePack - assets - minecraft - sounds - entity - player - hurt1.ogg (замена на свой звук либо тишину)

Форматирование (BB-код):
entity/player/hurt1.ogg до hurt3.ogg - звуки получения урона
entity/player/attack/strong.ogg - сильный удар
entity/player/attack/weak.ogg - слабый удар
entity/player/attack/crit.ogg - критический удар
 
Использование ProtocolLib, Datapack с sounds.json либо ресурспаком, пример

ResourcePack - assets - minecraft - sounds - entity - player - hurt1.ogg (замена на свой звук либо тишину)

Форматирование (BB-код):
entity/player/hurt1.ogg до hurt3.ogg - звуки получения урона
entity/player/attack/strong.ogg - сильный удар
entity/player/attack/weak.ogg - слабый удар
entity/player/attack/crit.ogg - критический удар
Суть вопроса в том чтобы заменить конкретно только у 1 единственного моба (ну или узкий круг сущностей) звук а у всех других нет
Чтобы заменить все звуки - много ума не надо и действительно хватит ресурспака.

Легкого решения для этого нет. Если через события - сначала полностью отменять урон, а потом наносить столько же (принудительно) но без звука и ставить уже свой звук - можно много чего поломать

Через переопределение пакетов - будет невероятно медленно, тк при отправке пакета со звком не понятно какая сущность с этим связана - единственный вариант - перебирать сущностей по координатам, что очень дорогая операция

Так что остается только 2 варианта - написать мод к-рый будет корректировать звуки (тем же способом что выше но на стороне клиента)

Либо потрошить ядро, чтобы найти то самое нужное место, куда втолкать свой код и с помощью ASM точечно ручками на уровне байткода дописать логику в нужное место
ну или пересобирать конкретное ядро с нужными правками чтобы добавить нужное api
 
Последнее редактирование:
Как через ProtocolLib?
Java:
protocolManager.addPacketListener(new PacketAdapter(plugin, PacketType.Play.Server.NAMED_SOUND_EFFECT) {
    @Override
    public void onPacketSending(PacketEvent event) {
        PacketContainer packet = event.getPacket();
        String soundName = packet.getSoundEffects().read(0).toString();
        
        if (soundName.contains("entity.player.hurt")) {
            event.setCancelled(true); #Оменить звук
            #Или заменить на другой
        }
    }
});
 
Последнее редактирование:
Назад
Сверху Снизу