Package me.vudu.Conflict.Handlers

Source Code of me.vudu.Conflict.Handlers.ConfigHandler

package me.vudu.Conflict.Handlers;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;

import me.vudu.Conflict.ConflictPlugin;
import me.vudu.Conflict.Blocks.ArtifactBlock;
import me.vudu.Conflict.util.BlockLocation;
import me.vudu.Conflict.util.PluginSerializer;

import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;

/**
* verwaltet die Config Files
* ist f�r speichern und laden zust�ndig
* @author vwendel
*
*/
public class ConfigHandler {
 
  private ConflictPlugin plugin;
  private FileConfiguration customConfig;
  private File customConfigFile;
  private FileConfiguration fileConfig;
  Class<ConflictPlugin> conflict;
 
 
  public ConfigHandler(ConflictPlugin plugin){
    this.plugin=plugin;
    fileConfig = plugin.getConfig();
    conflict = ConflictPlugin.class;
  }
 
  /**
   * l�dt eine Variable aus der Config oder erstellt diese und schreibt sie mit einem Default-Wert in die Config
   * @param name Name der Variablen
   * @param defaultValue Default-Wert
   * @param fg ConfigFile in das gespeichert wird
   */
  private void loadConfigElement(String name, Object defaultValue, FileConfiguration fg){
 
    if(null == fg.get(name)){
      fg.set(name, defaultValue);
    }else{
      try {
        if(defaultValue instanceof Boolean){
          conflict.getField(name).setBoolean(null, fg.getBoolean(name));
        }
        if(defaultValue instanceof Integer){
          conflict.getField(name).setInt(null, fg.getInt(name));
        }
        if(defaultValue instanceof Double){
          conflict.getField(name).setDouble(null, fg.getDouble(name));
        }
        if(defaultValue instanceof Long){
          conflict.getField(name).setLong(null, fg.getLong(name));
        }
      } catch (IllegalArgumentException e) {
        e.printStackTrace();
      } catch (SecurityException e) {
        e.printStackTrace();
      } catch (IllegalAccessException e) {
        e.printStackTrace();
      } catch (NoSuchFieldException e) {
        e.printStackTrace();
      }
     
    }
   
  }
 
  /**
   * l�dt einen Wert aus der DefaultConfig
   * @param name Name der Variable
   * @param defaultValue Wert, der gespeichert wird, falls die Variable nicht existiert
   */
  private void loadDefaultConfigElement(String name, Object defaultValue){
    loadConfigElement(name, defaultValue, this.fileConfig);
  }
 
  /**
   * l�dt einen Wert aus der CustomConfig im Welt-Ordner
   * @param name Name der Variable
   * @param defaultValue Wert, der gespeichert wird, falls die Variable nicht existiert
   */
  private void loadCustomConfigElement(String name, Object defaultValue){
    loadConfigElement(name, defaultValue, getCustomConfig());
  }
 
  /**
   * l�dt alle Config-Daten
   */
   public void loadConfig(){
       
        loadDefaultConfigElement("isCoop", false);
        loadDefaultConfigElement("hungerPerTime", 1);
        loadDefaultConfigElement("hungerIncreaseMultiplicator", 1);
        loadDefaultConfigElement("hungerDecreaseMultiplicator", 1);
        loadDefaultConfigElement("hungerDelayTicks", 6000);
        loadDefaultConfigElement("hungerIntervallTicks", 1200);
        loadDefaultConfigElement("blockUpdateTicks", 40);
        loadDefaultConfigElement("blockGrowTime", 60);
        loadDefaultConfigElement("artBlockHardness", 20.0f);
        loadDefaultConfigElement("vuduBrickHardness", 50.0f);
        loadDefaultConfigElement("deffBlockHardness", 1.0f);
        loadDefaultConfigElement("minBBHeight", 50);
        loadDefaultConfigElement("maxBBHeight", 70);
        loadDefaultConfigElement("explosionRange", 5);
        loadDefaultConfigElement("isInBaseBuild", 50);
        loadDefaultConfigElement("isInBaseDamage", 100);
        loadDefaultConfigElement("isInBaseHighDamage", 25);
        loadDefaultConfigElement("damageTreshold", 1000);
        loadDefaultConfigElement("campingBaseDamage", 1);
        loadDefaultConfigElement("campingDamageIntervall", 50);
        loadDefaultConfigElement("defenseHealIntervall", 100);
        loadDefaultConfigElement("skillRegenerationIntervall", 30);
        loadDefaultConfigElement("skillRun1", 1.2);
        loadDefaultConfigElement("skillRun2", 1.4);
        loadDefaultConfigElement("skillSwim1", 1.2);
        loadDefaultConfigElement("skillSwim2", 1.4);
        loadDefaultConfigElement("skillJump", 1.5);
        loadDefaultConfigElement("artSpeedupMax", 6);
        loadDefaultConfigElement("virusDistance", 25);
        loadDefaultConfigElement("spawnX", 0);
        loadDefaultConfigElement("spawnZ", 0);
              
         //************************* CustomConfig***********************
       
        loadCustomConfigElement("allowDestroyBaseBlock", false);
        loadCustomConfigElement("serverCloseTimestamp", ConflictPlugin.serverCloseTimestamp);
        loadCustomConfigElement("allowBBB", true);
        loadCustomConfigElement("allowBBR", false);
        loadCustomConfigElement("artRed", 0);
        loadCustomConfigElement("artBlue", 0);
        loadCustomConfigElement("damageTowerRed", 0);
        loadCustomConfigElement("damageTowerBlue", 0);
        loadCustomConfigElement("defenseTowerRed", 0);
        loadCustomConfigElement("defenseTowerBlue", 0);
        loadCustomConfigElement("radarTowerRed", 0);
        loadCustomConfigElement("radarTowerBlue", 0);
       
         //Basen
         if (null != getCustomConfig().get("redBase") && getCustomConfig().getString("redBase").length()>0){
           ConflictPlugin.redBase = new BlockLocation(getCustomConfig().getString("redBase"));
         }
         if (null != getCustomConfig().get("blueBase") && getCustomConfig().getString("blueBase").length()>0){
           ConflictPlugin.blueBase = new BlockLocation(getCustomConfig().getString("blueBase"));
         }
       
         //speichern
          plugin.saveConfig();  
          saveCustomConfig();
   }
  
 
   /**
  * liefert das CustomConfigFile oder l�dt dieses neu
  * @return das File
    */
  private FileConfiguration getCustomConfig() {
      if (customConfig == null) {
          reloadCustomConfig();
      }
      return customConfig;
  }

     /**
       * erzeugt ein CustomConfigFile
       */
      private void reloadCustomConfig() {
          if (customConfigFile == null) {
          customConfigFile = new File(plugin.getServer().getWorlds().get(0).getWorldFolder(), "customConfig.yml");
         
          }
          customConfig = YamlConfiguration.loadConfiguration(customConfigFile);
      
          // Schaut nach den Standardwerten in der jar
          InputStream defConfigStream = plugin.getResource("customConfig.yml");
          if (defConfigStream != null) {
              YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream);
              customConfig.setDefaults(defConfig);
          }
      }
     
      /**
       * speichert das ConfigFile mit den sensiblen Daten
       */
      private void saveCustomConfig() {
          if (customConfig == null || customConfigFile == null) {
          return;
          }
          try {
              customConfig.save(customConfigFile);
          } catch (IOException ex) {
              Bukkit.getLogger().log(Level.SEVERE, "Konfiguration konnte nicht nach " + customConfigFile + " geschrieben werden.", ex);
          }
      }
     
     
     
      /**
       * schreibt persistente Daten
       */
      public void save(){
       
       
        //***** Bin�rdaten *****
      PluginSerializer.save(ConflictPlugin.baseBlocksRed, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/baseblockRed.bin");
      PluginSerializer.save(ConflictPlugin.baseBlocksBlue, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/baseblockBlue.bin");
      PluginSerializer.save(ConflictPlugin.doorsRed, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/doorsRed.bin");
      PluginSerializer.save(ConflictPlugin.doorsBlue, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/doorsBlue.bin");
      PluginSerializer.save(ConflictPlugin.is5Locations, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/is5Locations.bin");
      //Timestamps speichern
      for(ArtifactBlock b : ConflictPlugin.allArtifacts){
        PluginSerializer.save(b.timestamps, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/timestamps"+b.getName() +".bin");
      }
     
      PluginSerializer.save(ConflictPlugin.totalXP, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/totalXP.bin");
      PluginSerializer.save(ConflictPlugin.totalSkills, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/totalSkills.bin");
      PluginSerializer.save(ConflictPlugin.totalAnimal, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/totalAnimal.bin");
      PluginSerializer.save(ConflictPlugin.totalCoal, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/totalCoal.bin");
      PluginSerializer.save(ConflictPlugin.totalCrafted, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/totalCrafted.bin");
      PluginSerializer.save(ConflictPlugin.totalDiamond, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/totalDiamond.bin");
      PluginSerializer.save(ConflictPlugin.totalGiantMushroom, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/totalGiantMushroom.bin");
      PluginSerializer.save(ConflictPlugin.totalGold, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/totalGold.bin");
      PluginSerializer.save(ConflictPlugin.totalIron, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/totalIron.bin");
      PluginSerializer.save(ConflictPlugin.totalLapis, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/totalLapis.bin");
      PluginSerializer.save(ConflictPlugin.totalMobs, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/totalMobs.bin");
      PluginSerializer.save(ConflictPlugin.totalMushroom, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/totalMushroom.bin");
      PluginSerializer.save(ConflictPlugin.totalRedstone, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/totalRedstone.bin");
      PluginSerializer.save(ConflictPlugin.totalWheat, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/totalWheat.bin");
      PluginSerializer.save(ConflictPlugin.totalFish, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/totalFish.bin");
      PluginSerializer.save(ConflictPlugin.totalArt1, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/totalArt1.bin");
      PluginSerializer.save(ConflictPlugin.totalArt2, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/totalArt2.bin");
     
      //damageTreshold
      PluginSerializer.save(ConflictPlugin.damageTresholdForPlayer, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/damageTresholdForPlayer.bin");
      //Skills speichern
     
      PluginSerializer.save(ConflictPlugin.skillCraftQual, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillCraftQual.bin");
      PluginSerializer.save(ConflictPlugin.skillCraftArmor, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillCraftArmor.bin");
      PluginSerializer.save(ConflictPlugin.skillCraftBow, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillCraftBow.bin");
      PluginSerializer.save(ConflictPlugin.skillCraftSword, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillCraftSword.bin");
      PluginSerializer.save(ConflictPlugin.skillCraftTool, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillCraftTool.bin");
     
      PluginSerializer.save(ConflictPlugin.skillMineClay, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillMineClay.bin");
      PluginSerializer.save(ConflictPlugin.skillMineDiamond, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillMineDiamond.bin");
      PluginSerializer.save(ConflictPlugin.skillMineDurab, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillMineDurab.bin");
      PluginSerializer.save(ConflictPlugin.skillMineGold, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillMineGold.bin");
      PluginSerializer.save(ConflictPlugin.skillMineIron, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillMineIron.bin");
      PluginSerializer.save(ConflictPlugin.skillMineRedstone, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillMineRedstone.bin");
      PluginSerializer.save(ConflictPlugin.skillMineLapis, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillMineLapis.bin");
     
      PluginSerializer.save(ConflictPlugin.skillFightMonsters, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillFightMonsters.bin");
      PluginSerializer.save(ConflictPlugin.skillFightCamp, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillFightCamp.bin");
      PluginSerializer.save(ConflictPlugin.skillFightArmor, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillFightArmor.bin");
      PluginSerializer.save(ConflictPlugin.skillFightDrop, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillFightDrop.bin");
      PluginSerializer.save(ConflictPlugin.skillFightDamage, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillFightDamage.bin");
      PluginSerializer.save(ConflictPlugin.skillFightJump, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillFightJump.bin");
      PluginSerializer.save(ConflictPlugin.skillFightRegeneration, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillFightRegeneration.bin");
      PluginSerializer.save(ConflictPlugin.skillFightSpeedLand, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillFightSpeedLand.bin");
      PluginSerializer.save(ConflictPlugin.skillFightSpeedWater, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillFightSpeedWater.bin");
     
      PluginSerializer.save(ConflictPlugin.skillFoodBone, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillFoodBone.bin");
      PluginSerializer.save(ConflictPlugin.skillFoodChicken, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillFoodChicken.bin");
      PluginSerializer.save(ConflictPlugin.skillFoodCow, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillFoodCow.bin");
      PluginSerializer.save(ConflictPlugin.skillFoodFish, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillFoodFish.bin");
      PluginSerializer.save(ConflictPlugin.skillFoodHarvest, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillFoodHarvest.bin");
      PluginSerializer.save(ConflictPlugin.skillFoodPork, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillFoodPork.bin");
      PluginSerializer.save(ConflictPlugin.skillFoodSeed, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/skillFoodSeed.bin");
     
      PluginSerializer.save(ConflictPlugin.armorPlate, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/armorPlate.bin");
      PluginSerializer.save(ConflictPlugin.armorLeggins, plugin.getServer().getWorlds().get(0).getWorldFolder()+"/armorLeggins.bin");
     
     
      //***** CustomConfig *****
     
      //Timestamp des shutdown speichern
      getCustomConfig().set("serverCloseTimestamp", System.currentTimeMillis());
     
      //Basen speichern
      if(null!=ConflictPlugin.redBase){
        getCustomConfig().set("redBase", ConflictPlugin.redBase.toString());
      }else{
        getCustomConfig().set("redBase", "");
      }
     
      if(null!=ConflictPlugin.blueBase){
        getCustomConfig().set("blueBase", ConflictPlugin.blueBase.toString())
      }else{
        getCustomConfig().set("blueBase", "");
      }
     
      //weitere Variablen
      getCustomConfig().set("allowBBB", ConflictPlugin.allowBBB);
      getCustomConfig().set("allowBBR", ConflictPlugin.allowBBR);
     
      getCustomConfig().set("artBlue", ConflictPlugin.artBlue);
      getCustomConfig().set("artRed", ConflictPlugin.artRed);
     
      getCustomConfig().set("damageTowerBlue", ConflictPlugin.damageTowerBlue);
      getCustomConfig().set("damageTowerRed", ConflictPlugin.damageTowerRed);
     
      getCustomConfig().set("defenseTowerBlue", ConflictPlugin.defenseTowerBlue);
      getCustomConfig().set("defenseTowerRed", ConflictPlugin.defenseTowerRed);
     
      getCustomConfig().set("radarTowerBlue", ConflictPlugin.radarTowerBlue);
      getCustomConfig().set("radarTowerRed", ConflictPlugin.radarTowerRed);

      //speichern
      saveCustomConfig();
       
      }
}
TOP

Related Classes of me.vudu.Conflict.Handlers.ConfigHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.