More stuff for /zone set, remove /view to another player

This commit is contained in:
UnknownShadow200 2018-02-26 14:57:46 +11:00
parent 075d8ed5c9
commit 395a4ee50f
9 changed files with 62 additions and 57 deletions

View File

@ -132,14 +132,8 @@ namespace MCGalaxy.Commands.CPE {
Player[] players = PlayerInfo.Online.Items;
foreach (Player pl in players) {
if (pl.level != lvl) continue;
pl.SendCurrentMapAppearance();
if (pl.Supports(CpeExt.EnvColors)) {
pl.SendCurrentEnvColors();
}
if (pl.Supports(CpeExt.EnvWeatherType)) {
pl.Send(Packet.EnvWeatherType(0));
}
pl.SendCurrentTextures();
pl.OnChangedZone();
}
Level.SaveSettings(lvl);
}

View File

@ -102,7 +102,7 @@ namespace MCGalaxy.Commands.CPE {
Player[] players = PlayerInfo.Online.Items;
foreach (Player pl in players) {
string url = zip ? pl.level.Config.TexturePack : pl.level.Config.Terrain;
if (url.Length == 0) pl.SendCurrentMapAppearance();
if (url.Length == 0) pl.SendCurrentTextures();
}
SrvProperties.Save();
}
@ -111,7 +111,7 @@ namespace MCGalaxy.Commands.CPE {
Player[] players = PlayerInfo.Online.Items;
foreach (Player pl in players) {
if (pl.level != p.level) continue;
pl.SendCurrentMapAppearance();
pl.SendCurrentTextures();
}
Level.SaveSettings(p.level);
}

View File

@ -163,7 +163,7 @@ namespace MCGalaxy.Commands.Fun {
if(!int.TryParse(x, out width) || !int.TryParse(y, out height) || !int.TryParse(z, out length)) {
width = 32; height = 32; length = 32;
}
if (width < 32 || !MapGen.OkayAxis(width)) width = 32;
if (width < 32 || !MapGen.OkayAxis(width)) width = 32;
if (height < 32 || !MapGen.OkayAxis(height)) height = 32;
if (length < 32 || !MapGen.OkayAxis(length)) length = 32;

View File

@ -1,5 +1,5 @@
/*
Copyright 2011 MCGalaxy
Copyright 2011 MCForge
Dual-licensed under the Educational Community License, Version 2.0 and
the GNU General Public License, Version 3 (the "Licenses"); you may
@ -27,6 +27,7 @@ namespace MCGalaxy.Commands.Info {
public override void Use(Player p, string message) {
if (!Directory.Exists("extra/text/"))
Directory.CreateDirectory("extra/text");
if (message.Length == 0) {
string[] files = Directory.GetFiles("extra/text", "*.txt");
string all = files.Join(f => Path.GetFileNameWithoutExtension(f));
@ -38,17 +39,11 @@ namespace MCGalaxy.Commands.Info {
Player.Message(p, all);
}
} else {
Player who = p;
string[] args = message.SplitSpaces();
if (args.Length > 1) {
who = PlayerInfo.FindMatches(p, args[1]);
if (who == null) return;
}
args[0] = Path.GetFileName(args[0]);
message = Path.GetFileName(message);
if (File.Exists("extra/text/" + args[0] + ".txt")) {
string[] lines = File.ReadAllLines("extra/text/" + args[0] + ".txt");
Player.MessageLines(who, lines);
if (File.Exists("extra/text/" + message + ".txt")) {
string[] lines = File.ReadAllLines("extra/text/" + message + ".txt");
Player.MessageLines(p, lines);
} else {
Player.Message(p, "File specified doesn't exist");
}
@ -56,9 +51,8 @@ namespace MCGalaxy.Commands.Info {
}
public override void Help(Player p) {
Player.Message(p, "/view [file] [player] - Views [file]'s contents");
Player.Message(p, "/view by itself will list all files you can view");
Player.Message(p, "If [player] is given, that player is shown the file");
Player.Message(p, "%T/view %H- Lists all files you can view");
Player.Message(p, "%T/view [file] %H- Views [file]'s contents");
}
}
}

View File

@ -50,12 +50,11 @@ namespace MCGalaxy.Core {
Player.Message(p, "You cannot use /fly on this map.");
p.isFlying = false;
}
p.ZoneIn = null;
p.OnChangedZone();
if (p.Supports(CpeExt.EnvWeatherType))
p.Send(Packet.EnvWeatherType((byte)level.Config.Weather));
if (p.Supports(CpeExt.EnvColors))
p.SendCurrentEnvColors();
p.SendCurrentMapAppearance();
p.SendCurrentTextures();
p.SendCurrentBlockPermissions();
// TODO: unshow old zones here??

View File

@ -142,6 +142,22 @@ namespace MCGalaxy {
if (i == 4) return LightColor;
return null;
}
public int GetEnvProp(EnvProp i) {
if (i == EnvProp.SidesBlock) return EdgeBlock;
if (i == EnvProp.EdgeBlock) return HorizonBlock;
if (i == EnvProp.EdgeLevel) return EdgeLevel;
if (i == EnvProp.CloudsLevel) return CloudsHeight;
if (i == EnvProp.MaxFog) return MaxFogDistance;
if (i == EnvProp.CloudsSpeed) return CloudsSpeed;
if (i == EnvProp.WeatherSpeed) return WeatherSpeed;
if (i == EnvProp.WeatherFade) return WeatherFade;
if (i == EnvProp.ExpFog) return ExpFog ? 1 : 0;
if (i == EnvProp.SidesOffset) return SidesOffset;
if (i == EnvProp.SkyboxHorSpeed) return SkyboxHorSpeed;
if (i == EnvProp.SkyboxVerSpeed) return SkyboxVerSpeed;
return -1;
}
}
public sealed class LevelConfig : AreaConfig {

View File

@ -143,7 +143,7 @@ namespace MCGalaxy {
if (pl.Supports(CpeExt.EnvMapAspect)) {
pl.Send(Packet.EnvMapProperty(prop, value));
} else {
pl.SendCurrentMapAppearance();
pl.SendCurrentTextures();
}
if (pl.ZoneIn != null) pl.OnChangedZone();
}

View File

@ -101,33 +101,18 @@ namespace MCGalaxy {
}
string lastUrl = "";
public void SendCurrentMapAppearance() {
public void SendCurrentTextures() {
byte side = (byte)level.Config.EdgeBlock;
byte edge = (byte)level.Config.HorizonBlock;
if (!hasBlockDefs) side = level.RawFallback(side);
if (!hasBlockDefs) edge = level.RawFallback(edge);
if (Supports(CpeExt.EnvMapAspect)) {
string url = GetTextureUrl();
string url = GetTextureUrl();
if (Supports(CpeExt.EnvMapAspect)) {
// reset all other textures back to client default.
if (url != lastUrl) Send(Packet.EnvMapUrl("", hasCP437));
Send(Packet.EnvMapUrl(url, hasCP437));
Send(Packet.EnvMapProperty(EnvProp.SidesBlock, side));
Send(Packet.EnvMapProperty(EnvProp.EdgeBlock, edge));
Send(Packet.EnvMapProperty(EnvProp.EdgeLevel, level.Config.EdgeLevel));
Send(Packet.EnvMapProperty(EnvProp.SidesOffset, level.Config.SidesOffset));
Send(Packet.EnvMapProperty(EnvProp.CloudsLevel, level.Config.CloudsHeight));
Send(Packet.EnvMapProperty(EnvProp.MaxFog, level.Config.MaxFogDistance));
Send(Packet.EnvMapProperty(EnvProp.CloudsSpeed, level.Config.CloudsSpeed));
Send(Packet.EnvMapProperty(EnvProp.WeatherSpeed, level.Config.WeatherSpeed));
Send(Packet.EnvMapProperty(EnvProp.WeatherFade, level.Config.WeatherFade));
Send(Packet.EnvMapProperty(EnvProp.ExpFog, level.Config.ExpFog ? 1 : 0));
Send(Packet.EnvMapProperty(EnvProp.SkyboxHorSpeed, level.Config.SkyboxHorSpeed));
Send(Packet.EnvMapProperty(EnvProp.SkyboxVerSpeed, level.Config.SkyboxVerSpeed));
} else if (Supports(CpeExt.EnvMapAppearance, 2)) {
string url = GetTextureUrl();
// reset all other textures back to client default.
if (url != lastUrl) {
Send(Packet.MapAppearanceV2("", side, edge, level.Config.EdgeLevel,
@ -137,7 +122,7 @@ namespace MCGalaxy {
level.Config.CloudsHeight, level.Config.MaxFogDistance, hasCP437));
lastUrl = url;
} else if (Supports(CpeExt.EnvMapAppearance)) {
string url = level.Config.Terrain.Length == 0 ? ServerConfig.DefaultTerrain : level.Config.Terrain;
url = level.Config.Terrain.Length == 0 ? ServerConfig.DefaultTerrain : level.Config.Terrain;
Send(Packet.MapAppearance(url, side, edge, level.Config.EdgeLevel, hasCP437));
}
}
@ -148,13 +133,7 @@ namespace MCGalaxy {
url = ServerConfig.DefaultTexture.Length == 0 ? ServerConfig.DefaultTerrain : ServerConfig.DefaultTexture;
return url;
}
public void SendCurrentEnvColors() {
for (int i = 0; i <= 4; i++) {
SendEnvColor((byte)i, level.Config.GetColor(i));
}
}
public void SendEnvColor(byte type, string hex) {
if (String.IsNullOrEmpty(hex)) {
Send(Packet.EnvColor(type, -1, -1, -1)); return;
@ -235,6 +214,8 @@ namespace MCGalaxy {
CloudsLevel = 3, MaxFog = 4, CloudsSpeed = 5,
WeatherSpeed = 6, WeatherFade = 7, ExpFog = 8,
SidesOffset = 9, SkyboxHorSpeed = 10, SkyboxVerSpeed = 11,
Max,
}
public enum EntityProp : byte {

View File

@ -379,6 +379,27 @@ namespace MCGalaxy {
if (Supports(CpeExt.EnvColors)) SendEnvColor((byte)i, col);
}
for (EnvProp i = 0; i < EnvProp.Max; i++) {
int value = level.Config.GetEnvProp(i);
if (i < EnvProp.EdgeBlock) {
if (zone != null && zone.Config.GetEnvProp(i) != -1) {
value = zone.Config.GetEnvProp(i);
}
} else {
if (zone != null && zone.Config.GetEnvProp(i) != Block.Invalid) {
value = zone.Config.GetEnvProp(i);
}
if (!hasBlockDefs) value = level.RawFallback((byte)value);
}
if (Supports(CpeExt.EnvMapAspect)) Send(Packet.EnvMapProperty(i, value));
}
if (Supports(CpeExt.EnvWeatherType)) {
int weather = level.Config.Weather;
if (zone != null && zone.Config.Weather != -1) weather = zone.Config.Weather;
Send(Packet.EnvWeatherType((byte)weather));
}
// TODO: get rid of this
Server.s.Log("I MOVED");
if (ZoneIn != null) Server.s.Log(ZoneIn.ColoredName);