本文整理汇总了C#中MCDawn.Player.SendBlockchange方法的典型用法代码示例。如果您正苦于以下问题:C# Player.SendBlockchange方法的具体用法?C# Player.SendBlockchange怎么用?C# Player.SendBlockchange使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MCDawn.Player
的用法示例。
在下文中一共展示了Player.SendBlockchange方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: highlightStuff
public void highlightStuff(string[] fileContent, Int64 seconds, Player p)
{
Player.UndoPos Pos;
for (int i = fileContent.Length / 7; i >= 0; i--)
{
try
{
if (Convert.ToDateTime(fileContent[(i * 7) + 4].Replace('&', ' ')).AddSeconds(seconds) >= DateTime.Now)
{
Level foundLevel = Level.Find(fileContent[i * 7]);
if (foundLevel != null && foundLevel == p.level)
{
Pos.mapName = foundLevel.name;
Pos.x = Convert.ToUInt16(fileContent[(i * 7) + 1]);
Pos.y = Convert.ToUInt16(fileContent[(i * 7) + 2]);
Pos.z = Convert.ToUInt16(fileContent[(i * 7) + 3]);
Pos.type = foundLevel.GetTile(Pos.x, Pos.y, Pos.z);
if (Pos.type == Convert.ToByte(fileContent[(i * 7) + 6]) || Block.Convert(Pos.type) == Block.water || Block.Convert(Pos.type) == Block.lava)
{
if (Pos.type == Block.air || Block.Convert(Pos.type) == Block.water || Block.Convert(Pos.type) == Block.lava)
p.SendBlockchange(Pos.x, Pos.y, Pos.z, Block.red);
else p.SendBlockchange(Pos.x, Pos.y, Pos.z, Block.green);
}
}
}
else break;
}
catch { }
}
}
示例2: Blockchange2
public void Blockchange2(Player p, ushort x, ushort y, ushort z, byte type)
{
p.ClearBlockchange();
byte b = p.level.GetTile(x, y, z);
p.SendBlockchange(x, y, z, b);
CatchPos cpos = (CatchPos)p.blockchangeObject;
int counter = 0;
ushort xx, yy, zz;
for (xx = Math.Min(cpos.x, x); xx <= Math.Max(cpos.x, x); ++xx)
for (yy = Math.Min(cpos.y, y); yy <= Math.Max(cpos.y, y); ++yy)
for (zz = Math.Min(cpos.z, z); zz <= Math.Max(cpos.z, z); ++zz)
if (selectedBlock <= 0)
{
counter++;
p.SendBlockchange(xx, yy, zz, 0); // xray block
}
else
{
if (p.level.GetTile(xx, yy, zz) == selectedBlock) // check if block is selected block
{
counter++;
p.SendBlockchange(xx, yy, zz, 0); // xray block
}
}
Player.SendMessage(p, "X-Rayed " + counter + " blocks.");
Player.SendMessage(p, "Use /reveal to restore all x-rayed blocks.");
}
示例3: AddGoalPos
public void AddGoalPos(Player p, ushort x, ushort y, ushort z, byte type)
{
p.ClearBlockchange();
p.level.Blockchange(x, y, z, Block.air);
if (type == Block.red && goalBuffer.Count > 0)
{
p.SendBlockchange(x, y, z, Block.air);
foreach (PushBallTeam.Pos pp in goalBuffer)
{
p.level.pushBall.pushBallTeams.Find(team => team.color == goalPosColor[1]).goalPositions.Add(pp);
p.SendBlockchange(pp.x, pp.y, pp.z, Block.air);
}
Player.SendMessage(p, "Goal positions selected for " + p.level.pushBall.pushBallTeams.Find(team => team.color == goalPosColor[1]).teamstring);
goalBuffer.Clear();
goalPosColor = "";
}
else
{
p.SendBlockchange(x, y, z, Block.green);
PushBallTeam.Pos gp = new PushBallTeam.Pos();
gp.x = x; gp.y = y; gp.z = z;
goalBuffer.Add(gp);
Player.SendMessage(p, "&aGoal position added. &cPlace a red block to finish.");
p.Blockchange += new Player.BlockchangeEventHandler(AddGoalPos);
}
}
示例4: ExitChange
public void ExitChange(Player p, ushort x, ushort y, ushort z, byte type)
{
p.ClearBlockchange();
byte b = p.level.GetTile(x, y, z);
p.SendBlockchange(x, y, z, b);
portalPos bp = (portalPos)p.blockchangeObject;
foreach (portPos pos in bp.port)
{
DataTable Portals = MySQL.fillData("SELECT * FROM `Portals" + pos.portMapName + "` WHERE EntryX=" + (int)pos.x + " AND EntryY=" + (int)pos.y + " AND EntryZ=" + (int)pos.z);
Portals.Dispose();
if (Portals.Rows.Count == 0)
{
MySQL.executeQuery("INSERT INTO `Portals" + pos.portMapName + "` (EntryX, EntryY, EntryZ, ExitMap, ExitX, ExitY, ExitZ) VALUES (" + (int)pos.x + ", " + (int)pos.y + ", " + (int)pos.z + ", '" + p.level.name + "', " + (int)x + ", " + (int)y + ", " + (int)z + ")");
}
else
{
MySQL.executeQuery("UPDATE `Portals" + pos.portMapName + "` SET ExitMap='" + p.level.name + "', ExitX=" + (int)x + ", ExitY=" + (int)y + ", ExitZ=" + (int)z + " WHERE EntryX=" + (int)pos.x + " AND EntryY=" + (int)pos.y + " AND EntryZ=" + (int)pos.z);
}
//DB
if (pos.portMapName == p.level.name) p.SendBlockchange(pos.x, pos.y, pos.z, bp.type);
}
Player.SendMessage(p, "&3Exit" + "&g block placed");
if (p.staticCommands) { bp.port.Clear(); p.blockchangeObject = bp; p.Blockchange += new Player.BlockchangeEventHandler(EntryChange); }
}
示例5: EntryChange
public void EntryChange(Player p, ushort x, ushort y, ushort z, byte type)
{
p.ClearBlockchange();
portalPos bp = (portalPos)p.blockchangeObject;
if (bp.Multi.ToLower() == "multi" && type == Block.red && bp.port.Count > 0) { ExitChange(p, x, y, z, type); return; }
byte b = p.level.GetTile(x, y, z);
p.level.Blockchange(p, x, y, z, bp.type);
p.SendBlockchange(x, y, z, Block.green);
portPos Port;
Port.portMapName = p.level.name;
Port.x = x; Port.y = y; Port.z = z;
bp.port.Add(Port);
p.blockchangeObject = bp;
if (bp.Multi.ToLower() != "multi")
{
p.Blockchange += new Player.BlockchangeEventHandler(ExitChange);
Player.SendMessage(p, "&aEntry block placed");
}
else if (bp.Multi.ToLower() == "multi")
{
p.Blockchange += new Player.BlockchangeEventHandler(EntryChange);
Player.SendMessage(p, "&aEntry block placed. &cPlace a Red block for exit.");
}
}
示例6: Blockchange2
public void Blockchange2(Player p, ushort x, ushort y, ushort z, byte type)
{
p.ClearBlockchange();
byte b = p.level.GetTile(x, y, z);
p.SendBlockchange(x, y, z, b);
CatchPos cpos = (CatchPos)p.blockchangeObject;
Level.Zone Zn;
Zn.smallX = Math.Min(cpos.x, x);
Zn.smallY = Math.Min(cpos.y, y);
Zn.smallZ = Math.Min(cpos.z, z);
Zn.bigX = Math.Max(cpos.x, x);
Zn.bigY = Math.Max(cpos.y, y);
Zn.bigZ = Math.Max(cpos.z, z);
Zn.Owner = cpos.Owner;
p.level.ZoneList.Add(Zn);
//DB
MySQL.executeQuery("INSERT INTO `Zone" + p.level.name + "` (SmallX, SmallY, SmallZ, BigX, BigY, BigZ, Owner) VALUES (" + Zn.smallX + ", " + Zn.smallY + ", " + Zn.smallZ + ", " + Zn.bigX + ", " + Zn.bigY + ", " + Zn.bigZ + ", '" + Zn.Owner + "')");
//DB
Player.SendMessage(p, "Added zone for &b" + cpos.Owner);
}
示例7: Blockchange2
public void Blockchange2(Player p, ushort x, ushort y, ushort z, byte type)
{
p.ClearBlockchange();
byte b = p.level.GetTile(x, y, z);
p.SendBlockchange(x, y, z, b);
CatchPos cpos = (CatchPos)p.blockchangeObject;
ushort xx, yy, zz; int foundBlocks = 0;
for (xx = Math.Min(cpos.x, x); xx <= Math.Max(cpos.x, x); ++xx)
for (yy = Math.Min(cpos.y, y); yy <= Math.Max(cpos.y, y); ++yy)
for (zz = Math.Min(cpos.z, z); zz <= Math.Max(cpos.z, z); ++zz)
{
if (p.level.GetTile(xx, yy, zz) != cpos.toIgnore) foundBlocks++;
}
Player.SendMessage(p, foundBlocks + " blocks are between (" + cpos.x + ", " + cpos.y + ", " + cpos.z + ") and (" + x + ", " + y + ", " + z + ")");
ushort xdiff = (ushort)((Math.Max(cpos.x, x)) - Math.Min(cpos.x, x));
ushort ydiff = (ushort)((Math.Max(cpos.y, y)) - Math.Min(cpos.y, y));
ushort zdiff = (ushort)((Math.Max(cpos.z, z)) - Math.Min(cpos.z, z));
Player.SendMessage(p, "The selected area was " + xdiff + " blocks wide, " + ydiff + " blocks high, " + zdiff + " blocks deep.");
if (p.staticCommands) p.Blockchange += new Player.BlockchangeEventHandler(Blockchange1);
}
示例8: Blockchange1
public void Blockchange1(Player p, ushort x, ushort y, ushort z, byte type)
{
p.ClearBlockchange();
CatchPos cpos = (CatchPos)p.blockchangeObject;
cpos.message = cpos.message.Replace("'", "\\'");
DataTable Messages = MySQL.fillData("SELECT * FROM `Commandblocks" + p.level.name + "` WHERE X=" + (int)x + " AND Y=" + (int)y + " AND Z=" + (int)z);
Messages.Dispose();
if (Messages.Rows.Count == 0)
{
MySQL.executeQuery("INSERT INTO `Commandblocks" + p.level.name + "` (X, Y, Z, Message) VALUES (" + (int)x + ", " + (int)y + ", " + (int)z + ", '" + cpos.message + "')");
}
else
{
MySQL.executeQuery("UPDATE `Commandblocks" + p.level.name + "` SET Message='" + cpos.message + "' WHERE X=" + (int)x + " AND Y=" + (int)y + " AND Z=" + (int)z);
}
Player.SendMessage(p, "Message block placed.");
p.level.Blockchange(p, x, y, z, cpos.type);
p.SendBlockchange(x, y, z, cpos.type);
if (p.staticCommands) p.Blockchange += new Player.BlockchangeEventHandler(Blockchange1);
}
示例9: Blockchange2
public void Blockchange2(Player p, ushort x, ushort y, ushort z, byte type)
{
p.ClearBlockchange();
byte b = p.level.GetTile(x, y, z);
p.SendBlockchange(x, y, z, b);
CatchPos cpos = (CatchPos)p.blockchangeObject;
List<CatchPos> buffer = new List<CatchPos>();
CatchPos pos = new CatchPos();
//int totalChecks = 0;
//if (Math.Abs(cpos.x - x) * Math.Abs(cpos.y - y) * Math.Abs(cpos.z - z) > 8000) { Player.SendMessage(p, "Tried to restart too many blocks. You may only restart 8000"); return; }
for (ushort xx = Math.Min(cpos.x, x); xx <= Math.Max(cpos.x, x); ++xx)
{
for (ushort yy = Math.Min(cpos.y, y); yy <= Math.Max(cpos.y, y); ++yy)
{
for (ushort zz = Math.Min(cpos.z, z); zz <= Math.Max(cpos.z, z); ++zz)
{
if (p.level.GetTile(xx, yy, zz) != Block.air)
{
pos.x = xx; pos.y = yy; pos.z = zz;
pos.extraInfo = cpos.extraInfo;
buffer.Add(pos);
}
}
}
}
try
{
if (cpos.extraInfo == "")
{
if (buffer.Count > Server.rpNormLimit)
{
Player.SendMessage(p, "Cannot restart more than " + Server.rpNormLimit + " blocks.");
Player.SendMessage(p, "Tried to restart " + buffer.Count + " blocks.");
return;
}
}
else
{
if (buffer.Count > Server.rpLimit)
{
Player.SendMessage(p, "Tried to add physics to " + buffer.Count + " blocks.");
Player.SendMessage(p, "Cannot add physics to more than " + Server.rpLimit + " blocks.");
return;
}
}
}
catch { return; }
foreach (CatchPos pos1 in buffer)
{
p.level.AddCheck(p.level.PosToInt(pos1.x, pos1.y, pos1.z), pos1.extraInfo, true);
}
Player.SendMessage(p, "Activated " + buffer.Count + " blocks.");
if (p.staticCommands) p.Blockchange += new Player.BlockchangeEventHandler(Blockchange1);
}
示例10: AboutBlockchange
public void AboutBlockchange(Player p, ushort x, ushort y, ushort z, byte type)
{
if (!p.staticCommands) p.ClearBlockchange();
byte b = p.level.GetTile(x, y, z);
if (b == Block.Zero) { Player.SendMessage(p, "Invalid Block(" + x + "," + y + "," + z + ")!"); return; }
p.SendBlockchange(x, y, z, b);
string message = "Block (" + x + "," + y + "," + z + "): ";
message += "&f" + b + " = " + Block.Name(b);
Player.SendMessage(p, message + "&g.");
message = p.level.foundInfo(x, y, z);
if (message != "") Player.SendMessage(p, "Physics information: &a" + message);
DataTable Blocks = MySQL.fillData("SELECT * FROM `Block" + p.level.name + "` WHERE X=" + (int)x + " AND Y=" + (int)y + " AND Z=" + (int)z);
string Username, TimePerformed, BlockUsed;
bool Deleted, foundOne = false;
for (int i = 0; i < Blocks.Rows.Count; i++)
{
foundOne = true;
Username = Blocks.Rows[i]["Username"].ToString();
TimePerformed = DateTime.Parse(Blocks.Rows[i]["TimePerformed"].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
BlockUsed = Block.Name((byte)Blocks.Rows[i]["Type"]).ToString();
Deleted = (bool)Blocks.Rows[i]["Deleted"];
if (!Deleted)
Player.SendMessage(p, "&3Created by " + Server.FindColor(Username.Trim()) + Username.Trim() + "&g, using &3" + BlockUsed);
else
Player.SendMessage(p, "&4Destroyed by " + Server.FindColor(Username.Trim()) + Username.Trim() + "&g, using &3" + BlockUsed);
Player.SendMessage(p, "Date and time modified: &2" + TimePerformed);
}
List<Level.BlockPos> inCache = p.level.blockCache.FindAll(bP => bP.x == x && bP.y == y && bP.z == z);
for (int i = 0; i < inCache.Count; i++)
{
foundOne = true;
Deleted = inCache[i].deleted;
Username = inCache[i].name;
TimePerformed = inCache[i].TimePerformed.ToString("yyyy-MM-dd HH:mm:ss");
BlockUsed = Block.Name(inCache[i].type);
if (!Deleted)
Player.SendMessage(p, "&3Created by " + Server.FindColor(Username.Trim()) + Username.Trim() + "&g, using &3" + BlockUsed);
else
Player.SendMessage(p, "&4Destroyed by " + Server.FindColor(Username.Trim()) + Username.Trim() + "&g, using &3" + BlockUsed);
Player.SendMessage(p, "Date and time modified: &2" + TimePerformed);
}
if (!foundOne)
Player.SendMessage(p, "This block has not been modified since the map was cleared.");
Blocks.Dispose();
GC.Collect();
GC.WaitForPendingFinalizers();
}
示例11: Blockchange2
public void Blockchange2(Player p, ushort x, ushort y, ushort z, byte type)
{
p.ClearBlockchange();
byte b = p.level.GetTile(x, y, z);
p.SendBlockchange(x, y, z, b);
CatchPos cpos = (CatchPos)p.blockchangeObject;
if (cpos.y == y)
{
Player.SendMessage(p, "Cannot create a stairway 0 blocks high.");
return;
}
ushort xx, zz; int currentState = 0;
xx = cpos.x; zz = cpos.z;
if (cpos.x > x && cpos.z > z) currentState = 0;
else if (cpos.x > x && cpos.z < z) currentState = 1;
else if (cpos.x < x && cpos.z > z) currentState = 2;
else currentState = 3;
for (ushort yy = Math.Min(cpos.y, y); yy <= Math.Max(cpos.y, y); ++yy)
{
if (currentState == 0)
{
xx++; p.level.Blockchange(p, xx, yy, zz, Block.staircasestep);
xx++; p.level.Blockchange(p, xx, yy, zz, Block.staircasefull);
currentState = 1;
}
else if (currentState == 1)
{
zz++; p.level.Blockchange(p, xx, yy, zz, Block.staircasestep);
zz++; p.level.Blockchange(p, xx, yy, zz, Block.staircasefull);
currentState = 2;
}
else if (currentState == 2)
{
xx--; p.level.Blockchange(p, xx, yy, zz, Block.staircasestep);
xx--; p.level.Blockchange(p, xx, yy, zz, Block.staircasefull);
currentState = 3;
}
else
{
zz--; p.level.Blockchange(p, xx, yy, zz, Block.staircasestep);
zz--; p.level.Blockchange(p, xx, yy, zz, Block.staircasefull);
currentState = 0;
}
/*
if (cpos.x == xx && cpos.z == zz || cpos.x == xx + 1 && cpos.z == zz) xx++;
else if (cpos.x == xx + 2 && cpos.z == zz || cpos.x == xx + 2 && cpos.z == zz + 1) zz++;
else if (cpos.x == xx + 2 && cpos.z == zz + 2 || cpos.x == xx + 1 && cpos.z == zz + 2) xx--;
else zz--;
*/
}
if (p.staticCommands) p.Blockchange += new Player.BlockchangeEventHandler(Blockchange1);
}
示例12: Blockchange1
public void Blockchange1(Player p, ushort x, ushort y, ushort z, byte type)
{
p.ClearBlockchange();
byte b = p.level.GetTile(x, y, z);
p.SendBlockchange(x, y, z, b);
CatchPos bp = (CatchPos)p.blockchangeObject;
bp.x = x; bp.y = y; bp.z = z; p.blockchangeObject = bp;
p.Blockchange += new Player.BlockchangeEventHandler(Blockchange2);
}
示例13: Blockchange1
public void Blockchange1(Player p, ushort x, ushort y, ushort z, byte type)
{
p.ClearBlockchange();
byte b = p.level.GetTile(x, y, z);
p.SendBlockchange(x, y, z, b);
Level.Reflection r = (Level.Reflection)p.blockchangeObject;
Level.ReflectionPos rp = new Level.ReflectionPos();
rp.x = x; rp.y = y; rp.z = z;
r.reflectionPositions.Add(rp);
p.blockchangeObject = r;
p.Blockchange += new Player.BlockchangeEventHandler(Blockchange2);
}
示例14: Blockchange2
public void Blockchange2(Player p, ushort x, ushort y, ushort z, byte type)
{
p.ClearBlockchange();
byte b = p.level.GetTile(x, y, z);
p.SendBlockchange(x, y, z, b);
CatchPos cpos = (CatchPos)p.blockchangeObject;
int[] xxx = { Math.Min(cpos.x, x), Math.Max(cpos.x, x) };
int[] yyy = { Math.Min(cpos.y, y), Math.Max(cpos.y, y) };
int[] zzz = { Math.Min(cpos.z, z), Math.Max(cpos.z, z) };
bool unevenZ, unevenY, unevenX;
ushort medz = (ushort)(GetMedian(zzz, out unevenZ));
ushort medy = (ushort)(GetMedian(yyy, out unevenY));
ushort medx = (ushort)(GetMedian(xxx, out unevenX));
ushort meepZ = (unevenZ) ? (ushort)(medz + 1) : (ushort)0;
ushort meepY = (unevenY) ? (ushort)(medy + 1) : (ushort)0;
ushort meepX = (unevenX) ? (ushort)(medx + 1) : (ushort)0;
if (unevenZ)
{
Player.SendMessage(p, "The Z coordinate was even. Placing 2 blocks for accuracy.");
}
if (unevenY)
{
Player.SendMessage(p, "The Y coordinate was even. Placing 2 blocks for accuracy.");
}
if (unevenX)
{
Player.SendMessage(p, "The X coordinate was even. Placing 2 blocks for accuracy.");
}
if (p.level.GetTile(medx, medy, medz) != type)
{
p.level.Blockchange(p, medx, medy, medz, type);
if (meepZ != 0)
{
p.level.Blockchange(p, medx, medy, meepZ, type);
}
if (meepY != 0)
{
p.level.Blockchange(p, medx, meepY, meepZ, type);
}
if (meepX != 0)
{
p.level.Blockchange(p, meepX, medy, meepZ, type);
}
}
if (p.staticCommands) p.Blockchange += new Player.BlockchangeEventHandler(Blockchange1);
}
示例15: Blockchange2
public void Blockchange2(Player p, ushort x, ushort y, ushort z, byte type)
{
p.ClearBlockchange();
byte b = p.level.GetTile(x, y, z);
p.SendBlockchange(x, y, z, b);
CatchPos cpos = (CatchPos)p.blockchangeObject;
p.CopyBuffer.Clear();
int TotalAir = 0;
if (cpos.type == 2) p.copyAir = true; else p.copyAir = false;
for (ushort xx = Math.Min(cpos.x, x); xx <= Math.Max(cpos.x, x); ++xx)
for (ushort yy = Math.Min(cpos.y, y); yy <= Math.Max(cpos.y, y); ++yy)
for (ushort zz = Math.Min(cpos.z, z); zz <= Math.Max(cpos.z, z); ++zz)
{
b = p.level.GetTile(xx, yy, zz);
if (Block.canPlace(p, b))
{
if (b == Block.air && cpos.type != 2 || cpos.ignoreTypes.Contains(b)) TotalAir++;
if (cpos.ignoreTypes.Contains(b)) BufferAdd(p, (ushort)(xx - cpos.x), (ushort)(yy - cpos.y), (ushort)(zz - cpos.z), Block.air);
else BufferAdd(p, (ushort)(xx - cpos.x), (ushort)(yy - cpos.y), (ushort)(zz - cpos.z), b);
}
else BufferAdd(p, (ushort)(xx - cpos.x), (ushort)(yy - cpos.y), (ushort)(zz - cpos.z), Block.air);
}
if ((p.CopyBuffer.Count - TotalAir) > p.group.maxBlocks)
{
Player.SendMessage(p, "You tried to copy " + p.CopyBuffer.Count + " blocks.");
Player.SendMessage(p, "You cannot copy more than " + p.group.maxBlocks + ".");
p.CopyBuffer.Clear();
return;
}
if (cpos.type == 1)
for (ushort xx = Math.Min(cpos.x, x); xx <= Math.Max(cpos.x, x); ++xx)
for (ushort yy = Math.Min(cpos.y, y); yy <= Math.Max(cpos.y, y); ++yy)
for (ushort zz = Math.Min(cpos.z, z); zz <= Math.Max(cpos.z, z); ++zz)
{
b = p.level.GetTile(xx, yy, zz);
if (b != Block.air && Block.canPlace(p, b))
p.level.Blockchange(p, xx, yy, zz, Block.air);
}
Player.SendMessage(p, (p.CopyBuffer.Count - TotalAir) + " blocks copied.");
if (allowoffset != -1)
{
Player.SendMessage(p, "Place a block to determine where to paste from");
p.Blockchange += new Player.BlockchangeEventHandler(Blockchange3);
}
}