Quick fix for /paste throwing a NullReferenceException. (Thanks goodlyay)

This commit is contained in:
UnknownShadow200 2016-03-10 18:30:27 +11:00
parent fbd3db48eb
commit 17eb068d51

View File

@ -21,15 +21,15 @@ using MCGalaxy.Drawing.Brushes;
namespace MCGalaxy { namespace MCGalaxy {
public struct FillPos { public ushort X, Y, Z; } public struct FillPos { public ushort X, Y, Z; }
public struct ExtBlock { public struct ExtBlock {
public byte Type, ExtType; public byte Type, ExtType;
public ExtBlock(byte type, byte extType) { public ExtBlock(byte type, byte extType) {
Type = type; ExtType = extType; Type = type; ExtType = extType;
} }
} }
} }
namespace MCGalaxy.Drawing.Ops { namespace MCGalaxy.Drawing.Ops {
@ -48,7 +48,7 @@ namespace MCGalaxy.Drawing.Ops {
public Vector3U16 Max; public Vector3U16 Max;
/// <summary> Coordinates of the first point selected by the user. </summary> /// <summary> Coordinates of the first point selected by the user. </summary>
public Vector3U16 Origin; public Vector3U16 Origin;
/// <summary> Coordinates of the current block being processed by the drawing command. </summary> /// <summary> Coordinates of the current block being processed by the drawing command. </summary>
public Vector3U16 Coords; public Vector3U16 Coords;
@ -128,7 +128,7 @@ namespace MCGalaxy.Drawing.Ops {
internal const int MethodBlockQueue = 0, MethodBlockChange = 1, MethodSetTile = 2; internal const int MethodBlockQueue = 0, MethodBlockChange = 1, MethodSetTile = 2;
public static bool DoDrawOp(DrawOp op, Brush brush, Player p, public static bool DoDrawOp(DrawOp op, Brush brush, Player p,
ushort x1, ushort y1, ushort z1, ushort x2, ushort y2, ushort z2) { ushort x1, ushort y1, ushort z1, ushort x2, ushort y2, ushort z2) {
int affected = 0; int affected = 0;
op.Origin = new Vector3U16(x1, y1, z1); op.Origin = new Vector3U16(x1, y1, z1);
op.Min = Vector3U16.Min(x1, y1, z1, x2, y2, z2); op.Min = Vector3U16.Min(x1, y1, z1, x2, y2, z2);
@ -143,12 +143,17 @@ namespace MCGalaxy.Drawing.Ops {
if (!op.CanDraw(x1, y1, z1, x2, y2, z2, p, out affected)) if (!op.CanDraw(x1, y1, z1, x2, y2, z2, p, out affected))
return false; return false;
const string format = "{0}({1}): affecting up to {2} blocks"; if (brush != null) {
Player.SendMessage(p, String.Format(format, op.Name, brush.Name, affected)); const string format = "{0}({1}): affecting up to {2} blocks";
Player.SendMessage(p, String.Format(format, op.Name, brush.Name, affected));
} else {
const string format = "{0}: affecting up to {1} blocks";
Player.SendMessage(p, String.Format(format, op.Name, affected));
}
bool needReveal = op.DetermineDrawOpMethod(p.level, affected); bool needReveal = op.DetermineDrawOpMethod(p.level, affected);
op.Perform(x1, y1, z1, x2, y2, z2, p, p.level, brush); op.Perform(x1, y1, z1, x2, y2, z2, p, p.level, brush);
Player[] players = PlayerInfo.Online; Player[] players = PlayerInfo.Online;
if (needReveal) { if (needReveal) {
foreach (Player pl in players) { foreach (Player pl in players) {
if (pl.level.name.ToLower() == p.level.name.ToLower()) if (pl.level.name.ToLower() == p.level.name.ToLower())