Custom Prefix (мини гайд) | Exp 3.1

  • Автор темы Автор темы Moyten
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
6 Дек 2023
Сообщения
503
Реакции
3
Сегодня сливаю создание кастомного префикса (вместо .bind вы можете использовать ?bind или любой ваш символ)
1. Создаем класс PrefixCommand и ставим код
Java:
Expand Collapse Copy
package im.expensive.command.impl.feature;

import im.expensive.command.Command;
import im.expensive.command.Parameters;
import im.expensive.command.impl.PrefixImpl;
import im.expensive.command.Logger;
import im.expensive.command.prefix.PrefixStorage;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class PrefixCommand implements Command {

    final Logger logger;
    final PrefixStorage prefixStorage;

    @Getter
    private String prefix;

    @Override
    public void execute(Parameters parameters) {
        String prefixFromParams = parameters.asString(0).orElse("");

        if (!prefixFromParams.isEmpty()) {
            prefixStorage.updatePrefix(prefixFromParams);
            this.prefix = prefixFromParams;
            logger.log("Префикс установлен на: " + prefixFromParams);
        } else {
            logger.log("Укажите символ для использования в качестве префикса");
        }
    }

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

    @Override
    public String description() {
        return "Изменяет текущий префикс команд на указанный";
    }
}
2. Создаем класс PrefixStorage и ставим код

Java:
Expand Collapse Copy
package im.expensive.command.prefix;

import im.expensive.utils.client.IMinecraft;
import lombok.Getter;
import lombok.SneakyThrows;

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.Collections;
import static java.io.File.separator;

public class PrefixStorage implements IMinecraft {

    @Getter
    private static String currentPrefix;

    private static final File prefixFile = new File(mc.gameDir, separator + "wonderful" + separator + "files" + separator + "prefix.cfg");

    static {
        loadPrefix();
    }

    @SneakyThrows
    public static void loadPrefix() {
        if (prefixFile.exists()) {
            currentPrefix = Files.readString(prefixFile.toPath()).trim();
        } else {
            currentPrefix = ".";
            save();
        }
    }

    public static void updatePrefix(String newPrefix) {
        currentPrefix = newPrefix;
        save();
    }

    @SneakyThrows
    private static void save() {
        Files.writeString(prefixFile.toPath(), currentPrefix, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
    }

    @SneakyThrows
    public static void refreshPrefix() {
        String newPrefix = Files.readString(prefixFile.toPath()).trim();
        if (!newPrefix.equals(currentPrefix)) {
            currentPrefix = newPrefix;
        }
    }
}
3. Заходим в код PrefixImpl и меняем существующий код на этот

Java:
Expand Collapse Copy
package im.expensive.command.impl;

import im.expensive.command.Prefix;
import im.expensive.command.prefix.PrefixStorage;
import lombok.AccessLevel;
import lombok.experimental.FieldDefaults;

@FieldDefaults(level = AccessLevel.PRIVATE)
public class PrefixImpl implements Prefix {
    static String prefix;

    static {
        PrefixStorage.loadPrefix();
        prefix = PrefixStorage.getCurrentPrefix();
    }

    @Override
    public void set(String newPrefix) {
        prefix = newPrefix;
        PrefixStorage.updatePrefix(newPrefix);
    }

    @Override
    public String get() {
        PrefixStorage.refreshPrefix();
        return PrefixStorage.getCurrentPrefix();
    }

    public static void setPrefix(String newPrefix) {
        prefix = newPrefix;
        PrefixStorage.updatePrefix(newPrefix);
    }
}
Вот и все! Осталось зарегестрировать функцию, для этого
Заходим в главный класс(Expensive или другой) и делаем следующие шаги:
На примерно 70 строке прописываем зависимость
Java:
Expand Collapse Copy
private PrefixStorage prefixStorage;
Потом в методе initCommands прописываем нашу команду
Java:
Expand Collapse Copy
commands.add(new PrefixCommand(logger, prefixStorage));
Вот и все! Теперь при прописывании команды .prefix <символ (допустим @)> ваш префикс будет устанавливаться на @, при перезапуске остается таким же!
 
Полезно для тех кто в танке :innocent:
 
Сегодня сливаю создание кастомного префикса (вместо .bind вы можете использовать ?bind или любой ваш символ)
1. Создаем класс PrefixCommand и ставим код
Java:
Expand Collapse Copy
package im.expensive.command.impl.feature;

import im.expensive.command.Command;
import im.expensive.command.Parameters;
import im.expensive.command.impl.PrefixImpl;
import im.expensive.command.Logger;
import im.expensive.command.prefix.PrefixStorage;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class PrefixCommand implements Command {

    final Logger logger;
    final PrefixStorage prefixStorage;

    @Getter
    private String prefix;

    @Override
    public void execute(Parameters parameters) {
        String prefixFromParams = parameters.asString(0).orElse("");

        if (!prefixFromParams.isEmpty()) {
            prefixStorage.updatePrefix(prefixFromParams);
            this.prefix = prefixFromParams;
            logger.log("Префикс установлен на: " + prefixFromParams);
        } else {
            logger.log("Укажите символ для использования в качестве префикса");
        }
    }

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

    @Override
    public String description() {
        return "Изменяет текущий префикс команд на указанный";
    }
}
2. Создаем класс PrefixStorage и ставим код

Java:
Expand Collapse Copy
package im.expensive.command.prefix;

import im.expensive.utils.client.IMinecraft;
import lombok.Getter;
import lombok.SneakyThrows;

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.Collections;
import static java.io.File.separator;

public class PrefixStorage implements IMinecraft {

    @Getter
    private static String currentPrefix;

    private static final File prefixFile = new File(mc.gameDir, separator + "wonderful" + separator + "files" + separator + "prefix.cfg");

    static {
        loadPrefix();
    }

    @SneakyThrows
    public static void loadPrefix() {
        if (prefixFile.exists()) {
            currentPrefix = Files.readString(prefixFile.toPath()).trim();
        } else {
            currentPrefix = ".";
            save();
        }
    }

    public static void updatePrefix(String newPrefix) {
        currentPrefix = newPrefix;
        save();
    }

    @SneakyThrows
    private static void save() {
        Files.writeString(prefixFile.toPath(), currentPrefix, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
    }

    @SneakyThrows
    public static void refreshPrefix() {
        String newPrefix = Files.readString(prefixFile.toPath()).trim();
        if (!newPrefix.equals(currentPrefix)) {
            currentPrefix = newPrefix;
        }
    }
}
3. Заходим в код PrefixImpl и меняем существующий код на этот

Java:
Expand Collapse Copy
package im.expensive.command.impl;

import im.expensive.command.Prefix;
import im.expensive.command.prefix.PrefixStorage;
import lombok.AccessLevel;
import lombok.experimental.FieldDefaults;

@FieldDefaults(level = AccessLevel.PRIVATE)
public class PrefixImpl implements Prefix {
    static String prefix;

    static {
        PrefixStorage.loadPrefix();
        prefix = PrefixStorage.getCurrentPrefix();
    }

    @Override
    public void set(String newPrefix) {
        prefix = newPrefix;
        PrefixStorage.updatePrefix(newPrefix);
    }

    @Override
    public String get() {
        PrefixStorage.refreshPrefix();
        return PrefixStorage.getCurrentPrefix();
    }

    public static void setPrefix(String newPrefix) {
        prefix = newPrefix;
        PrefixStorage.updatePrefix(newPrefix);
    }
}
Вот и все! Осталось зарегестрировать функцию, для этого
Заходим в главный класс(Expensive или другой) и делаем следующие шаги:
На примерно 70 строке прописываем зависимость
Java:
Expand Collapse Copy
private PrefixStorage prefixStorage;
Потом в методе initCommands прописываем нашу команду
Java:
Expand Collapse Copy
commands.add(new PrefixCommand(logger, prefixStorage));
Вот и все! Теперь при прописывании команды .prefix <символ (допустим @)> ваш префикс будет устанавливаться на @, при перезапуске остается таким же!
годно, запастил в мега сасид клиент
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
+ реп
 
Сегодня сливаю создание кастомного префикса (вместо .bind вы можете использовать ?bind или любой ваш символ)
1. Создаем класс PrefixCommand и ставим код
Java:
Expand Collapse Copy
package im.expensive.command.impl.feature;

import im.expensive.command.Command;
import im.expensive.command.Parameters;
import im.expensive.command.impl.PrefixImpl;
import im.expensive.command.Logger;
import im.expensive.command.prefix.PrefixStorage;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class PrefixCommand implements Command {

    final Logger logger;
    final PrefixStorage prefixStorage;

    @Getter
    private String prefix;

    @Override
    public void execute(Parameters parameters) {
        String prefixFromParams = parameters.asString(0).orElse("");

        if (!prefixFromParams.isEmpty()) {
            prefixStorage.updatePrefix(prefixFromParams);
            this.prefix = prefixFromParams;
            logger.log("Префикс установлен на: " + prefixFromParams);
        } else {
            logger.log("Укажите символ для использования в качестве префикса");
        }
    }

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

    @Override
    public String description() {
        return "Изменяет текущий префикс команд на указанный";
    }
}
2. Создаем класс PrefixStorage и ставим код

Java:
Expand Collapse Copy
package im.expensive.command.prefix;

import im.expensive.utils.client.IMinecraft;
import lombok.Getter;
import lombok.SneakyThrows;

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.Collections;
import static java.io.File.separator;

public class PrefixStorage implements IMinecraft {

    @Getter
    private static String currentPrefix;

    private static final File prefixFile = new File(mc.gameDir, separator + "wonderful" + separator + "files" + separator + "prefix.cfg");

    static {
        loadPrefix();
    }

    @SneakyThrows
    public static void loadPrefix() {
        if (prefixFile.exists()) {
            currentPrefix = Files.readString(prefixFile.toPath()).trim();
        } else {
            currentPrefix = ".";
            save();
        }
    }

    public static void updatePrefix(String newPrefix) {
        currentPrefix = newPrefix;
        save();
    }

    @SneakyThrows
    private static void save() {
        Files.writeString(prefixFile.toPath(), currentPrefix, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
    }

    @SneakyThrows
    public static void refreshPrefix() {
        String newPrefix = Files.readString(prefixFile.toPath()).trim();
        if (!newPrefix.equals(currentPrefix)) {
            currentPrefix = newPrefix;
        }
    }
}
3. Заходим в код PrefixImpl и меняем существующий код на этот

Java:
Expand Collapse Copy
package im.expensive.command.impl;

import im.expensive.command.Prefix;
import im.expensive.command.prefix.PrefixStorage;
import lombok.AccessLevel;
import lombok.experimental.FieldDefaults;

@FieldDefaults(level = AccessLevel.PRIVATE)
public class PrefixImpl implements Prefix {
    static String prefix;

    static {
        PrefixStorage.loadPrefix();
        prefix = PrefixStorage.getCurrentPrefix();
    }

    @Override
    public void set(String newPrefix) {
        prefix = newPrefix;
        PrefixStorage.updatePrefix(newPrefix);
    }

    @Override
    public String get() {
        PrefixStorage.refreshPrefix();
        return PrefixStorage.getCurrentPrefix();
    }

    public static void setPrefix(String newPrefix) {
        prefix = newPrefix;
        PrefixStorage.updatePrefix(newPrefix);
    }
}
Вот и все! Осталось зарегестрировать функцию, для этого
Заходим в главный класс(Expensive или другой) и делаем следующие шаги:
На примерно 70 строке прописываем зависимость
Java:
Expand Collapse Copy
private PrefixStorage prefixStorage;
Потом в методе initCommands прописываем нашу команду
Java:
Expand Collapse Copy
commands.add(new PrefixCommand(logger, prefixStorage));
Вот и все! Теперь при прописывании команды .prefix <символ (допустим @)> ваш префикс будет устанавливаться на @, при перезапуске остается таким же!
пиздец что за хуйня вы чё ебанулись? можно было легче сделать
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
можно было сделать в 1 файл еще и меньше в раз 455
/del
 
пиздец что за хуйня вы чё ебанулись? можно было легче сделать
Не отрицаю, но по факту все работает

Без prefixstorage пытался сделать, но при перезвпуске слетал префикс
можно было сделать в 1 файл еще и меньше в раз 455
/del
Захуярь команду в prefiximpl, который в 3.1 есть
 
Сегодня сливаю создание кастомного префикса (вместо .bind вы можете использовать ?bind или любой ваш символ)
1. Создаем класс PrefixCommand и ставим код
Java:
Expand Collapse Copy
package im.expensive.command.impl.feature;

import im.expensive.command.Command;
import im.expensive.command.Parameters;
import im.expensive.command.impl.PrefixImpl;
import im.expensive.command.Logger;
import im.expensive.command.prefix.PrefixStorage;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class PrefixCommand implements Command {

    final Logger logger;
    final PrefixStorage prefixStorage;

    @Getter
    private String prefix;

    @Override
    public void execute(Parameters parameters) {
        String prefixFromParams = parameters.asString(0).orElse("");

        if (!prefixFromParams.isEmpty()) {
            prefixStorage.updatePrefix(prefixFromParams);
            this.prefix = prefixFromParams;
            logger.log("Префикс установлен на: " + prefixFromParams);
        } else {
            logger.log("Укажите символ для использования в качестве префикса");
        }
    }

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

    @Override
    public String description() {
        return "Изменяет текущий префикс команд на указанный";
    }
}
2. Создаем класс PrefixStorage и ставим код

Java:
Expand Collapse Copy
package im.expensive.command.prefix;

import im.expensive.utils.client.IMinecraft;
import lombok.Getter;
import lombok.SneakyThrows;

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.Collections;
import static java.io.File.separator;

public class PrefixStorage implements IMinecraft {

    @Getter
    private static String currentPrefix;

    private static final File prefixFile = new File(mc.gameDir, separator + "wonderful" + separator + "files" + separator + "prefix.cfg");

    static {
        loadPrefix();
    }

    @SneakyThrows
    public static void loadPrefix() {
        if (prefixFile.exists()) {
            currentPrefix = Files.readString(prefixFile.toPath()).trim();
        } else {
            currentPrefix = ".";
            save();
        }
    }

    public static void updatePrefix(String newPrefix) {
        currentPrefix = newPrefix;
        save();
    }

    @SneakyThrows
    private static void save() {
        Files.writeString(prefixFile.toPath(), currentPrefix, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
    }

    @SneakyThrows
    public static void refreshPrefix() {
        String newPrefix = Files.readString(prefixFile.toPath()).trim();
        if (!newPrefix.equals(currentPrefix)) {
            currentPrefix = newPrefix;
        }
    }
}
3. Заходим в код PrefixImpl и меняем существующий код на этот

Java:
Expand Collapse Copy
package im.expensive.command.impl;

import im.expensive.command.Prefix;
import im.expensive.command.prefix.PrefixStorage;
import lombok.AccessLevel;
import lombok.experimental.FieldDefaults;

@FieldDefaults(level = AccessLevel.PRIVATE)
public class PrefixImpl implements Prefix {
    static String prefix;

    static {
        PrefixStorage.loadPrefix();
        prefix = PrefixStorage.getCurrentPrefix();
    }

    @Override
    public void set(String newPrefix) {
        prefix = newPrefix;
        PrefixStorage.updatePrefix(newPrefix);
    }

    @Override
    public String get() {
        PrefixStorage.refreshPrefix();
        return PrefixStorage.getCurrentPrefix();
    }

    public static void setPrefix(String newPrefix) {
        prefix = newPrefix;
        PrefixStorage.updatePrefix(newPrefix);
    }
}
Вот и все! Осталось зарегестрировать функцию, для этого
Заходим в главный класс(Expensive или другой) и делаем следующие шаги:
На примерно 70 строке прописываем зависимость
Java:
Expand Collapse Copy
private PrefixStorage prefixStorage;
Потом в методе initCommands прописываем нашу команду
Java:
Expand Collapse Copy
commands.add(new PrefixCommand(logger, prefixStorage));
Вот и все! Теперь при прописывании команды .prefix <символ (допустим @)> ваш префикс будет устанавливаться на @, при перезапуске остается таким же!
Нууу... Норм
Сегодня сливаю создание кастомного префикса (вместо .bind вы можете использовать ?bind или любой ваш символ)
1. Создаем класс PrefixCommand и ставим код
Java:
Expand Collapse Copy
package im.expensive.command.impl.feature;

import im.expensive.command.Command;
import im.expensive.command.Parameters;
import im.expensive.command.impl.PrefixImpl;
import im.expensive.command.Logger;
import im.expensive.command.prefix.PrefixStorage;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class PrefixCommand implements Command {

    final Logger logger;
    final PrefixStorage prefixStorage;

    @Getter
    private String prefix;

    @Override
    public void execute(Parameters parameters) {
        String prefixFromParams = parameters.asString(0).orElse("");

        if (!prefixFromParams.isEmpty()) {
            prefixStorage.updatePrefix(prefixFromParams);
            this.prefix = prefixFromParams;
            logger.log("Префикс установлен на: " + prefixFromParams);
        } else {
            logger.log("Укажите символ для использования в качестве префикса");
        }
    }

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

    @Override
    public String description() {
        return "Изменяет текущий префикс команд на указанный";
    }
}
2. Создаем класс PrefixStorage и ставим код

Java:
Expand Collapse Copy
package im.expensive.command.prefix;

import im.expensive.utils.client.IMinecraft;
import lombok.Getter;
import lombok.SneakyThrows;

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.Collections;
import static java.io.File.separator;

public class PrefixStorage implements IMinecraft {

    @Getter
    private static String currentPrefix;

    private static final File prefixFile = new File(mc.gameDir, separator + "wonderful" + separator + "files" + separator + "prefix.cfg");

    static {
        loadPrefix();
    }

    @SneakyThrows
    public static void loadPrefix() {
        if (prefixFile.exists()) {
            currentPrefix = Files.readString(prefixFile.toPath()).trim();
        } else {
            currentPrefix = ".";
            save();
        }
    }

    public static void updatePrefix(String newPrefix) {
        currentPrefix = newPrefix;
        save();
    }

    @SneakyThrows
    private static void save() {
        Files.writeString(prefixFile.toPath(), currentPrefix, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
    }

    @SneakyThrows
    public static void refreshPrefix() {
        String newPrefix = Files.readString(prefixFile.toPath()).trim();
        if (!newPrefix.equals(currentPrefix)) {
            currentPrefix = newPrefix;
        }
    }
}
3. Заходим в код PrefixImpl и меняем существующий код на этот

Java:
Expand Collapse Copy
package im.expensive.command.impl;

import im.expensive.command.Prefix;
import im.expensive.command.prefix.PrefixStorage;
import lombok.AccessLevel;
import lombok.experimental.FieldDefaults;

@FieldDefaults(level = AccessLevel.PRIVATE)
public class PrefixImpl implements Prefix {
    static String prefix;

    static {
        PrefixStorage.loadPrefix();
        prefix = PrefixStorage.getCurrentPrefix();
    }

    @Override
    public void set(String newPrefix) {
        prefix = newPrefix;
        PrefixStorage.updatePrefix(newPrefix);
    }

    @Override
    public String get() {
        PrefixStorage.refreshPrefix();
        return PrefixStorage.getCurrentPrefix();
    }

    public static void setPrefix(String newPrefix) {
        prefix = newPrefix;
        PrefixStorage.updatePrefix(newPrefix);
    }
}
Вот и все! Осталось зарегестрировать функцию, для этого
Заходим в главный класс(Expensive или другой) и делаем следующие шаги:
На примерно 70 строке прописываем зависимость
Java:
Expand Collapse Copy
private PrefixStorage prefixStorage;
Потом в методе initCommands прописываем нашу команду
Java:
Expand Collapse Copy
commands.add(new PrefixCommand(logger, prefixStorage));
Вот и все! Теперь при прописывании команды .prefix <символ (допустим @)> ваш префикс будет устанавливаться на @, при перезапуске остается таким же!
+Реп
 
Назад
Сверху Снизу