Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Слетают регионы

Тема в разделе "Разработка плагинов для новичков", создана пользователем TorwaldOswarld, 29 июл 2015.

  1. Автор темы
    TorwaldOswarld

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

    Баллы:
    68
    Имя в Minecraft:
    _TheMaxPlay_
    Вот как я его использовал
    Код:
    package ru.ShaKe.AGP;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;
    import java.util.logging.Logger;
    
    import org.bukkit.Bukkit;
    import org.bukkit.Location;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Core extends JavaPlugin {
     public final Logger logger = Logger.getLogger("Minecraft");
    
     public final AdvancedGriefProtectionListener agp = new AdvancedGriefProtectionListener(this);
    
     public final CubeGenerateProtect cgp = new CubeGenerateProtect(this);
     public final Methods m = new Methods();
     public final AdvancedGriefProtectionCommandListener ce = new AdvancedGriefProtectionCommandListener(this);
    
     public ArrayList<Location> protectedBlocks = new ArrayList<Location>();
    
     public Location start = null;
     public Location end = null;
    
     public int ID = 0;
    
        public void onEnable() {
           
            PluginManager pm = getServer().getPluginManager();
            PluginDescriptionFile pdfFile = this.getDescription();
           
            getCommand("protect").setExecutor(ce);
           
            this.logger.info(" [AdvancedProtection] " + pdfFile.getName() + " Version " + pdfFile.getVersion() + " Has Been Enabled! ");
            this.logger.info(" [AdvancedProtection] Plugin Made By" + pdfFile.getAuthors());
            pm.registerEvents(agp, this);
        }
        public void onDisable() {
           
        }
        public class RegionData
           {
               Location start;//начальные координаты
               Location end;//конченые координаты
         
               String name = "";//имя
         
               //конструктор по-умолчанию
               public RegionData(Location start, Location end, String name)
               {
                   this.start = start;
                   this.end = end;
           
                   this.name = name;
               }
         
               //get-, set-методы
         
               public String getName()
               {
                   return name;
               }
         
               public Location getStartLocation()
               {
                   return start;
               }
         
               public Location getEndLocation()
               {
                   return end;
               }
         
               public void setName(String val)
               {
                   name = val;
               }
         
               public void setStartLocation(Location val)
               {
                   start = val;
               }
         
               public void setEndLocation(Location val)
               {
                   end = val;
               }
           }
         
           Map<String, RegionData> regions = new HashMap<String, RegionData>();
         
           //загразка
           public void Load()
           {
               File f = new File(this.getDataFolder().getAbsolutePath()+"/regions.yml");//ищем файл regions.yml
         
               if(!f.exists())//если его нет, пропускаем код ниже
                   return;
         
               FileConfiguration data = YamlConfiguration.loadConfiguration(f);//загружаем кофиг
         
               Set <String> keys = data.getKeys(false);//ключевые значения главной секции из конфига.
         
               for(String region : keys)//проходим по списку
               {
                   RegionData rg;//объявление переменной типа RegionData
           
                   String world = data.getString(region + ".world");
           
                   Location start = data.getVector(region + ".start").toLocation(Bukkit.getWorld(world));
                   Location end = data.getVector(region + ".end").toLocation(Bukkit.getWorld(world));
           
                   rg = new RegionData(start, end, region);
           
                   regions.put(region, rg);
               }
           }
         
           public void Save()
           {
               File f = new File(this.getDataFolder().getAbsolutePath()+"/regions.yml");//ищем файл regions.yml
         
               YamlConfiguration data = new YamlConfiguration();
         
               for(Map.Entry<String, RegionData> entry : regions.entrySet())
               {
                   data.set(entry.getKey()+".world", entry.getValue().getStartLocation().getWorld().getName());
                   data.set(entry.getKey() + ".start", entry.getValue().getStartLocation().toVector());
                   data.set(entry.getKey() + ".end", entry.getValue().getEndLocation().toVector());
               }
         
               try
               {
                   data.save(f);
               }
               catch (IOException e)
               {
                   e.printStackTrace();
               }
           }
    }
    
     
  2. Хостинг MineCraft
    <
  3. leonmark061

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

    Баллы:
    76
    Теперь вместо вашего списка protectedBlock или как он там назывался, используйте мапу regions.
    Когда выделяете регион, сохраняйте где-нибудь две последние выделенные точки так, чтобы к ним можно было получить доступ из CommandExecutor-а. В нем вы должны создать новый экземпляр RegionData, добавить его в мапу и вызвать Save(). В методе onEnable вы кстати должны вызвать Load().
     
  4. Автор темы
    TorwaldOswarld

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

    Баллы:
    68
    Имя в Minecraft:
    _TheMaxPlay_
    Боже как сложно. так как я начинающий кодер , для меня это очень сложно :(
     
  5. LomNar

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

    Баллы:
    78
    Skype:
    radius981
    Имя в Minecraft:
    LomNar
    Мне не трудно. Буду свободен ещё 4 часа, скайп мой знаешь
     
  6. Автор темы
    TorwaldOswarld

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

    Баллы:
    68
    Имя в Minecraft:
    _TheMaxPlay_
    Ок , спасибо :)
     

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