-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Сегодня сливаю создание кастомного префикса (вместо .bind вы можете использовать ?bind или любой ваш символ)
1. Создаем класс PrefixCommand и ставим код
2. Создаем класс PrefixStorage и ставим код
3. Заходим в код PrefixImpl и меняем существующий код на этот
Вот и все! Осталось зарегестрировать функцию, для этого
Заходим в главный класс(Expensive или другой) и делаем следующие шаги:
На примерно 70 строке прописываем зависимость
Потом в методе initCommands прописываем нашу команду
Вот и все! Теперь при прописывании команды .prefix <символ (допустим @)> ваш префикс будет устанавливаться на @, при перезапуске остается таким же!
1. Создаем класс PrefixCommand и ставим код
Java:
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 "Изменяет текущий префикс команд на указанный";
}
}
Java:
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;
}
}
}
Java:
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:
private PrefixStorage prefixStorage;
Java:
commands.add(new PrefixCommand(logger, prefixStorage));