Начинающий
			
			
				
					
				
			
		- Статус
- Оффлайн
- Регистрация
- 6 Дек 2023
- Сообщения
- 518
- Реакции
- 3
Сегодня сливаю создание кастомного префикса (вместо .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)); 
				 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		