mirror of
https://github.com/ClassiCube/MCGalaxy.git
synced 2025-08-03 19:36:14 -04:00
Ensure more files are written in a safer way to reduce chance of data corruption in case of disk full
This commit is contained in:
parent
0adf900232
commit
ec10970dbd
@ -164,7 +164,7 @@ namespace MCGalaxy {
|
||||
static void SaveCore(bool global, BlockDefinition[] defs, string path) {
|
||||
string separator = null;
|
||||
|
||||
using (StreamWriter w = new StreamWriter(path)) {
|
||||
using (StreamWriter w = FileIO.CreateGuarded(path)) {
|
||||
w.WriteLine("[");
|
||||
var ser = new JsonConfigWriter(w, elems);
|
||||
|
||||
|
@ -101,7 +101,8 @@ namespace MCGalaxy.Blocks {
|
||||
}
|
||||
|
||||
static void SaveCore(string group, BlockProps[] list, byte scope) {
|
||||
using (StreamWriter w = new StreamWriter("blockprops/" + group + ".txt")) {
|
||||
using (StreamWriter w = FileIO.CreateGuarded("blockprops/" + group + ".txt"))
|
||||
{
|
||||
w.WriteLine("# This represents the physics properties for blocks, in the format of:");
|
||||
w.WriteLine("# id : Is rails : Is tdoor : Is door : Is message block : Is portal : " +
|
||||
"Killed by water : Killed by lava : Kills players : death message : " +
|
||||
|
@ -255,7 +255,8 @@ namespace MCGalaxy {
|
||||
}
|
||||
|
||||
static void SaveCore() {
|
||||
using (StreamWriter w = new StreamWriter(Paths.CustomColorsFile)) {
|
||||
using (StreamWriter w = FileIO.CreateGuarded(Paths.CustomColorsFile))
|
||||
{
|
||||
foreach (ColorDesc col in List) {
|
||||
if (!col.IsModified()) continue;
|
||||
|
||||
|
@ -56,7 +56,8 @@ namespace MCGalaxy.Commands
|
||||
}
|
||||
|
||||
public static void SaveCustom() {
|
||||
using (StreamWriter sw = new StreamWriter(Paths.AliasesFile)) {
|
||||
using (StreamWriter sw = FileIO.CreateGuarded(Paths.AliasesFile))
|
||||
{
|
||||
sw.WriteLine("# Aliases can be in one of three formats:");
|
||||
sw.WriteLine("# trigger : command");
|
||||
sw.WriteLine("# e.g. \"xyz : help\" means /xyz is treated as /help <args given by user>");
|
||||
|
@ -94,7 +94,8 @@ namespace MCGalaxy
|
||||
}
|
||||
|
||||
public static void SerialiseSimple(ConfigElement[] elements, string path, object instance) {
|
||||
using (StreamWriter w = new StreamWriter(path)) {
|
||||
using (StreamWriter w = FileIO.CreateGuarded(path))
|
||||
{
|
||||
w.WriteLine("#Settings file");
|
||||
SerialiseElements(elements, w, instance);
|
||||
}
|
||||
|
@ -73,7 +73,8 @@ namespace MCGalaxy.Blocks
|
||||
}
|
||||
|
||||
static void SaveList(string path, BlockPerms[] list, string action) {
|
||||
using (StreamWriter w = new StreamWriter(path)) {
|
||||
using (StreamWriter w = FileIO.CreateGuarded(path))
|
||||
{
|
||||
WriteHeader(w, "block", "each block", "Block ID", "lava", action);
|
||||
|
||||
foreach (BlockPerms perms in list)
|
||||
|
@ -86,7 +86,7 @@ namespace MCGalaxy.Commands
|
||||
}
|
||||
|
||||
static void SaveCore() {
|
||||
using (StreamWriter w = new StreamWriter(Paths.CmdExtraPermsFile)) {
|
||||
using (StreamWriter w = FileIO.CreateGuarded(Paths.CmdExtraPermsFile)) {
|
||||
WriteHeader(w, "extra command permissions", "extra permissions in some commands",
|
||||
"CommandName:ExtraPermissionNumber", "countdown:1", "use");
|
||||
|
||||
|
@ -76,7 +76,7 @@ namespace MCGalaxy.Commands
|
||||
}
|
||||
|
||||
static void SaveCore() {
|
||||
using (StreamWriter w = new StreamWriter(Paths.CmdPermsFile)) {
|
||||
using (StreamWriter w = FileIO.CreateGuarded(Paths.CmdPermsFile)) {
|
||||
WriteHeader(w, "command", "each command", "CommandName", "gun", "use");
|
||||
|
||||
foreach (CommandPerms perms in List)
|
||||
|
@ -90,10 +90,11 @@ namespace MCGalaxy.Drawing
|
||||
|
||||
|
||||
public void Save() {
|
||||
using (StreamWriter w = new StreamWriter(FileName)) {
|
||||
using (StreamWriter w = FileIO.CreateGuarded(FileName))
|
||||
{
|
||||
w.WriteLine("#Line layout - block:red:green:blue");
|
||||
|
||||
if (Entries == null) return;
|
||||
|
||||
foreach (PaletteEntry e in Entries)
|
||||
w.WriteLine(e.Block + ":" + e.R + ":" + e.G + ":" + e.B);
|
||||
}
|
||||
|
@ -90,7 +90,8 @@ namespace MCGalaxy.Eco
|
||||
}
|
||||
|
||||
static void SaveCore() {
|
||||
using (StreamWriter w = new StreamWriter(Paths.EconomyPropsFile, false)) {
|
||||
using (StreamWriter w = FileIO.CreateGuarded(Paths.EconomyPropsFile))
|
||||
{
|
||||
w.WriteLine("enabled:" + Enabled);
|
||||
|
||||
foreach (Item item in Items)
|
||||
|
@ -72,7 +72,8 @@ namespace MCGalaxy.Games
|
||||
public virtual void Save() {
|
||||
if (cfg == null) cfg = ConfigElement.GetAll(GetType());
|
||||
|
||||
using (StreamWriter w = new StreamWriter(Path)) {
|
||||
using (StreamWriter w = FileIO.CreateGuarded(Path))
|
||||
{
|
||||
w.WriteLine("#" + GameName + " configuration");
|
||||
ConfigElement.Serialise(cfg, w, this);
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ namespace MCGalaxy.Games {
|
||||
|
||||
public static void SaveList() {
|
||||
lock (ioLock)
|
||||
using (StreamWriter w = new StreamWriter("extra/teams.txt"))
|
||||
using (StreamWriter w = FileIO.CreateGuarded("extra/teams.txt"))
|
||||
foreach (Team team in Teams)
|
||||
{
|
||||
w.WriteLine("Name=" + team.Name);
|
||||
|
@ -359,7 +359,8 @@ namespace MCGalaxy
|
||||
public void Save(string path, string map) {
|
||||
try {
|
||||
lock (saveLock) {
|
||||
using (StreamWriter w = new StreamWriter(path)) {
|
||||
using (StreamWriter w = FileIO.CreateGuarded(path))
|
||||
{
|
||||
w.WriteLine("#Level properties for " + map);
|
||||
w.WriteLine("#Drown-time is in tenths of a second");
|
||||
ConfigElement.Serialise(Server.levelConfig, w, this);
|
||||
|
@ -70,7 +70,7 @@ namespace MCGalaxy.Modules.Awards
|
||||
static readonly object saveLock = new object();
|
||||
public static void Save() {
|
||||
lock (saveLock)
|
||||
using (StreamWriter w = new StreamWriter("text/awardsList.txt"))
|
||||
using (StreamWriter w = FileIO.CreateGuarded("text/awardsList.txt"))
|
||||
{
|
||||
WriteHeader(w);
|
||||
foreach (Award a in Awards) {
|
||||
@ -81,7 +81,8 @@ namespace MCGalaxy.Modules.Awards
|
||||
|
||||
public static void Load() {
|
||||
if (!File.Exists("text/awardsList.txt")) {
|
||||
using (StreamWriter w = new StreamWriter("text/awardsList.txt")) {
|
||||
using (StreamWriter w = FileIO.CreateGuarded("text/awardsList.txt"))
|
||||
{
|
||||
WriteHeader(w);
|
||||
w.WriteLine("Gotta start somewhere : Built your first house");
|
||||
w.WriteLine("Climbing the ladder : Earned a rank advancement");
|
||||
|
@ -79,7 +79,7 @@ namespace MCGalaxy.Modules.Awards
|
||||
static readonly object saveLock = new object();
|
||||
public static void Save() {
|
||||
lock (saveLock)
|
||||
using (StreamWriter w = new StreamWriter("text/playerAwards.txt"))
|
||||
using (StreamWriter w = FileIO.CreateGuarded("text/playerAwards.txt"))
|
||||
{
|
||||
foreach (PlayerAward a in Awards)
|
||||
w.WriteLine(a.Player + " : " + a.Awards.Join(","));
|
||||
|
@ -100,7 +100,8 @@ namespace MCGalaxy.Modules.Games.ZS
|
||||
public override void Save() {
|
||||
if (cfg == null) cfg = ConfigElement.GetAll(typeof(ZSConfig));
|
||||
|
||||
using (StreamWriter w = new StreamWriter(Path)) {
|
||||
using (StreamWriter w = FileIO.CreateGuarded(Path))
|
||||
{
|
||||
w.WriteLine("# no-pillaring-during-zombie = Disables pillaring while Zombie Survival is activated.");
|
||||
w.WriteLine("# zombie-name-while-infected = Sets the zombies name while actived if there is a value.");
|
||||
w.WriteLine();
|
||||
|
@ -76,7 +76,8 @@ namespace MCGalaxy.Modules.Relay.Discord
|
||||
public void Save() {
|
||||
if (cfg == null) cfg = ConfigElement.GetAll(typeof(DiscordConfig));
|
||||
|
||||
using (StreamWriter w = new StreamWriter(PROPS_PATH)) {
|
||||
using (StreamWriter w = FileIO.CreateGuarded(PROPS_PATH))
|
||||
{
|
||||
w.WriteLine("# Discord relay bot configuration");
|
||||
w.WriteLine("# See " + Updater.SourceURL + "/wiki/Discord-relay-bot/");
|
||||
w.WriteLine();
|
||||
|
@ -125,7 +125,8 @@ namespace MCGalaxy.Modules.Warps
|
||||
}
|
||||
|
||||
public void Save() {
|
||||
using (StreamWriter w = new StreamWriter(Filename)) {
|
||||
using (StreamWriter w = FileIO.CreateGuarded(Filename))
|
||||
{
|
||||
foreach (Warp warp in Items)
|
||||
{
|
||||
w.WriteLine(warp.Name + ":" + warp.Level + ":" + warp.Pos.X + ":" +
|
||||
|
@ -208,7 +208,8 @@ namespace MCGalaxy
|
||||
}
|
||||
|
||||
static void SaveDisabledList() {
|
||||
using (StreamWriter w = new StreamWriter(Paths.CPEDisabledFile)) {
|
||||
using (StreamWriter w = FileIO.CreateGuarded(Paths.CPEDisabledFile))
|
||||
{
|
||||
w.WriteLine("# CPE configuration");
|
||||
w.WriteLine("# This file allows disabling non-classic (CPE) extensions ");
|
||||
w.WriteLine("# To disable an extension, just change '= True' to '= False'");
|
||||
|
@ -326,7 +326,8 @@ namespace MCGalaxy
|
||||
static void SaveGroups(List<Group> givenList) {
|
||||
if (cfg == null) cfg = ConfigElement.GetAll(typeof(Group));
|
||||
|
||||
using (StreamWriter w = new StreamWriter(Paths.RankPropsFile)) {
|
||||
using (StreamWriter w = FileIO.CreateGuarded(Paths.RankPropsFile))
|
||||
{
|
||||
w.WriteLine("#Version 3");
|
||||
w.WriteLine("#RankName = string");
|
||||
w.WriteLine("#\tThe name of the rank (e.g. Guest)");
|
||||
|
@ -93,7 +93,8 @@ namespace MCGalaxy.Authentication
|
||||
}
|
||||
|
||||
static void SaveServices() {
|
||||
using (StreamWriter w = new StreamWriter(Paths.AuthServicesFile)) {
|
||||
using (StreamWriter w = FileIO.CreateGuarded(Paths.AuthServicesFile))
|
||||
{
|
||||
w.WriteLine("# Authentication services configuration");
|
||||
w.WriteLine("# There is no reason to modify these configuration settings, unless the server has been configured");
|
||||
w.WriteLine("# to send heartbeats to multiple authentication services (e.g. both ClassiCube.net and BetaCraft.uk)");
|
||||
|
Loading…
x
Reference in New Issue
Block a user