本文整理汇总了C#中MCForge.Player.ClearBlockchange方法的典型用法代码示例。如果您正苦于以下问题:C# Player.ClearBlockchange方法的具体用法?C# Player.ClearBlockchange怎么用?C# Player.ClearBlockchange使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MCForge.Player
的用法示例。
在下文中一共展示了Player.ClearBlockchange方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: 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<Pos> buffer = new List<Pos>();
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) != cpos.type) { BufferAdd(buffer, xx, yy, zz); }
}
}
}
if (buffer.Count > p.group.maxBlocks)
{
Player.SendMessage(p, "You tried to replace " + buffer.Count + " blocks.");
Player.SendMessage(p, "You cannot replace more than " + p.group.maxBlocks + ".");
return;
}
Player.SendMessage(p, buffer.Count.ToString() + " blocks.");
buffer.ForEach(delegate(Pos pos)
{
p.level.Blockchange(p, pos.x, pos.y, pos.z, cpos.type2); //update block for everyone
});
if (p.staticCommands) p.Blockchange += new Player.BlockchangeEventHandler(Blockchange1);
}
示例2: 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 `Messages" + 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 `Messages" + p.level.name + "` (X, Y, Z, Message) VALUES (" + (int)x + ", " + (int)y + ", " + (int)z + ", '" + cpos.message + "')");
}
else
{
MySQL.executeQuery("UPDATE `Messages" + 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);
}
示例3: 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.level.Blockchange(p, x, y, z, Block.c4det);
Player.SendMessage(p, "Placed detenator block!");
}
示例4: Use
public override void Use(Player p, string message)
{
if (p != null)
{
p.ClearBlockchange();
p.painting = false;
p.BlockAction = 0;
p.megaBoid = false;
p.cmdTimer = false;
p.staticCommands = false;
p.deleteMode = false;
p.ZoneCheck = false;
p.modeType = 0;
p.aiming = false;
p.onTrain = false;
p.isFlying = false;
try
{
p.level.blockqueue.RemoveAll((BlockQueue.block b) => { if (b.p == p) return true; return false; });
}
finally { BlockQueue.resume(); }
Player.SendMessage(p, "Every toggle or action was aborted.");
return;
}
Player.SendMessage(p, "This command can only be used in-game!");
}
示例5: Use
public override void Use(Player p, string message)
{
p.staticCommands = !p.staticCommands;
p.ClearBlockchange();
p.BlockAction = 0;
Player.SendMessage(p, "Static mode: &a" + p.staticCommands.ToString());
try
{
if (message != "")
{
if (message.IndexOf(' ') == -1)
{
if (p.group.CanExecute(Command.all.Find(message)))
Command.all.Find(message).Use(p, "");
else
Player.SendMessage(p, "Cannot use that command.");
}
else
{
if (p.group.CanExecute(Command.all.Find(message.Split(' ')[0])))
Command.all.Find(message.Split(' ')[0]).Use(p, message.Substring(message.IndexOf(' ') + 1));
else
Player.SendMessage(p, "Cannot use that command.");
}
}
}
catch { Player.SendMessage(p, "Could not find specified command"); }
}
示例6: Blockchange1
public void Blockchange1(Player p, ushort x, ushort y, ushort z, byte type)
{
if (!p.staticCommands) p.ClearBlockchange();
CatchPos cpos = (CatchPos)p.blockchangeObject;
byte oldType = p.level.GetTile(x, y, z);
p.SendBlockchange(x, y, z, oldType);
int diffX = 0, diffZ = 0;
if (p.rot[0] <= 32 || p.rot[0] >= 224) { diffZ = -1; }
else if (p.rot[0] <= 96) { diffX = 1; }
else if (p.rot[0] <= 160) { diffZ = 1; }
else diffX = -1;
List<Pos> buffer = new List<Pos>();
Pos pos;
int total = 0;
if (diffX != 0)
{
for (ushort xx = x; total < cpos.distance; xx += (ushort)diffX)
{
for (ushort yy = (ushort)(y - 1); yy <= (ushort)(y + 1); yy++)
for (ushort zz = (ushort)(z - 1); zz <= (ushort)(z + 1); zz++)
{
pos.x = xx; pos.y = yy; pos.z = zz;
buffer.Add(pos);
}
total++;
}
}
else
{
for (ushort zz = z; total < cpos.distance; zz += (ushort)diffZ)
{
for (ushort yy = (ushort)(y - 1); yy <= (ushort)(y + 1); yy++)
for (ushort xx = (ushort)(x - 1); xx <= (ushort)(x + 1); xx++)
{
pos.x = xx; pos.y = yy; pos.z = zz;
buffer.Add(pos);
}
total++;
}
}
if (buffer.Count > p.group.maxBlocks)
{
Player.SendMessage(p, "You tried to drill " + buffer.Count + " blocks.");
Player.SendMessage(p, "You cannot drill more than " + p.group.maxBlocks + ".");
return;
}
foreach (Pos pos1 in buffer)
{
if (p.level.GetTile(pos1.x, pos1.y, pos1.z) == oldType)
p.level.Blockchange(p, pos1.x, pos1.y, pos1.z, Block.air);
}
Player.SendMessage(p, buffer.Count + " blocks.");
}
示例7: Blockchange1
public void Blockchange1(Player p, ushort x, ushort y, ushort z, byte type)
{
p.ClearBlockchange();
p.SendBlockchange(x, y, z, p.level.GetTile(x, y, z));
CatchPos bp = (CatchPos)p.blockchangeObject;
bp.x = x; bp.y = y; bp.z = z; p.blockchangeObject = bp;
p.Blockchange += Blockchange2;
}
示例8: 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);
p.blockchangeObject = new CatchPos(x, y, z);
p.Blockchange += new Player.BlockchangeEventHandler(Blockchange2);
}
示例9: 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 + Server.DefaultColor + ".");
message = p.level.foundInfo(x, y, z);
if (message != "") Player.SendMessage(p, "Physics information: &a" + message);
DataTable Blocks = Server.useMySQL ? MySQL.fillData("SELECT * FROM `Block" + p.level.name + "` WHERE X=" + (int)x + " AND Y=" + (int)y + " AND Z=" + (int)z) : SQLite.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");
//Server.s.Log(Blocks.Rows[i]["Type"].ToString());
BlockUsed = Block.Name(Convert.ToByte(Blocks.Rows[i]["Type"])).ToString();
Deleted = Convert.ToBoolean(Blocks.Rows[i]["Deleted"]);
if (!Deleted)
Player.SendMessage(p, "&3Created by " + Server.FindColor(Username.Trim()) + Username.Trim() + Server.DefaultColor + ", using &3" + BlockUsed);
else
Player.SendMessage(p, "&4Destroyed by " + Server.FindColor(Username.Trim()) + Username.Trim() + Server.DefaultColor + ", 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() + Server.DefaultColor + ", using &3" + BlockUsed);
else
Player.SendMessage(p, "&4Destroyed by " + Server.FindColor(Username.Trim()) + Username.Trim() + Server.DefaultColor + ", 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();
}
示例10: Blockchange1
public void Blockchange1(Player p, ushort x, ushort y, ushort z, byte type)
{
p.ClearBlockchange();
byte block = p.level.GetTile(x, y, z);
p.SendBlockchange(x, y, z, block);
Position bp;
bp.x = x; bp.y = y; bp.z = z; bp.type = type; p.blockchangeObject = bp;
p.Blockchange += new Player.BlockchangeEventHandler(Blockchange2);
}
示例11: Blockchange2
public void Blockchange2(Player p, ushort x, ushort y, ushort z, byte type)
{
p.ClearBlockchange();
p.SendBlockchange(x, y, z, p.level.GetTile(x, y, z));
CatchPos cpos = (CatchPos)p.blockchangeObject;
FileStream fs = File.OpenRead(@Server.backupLocation + "/" + p.level.name + "/" + cpos.backup + "/" + p.level.name + ".lvl");
GZipStream gs = new GZipStream(fs, CompressionMode.Decompress);
byte[] ver = new byte[2];
gs.Read(ver, 0, ver.Length);
ushort version = BitConverter.ToUInt16(ver, 0);
ushort[] vars = new ushort[6];
try
{
if (version == 1874)
{
byte[] header = new byte[16]; gs.Read(header, 0, header.Length);
vars[0] = BitConverter.ToUInt16(header, 0);
vars[1] = BitConverter.ToUInt16(header, 2);
vars[2] = BitConverter.ToUInt16(header, 4);
}
else
{
byte[] header = new byte[12]; gs.Read(header, 0, header.Length);
vars[0] = version;
vars[1] = BitConverter.ToUInt16(header, 0);
vars[2] = BitConverter.ToUInt16(header, 2);
}
byte[] blocks = new byte[vars[0] * vars[2] * vars[1]];
gs.Read(blocks, 0, blocks.Length);
gs.Dispose();
fs.Dispose();
if (blocks.Length != p.level.blocks.Length) { p.SendMessage("Cant restore selection of different size maps."); blocks = null; return; }
if (p.level.bufferblocks && !p.level.Instant)
{
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)
BlockQueue.Addblock(p, xx, yy, zz, blocks[xx + (zz * vars[0]) + (yy * vars[0] * vars[1])]);
}
else
{
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)
p.level.Blockchange(p, xx, yy, zz, blocks[xx + (zz * vars[0]) + (yy * vars[0] * vars[1])]);
}
blocks = null;
if (p.staticCommands) p.Blockchange += Blockchange1;
}
catch { Server.s.Log("Restore selection failed"); }
}
示例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);
bp = (CatchPos)p.blockchangeObject;
thex = x; they = y + 2; thez = z; p.blockchangeObject = bp;
Thread t = new Thread(ZombieMob);
t.Start(p);
}
示例13: BlockchangeHCone
public void BlockchangeHCone(Player p, ushort x, ushort y, ushort z, byte type)
{
int height = p.BcVar[0];
int radius = p.BcVar[1];
byte b = p.level.GetTile(x, y, z);
p.SendBlockchange(x, y, z, b);
p.ClearBlockchange();
Util.SCOGenerator.HCone(p, x, y, z, height, radius, type);
}
示例14: Blockchange1
public void Blockchange1(Player p, ushort x, ushort y, ushort z, byte type)
{
p.ClearBlockchange();
if (type == Block.red) { Blockchange2(p, x, y, z, type); return; }
if (type != Block.air)
{
p.level.Blockchange(p, x, y, z, Block.c4);
}
p.Blockchange += new Player.BlockchangeEventHandler(Blockchange1);
}
示例15: Use
public override void Use(Player p, string message)
{
p.ClearBlockchange();
switch (message.ToLower())
{
case "2":
case "cactus": p.Blockchange += new Player.BlockchangeEventHandler(AddCactus); break;
default: p.Blockchange += new Player.BlockchangeEventHandler(AddTree); break;
}
Player.SendMessage(p, "Select where you wish your tree to grow");
p.painting = false;
}