Для начала тз грамотно сделать.
В какой момент, какой командой.
Если проще, можно использовать в скриптах и в форге скриптах функции чата. Берешь скриптер из мода.
Например :
В Форге скрипты (предварительно включив их) вставляешь вот это:
var api = Java.type("noppes.npcs.api.NpcAPI").Instance();
var world = api.getIWorlds()[0];
function commandEvent(event) {
try {
var commandName = event.event.getParseResults().getReader().getString();
if (commandName === "ударить всех молнией") {
world.getTempdata().put("молния", true);
}
} catch (e) { }
}
Внутрь НПС в скрипты (предварительно включив их в нпс) вставляешь вот это:
var api = Java.type("noppes.npcs.api.NpcAPI").Instance();
var world = api.getIWorlds()[0];
var thunder = false;
function tick(event) {
try {
if (world.getTempdata().get("молния") && !thunder ) {
world.thunderStrike(event.npc.x, event.npc.y, event.npc.z)
thunder = true;
event.npc.timers.forceStart(1, 100, true);
} catch (e) { event.npc.say("Ошибка в tick: " + (e.stack || e)) }
}
function timer(event) {
try {
if (event.id === 1) {
world.getTempdata().remove("молния")
thunder = false;
event.npc.timers.stop(1);
}
} catch (e) { event.npc.say("Ошибка в timer: " + (e.stack || e)) }
}
Возможно опечататься мог или еще что, по памяти написал. В апи документашки по моду сам можешь посмотреть верно ли все методы указаны.
Я на 1.20.1 пишу, но возможно и на 1.16.5 заработает.
Суть в том, что ты пишешь в чат:
ударить всех молнией
И все прогруженные нпс начнут проверять, есть ли выполненная команда в мире.
Если есть - ударятся молниями и поставят переменную молнии в позицию выполнено.
Запустят таймер на 5 сек. на удаление активации молнии (каждый нпс будет запускать таймер).
Если ударов молниями по нпс не происходят в течении 5 сек, то активация молнии прекращается до следующей команды.
Как т так. Но не факт что будет работать) Тесты нужны ж )
Если у нпс возникнут ошибки - он об этом скажет, указывая на конкретное место где ошибка произошла.