- Баллы
- 96
- Имя в Minecraft
- fcode0xb
Привет,это я Faint! Решил сделать тутор [Конфиг и его возможности (Для новичков)]
И так! Что нам понадобиться:
- Eclipse (Сочувствую если у вас другой IDE)
- Прямые руки
- Spigot 1.8 - 1.8.9
Все. Погнали!
Для начала нам нужно сделать простой плагин (Будем играть с командами)
Нам будет нужна команда /cmd (главная команда ) | /cmd (Player) (Сохраняем инфо о плеере в конф) | /cmd reload (перезагрузка конфига)
Надо заменить значение cmd на команду,к примеру info
И так,создадим Main(Если не знаете как работать с Eclipse,то вот вам мини тутор)
Внимание! Чтобы сделать тему удобной,код будет под спойлером.
Вот мы создали Main.
Такс,теперь объяснение
Что такое public static Main m;
Это статическая функция(т.е если сложно то это указатель класса Main)
Что такое public static void color
Это вместо s = s.replace("&", "/u007"); (чтобы вам было проще)
И так! Погнали теперь к классу CMD
Много вопросов,мало ответов!
Вопрос: Что это такое? if(args.length == 0){
Ответ:
Это аргумент главной команды,в Main он указан как
getCommand("info").setExecutor(new CMD());
То есть,если мы напишем /info то нам выдаст ту строку которую мы указали в конфиге.
Вопрос: Что такое m.getConfig()
Ответ: m - ссылка на класс Main. И от Main мы и получаем конфиг.
Вопрос: Что такое if(args[0].equalsIgnoreCase("reload")){
Это аргумент + команда
Пример: /info reload - Перезагрузка конфига.
CONFIG.YML (Выводим все свои грехи в конфиг):
С plugin.yml думаю сами справитесь
Всем покедова)
И так! Что нам понадобиться:
- Eclipse (Сочувствую если у вас другой IDE)
- Прямые руки
- Spigot 1.8 - 1.8.9
Все. Погнали!
Для начала нам нужно сделать простой плагин (Будем играть с командами)
Нам будет нужна команда /cmd (главная команда ) | /cmd (Player) (Сохраняем инфо о плеере в конф) | /cmd reload (перезагрузка конфига)
Надо заменить значение cmd на команду,к примеру info
И так,создадим Main(Если не знаете как работать с Eclipse,то вот вам мини тутор)
Внимание! Чтобы сделать тему удобной,код будет под спойлером.
Вот мы создали Main.
Код:
package me.faint.infocmd;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin implements Listener{
public static Main m;
@Override
public void onEnable(){
saveDefaultConfig();
getLogger().info("Test CMD Enable!");
}
public Main(){
Main.m = this;
}
public static void color(Player p, String msg){
p.sendMessage(ChatColor.translateAlternateColorCodes('&', msg));
}
}
Что такое public static Main m;
Это статическая функция(т.е если сложно то это указатель класса Main)
Что такое public static void color
Это вместо s = s.replace("&", "/u007"); (чтобы вам было проще)
И так! Погнали теперь к классу CMD
Код:
package me.faint.infocmd;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class CMD implements CommandExecutor{
public static Main m = Main.m;
@SuppressWarnings("deprecation")
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(!(sender instanceof Player)){
sender.sendMessage(ChatColor.RED + "[Info] You are not player!");
return true;
}
Player p = (Player) sender;
if(args.length == 0){
String mes = m.getConfig().getString("command_glav");
Main.color(p, mes);
return true;
}
if(args[0].equalsIgnoreCase("reload")){
String mes = m.getConfig().getString("command_reload");
Main.color(p, mes);
m.reloadConfig();
return true;
}
if(args[0].equalsIgnoreCase("info")){
String title1 = m.getConfig().getString("info.title");
String title2 = m.getConfig().getString("info.subtitle");
Player target = Bukkit.getPlayer(args[1]);
title2 = title2.replace("%name%", target.getName());
if(target != null){
p.sendTitle(title1, title2);
m.getConfig().set("players.", target.getName());
m.getConfig().set("players.", target.getAddress().getHostName());
m.getConfig().set("players.", target.getAddress().getPort());
m.getConfig().set("players.", target.getWorld().getName());
m.getConfig().set("players.", target.getGameMode().getValue());
return true;
}
}
return false;
}
}
Вопрос: Что это такое? if(args.length == 0){
Ответ:
Это аргумент главной команды,в Main он указан как
getCommand("info").setExecutor(new CMD());
То есть,если мы напишем /info то нам выдаст ту строку которую мы указали в конфиге.
Вопрос: Что такое m.getConfig()
Ответ: m - ссылка на класс Main. И от Main мы и получаем конфиг.
Вопрос: Что такое if(args[0].equalsIgnoreCase("reload")){
Это аргумент + команда
Пример: /info reload - Перезагрузка конфига.
CONFIG.YML (Выводим все свои грехи в конфиг):
command_glav: '&4info reload | info (Player)'
command_reload: '&2Конфиг перезагружен!'
info:
title: '&2Информация добавлена в конфиг!'
subtitle: '&4Игрок: %name%'
command_reload: '&2Конфиг перезагружен!'
info:
title: '&2Информация добавлена в конфиг!'
subtitle: '&4Игрок: %name%'
Всем покедова)