Фанатик пришел
Никакого плагина нет, о чем ты
Все файлы пустые, сделаны только сообщения. По чему вы вообще судите
Удобно когда загнал все строки в один класс и используешь их в других одного плагина
Пример
package ru.weblox.api.utils;
import cn.nukkit.utils.TextFormat;
public interface Lang {
String GLOBAL_COMMAND_NOT_PERMISSION = "{red}У вас нет прав на использование этой команды";
String CLEARED_TIMED = "{red}Очистка произойдет через %s %s";
String CLEARED_SUCCESS = "{red}С земли %s %s %s";
String COMMAND_BAN_ALERT = "Вы забанены администратором %s. Причина: %s.\nВремя до окончания бана: %s.";
String COMMAND_BAN_ALREADY_BAN = "Игрок уже был забанен ранее";
String COMMAND_BAN_BROADCAST = "{red}Администратор %s забанил игрока %s на %s. Причина: %s";
@SuppressWarnings("unused")
String COMMAND_BAN_DESCRIPTION = "Забанить игрока";
String COMMAND_BAN_INCORRECT_DAYS = "Некорректные дни (от 5 до 30)";
String COMMAND_BAN_NO_REASON = "Причина не указана";
@SuppressWarnings("unused")
String COMMAND_FREEZE_DESCRIPTION = "Заморозить игрока";
String COMMAND_FREEZE_OFFLINE_PLAYER = "{red}Игрок не существует или не в сети";
String COMMAND_FREEZE_PLAYER = "{green}Вы заморозили %s";
String COMMAND_FREEZE_YOUSELF = "{green}Вы заморозили себя";
@SuppressWarnings("unused")
String COMMAND_GIVEMONEY_DESCRIPTION = "Выдать игроку денег";
String COMMAND_GIVEMONEY_SUCCESS = "Вы успешно выдали игроку %s %s₽";
@SuppressWarnings("unused")
String COMMAND_GOD_DESCRIPTION = "Включить режим бога";
String COMMAND_GOD_DISABLE = "Режим бога выключен";
String COMMAND_GOD_ENABLE = "Режим бога включен";
@SuppressWarnings("unused")
String COMMAND_ID_DESCRIPTION = "Покажите id предмета, который у вас в руке";
String COMMAND_ID_TOGGLE_OFF = "Информация о предмете, который у вас есть в руках, больше не будет вам показана";
String COMMAND_ID_TOGGLE_ON = "Теперь будет отображаться информация о любом предмете, который у вас есть в руке";
String COMMAND_MUTE_ALERT = "Вы замучены администратором %s. Причина: %s.\nВремя до окончания мута: %s.";
String COMMAND_MUTE_ALREADY_MUTE = "Игрок уже в муте";
String COMMAND_MUTE_BROADCAST = "{red}Администратор %s замутил игрока %s на %s. Причина: %s";
@SuppressWarnings("unused")
String COMMAND_MUTE_DESCRIPTION = "Замутить игрока";
String COMMAND_MUTE_INCORRECT_TIME = "Некорректное время (от 30 до 180 минут)";
String COMMAND_MUTE_NO_REASON = "Нет причины";
String COMMAND_MUTE_ON_PLAYER = "Вас замутил администратор %s на %s. Причина: %s";
@SuppressWarnings("unused")
String COMMAND_MYMONEY_DESCRIPTION = "Показать баланс";
String COMMAND_MYMONEY = "Ваш баланс: %s₽";
@SuppressWarnings("unused")
String COMMAND_PAY_DESCRIPTION = "Перевести денег игроку";
String COMMAND_PAY_NOT_MONEY = "У вас недостаточно денег для перечисления";
String COMMAND_PAY_SUCCESS = "Вы перевели игроку %s %s₽";
String COMMAND_PAY_TARGET_SUCCESS = "Игрок %s перевел вам %s₽";
@SuppressWarnings("unused")
String COMMAND_REDUCEMONEY_DESCRIPTION = "Забрать денег у игрока";
String COMMAND_REDUCEMONEY_SUCCESS = "Вы забрали у игрока %s %s₽";
@SuppressWarnings("unused")
String COMMAND_SETMONEY_DESCRIPTION = "Установить баланс игроку";
String COMMAND_SETMONEY_SUCCESS = "Вы установили игроку %s баланс %s₽";
String COMMAND_UNBAN_BROADCAST = "{red}Администратор %s разбанил игрока %s. Причина: %s";
@SuppressWarnings("unused")
String COMMAND_UNBAN_DESCRIPTION = "Разбанить игрока";
String COMMAND_UNBAN_NOT_BAN = "Игрок не находился в бане";
@SuppressWarnings("unused")
String COMMAND_UNFREEZE_DESCRIPTION = "Разморозить игрока";
String COMMAND_UNFREEZE_OFFLINE_PLAYER = "Игрок не существует, или не в сети";
String COMMAND_UNFREEZE_PLAYER = "Вы разморозили %s";
String COMMAND_UNFREEZE_YOUSELF = "Вы разморозили себя";
String COMMAND_UNMUTE_BROADCAST = "{red}Администратор %s размутил игрока %s. Причина: %s";
@SuppressWarnings("unused")
String COMMAND_UNMUTE_DESCRIPTION = "Размутить игрока";
String COMMAND_UNMUTE_NOT_MUTE = "Игрок не находился в муте";
String COMMAND_UNMUTE_ON_PLAYER = "Вас размутил администратор %s. Причина: %s";
String CREATIVE_DROP_ITEM = "{red}Вы не можете выбрасывать вещи из креатива";
String CREATIVE_PICKUP_ITEM = "{red}Вы не можете поднимать предметы в креативе";
String GLOBAL_COMMAND_INVALID_NUMBER_OF_ARGUMENTS = "Неверное колличество аргументов";
@SuppressWarnings("unused")
String GLOBAL_COMMAND_PARAMS_DAYS = "дни";
@SuppressWarnings("unused")
String GLOBAL_COMMAND_PARAMS_PLAYER = "игрок";
@SuppressWarnings("unused")
String GLOBAL_COMMAND_PARAMS_REASON = "причина";
@SuppressWarnings("unused")
String GLOBAL_COMMAND_PARAMS_TIME = "время";
String GLOBAL_COMMAND_UNKNOWN_SUBCOMMAND = "Неизвестная суб-команда";
String GLOBAL_COMMAND_USE_INGAME = "Пожалуйста, используйте эту команду в игре";
String PRIVATE_MESSAGE_PLACEHOLDER_SENDER = "{blue}[П] {yellow}Вы > %s > {reset} %s";
String PRIVATE_MESSAGE_PLACEHOLDER_SENT = "{blue}[П] {yellow}%s > Вам > {reset} %s";
String PRIVATE_MESSAGE_PLAYER_OFFLINE = "Игрок не существует, или не в сети";
String PRIVATE_MESSAGE_SEND_YOURSELF = "Вы не можете отправить личное сообщение себе";
String SCHEMATICS_SCHEM_IMPORT_SUCCESS = "Схема %s успешно импортирована";
String SCHEMATICS_SCHEM_INVALID = "Схема недействительна";
String SCHEMATICS_SCHEM_NOT_FOUND = "Схема %s не найдена";
String FORM_TELEPORTATION_TITLE = "Телепортация";
String FORM_TELEPORTATION_LABEL = "Телепорт в другой мир";
String FORM_TELEPORTATION_TELEPORT = "Вы телепортированы в %s";
String FORM_GENERATION_TITLE = "Генерация мира";
String FORM_GENERATION_INPUT_NAME_NAME = "Название";
String FORM_GENERATION_INPUT_NAME_PLACEHOLDER = "Введите название мира";
String COMMAND_TIME_LEVEL_NOT_FOUND = "Мир с названием %s не найден";
String COMMAND_TIME_LEVEL_START = "Время в мире %s запущено";
String COMMAND_TIME_LEVEL_STOP = "Время в мире %s остановлено";
String COMMAND_TIME_LEVELS_STOP = "Время во всех мирах остановлено";
String COMMAND_TIME_LEVELS_START = "Время во всех мирах запущено";
String COMMAND_TIME_LEVEL_QUERY = "Время в мире %s: %s";
String AUTORESTART_MESSAGE = "{red}Перезагрузка через %s мин.";
default String tr(String text) {
for (TextFormat color : TextFormat.values()) {
text = text.replace("{" + color.name().toLowerCase() + "}", color.toString());
}
return text;
}
default String tr(String text, Object[] args) {
text = tr(text);
return text.formatted(args);
}
}
player.sendMessage(tr(COMMAND_TIME_LEVELS_START));
А у меня все сообщения в отдельном файле
import cn.nukkit.plugin.Plugin;
import cn.nukkit.utils.Config;
import cn.nukkit.utils.TextFormat;
import java.util.HashMap;
import java.util.Map;
public class Language {
private static final Map<String, String> messages = new HashMap<>();
/**
* Load language
*/
public static void init(Plugin plugin) {
String language = plugin.getConfig().getString("language", "eng").toLowerCase();
plugin.saveResource("lang/" + language + ".yml");
Config config = new Config(plugin.getDataFolder() + "/lang/" + language + ".yml", Config.YAML);
config.getAll().forEach((key, value) -> {
if (value instanceof String message) {
messages.put(key, message);
}
});
}
/**
* Get message
* @param key Message key
* @param replacements Message parameters
* @return String message
*/
public static String get(String key, Object... replacements) {
String message = TextFormat.colorize(messages.getOrDefault(key, key));
int i = 0;
for (Object replacement : replacements) {
message = message.replace("[" + i + "]", String.valueOf(replacement));
i++;
}
return message;
}
}
аналогично
Я не пользуюсь конфигом, потому что хочу чтобы при вводе ключа отображались подсказки
В таком случае было бы логично хранить в константах ключи для конфигов ![]()
Это не то же самое, лол.
Тоже хотел об этом написать
Да и я не совсем об этом
Так а смысл писать отдельно ключи и потом в конфиги тексты, при добавлении новой строки добавлять и там и там, легче в классе сделать и все
Кошмар
Да какая мне разница?
Ты сказал что не используешь кфг из за удобства работы с подсказками, я сказал что то же удобство можно получить не теряя всех возможностей кфг.
Всё, тема за сим закрыта.
опять же, это первое что пришло в голову, в будущем я полностью переработаю все)
Да я не агитирую, просто в том и суть что потом всё это переделывать)
Как будто мало того что работа с текстом это всегда геморрой…
В мое случае использования того же конфига - напряг мозгов + мусор в папке плагина, так что я воспользовался легким путем, который будет легко переделан)
че он написал
То что он гкодер и приправил всё это матом
