static BlockID RotateOther(Game game, BlockID block, string name, Vector3 offset)
        {
            // Fence type blocks
            if (BlockInfo.FindID(name + "-UD") == -1)
            {
                float headY = LocationUpdate.Clamp(game.LocalPlayer.HeadY);
                if (headY < 45 || (headY >= 135 && headY < 225) || headY > 315)
                {
                    return(Find(game, block, name + "-WE"));
                }
                return(Find(game, block, name + "-NS"));
            }

            // Thin pillar type blocks
            BlockFace face = game.SelectedPos.Face;

            if (face == BlockFace.YMax || face == BlockFace.YMin)
            {
                return(Find(game, block, name + "-UD"));
            }
            if (face == BlockFace.XMax || face == BlockFace.XMin)
            {
                return(Find(game, block, name + "-WE"));
            }
            if (face == BlockFace.ZMax || face == BlockFace.ZMin)
            {
                return(Find(game, block, name + "-NS"));
            }
            return(block);
        }
        static BlockID RotateDirection(Game game, BlockID block, string name, Vector3 offset)
        {
            float headY = LocationUpdate.Clamp(game.LocalPlayer.HeadY);

            if (headY >= 45 && headY < 135)
            {
                return(Find(game, block, name + "-E"));
            }
            if (headY >= 135 && headY < 225)
            {
                return(Find(game, block, name + "-S"));
            }
            if (headY >= 225 && headY < 315)
            {
                return(Find(game, block, name + "-W"));
            }
            return(Find(game, block, name + "-N"));
        }