示例#1
0
 public VanillaSettingsProvider()
 {
     ServerProperties = new Dictionary <string, string>();
     keyLookup        = new Dictionary <string, string>();
     keyLookup.Add("server.port", "server-port");
     keyLookup.Add("level.type", "level-type");
     keyLookup.Add("server.rcon", "enable-rcon");
     keyLookup.Add("level.seed", "level-seed");
     keyLookup.Add("server.buildmax", "max-build-height");
     keyLookup.Add("server.mobs.villagers.enabled", "spawn-npcs");
     keyLookup.Add("server.whitelist.enabled", "white-list");
     keyLookup.Add("server.mobs.friendly.enabled", "spawn-animals");
     keyLookup.Add("server.snoop.enabled", "snooper-enabled");
     keyLookup.Add("server.hardcore.enabled", "hardcore");
     keyLookup.Add("server.texturepack", "texture-pack");
     keyLookup.Add("server.onlinemode", "online-mode");
     keyLookup.Add("server.pvp.enabled", "pvp");
     keyLookup.Add("level.gamemode", "gamemode");
     keyLookup.Add("server.maxplayers", "max-players");
     keyLookup.Add("server.mobs.hostile.enabled", "spawn-monsters");
     keyLookup.Add("level.generator.generatestructures", "generate-structures");
     keyLookup.Add("server.viewdistance", "view-distance");
     keyLookup.Add("server.motd", "motd");
     foreach (var key in keyLookup) // Set default keys
     {
         if (DefaultSettings.ContainsKey(key.Key))
         {
             Set(key.Key, Get <string>(key.Key)); // This works because it goes to the default setting provider when it can't find a key
         }
     }
 }
示例#2
0
        public bool ContainsKey(string key)
        {
            bool local = ContainsKeyNoRecurse(key);

            if (local)
            {
                return(true);
            }
            return(DefaultSettings.ContainsKey(key));
        }
示例#3
0
 public T Get <T>(string key)
 {
     // TODO: Can this be made better?
     if (!ContainsKeyNoRecurse(key))
     {
         return(DefaultSettings.Get <T>(key));
     }
     if (typeof(T).IsEnum)
     {
         return((T)Enum.Parse(typeof(T), ServerProperties[key], true));
     }
     if (typeof(T).GetInterface("IConvertible") == null)
     {
         if (typeof(T).GetInterface("IEnumerable") != null)
         {
             var  items       = ServerProperties.Where(p => p.Key.StartsWith(key + "["));
             Type genericType = typeof(T).GetGenericArguments()[0];
             var  results     = Array.CreateInstance(genericType, items.Count());
             int  i           = 0;
             foreach (var item in items)
             {
                 int start  = key.Length + 1;
                 int length = item.Key.IndexOf(']', start + 1) - start;
                 int index  = int.Parse(item.Key.Substring(start, length));
                 results.SetValue(typeof(VanillaSettingsProvider).GetMethod("Get").MakeGenericMethod(genericType)
                                  .Invoke(this, new object[] { key + "[" + index + "]" }), index);
             }
             var listType = typeof(List <>).MakeGenericType(genericType);
             if (typeof(T) == listType)
             {
                 return((T)Activator.CreateInstance(listType, results));
             }
             return((T)results.Cast <T>());
         }
     }
     return((T)Convert.ChangeType(ServerProperties[key], typeof(T)));
 }