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