Гайд Как добавить команду .report / Expensive 3.1

Начинающий
Статус
Оффлайн
Регистрация
24 Ноя 2023
Сообщения
15
Реакции[?]
0
Поинты[?]
0
1. Для начала нам нужно открыть папку по пути im.expensive.command.feature. Далее создаем класс ReportCommand.java и вставляем этот код и заменяем на ваш вебхук:


джавка:
package im.expensive.command.impl.feature;

import im.expensive.command.Command;
import im.expensive.command.Parameters;
import im.expensive.command.impl.CommandException;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.Minecraft;
import net.minecraft.util.text.TextFormatting;

import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.stream.Collectors;
import java.util.stream.Stream;

@RequiredArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class ReportCommand implements Command {

Minecraft mc = Minecraft.getInstance();
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());

@Override
    public void execute(Parameters parameters) {
// Получаем все параметры и объединяем их в одну строку
        String message = Stream.of(parameters.getAllParameters())
.map(Object::toString)
.collect(Collectors.joining(" ")).trim();

if (message.isEmpty()) {
throw new CommandException(TextFormatting.RED + "Необходимо указать сообщение.");
}

String webhookUrl = "https://discord.com/api/webhooks/1261290912013881377/wuc0L8d-CTvqy9aC_3F4Ex2N36z4t-onZ6wc9nUP8h7Ca3KRpafJKSurX8-D359iuRc_"; // Замените на ваш URL вебхука

        try {
URL url = new URL(webhookUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");
connection.setDoOutput(true);

String jsonPayload = "{\"content\":\" "+ mc.player.getName().getUnformattedComponentText() + " / " + timeStamp + " / " + message + "\"}";

try (OutputStream os = connection.getOutputStream()) {
byte[] input = jsonPayload.getBytes("utf-8");
os.write(input, 0, input.length);
}

int responseCode = connection.getResponseCode();
if (responseCode == 204) {
System.out.println("Сообщение успешно отправлено в Discord.");
} else {
System.out.println("Ошибка при отправке сообщения в Discord. Код ответа: " + responseCode);
}

} catch (Exception e) {
e.printStackTrace();
}
}

@Override
    public String name() {
return "report";
}

@Override
    public String description() {
return "Отправить жалобу на недоработку/ошибку/идею";
}
}

2. Переходим по пути im.expensive.command.Parameters (Interface) и добавляем это:

джавка:
String getAllParameters();
3. Переходим по пути im.expensive.command.impl.ParemetrsImpl и добавляем это:


джавка:
    @Override
    public String getAllParameters() {
        return String.join(" ", Arrays.asList(parameters));
    }
4. Переходим по пути im.expensive и открываем главный класс Expensive.java. Ищем функцию initCommands() и пишем туда:

джавка:
commands.add(new ReportCommand());
Пример:


джавка:
private void initCommands() {
        Minecraft mc = Minecraft.getInstance();
        Logger logger = new MultiLogger(List.of(new ConsoleLogger(), new MinecraftLogger()));
        List<Command> commands = new ArrayList<>();
        Prefix prefix = new PrefixImpl();
        commands.add(new ListCommand(commands, logger));
        commands.add(new FriendCommand(prefix, logger, mc));
        commands.add(new BindCommand(prefix, logger));
        commands.add(new GPSCommand(prefix, logger));
        commands.add(new ConfigCommand(configStorage, prefix, logger));
        commands.add(new MacroCommand(macroManager, prefix, logger));
        commands.add(new VClipCommand(prefix, logger, mc));
        commands.add(new HClipCommand(prefix, logger, mc));
        commands.add(new StaffCommand(prefix, logger));
        commands.add(new MemoryCommand(logger));
        commands.add(new RCTCommand(logger, mc));
        commands.add(new ReportCommand());

        AdviceCommandFactory adviceCommandFactory = new AdviceCommandFactoryImpl(logger);
        ParametersFactory parametersFactory = new ParametersFactoryImpl();

        commandDispatcher = new StandaloneCommandDispatcher(commands, adviceCommandFactory, prefix, parametersFactory, logger);
    }
5. Готово, можем заходить в майн и проверять работоспособность функции.

ps не бить, мой первый гайд
1731419681114.pngхелп
 
Сверху Снизу