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(); }
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); }
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); }
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(); }
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); }
public void SaveFor(string map) { Save(LevelInfo.PropsPath(map), map); }