@@ -144,19 +144,15 @@ public void onChat(AsyncChatEvent event) {
144144 " triggered rule '" + rule .name + "'" );
145145 }
146146
147- final List <String > cmdsToExecute ;
148- if (!rule .answerCmdsRandom .isEmpty () && random .nextBoolean ()) {
149- cmdsToExecute = new ArrayList <>(rule .answerCmdsRandom );
150- } else {
151- cmdsToExecute = new ArrayList <>(rule .answerCmds );
147+ // Сначала выполняем основные команды (answer_cmds)
148+ for (String cmd : rule .answerCmds ) {
149+ executeCommand (player , message , cmd , rule .delayTicks );
152150 }
153151
154- if (rule .delayTicks > 0 ) {
155- Bukkit .getScheduler ().runTaskLater (plugin , () -> {
156- executeCommands (player , message , cmdsToExecute );
157- }, rule .delayTicks );
158- } else {
159- executeCommands (player , message , cmdsToExecute );
152+ // Затем, если есть случайные ответы, выбираем ОДИН случайный
153+ if (!rule .answerCmdsRandom .isEmpty ()) {
154+ String randomCmd = rule .answerCmdsRandom .get (random .nextInt (rule .answerCmdsRandom .size ()));
155+ executeCommand (player , message , randomCmd , rule .delayTicks );
160156 }
161157
162158 lastTriggerTime .put (player .getUniqueId (), now );
@@ -166,14 +162,18 @@ public void onChat(AsyncChatEvent event) {
166162 }
167163 }
168164
169- private void executeCommands (Player player , String message , List <String > commands ) {
170- for (String cmd : commands ) {
171- String processed = cmd
172- .replace ("%player_name%" , player .getName ())
173- .replace ("%player_uuid%" , player .getUniqueId ().toString ())
174- .replace ("%player_world%" , player .getWorld ().getName ())
175- .replace ("%message%" , message );
176-
165+ private void executeCommand (Player player , String message , String cmd , long delayTicks ) {
166+ String processed = cmd
167+ .replace ("%player_name%" , player .getName ())
168+ .replace ("%player_uuid%" , player .getUniqueId ().toString ())
169+ .replace ("%player_world%" , player .getWorld ().getName ())
170+ .replace ("%message%" , message );
171+
172+ if (delayTicks > 0 ) {
173+ Bukkit .getScheduler ().runTaskLater (plugin , () -> {
174+ CommandExecutor .execute (plugin , player , null , processed );
175+ }, delayTicks );
176+ } else {
177177 CommandExecutor .execute (plugin , player , null , processed );
178178 }
179179 }
0 commit comments