void OnPlayerBlockChange_Normal(Player sender, API.Events.BlockChangeEventArgs args) { if (args.Action == API.Events.ActionType.Delete && args.Current == 0) { args.Cancel(); } }
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))); } }