Исходник Chat Spammer

Начинающий
Статус
Оффлайн
Регистрация
22 Окт 2022
Сообщения
26
Реакции[?]
0
Поинты[?]
0

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

Всем привет, сливаю вам кучу гавно года. Писал спаммер с минимальными знаний в java, предыстория зачем я его писал "Захотелось мне поднять бабок, насмотрелся в ютубе куча ролик про хайпиксель и выпрашивание доната, и подумал и купил лицензию и начал писать спаммер сообщений по типу 'Please gift me MVP' ну и так я стоял примерно со спаммером недели 2-3 и все таки получил заветный MVP++ на 90 дней, и теперь этот аккаунт сейчас в продаже.
Вот код:

Spammer:
package com.example.examplemod;

import net.minecraft.client.Minecraft;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.client.event.ClientChatEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent.RenderTickEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import org.apache.logging.log4j.Logger;

import java.awt.*;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

@Mod(modid = ExampleMod.MODID, name = ExampleMod.NAME, version = ExampleMod.VERSION)
public class ExampleMod {
    public static final String MODID = "examplemod";
    public static final String NAME = "Example Mod";
    public static final String VERSION = "1.0";
    private static Logger logger;

    private boolean enabled = false;
    private double tickDelay = 15000;

    private final List<String> phrases = new ArrayList<>();
    private final Timer timer = new Timer();
    private int lastSentIndex = -1;
    private int afkCommandCooldown = 0;
    private boolean isAfk = false;

    @EventHandler
    public void preInit(FMLPreInitializationEvent event) {
        logger = event.getModLog();
        MinecraftForge.EVENT_BUS.register(this);

        // Создаем папку Auto в каталоге config
        File configDir = new File(Minecraft.getMinecraft().mcDataDir, "config");
        File autoDir = new File(configDir, "Auto");
        autoDir.mkdirs();

        // Загружаем фразы из файла при инициализации мода
        loadPhrasesFromFile(autoDir);
    }

    @SubscribeEvent
    public void onChat(ClientChatEvent e) {
        if (e.getMessage().startsWith(".start")) {
            e.setCanceled(true);
            enabled = true;
            sendMessageToChat("Spammer On", TextFormatting.AQUA);
        }
        if (e.getMessage().startsWith(".end")) {
            e.setCanceled(true);
            enabled = false;
            sendMessageToChat("Spammer Off!", TextFormatting.AQUA);
        }
        if (e.getMessage().startsWith(".delay")) {
            e.setCanceled(true);
            String[] args = e.getMessage().split(" ");
            try {
                tickDelay = Double.parseDouble(args[1]);
                sendMessageToChat("Postavil tikovyi delay na " + args[1], TextFormatting.AQUA);
                timer.reset();
            } catch (Exception ex) {
                sendMessageToChat("Nepravilno ykazan argyment.", TextFormatting.AQUA);
            }
        }
        if (e.getMessage().startsWith(".add")) {
            e.setCanceled(true);
            String[] args = e.getMessage().split(" ", 2);
            if (args.length > 1) {
                addPhrase(args[1]);
                sendMessageToChat("Fraza dobavlena v spisok (Zaxar Negar): " + args[1], TextFormatting.AQUA);
            } else {
                sendMessageToChat("Nepravilno ykazan argyment.", TextFormatting.AQUA);
            }
        }
        if (e.getMessage().startsWith(".list")) {
            e.setCanceled(true);
            sendMessageToChat("Vse frazy: " + String.join(", ", phrases), TextFormatting.AQUA);
        }
        if (e.getMessage().startsWith(".remove")) {
            e.setCanceled(true);
            String[] args = e.getMessage().split(" ", 2);
            if (args.length > 1) {
                removePhrase(args[1]);
                sendMessageToChat("Fraza ydalena: " + args[1], TextFormatting.AQUA);
            } else {
                sendMessageToChat("Nepravilno ykazan argyment.", TextFormatting.AQUA);
            }
        }
        if (e.getMessage().startsWith(".help")) {
            e.setCanceled(true);
            sendMessageToChat("Spisok Command: .start, .end, .delay <chislo>, .add <fraza>, .list, .remove <fraza>, .dir, .help .afk ", TextFormatting.AQUA);
        }
        if (e.getMessage().startsWith(".dir")) {
            e.setCanceled(true);
            openConfigDirectory();
        }
        if (e.getMessage().startsWith(".afk")) {
            e.setCanceled(true);
            toggleAfk();
        }
    }

    @SubscribeEvent
    public void onTick(TickEvent.ClientTickEvent e) {
        if (Minecraft.getMinecraft().world == null && Minecraft.getMinecraft().player == null) return;
        if (!enabled) return;
        if (timer.hasPassedMs(tickDelay)) {
            String phraseToSend = getNextPhraseInOrder();
            if (!phraseToSend.isEmpty()) {
                sendMessageToChat(phraseToSend, TextFormatting.RESET);
                timer.reset();
            }
        }
    }

    @SubscribeEvent
    public void onRenderTick(RenderTickEvent e) {
        if (isAfk) {
            if (afkCommandCooldown <= 0) {
                sendRandomCommand();
                afkCommandCooldown = 2000; // 25 секунд (в тиках)
            } else {
                afkCommandCooldown--;
            }
        }
    }
    private void sendRandomCommand() {
        Random random = new Random();
        int randomNumber = random.nextInt(100); // Генерация случайного числа от 0 до 99
        Minecraft.getMinecraft().player.sendChatMessage("/" + randomNumber);
    }
    private String getNextPhraseInOrder() {
        if (phrases.isEmpty()) {
            return "";
        }
        lastSentIndex = (lastSentIndex + 1) % phrases.size();
        return phrases.get(lastSentIndex);
    }

    private void addPhrase(String phrase) {
        phrases.add(phrase);
        savePhrasesToFile();
    }

    private void removePhrase(String phrase) {
        phrases.remove(phrase);
        savePhrasesToFile();
    }

    private void toggleAfk() {
        isAfk = !isAfk;
        sendMessageToChat("AFK " + (isAfk ? "AntiAFK ON." : "AntiAFK OFF"), TextFormatting.AQUA);
    }

    private void savePhrasesToFile() {
        File configDir = new File(Minecraft.getMinecraft().mcDataDir, "config");
        File autoDir = new File(configDir, "Auto");
        autoDir.mkdirs();

        Path filePath = Paths.get(autoDir.getPath(), "phrases.txt");

        try (BufferedWriter writer = Files.newBufferedWriter(filePath, StandardCharsets.UTF_8)) {
            for (String phrase : phrases) {
                writer.write(phrase);
                writer.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void loadPhrasesFromFile(File autoDir) {
        File file = new File(autoDir, "phrases.txt");

        if (file.exists()) {
            try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8))) {
                String line;
                while ((line = reader.readLine()) != null) {
                    phrases.add(line);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private void openConfigDirectory() {
        File configDir = new File(Minecraft.getMinecraft().mcDataDir, "config");
        File autoDir = new File(configDir, "Auto");

        try {
            Desktop.getDesktop().open(autoDir);
        } catch (IOException | UnsupportedOperationException ex) {
            ex.printStackTrace();
            sendMessageToChat("Hm kashetsy est oshibka napishi svoey mame: " + autoDir.getAbsolutePath(), TextFormatting.RED);
        }
    }

    private void sendMessageToChat(String message, TextFormatting color) {
        String formattedMessage = color != null ? color + message : message;
        Minecraft.getMinecraft().player.sendMessage(new TextComponentString(formattedMessage));
    }

    }
И утилка для него:
TimerUtils:
package com.example.examplemod;

public class Timer {

    private long time;

    public Timer() {
        time = System.currentTimeMillis();
    }

    public boolean hasPassedMs(double ms) {
        return System.currentTimeMillis() - time >= ms;
    }

    public void reset() {
        time = System.currentTimeMillis();
    }

}
Удачки сорри за гавно код:NotLikeThis:
 
Начинающий
Статус
Оффлайн
Регистрация
26 Май 2023
Сообщения
29
Реакции[?]
1
Поинты[?]
0
Всем привет, сливаю вам кучу гавно года. Писал спаммер с минимальными знаний в java, предыстория зачем я его писал "Захотелось мне поднять бабок, насмотрелся в ютубе куча ролик про хайпиксель и выпрашивание доната, и подумал и купил лицензию и начал писать спаммер сообщений по типу 'Please gift me MVP' ну и так я стоял примерно со спаммером недели 2-3 и все таки получил заветный MVP++ на 90 дней, и теперь этот аккаунт сейчас в продаже.
Вот код:

Spammer:
package com.example.examplemod;

import net.minecraft.client.Minecraft;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.client.event.ClientChatEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent.RenderTickEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import org.apache.logging.log4j.Logger;

import java.awt.*;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

@Mod(modid = ExampleMod.MODID, name = ExampleMod.NAME, version = ExampleMod.VERSION)
public class ExampleMod {
    public static final String MODID = "examplemod";
    public static final String NAME = "Example Mod";
    public static final String VERSION = "1.0";
    private static Logger logger;

    private boolean enabled = false;
    private double tickDelay = 15000;

    private final List<String> phrases = new ArrayList<>();
    private final Timer timer = new Timer();
    private int lastSentIndex = -1;
    private int afkCommandCooldown = 0;
    private boolean isAfk = false;

    @EventHandler
    public void preInit(FMLPreInitializationEvent event) {
        logger = event.getModLog();
        MinecraftForge.EVENT_BUS.register(this);

        // Создаем папку Auto в каталоге config
        File configDir = new File(Minecraft.getMinecraft().mcDataDir, "config");
        File autoDir = new File(configDir, "Auto");
        autoDir.mkdirs();

        // Загружаем фразы из файла при инициализации мода
        loadPhrasesFromFile(autoDir);
    }

    @SubscribeEvent
    public void onChat(ClientChatEvent e) {
        if (e.getMessage().startsWith(".start")) {
            e.setCanceled(true);
            enabled = true;
            sendMessageToChat("Spammer On", TextFormatting.AQUA);
        }
        if (e.getMessage().startsWith(".end")) {
            e.setCanceled(true);
            enabled = false;
            sendMessageToChat("Spammer Off!", TextFormatting.AQUA);
        }
        if (e.getMessage().startsWith(".delay")) {
            e.setCanceled(true);
            String[] args = e.getMessage().split(" ");
            try {
                tickDelay = Double.parseDouble(args[1]);
                sendMessageToChat("Postavil tikovyi delay na " + args[1], TextFormatting.AQUA);
                timer.reset();
            } catch (Exception ex) {
                sendMessageToChat("Nepravilno ykazan argyment.", TextFormatting.AQUA);
            }
        }
        if (e.getMessage().startsWith(".add")) {
            e.setCanceled(true);
            String[] args = e.getMessage().split(" ", 2);
            if (args.length > 1) {
                addPhrase(args[1]);
                sendMessageToChat("Fraza dobavlena v spisok (Zaxar Negar): " + args[1], TextFormatting.AQUA);
            } else {
                sendMessageToChat("Nepravilno ykazan argyment.", TextFormatting.AQUA);
            }
        }
        if (e.getMessage().startsWith(".list")) {
            e.setCanceled(true);
            sendMessageToChat("Vse frazy: " + String.join(", ", phrases), TextFormatting.AQUA);
        }
        if (e.getMessage().startsWith(".remove")) {
            e.setCanceled(true);
            String[] args = e.getMessage().split(" ", 2);
            if (args.length > 1) {
                removePhrase(args[1]);
                sendMessageToChat("Fraza ydalena: " + args[1], TextFormatting.AQUA);
            } else {
                sendMessageToChat("Nepravilno ykazan argyment.", TextFormatting.AQUA);
            }
        }
        if (e.getMessage().startsWith(".help")) {
            e.setCanceled(true);
            sendMessageToChat("Spisok Command: .start, .end, .delay <chislo>, .add <fraza>, .list, .remove <fraza>, .dir, .help .afk ", TextFormatting.AQUA);
        }
        if (e.getMessage().startsWith(".dir")) {
            e.setCanceled(true);
            openConfigDirectory();
        }
        if (e.getMessage().startsWith(".afk")) {
            e.setCanceled(true);
            toggleAfk();
        }
    }

    @SubscribeEvent
    public void onTick(TickEvent.ClientTickEvent e) {
        if (Minecraft.getMinecraft().world == null && Minecraft.getMinecraft().player == null) return;
        if (!enabled) return;
        if (timer.hasPassedMs(tickDelay)) {
            String phraseToSend = getNextPhraseInOrder();
            if (!phraseToSend.isEmpty()) {
                sendMessageToChat(phraseToSend, TextFormatting.RESET);
                timer.reset();
            }
        }
    }

    @SubscribeEvent
    public void onRenderTick(RenderTickEvent e) {
        if (isAfk) {
            if (afkCommandCooldown <= 0) {
                sendRandomCommand();
                afkCommandCooldown = 2000; // 25 секунд (в тиках)
            } else {
                afkCommandCooldown--;
            }
        }
    }
    private void sendRandomCommand() {
        Random random = new Random();
        int randomNumber = random.nextInt(100); // Генерация случайного числа от 0 до 99
        Minecraft.getMinecraft().player.sendChatMessage("/" + randomNumber);
    }
    private String getNextPhraseInOrder() {
        if (phrases.isEmpty()) {
            return "";
        }
        lastSentIndex = (lastSentIndex + 1) % phrases.size();
        return phrases.get(lastSentIndex);
    }

    private void addPhrase(String phrase) {
        phrases.add(phrase);
        savePhrasesToFile();
    }

    private void removePhrase(String phrase) {
        phrases.remove(phrase);
        savePhrasesToFile();
    }

    private void toggleAfk() {
        isAfk = !isAfk;
        sendMessageToChat("AFK " + (isAfk ? "AntiAFK ON." : "AntiAFK OFF"), TextFormatting.AQUA);
    }

    private void savePhrasesToFile() {
        File configDir = new File(Minecraft.getMinecraft().mcDataDir, "config");
        File autoDir = new File(configDir, "Auto");
        autoDir.mkdirs();

        Path filePath = Paths.get(autoDir.getPath(), "phrases.txt");

        try (BufferedWriter writer = Files.newBufferedWriter(filePath, StandardCharsets.UTF_8)) {
            for (String phrase : phrases) {
                writer.write(phrase);
                writer.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void loadPhrasesFromFile(File autoDir) {
        File file = new File(autoDir, "phrases.txt");

        if (file.exists()) {
            try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8))) {
                String line;
                while ((line = reader.readLine()) != null) {
                    phrases.add(line);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private void openConfigDirectory() {
        File configDir = new File(Minecraft.getMinecraft().mcDataDir, "config");
        File autoDir = new File(configDir, "Auto");

        try {
            Desktop.getDesktop().open(autoDir);
        } catch (IOException | UnsupportedOperationException ex) {
            ex.printStackTrace();
            sendMessageToChat("Hm kashetsy est oshibka napishi svoey mame: " + autoDir.getAbsolutePath(), TextFormatting.RED);
        }
    }

    private void sendMessageToChat(String message, TextFormatting color) {
        String formattedMessage = color != null ? color + message : message;
        Minecraft.getMinecraft().player.sendMessage(new TextComponentString(formattedMessage));
    }

    }
И утилка для него:
TimerUtils:
package com.example.examplemod;

public class Timer {

    private long time;

    public Timer() {
        time = System.currentTimeMillis();
    }

    public boolean hasPassedMs(double ms) {
        return System.currentTimeMillis() - time >= ms;
    }

    public void reset() {
        time = System.currentTimeMillis();
    }

}
Удачки сорри за гавно код:NotLikeThis:
Бро это очень жёсткий код! Спасибо за код со встроенной нейросетью!
 
Начинающий
Статус
Оффлайн
Регистрация
13 Апр 2022
Сообщения
196
Реакции[?]
9
Поинты[?]
3K
Всем привет, сливаю вам кучу гавно года. Писал спаммер с минимальными знаний в java, предыстория зачем я его писал "Захотелось мне поднять бабок, насмотрелся в ютубе куча ролик про хайпиксель и выпрашивание доната, и подумал и купил лицензию и начал писать спаммер сообщений по типу 'Please gift me MVP' ну и так я стоял примерно со спаммером недели 2-3 и все таки получил заветный MVP++ на 90 дней, и теперь этот аккаунт сейчас в продаже.
Вот код:

Spammer:
package com.example.examplemod;

import net.minecraft.client.Minecraft;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.client.event.ClientChatEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent.RenderTickEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import org.apache.logging.log4j.Logger;

import java.awt.*;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

@Mod(modid = ExampleMod.MODID, name = ExampleMod.NAME, version = ExampleMod.VERSION)
public class ExampleMod {
    public static final String MODID = "examplemod";
    public static final String NAME = "Example Mod";
    public static final String VERSION = "1.0";
    private static Logger logger;

    private boolean enabled = false;
    private double tickDelay = 15000;

    private final List<String> phrases = new ArrayList<>();
    private final Timer timer = new Timer();
    private int lastSentIndex = -1;
    private int afkCommandCooldown = 0;
    private boolean isAfk = false;

    @EventHandler
    public void preInit(FMLPreInitializationEvent event) {
        logger = event.getModLog();
        MinecraftForge.EVENT_BUS.register(this);

        // Создаем папку Auto в каталоге config
        File configDir = new File(Minecraft.getMinecraft().mcDataDir, "config");
        File autoDir = new File(configDir, "Auto");
        autoDir.mkdirs();

        // Загружаем фразы из файла при инициализации мода
        loadPhrasesFromFile(autoDir);
    }

    @SubscribeEvent
    public void onChat(ClientChatEvent e) {
        if (e.getMessage().startsWith(".start")) {
            e.setCanceled(true);
            enabled = true;
            sendMessageToChat("Spammer On", TextFormatting.AQUA);
        }
        if (e.getMessage().startsWith(".end")) {
            e.setCanceled(true);
            enabled = false;
            sendMessageToChat("Spammer Off!", TextFormatting.AQUA);
        }
        if (e.getMessage().startsWith(".delay")) {
            e.setCanceled(true);
            String[] args = e.getMessage().split(" ");
            try {
                tickDelay = Double.parseDouble(args[1]);
                sendMessageToChat("Postavil tikovyi delay na " + args[1], TextFormatting.AQUA);
                timer.reset();
            } catch (Exception ex) {
                sendMessageToChat("Nepravilno ykazan argyment.", TextFormatting.AQUA);
            }
        }
        if (e.getMessage().startsWith(".add")) {
            e.setCanceled(true);
            String[] args = e.getMessage().split(" ", 2);
            if (args.length > 1) {
                addPhrase(args[1]);
                sendMessageToChat("Fraza dobavlena v spisok (Zaxar Negar): " + args[1], TextFormatting.AQUA);
            } else {
                sendMessageToChat("Nepravilno ykazan argyment.", TextFormatting.AQUA);
            }
        }
        if (e.getMessage().startsWith(".list")) {
            e.setCanceled(true);
            sendMessageToChat("Vse frazy: " + String.join(", ", phrases), TextFormatting.AQUA);
        }
        if (e.getMessage().startsWith(".remove")) {
            e.setCanceled(true);
            String[] args = e.getMessage().split(" ", 2);
            if (args.length > 1) {
                removePhrase(args[1]);
                sendMessageToChat("Fraza ydalena: " + args[1], TextFormatting.AQUA);
            } else {
                sendMessageToChat("Nepravilno ykazan argyment.", TextFormatting.AQUA);
            }
        }
        if (e.getMessage().startsWith(".help")) {
            e.setCanceled(true);
            sendMessageToChat("Spisok Command: .start, .end, .delay <chislo>, .add <fraza>, .list, .remove <fraza>, .dir, .help .afk ", TextFormatting.AQUA);
        }
        if (e.getMessage().startsWith(".dir")) {
            e.setCanceled(true);
            openConfigDirectory();
        }
        if (e.getMessage().startsWith(".afk")) {
            e.setCanceled(true);
            toggleAfk();
        }
    }

    @SubscribeEvent
    public void onTick(TickEvent.ClientTickEvent e) {
        if (Minecraft.getMinecraft().world == null && Minecraft.getMinecraft().player == null) return;
        if (!enabled) return;
        if (timer.hasPassedMs(tickDelay)) {
            String phraseToSend = getNextPhraseInOrder();
            if (!phraseToSend.isEmpty()) {
                sendMessageToChat(phraseToSend, TextFormatting.RESET);
                timer.reset();
            }
        }
    }

    @SubscribeEvent
    public void onRenderTick(RenderTickEvent e) {
        if (isAfk) {
            if (afkCommandCooldown <= 0) {
                sendRandomCommand();
                afkCommandCooldown = 2000; // 25 секунд (в тиках)
            } else {
                afkCommandCooldown--;
            }
        }
    }
    private void sendRandomCommand() {
        Random random = new Random();
        int randomNumber = random.nextInt(100); // Генерация случайного числа от 0 до 99
        Minecraft.getMinecraft().player.sendChatMessage("/" + randomNumber);
    }
    private String getNextPhraseInOrder() {
        if (phrases.isEmpty()) {
            return "";
        }
        lastSentIndex = (lastSentIndex + 1) % phrases.size();
        return phrases.get(lastSentIndex);
    }

    private void addPhrase(String phrase) {
        phrases.add(phrase);
        savePhrasesToFile();
    }

    private void removePhrase(String phrase) {
        phrases.remove(phrase);
        savePhrasesToFile();
    }

    private void toggleAfk() {
        isAfk = !isAfk;
        sendMessageToChat("AFK " + (isAfk ? "AntiAFK ON." : "AntiAFK OFF"), TextFormatting.AQUA);
    }

    private void savePhrasesToFile() {
        File configDir = new File(Minecraft.getMinecraft().mcDataDir, "config");
        File autoDir = new File(configDir, "Auto");
        autoDir.mkdirs();

        Path filePath = Paths.get(autoDir.getPath(), "phrases.txt");

        try (BufferedWriter writer = Files.newBufferedWriter(filePath, StandardCharsets.UTF_8)) {
            for (String phrase : phrases) {
                writer.write(phrase);
                writer.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void loadPhrasesFromFile(File autoDir) {
        File file = new File(autoDir, "phrases.txt");

        if (file.exists()) {
            try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8))) {
                String line;
                while ((line = reader.readLine()) != null) {
                    phrases.add(line);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private void openConfigDirectory() {
        File configDir = new File(Minecraft.getMinecraft().mcDataDir, "config");
        File autoDir = new File(configDir, "Auto");

        try {
            Desktop.getDesktop().open(autoDir);
        } catch (IOException | UnsupportedOperationException ex) {
            ex.printStackTrace();
            sendMessageToChat("Hm kashetsy est oshibka napishi svoey mame: " + autoDir.getAbsolutePath(), TextFormatting.RED);
        }
    }

    private void sendMessageToChat(String message, TextFormatting color) {
        String formattedMessage = color != null ? color + message : message;
        Minecraft.getMinecraft().player.sendMessage(new TextComponentString(formattedMessage));
    }

    }
И утилка для него:
TimerUtils:
package com.example.examplemod;

public class Timer {

    private long time;

    public Timer() {
        time = System.currentTimeMillis();
    }

    public boolean hasPassedMs(double ms) {
        return System.currentTimeMillis() - time >= ms;
    }

    public void reset() {
        time = System.currentTimeMillis();
    }

}
Удачки сорри за гавно код:NotLikeThis:
бро,если ты хочешь услышать слова уважения/одобрения тебе не сюда,тебя сдесь за каждое твое сообщение хейтить будут,ведь весь форум состоит из чсв-шных мамкиных любителей rich/expensive api,которые сами-то нихуя не знают,и обязательно хотят выписать в чат,какой топикстартер пидорас,и какое дерьмо он выписал.
 
Начинающий
Статус
Оффлайн
Регистрация
17 Апр 2023
Сообщения
201
Реакции[?]
2
Поинты[?]
0
бро,если ты хочешь услышать слова уважения/одобрения тебе не сюда,тебя сдесь за каждое твое сообщение хейтить будут,ведь весь форум состоит из чсв-шных мамкиных любителей rich/expensive api,которые сами-то нихуя не знают,и обязательно хотят выписать в чат,какой топикстартер пидорас,и какое дерьмо он выписал.
пафакту
 
Сверху Снизу