Esempio n. 1
0
        /// <summary>
        /// Return true to block
        /// </summary>
        public static bool ProtectChestsClick(VanillaSession rs, WindowClick wc)
        {
            if (wc.WindowID == 0) //player inventory, allow
            {
                return(false);
            }

            if (rs.Player.Admin(Permissions.AnyAdmin) && rs.Mode == GameMode.Creative)
            {
                return(false);
            }

            if (rs.OpenWindows.ContainsKey(wc.WindowID) == false)
            {
                rs.TellSystem(Chat.Red, "Window not open");
                return(BlockClick(rs.Player, wc));
            }
            var w = rs.OpenWindows [wc.WindowID];

            if (w.Region == null)
            {
                return(false); //not in a region, allow
            }
            switch (w.Region.Type)
            {
            case Protected.Type:
            case Honeypot.Type:
                break;

            default:
                return(false);
            }

            if (w.Region.IsResident(rs.Player))
            {
                return(false); //residents allow
            }
            //Allow some open types
            if (w.Window.InventoryType == "CraftingTable")
            {
                return(false);
            }
            if (w.Window.InventoryType == "Enchant")
            {
                return(false);
            }
            if (w.Window.InventoryType == "Anvil")
            {
                return(false);
            }
            if (w.Window.WindowTitle == "container.enderchest")
            {
                return(false);
            }

            if (w.Region.Type == Protected.Type)
            {
                return(BlockClick(rs.Player, wc));
            }

            if (w.Region.Type == Honeypot.Type)
            {
                if (wc.Slot == 11 || wc.Slot == 13 || wc.Slot == 15)
                {
                    if (rs.Player.Admin(Permissions.AnyAdmin))
                    {
                        rs.TellSystem(Chat.White, "This spot is protected");
                        return(false);
                    }
                    Honeypot.Trigger(rs.Player, w.Region);
                    return(true);
                }
            }

            return(true);
        }
Esempio n. 2
0
 static bool BlockClick(Client player, WindowClick wc)
 {
     player.SendToClient(new ConfirmTransactionServer(wc, false));
     return(true);
 }