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

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

Discussion in 'Разработка плагинов для новичков' started by TorwaldOswarld, Jul 29, 2015.

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

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

    Trophy Points:
    68
    Имя в Minecraft:
    _TheMaxPlay_
    Вот как я его использовал
    Code:
    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 Активный участник Пользователь

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

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

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

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

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

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

    Trophy Points:
    68
    Имя в Minecraft:
    _TheMaxPlay_
    Ок , спасибо :)
     

Share This Page