add expfog to /env

This commit is contained in:
UnknownShadow200 2017-02-06 11:50:53 +11:00
parent 5868869dbd
commit de455d17a8
7 changed files with 31 additions and 18 deletions

View File

@ -55,8 +55,6 @@ namespace MCGalaxy.Gui {
}
DateTime startTime = DateTime.UtcNow;
CheckDuplicateProcesses();
Logger.Init();
AppDomain.CurrentDomain.UnhandledException += GlobalExHandler;
Application.ThreadException += ThreadExHandler;
@ -160,17 +158,6 @@ namespace MCGalaxy.Gui {
if (Server.restartOnError)
App.ExitProgram(true);
}
static void CheckDuplicateProcesses() {
Process[] duplicates = Process.GetProcessesByName("MCGalaxy");
if (duplicates.Length == 1) return;
Process proc = Process.GetCurrentProcess();
foreach (Process pr in duplicates) {
if (pr.MainModule.BaseAddress == proc.MainModule.BaseAddress)
if (pr.Id != proc.Id) pr.Kill();
}
}
}
}

View File

@ -109,6 +109,9 @@ namespace MCGalaxy.Commands {
case "bedrock":
LevelEnv.SetBlock(p, value, EnvProp.SidesBlock,
"sides block", Block.blackrock, ref lvl.EdgeBlock); break;
case "expfog":
LevelEnv.SetBool(p, value, EnvProp.ExpFog,
"exp fog", false, ref lvl.ExpFog); break;
default:
return false;
}
@ -201,7 +204,7 @@ namespace MCGalaxy.Commands {
Player.Message(p, "%T/env [variable] [value]");
Player.Message(p, "%HVariables: fog, cloud, sky, sun, shadow, weather, level");
Player.Message(p, "%H horizon, border, preset, maxfog, cloudsheight");
Player.Message(p, "%H cloudspeed, weatherspeed, weatherfade");
Player.Message(p, "%H cloudspeed, weatherspeed, weatherfade, expfog");
Player.Message(p, "%HUsing 'normal' as a value will reset the variable");
Player.Message(p, "%T/env normal %H- resets all variables");
}

View File

@ -58,7 +58,7 @@ namespace MCGalaxy.Commands {
Player.Message(p, "Cannot use %T/{0} %Swhile muted.", cmd); return false;
}
if (Server.chatmod && !p.voice) {
Player.Message(p, "Cannot use %T/{0} %Swhile chat moderation is on.", cmd); return false;
Player.Message(p, "Cannot use %T/{0} %Swhile chat moderation is on without %T/voice%S.", cmd); return false;
}
return true;
}

View File

@ -49,7 +49,7 @@ namespace MCGalaxy.Levels.IO {
lvl.roty = header[offset + 11];
gs.Read(lvl.blocks, 0, lvl.blocks.Length);
ReadBlockDefsSection(lvl, gs);
ReadCustomBlocksSection(lvl, gs);
if (!metadata) return lvl;
ReadPhysicsSection(lvl, gs);
@ -76,7 +76,7 @@ namespace MCGalaxy.Levels.IO {
return dims;
}
static void ReadBlockDefsSection(Level lvl, Stream gs) {
static void ReadCustomBlocksSection(Level lvl, Stream gs) {
if (gs.ReadByte() != 0xBD) return;
int index = 0;

View File

@ -144,6 +144,9 @@ namespace MCGalaxy {
/// <summary> The block which will be displayed on the edge of the map. </summary>
[ConfigInt("EdgeBlock", "Env", null, Block.blackrock, 0, 255)]
public int EdgeBlock = Block.blackrock;
/// <summary> Whether exponential fog mode is used client-side. </summary>
[ConfigBool("ExpFog", "Env", null, false)]
public bool ExpFog = false;
// Permission settings

View File

@ -93,6 +93,25 @@ namespace MCGalaxy {
UpdateEnvColor(p, envType, value);
}
public static void SetBool(Player p, string value, EnvProp prop,
string variable, bool defValue, ref bool target) {
if (IsResetString(value)) {
Player.Message(p, "Reset {0} for {1} %Sto normal", variable, p.level.ColoredName);
target = defValue;
} else if (value.CaselessEq("yes") || value.CaselessEq("on")) {
Player.Message(p, "Set {0} for {1} %Sto &aON", variable, p.level.ColoredName);
target = true;
} else if (value.CaselessEq("no") || value.CaselessEq("off")) {
Player.Message(p, "Set {0} for {1} %Sto &cOFF", variable, p.level.ColoredName);
target = false;
} else {
Player.Message(p, "Env: \"{0}\" is not a valid boolean.", value);
return;
}
SendCurrentMapAppearance(p.level, prop, target ? 1 : 0);
}
static bool CheckBlock(Player p, string value, string variable, ref int modify) {
byte extBlock = 0;
byte block = (byte)DrawCmd.GetBlock(p, value, out extBlock);

View File

@ -179,6 +179,7 @@ namespace MCGalaxy {
Send(Packet.EnvMapProperty(EnvProp.MaxFog, level.MaxFogDistance));
Send(Packet.EnvMapProperty(EnvProp.CloudsSpeed, level.CloudsSpeed));
Send(Packet.EnvMapProperty(EnvProp.WeatherSpeed, level.WeatherSpeed));
Send(Packet.EnvMapProperty(EnvProp.ExpFog, level.ExpFog ? 1 : 0));
} else if (HasCpeExt(CpeExt.EnvMapAppearance, 2)) {
string url = GetTextureUrl();
// reset all other textures back to client default.
@ -293,6 +294,6 @@ namespace MCGalaxy {
public enum EnvProp : byte {
SidesBlock = 0, EdgeBlock = 1, EdgeLevel = 2,
CloudsLevel = 3, MaxFog = 4, CloudsSpeed = 5,
WeatherSpeed = 6, WeatherFade = 7,
WeatherSpeed = 6, WeatherFade = 7, ExpFog = 8,
}
}