1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Создание файла config.yml и настройка кода через него

Тема в разделе "Разработка плагинов для новичков", создана пользователем Folzy, 7 фев 2021.

Статус темы:
Закрыта.
  1. Автор темы
    Folzy

    Folzy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    CUBOPHORIA
    Создал плагин.
    Но мне нужен создать к нему config.yml
    Чтоб через него настраивать параметр:
    Bukkit.getScheduler().tunTaskLater
    (Настройка времени через config.yml)
    Как мне это сделать?
     
  2. NightWill

    NightWill Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    NightWill
    Код:
    public class ConfigManager {
        private Main instance;
    
        public ConfigManager(Main instance) {
            this.instance = instance;
        }
    
        public void registerConfiguration() {
            Type.CONFIG = instance.getConfig();
        }
    
        public void unregisterConfiguration() {
            saveConfig("config.yml", Type.CONFIG);
        }
    
        public static class Type {
            public static FileConfiguration CONFIG;
        }
    
        public static void saveConfig(String file, FileConfiguration config) {
            try {
                config.save(new File(Main.instance.getDataFolder(), file));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        private FileConfiguration loadConfiguration(String fileName) {
            File f = new File(instance.getDataFolder(), fileName);
    
            if(!f.exists()) {
                try {
                    f.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
            return YamlConfiguration.loadConfiguration(f);
        }
    }
     
  3. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Совсем больной?) Зачем релизовывать то, что и так есть в ведроапи? Еще и таким ужасным костылем.
     
  4. Автор темы
    Folzy

    Folzy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    CUBOPHORIA
    Смотри у меня есть такой код
    Код:
    package org.rb.guide;
    
    import org.bukkit.Bukkit;
    import org.bukkit.Material;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.block.Block;
    import org.bukkit.entity.Player;
    import org.*********ventory.ItemStack;
    
    public class Handler implements Listener {
        public Handler(MinerBlock plugin) {
            this.plugin = plugin;
        }
        
    private MinerBlock plugin = (MinerBlock)MinerBlock.getPlugin(MinerBlock.class);
        public static ItemStack coal = new ItemStack(Material.COAL);
        public static ItemStack iron_ingot = new ItemStack(Material.IRON_INGOT);
        public static ItemStack gold_ingot = new ItemStack(Material.GOLD_INGOT);
        public static ItemStack diamond = new ItemStack(Material.DIAMOND);
        public static ItemStack emerald = new ItemStack(Material.EMERALD);
        
        @EventHandler
        public void Break(BlockBreakEvent e)
        {
            Player p = e.getPlayer();
            Block b = e.getBlock();
            Material ore = b.getType();
            
            if(ore == Material.COAL_ORE)
            {
                e.setCancelled(true);
                b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), coal);
                b.setType(Material.BEDROCK);
                p.setExp(0.1F);
                Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
                    
                    @Override
                    public void run() {
                        b.setType(Material.COAL_ORE);
                    }
                }, 140);
            }
                    if(ore == Material.IRON_ORE)
            {
                e.setCancelled(true);
                b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), iron_ingot);
                b.setType(Material.BEDROCK);
                p.setExp(0.15F);
                Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
                    
                    @Override
                    public void run() {
                        b.setType(Material.IRON_ORE);
                    }
                }, 200);
            }
                             if(ore == Material.GOLD_ORE)
            {
                e.setCancelled(true);
                b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), gold_ingot);
                b.setType(Material.BEDROCK);
                p.setExp(0.2F);
                Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
                    
                    @Override
                    public void run() {
                        b.setType(Material.GOLD_INGOT);
                    }
                }, 260);
            }
                             if(ore == Material.DIAMOND_ORE)
            {
                e.setCancelled(true);
                b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), diamond);
                b.setType(Material.BEDROCK);
                p.setExp(0.25F);
                Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
                    
                    @Override
                    public void run() {
                        b.setType(Material.DIAMOND);
                    }
                }, 340);
            }
                             if(ore == Material.EMERALD_ORE)
            {
                e.setCancelled(true);
                b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), emerald);
                b.setType(Material.BEDROCK);
                p.setExp(0.3F);
                Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
                    
                    @Override
                    public void run() {
                        b.setType(Material.EMERALD);
                    }
                }, 400);
            }                 
        }
        
    }
    И как мне в этом коде сделать настройку кода Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable()

    в файле config.yml ?
     
  5. NoooobKa

    NoooobKa Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    в src нужно создать config.yml , в мейне должно быть следующее
    Код:
     
        public FileConfiguration config;
       
        public void onEnable(){
            config = getConfig(); // Передаешь конфиг в переменную
            saveDefaultConfig(); // Если конфиг не существует создаст его
        }
        
        public void onDisable() {
            saveConfig(); //Сохраняешь конфиг
        }
    Дальше где угодно передаешь переменную конфига и вписываешь путь:значение
    Код:
    config.set("Time", 100);
    Дальше когда тебе нужно получить значение

    Код:
    int time = config.getInt("Time");
     
  6. NightWill

    NightWill Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    NightWill
    Главное работает :good:
     
  7. NoooobKa

    NoooobKa Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Всё что есть в этом классе, есть и в бакките, имеет смысл создавать такие менеджеры, когда нужен кастомный конфиг, или пихать туда свои методы для работы с конфигом
     
  8. NightWill

    NightWill Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    NightWill
    Ну так я и выложил, чтобы он ещё мог свои туда конфиги добавлять.
     
  9. Автор темы
    Folzy

    Folzy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    CUBOPHORIA
     
  10. Автор темы
    Folzy

    Folzy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    CUBOPHORIA
    Смотри вот мой MinerBlock.java:
    Код:
    package org.rb.guide;
    
    import java.io.File;
    import org.bukkit.Bukkit;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.plugin.java.JavaPlugin;
    
    
        public class MinerBlock extends JavaPlugin {
               public FileConfiguration config;   
            
            @Override
            public void onEnable(){
                File config = new File(getDataFolder() + File.separator + "config.yml");
                if(!config.exists()){
                    getLogger().info("Creating new config file...");
                    getConfig().options().copyDefaults(true);
                    saveDefaultConfig();
                }
                getLogger().info("Plugin Enabled!");
                Bukkit.getPluginManager().registerEvents(new Handler(this), this);
            }
            
            @Override
             public void onDisable(){
                getLogger().info("Plugin Enabled!");
                saveConfig();
            }
            
        }   
    
    А вот мой Handler.java:
    Код:
    package org.rb.guide;
    
    import org.bukkit.Bukkit;
    import org.bukkit.Material;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.block.Block;
    import org.bukkit.entity.Player;
    import org.*********ventory.ItemStack;
    
    public class Handler implements Listener {
        public Handler(MinerBlock plugin) {
            this.plugin = plugin;
        }
        
    private MinerBlock plugin = (MinerBlock)MinerBlock.getPlugin(MinerBlock.class);
        public static ItemStack coal = new ItemStack(Material.COAL);
        public static ItemStack iron_ingot = new ItemStack(Material.IRON_INGOT);
        public static ItemStack gold_ingot = new ItemStack(Material.GOLD_INGOT);
        public static ItemStack diamond = new ItemStack(Material.DIAMOND);
        public static ItemStack emerald = new ItemStack(Material.EMERALD);
        
        @EventHandler
        public void Break(BlockBreakEvent e)
        {
            Player p = e.getPlayer();
            Block b = e.getBlock();
            Material ore = b.getType();
            
            if(ore == Material.COAL_ORE)
            {
                e.setCancelled(true);
                b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), coal);
                b.setType(Material.BEDROCK);
                p.setExp(0.1F);
                Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
                    
                    @Override
                    public void run() {
                        b.setType(Material.COAL_ORE);
                    }
                }, 140);
            }
                    if(ore == Material.IRON_ORE)
            {
                e.setCancelled(true);
                b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), iron_ingot);
                b.setType(Material.BEDROCK);
                p.setExp(0.15F);
                Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
                    
                    @Override
                    public void run() {
                        b.setType(Material.IRON_ORE);
                    }
                }, 200);
            }
                             if(ore == Material.GOLD_ORE)
            {
                e.setCancelled(true);
                b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), gold_ingot);
                b.setType(Material.BEDROCK);
                p.setExp(0.2F);
                Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
                    
                    @Override
                    public void run() {
                        b.setType(Material.GOLD_INGOT);
                    }
                }, 260);
            }
                             if(ore == Material.DIAMOND_ORE)
            {
                e.setCancelled(true);
                b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), diamond);
                b.setType(Material.BEDROCK);
                p.setExp(0.25F);
                Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
                    
                    @Override
                    public void run() {
                        b.setType(Material.DIAMOND);
                    }
                }, 340);
            }
                             if(ore == Material.EMERALD_ORE)
            {
                e.setCancelled(true);
                b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), emerald);
                b.setType(Material.BEDROCK);
                p.setExp(0.3F);
                Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
                    
                    @Override
                    public void run() {
                        b.setType(Material.EMERALD);
                    }
                }, 400);
            }                 
        }
        
    }
    Ну и мой config.yml:
    Код:
    Coal:
        cooldown: 140
    Покажи на моем примере что да и как
     
  11. _MRDen3000YT_

    _MRDen3000YT_ Активный участник Пользователь

    Баллы:
    76
    Вместо 140 - plugin.getConfig().getInt("Coal.cooldown");
     
  12. Автор темы
    Folzy

    Folzy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    CUBOPHORIA
    От души
     
  13. Автор темы
    Folzy

    Folzy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    CUBOPHORIA
    А как мне сделать так чтоб допустим угольная руда нпходилась не по всему миру
    А в указанных координатах?
    Тип с моим кодом по всему миру ломаешь руду и она превращается в бедрок.
    А мне надо чтоб только в указанных координатах.
     
  14. _MRDen3000YT_

    _MRDen3000YT_ Активный участник Пользователь

    Баллы:
    76
    Создаешь регион ворлдагуарла, под названием, mine, для примера. Помещаешь в этот рг угольную руду.
    Далее, делаешь вот так:
    PHP:
    @EventHandler
        
    public void Break(BlockBreakEvent e)
        {
            
    Player p e.getPlayer();
            
    Block b e.getBlock();
            
    Material ore b.getType();
            
    RegionManager rgm plugin.wg.getRegionManager(p.getWorld());
            
    ApplicableRegionSet ars rgm.getApplicableRegions(p.getLocation());
            
    ars.getRegions();
            
    boolean isRightRegion false;
            for (
    ProtectedRegion prg ars){
                  if (
    prg.getId().equalsIgnoreCase("mine")) {
                      
    isRightRegion true;
                  }
            }
           
            if(!
    isRightRegion) {
                return;
            }
            if(
    ore == Material.COAL_ORE)
            {
                
    e.setCancelled(true);
                
    b.getLocation().add(0.50.50.5).getWorld().dropItemNaturally(b.getLocation(), coal);
                
    b.setType(Material.BEDROCK);
                
    p.setExp(0.1F);
                
    Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
                   
                    @
    Override
                    
    public void run() {
                        
    b.setType(Material.COAL_ORE);
                    }
                }, 
    140);
            }
                    if(
    ore == Material.IRON_ORE)
            {
                
    e.setCancelled(true);
                
    b.getLocation().add(0.50.50.5).getWorld().dropItemNaturally(b.getLocation(), iron_ingot);
                
    b.setType(Material.BEDROCK);
                
    p.setExp(0.15F);
                
    Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
                   
                    @
    Override
                    
    public void run() {
                        
    b.setType(Material.IRON_ORE);
                    }
                }, 
    200);
            }
                             if(
    ore == Material.GOLD_ORE)
            {
                
    e.setCancelled(true);
                
    b.getLocation().add(0.50.50.5).getWorld().dropItemNaturally(b.getLocation(), gold_ingot);
                
    b.setType(Material.BEDROCK);
                
    p.setExp(0.2F);
                
    Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
                   
                    @
    Override
                    
    public void run() {
                        
    b.setType(Material.GOLD_INGOT);
                    }
                }, 
    260);
            }
                             if(
    ore == Material.DIAMOND_ORE)
            {
                
    e.setCancelled(true);
                
    b.getLocation().add(0.50.50.5).getWorld().dropItemNaturally(b.getLocation(), diamond);
                
    b.setType(Material.BEDROCK);
                
    p.setExp(0.25F);
                
    Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
                   
                    @
    Override
                    
    public void run() {
                        
    b.setType(Material.DIAMOND);
                    }
                }, 
    340);
            }
                             if(
    ore == Material.EMERALD_ORE)
            {
                
    e.setCancelled(true);
                
    b.getLocation().add(0.50.50.5).getWorld().dropItemNaturally(b.getLocation(), emerald);
                
    b.setType(Material.BEDROCK);
                
    p.setExp(0.3F);
                
    Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
                   
                    @
    Override
                    
    public void run() {
                        
    b.setType(Material.EMERALD);
                    }
                }, 
    400);
            }                 
        }
     
  15. _MRDen3000YT_

    _MRDen3000YT_ Активный участник Пользователь

    Баллы:
    76
    Теперь если игрок сломает любой блок из представленных тобою в регионе mine, то он замениться на бедрок.
    Если игрок находится за пределами - ничего не произойдет.
     
  16. Автор темы
    Folzy

    Folzy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    CUBOPHORIA
    Все отлично но ошибки в RegionManager
    ApplicableRegionSet
    И в
    for (ProtectedRegion prg : ars)
     
  17. Автор темы
    Folzy

    Folzy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    CUBOPHORIA
    Не подскажешь что у меня за ошибки?
     
  18. NoooobKa

    NoooobKa Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Импортировал и ВорлдЕдит и ВорлдГуард?
     
  19. Автор темы
    Folzy

    Folzy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    CUBOPHORIA
    У меня импорт не выходил...
    А как его импортировать?
     
  20. NightWill

    NightWill Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    NightWill
Статус темы:
Закрыта.

Поделиться этой страницей