void OnPlayerBlockChange_Normal(Player sender, API.Events.BlockChangeEventArgs args) { if (args.Action == API.Events.ActionType.Delete && args.Current == 0) { args.Cancel(); } }
void OnPlayerBlockChange_Normal(Player sender, API.Events.BlockChangeEventArgs args) { sender.OnPlayerBlockChange.Normal -= OnPlayerBlockChange_Normal; int rx = (int)sender.ExtraData["BallRadius"]; int count = 0; IEnumerable <Vector3S> blocks; if (sender.ExtraData["BallType"] != null && ((string)sender.ExtraData["BallType"] == "h" || (string)sender.ExtraData["BallType"] == "hollow")) { blocks = (new Vector3S(args.X, args.Z, args.Y)).GetNearBlocksHollow(rx, rx, rx); } else { blocks = (new Vector3S(args.X, args.Z, args.Y)).GetNearBlocks(rx, rx, rx); } foreach (Vector3S v in blocks) { if (v.x > 0 && v.z > 0 && v.y > 0 && v.x < sender.Level.CWMap.Size.x && v.z < sender.Level.CWMap.Size.z && v.y < sender.Level.CWMap.Size.y) { BlockQueue.Addblock(sender, (ushort)v.x, (ushort)v.y, (ushort)v.z, args.Holding); count++; } } sender.SendMessage(count + " Blocks"); }
void OnPlayerBlockChange_Low(Player sender, API.Events.BlockChangeEventArgs args) { if (!args.Canceled && args.Action == API.Events.ActionType.Delete) { object tmp = sender.ExtraData["TmpBlockList"]; if (tmp != null && ((List <Tuple <string, Vector3S> >)tmp).Count != 0) { List <Tuple <string, Vector3S> > tmplist = (List <Tuple <string, Vector3S> >)tmp; string level = sender.Level.Name; string tpLocal = "/tp " + (args.X * 32 + 16) + " " + (args.Z * 32 + 16) + " " + ((args.Y + 1) * 32 + 16); string tpLevel = "/tp " + (args.X * 32 + 16) + " " + (args.Z * 32 + 16) + " " + ((args.Y + 1) * 32 + 16) + " " + level; ICommand mb = Command.Find("messageblock"); if (mb == null) { Logger.Log("MessageBlock command and plugin are required to create portals"); sender.SendMessage("MessageBlock command and plugin are required to create portals"); args.Cancel(); return; } foreach (Tuple <string, Vector3S> e in tmplist) { List <string> mbArgs = new List <string>() { "+", e.Item2.x + "", e.Item2.z + "", e.Item2.y + "", e.Item1 }; if (e.Item1 == level) { mbArgs.AddRange(tpLocal.Split(' ')); } else { mbArgs.AddRange(tpLevel.Split(' ')); } mb.Use(sender, mbArgs.ToArray()); } sender.SendMessage("Portal created"); sender.OnPlayerBlockChange.Low -= OnPlayerBlockChange_Low; } } else { object tmp = sender.ExtraData["TmpBlockList"]; if (tmp == null) { tmp = new List <Tuple <string, Vector3S> >(); sender.ExtraData["TmpBlockList"] = tmp; } ((List <Tuple <string, Vector3S> >)tmp).Add(new Tuple <string, Vector3S>(sender.Level.Name, new Vector3S(args.X, args.Z, args.Y))); } }