- Поддерживаемые версии
- 1.16
- 1.17
- 1.18
- 1.19
- 1.20
- 1.21
- Ядра и Прокси
- Bukkit
- Spigot
- Paper
- Минимальная версия Java
- 16
Наш Телеграм канал - You must be logged in to see this link.
В ЧЕМ СМЫСЛ ПЛАГИНА?
По сути это больше API, чем плагин (как Vault, предоставляющий API для экономики, но не реализующий его), это API предоставляет возможность использовать стили/темы для того, чтобы другие разработчики могли внедрять возможность изменять для игроков выбор стиля и темы. Однако внутри плагина уже есть реализация команды на установку темы игроку и перезагрузку конфига Например, если у игрока тема CLASSIC, то у него в плагине отображается сообщение так:
Если же игрок захочет сменить на другую тему, например LEGENDARY, то все сообщения в плагине игрок будет получать в таком виде:
Таким образом можно кастомизировать буквально все: сообщения, actionbar, TAB, ScoreBoard, меню, да все что угодно
ЧТО В НЕМ ЕСТЬ?
КАК ИСПОЛЬЗОВАТЬ API ПЛАГИНА НА ПРАКТИКЕ?
Допустим, мы хотим добавить в плагин возможность отправку сообщения, которое будет разным в зависимости от темы. Вот пример в конфиге:
Для реализации код будет выглядеть примерно следующим образом:
ВАЖНАЯ ИНФОРМАЦИЯ
Чтобы игроку установилась нужная тема, он должен иметь на ее право: 'dreamthemes.название темы'. например: 'dreamthemes.RARE'. Тема CLASSIC - стандартная и всегда доступна


По сути это больше API, чем плагин (как Vault, предоставляющий API для экономики, но не реализующий его), это API предоставляет возможность использовать стили/темы для того, чтобы другие разработчики могли внедрять возможность изменять для игроков выбор стиля и темы. Однако внутри плагина уже есть реализация команды на установку темы игроку и перезагрузку конфига Например, если у игрока тема CLASSIC, то у него в плагине отображается сообщение так:
Если же игрок захочет сменить на другую тему, например LEGENDARY, то все сообщения в плагине игрок будет получать в таком виде:
Таким образом можно кастомизировать буквально все: сообщения, actionbar, TAB, ScoreBoard, меню, да все что угодно


- Возможность создавать сколько угодно тем/стилей
- поддержка БД для хранения выбранной темы (SQLlite и MySQL)
- Поддержка hex-цветов в формате '&#rrrgggbbb'


Допустим, мы хотим добавить в плагин возможность отправку сообщения, которое будет разным в зависимости от темы. Вот пример в конфиге:
YAML:
messages: # сообщения
player-on-join: # сообщения, которые будут отправлятся игроку при входе
CLASSIC: # Отправляем сообщение игроку из этого пути, если у игрока тема CLASSIC
- '&#D9FFBE» &fДобро пожаловать на сервер!'
LEGENDARY: # Отправляем сообщение игроку из этого пути, если у игрока тема LEGENDARY
- 'C1FF» &fРады видеть тебя, обладатель C1FFлегендарной &fтемы'
Для реализации код будет выглядеть примерно следующим образом:
Java:
// Это просто пример, можно по-другому реализовать струкрутур плагина
// Главный класс
public class Main {
private static Main instance;
private ThemeAPI themeAPI;
@Override
public void onEnable() {
instance = this;
themeAPI = getServer().getServicesManager().getRegistration(ThemeAPI.class).getProvider();
saveDeffaultConfig();
getServer().getPluginManager().registerEvents(new PlayerJoinHandler(), this);
}
@Override
public void onDisable() {}
public static Main getInstance() {
return instance;
}
public ThemeAPI getThemeAPI() {
return themeAPI();
}
}
// Класс где будет реализовано отправка сообщений из конфига
public class MessagesUtils {
public static sendMessagesFromConfig(Player player, String path) {
final FileConfiguration config = Main.getInstance().getConfig();
final String theme = getTheme(player); // Получаем тему игрока по его UUID
player.sendMessage(config.getString(path + "." + theme)); // Отправляем сообщение игроку по пути с его темой
}
private static String getTheme(Player player) { // Метод на получение темы игрока
return Main.getInstance().getThemeAPI().getTheme(player.getUniqueId());
}
}
// Класс с обработкой события при входе
public class PlayerJoinHandler implements Listener {
@EvenHandler
public void onJoin(PlayerJoinEvent e) {
MessagesUtils.sendMessagesFromConfig(e.getPlayer(), "messages.player-on-join")
}
}


Чтобы игроку установилась нужная тема, он должен иметь на ее право: 'dreamthemes.название темы'. например: 'dreamthemes.RARE'. Тема CLASSIC - стандартная и всегда доступна
- Зависимости
- -
- Исходный код
- https://github.com/DreamCode-Studio/DreamThemes
- Команды и права
- На использование команд одно право: 'dreamthemes.use'
Для возможности установки темы какой-то нужно право: 'dreamthemes.<название_темы>'
/dreamthemes reload - перезагрузка конфига
/dreamthemes <название_темы> - установка темы тому, кто вводит команду
/dreamthemes set <никигрока> <названиетемы> установка темы игроку