Esempio n. 1
0
        public static void LoadMetadata(Level lvl)
        {
            try {
                string propsPath = LevelInfo.PropsPath(lvl.MapName);
                if (lvl.Config.Load(propsPath))
                {
                    lvl.SetPhysics(lvl.Config.Physics);
                }
                else
                {
                    Logger.Log(LogType.ConsoleMessage, ".properties file for level {0} was not found.", lvl.MapName);
                }
            } catch (Exception e) {
                Logger.LogError(e);
            }
            lvl.BlockDB.Cache.Enabled = lvl.Config.UseBlockDB;

            string blockDefsPath = Paths.MapBlockDefs(lvl.MapName);

            BlockDefinition[] defs = BlockDefinition.Load(blockDefsPath);
            for (int b = 0; b < defs.Length; b++)
            {
                if (defs[b] == null)
                {
                    continue;
                }
                lvl.UpdateCustomBlock((BlockID)b, defs[b]);
            }

            lvl.UpdateBlockProps();
            lvl.UpdateAllBlockHandlers();
        }
Esempio n. 2
0
        static bool LoadOfflineLevel(Player p, string map)
        {
            string      propsPath = LevelInfo.PropsPath(map);
            LevelConfig cfg       = new LevelConfig();

            cfg.Load(propsPath);

            if (!cfg.LoadOnGoto)
            {
                p.Message("Level \"{0}\" cannot be loaded using %T/Goto.", map);
                return(false);
            }

            AccessController visitAccess = new LevelAccessController(cfg, map, true);
            bool             skip        = p.summonedMap != null && p.summonedMap.CaselessEq(map);
            LevelPermission  plRank      = skip ? LevelPermission.Nobody : p.Rank;

            if (!visitAccess.CheckDetailed(p, plRank))
            {
                return(false);
            }

            LevelActions.Load(p, map, false);
            Level lvl = LevelInfo.FindExact(map);

            if (lvl != null)
            {
                return(GotoLevel(p, lvl));
            }

            p.Message("Level \"{0}\" failed to be auto-loaded.", map);
            return(false);
        }
        static void CopyProperties(string src, string dst)
        {
            string path = Path.Combine(oldServer, LevelInfo.PropsPath(src));

            if (!File.Exists(path))
            {
                return;
            }
            File.Copy(path, LevelInfo.PropsPath(dst), true);
        }
Esempio n. 4
0
 static void DoAll(string src, string dst, byte action)
 {
     DoAction(LevelInfo.MapPath(src) + ".backup",
              LevelInfo.MapPath(dst) + ".backup", action);
     DoAction(LevelInfo.PropsPath(src),
              LevelInfo.PropsPath(dst), action);
     DoAction("levels/level properties/" + src,
              LevelInfo.PropsPath(dst), action);
     DoAction(BlockDefsPath(src),
              BlockDefsPath(dst), action);
     DoAction(BlockPropsOldPath(src),
              BlockPropsOldPath(dst), action);
     DoAction(BlockPropsLvlPath(src),
              BlockPropsLvlPath(dst), action);
     DoAction(BotsFile.BotsPath(src),
              BotsFile.BotsPath(dst), action);
 }
Esempio n. 5
0
        public static void LoadMetadata(Level lvl)
        {
            lvl.Config.JailX    = (ushort)(lvl.spawnx * 32);
            lvl.Config.JailY    = (ushort)(lvl.spawny * 32);
            lvl.Config.JailZ    = (ushort)(lvl.spawnz * 32);
            lvl.Config.jailrotx = lvl.rotx;
            lvl.Config.jailroty = lvl.roty;

            try {
                string propsPath    = LevelInfo.PropsPath(lvl.MapName);
                bool   propsExisted = lvl.Config.Load(propsPath);

                if (propsExisted)
                {
                    lvl.SetPhysics(lvl.Config.Physics);
                }
                else
                {
                    Logger.Log(LogType.ConsoleMessage, ".properties file for level {0} was not found.", lvl.MapName);
                }

                // Backwards compatibility for older levels which had .env files.
                string envPath = "levels/level properties/" + lvl.MapName + ".env";
                lvl.Config.Load(envPath);
            } catch (Exception e) {
                Logger.LogError(e);
            }
            lvl.BlockDB.Cache.Enabled = lvl.Config.UseBlockDB;

            BlockDefinition[] defs = BlockDefinition.Load(false, lvl.MapName);
            for (int b = 0; b < defs.Length; b++)
            {
                if (defs[b] == null)
                {
                    continue;
                }
                lvl.UpdateCustomBlock((BlockID)b, defs[b]);
            }

            lvl.UpdateBlockProps();
            lvl.UpdateBlockHandlers();
        }
Esempio n. 6
0
        public static bool Backup(string map, string backupName)
        {
            string basePath = LevelInfo.BackupBasePath(map);

            if (!Directory.Exists(basePath))
            {
                Directory.CreateDirectory(basePath);
            }
            string path = Path.Combine(basePath, backupName);

            Directory.CreateDirectory(path);

            bool lvl    = DoAction(LevelInfo.MapPath(map), Path.Combine(path, map + ".lvl"), action_copy);
            bool props  = DoAction(LevelInfo.PropsPath(map), Path.Combine(path, "map.properties"), action_copy);
            bool defs   = DoAction(BlockDefsPath(map), Path.Combine(path, "blockdefs.json"), action_copy);
            bool blkOld = DoAction(BlockPropsOldPath(map), Path.Combine(path, "blockprops.txt"), action_copy);
            bool blkCur = DoAction(BlockPropsLvlPath(map), Path.Combine(path, "blockprops.txt"), action_copy);
            bool bots   = DoAction(BotsFile.BotsPath(map), Path.Combine(path, "bots.json"), action_copy);

            return(lvl && props && defs && blkOld && blkCur && bots);
        }
Esempio n. 7
0
 public void SaveFor(string map)
 {
     Save(LevelInfo.PropsPath(map), map);
 }