Как я могу получить вывод команды, выполненной игроком?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как я могу получить вывод команды, выполненной игроком?

Сообщение Anonymous »

Я делаю плагин в бумаге, и мне нужно получить вывод игрока, например, при выполнении команды, если игрок использует: / tpa Получите выход, например: »был отправлен запрос телепортации», пока в Консоль сервера показывает только «Пользователь выдал команду: /tpa» < /p>
package cherry.plugins;

import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerChatEvent;

public class CommandLogger implements Listener {
private final CherryCostume plugin;

// Variable para capturar la salida del comando antes de que se envíe al chat
private String currentCommandSender;
private String lastCommandOutput;

public CommandLogger(CherryCostume plugin) {
this.plugin = plugin;
Bukkit.getPluginManager().registerEvents(this, plugin);
}

@EventHandler
public void onPlayerCommand(PlayerCommandPreprocessEvent event) {
String command = event.getMessage().substring(1); // Remueve la barra inicial
String playerName = event.getPlayer().getName();

// Verificamos si el comando es de tipo /tell o /msg
if (command.startsWith("tell") || command.startsWith("msg")) {
String[] commandParts = command.split(" ", 3);
if (commandParts.length >= 3) {
String targetPlayer = commandParts[1]; // Jugador objetivo
String message = commandParts[2]; // Mensaje del comando

// Guardamos el jugador que envió el comando para comparar más tarde
currentCommandSender = playerName;

// Logueamos el comando ejecutado
plugin.getLogger().info("Comando ejecutado: " + command);
plugin.getLogger().info("Salida: Comando enviado a " + targetPlayer + " con el mensaje: " + message);
}
}
}

@EventHandler
public void onPlayerChat(AsyncPlayerChatEvent event) {
String message = event.getMessage();

// Verificamos si el mensaje corresponde a un susurro
if (message.startsWith("§7[§8[.*§r")) {
String sender = event.getPlayer().getName();

// Solo registramos el mensaje de chat si es de un jugador que acaba de ejecutar un comando
if (sender.equals(currentCommandSender)) {
// Capturamos la salida exacta como aparece en el chat
lastCommandOutput = message;

// Logueamos la salida exacta del chat generada por el comando
plugin.getLogger().info("Salida: " + lastCommandOutput);
}
}
}
}````



Подробнее здесь: https://stackoverflow.com/questions/793 ... y-a-player
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»